Recently I’ve been paying a lot more attention to the job market as I go through the finding, hiring, and gaining customers routine with a number of different companies, recruiters, and individuals I know within the industry. Conversations kick off a million different ways. In this post I’m going to tackle how I work pricing of a job for myself. Many companies have some criteria based on what others in the company are paid and someone in human resources often has some spreadsheet or whatever that tracks this stuff. This is the flip side of the coin, this is my pricing list. It’s really simple, it’s based on what I’m looking for in life and what a company can give me, which in turn dictates what I can do for a company and aligning with what they want too. In the end, this helps insure we both get a win out of the relationship. Continue reading “Pricing Calculations for Work & Projects”
Tag: software development
Reading Up on Observability and Monitoring
In the next few weeks I’ll be doing some work for Honeycomb.io. In preparation I’ve been ramping up on a number of topics, namely the big one is the specific differences in things like observability and monitoring. The aside that makes this relatively easy, is I live and breath this space from a site reliability, apps, and services perspective. Not only am I fortunate in my situation to dive into this topic, I’m excited to do so as well.
I started this research just checking out what material Honeycomb.io has available onsite and additionally what Charity Majors has written, or spoken about at conferences. The first two were easy to find with a simple Google search and checking out the Honeycomb.io Blog. For each of these materials I’ve provided a summary before each linked reference. Enjoy. Continue reading “Reading Up on Observability and Monitoring”
I’ve Got a JavaScript & Node.js Webinar, Webstorm Tutorial Videos, Work & Flow With JavaScript Development and More…
Webinar: Node.js Development Workflow in WebStorm
This coming week I’m doing an intro to work and flow with Node.js JavaScript Programming that I’m working with JetBrains on. In the webinar I’ll be covering the following key topics in the webinar:
- Open an existing project & getting WebStorm configured for running, testing and related working tasks.
- A quick tour of other IDE features that help with daily work. Some in pretty huge ways.
- Running WebStorm & debugging Node.js JavaScript applications.
- Checking out Mocha, how it works and what it gives WebStorm the power to do. Then we’ll write a few tests & implement that code too.
All this will include Q & A throughout and at the end of the webinar. Be sure to register soon!
WebStorm Tutorials: Learning Shortcuts, Customizing Layout and Others
These WebStorm Tutorials have been put together by John Lindquist @johnlindquist for JetBrains. There solid, quick snippets of useful WebStorm usage. Two that I’ve found really useful I’ve included here:
John also has a lot of other great totally kick ass material out there. So check out his blog @ http://johnlindquist.com/ and follow his youtube channel too.
Coming Up in the Near Future, The Work & Flow of JavaScript Development
I have a new course I’m working on right now for Pluralsight, that will take these basic precepts and dive even deeper into the daily workflow of the JavaScript Developer. Whether it’s client side hacking or server side coding, I’ll be diving into a whole lot of JavaScript goodness. If you’d like me to ping you when the course is done, hit me up on Twitter @adron and just let me know. In the meantime get a Pluralsight subscription (free to sign up and at least give it a try) and check out these courses by myself and others.
- Docker Fundamentals (a course by yours truly)
- Riak Fundamentals (my other course)
- Introduction to Node.js (by Paul O’fallon @paulofallon)
- Full Stack Node.js (by Geoffrey Grosenbach @topfunky)
- Web Development with ExpressJS (by Hadi Hariri @hhariri)
PDX Cloud – A Question Posed.
I attended the PDX Cloud meeting to present, but more to ask a question. Here’s how I posed that question (slide deck at the bottom of this blog entry). I frame the scenario of the distributed development world of cloud computing, dive into the vertical world of enterprise dev and then throw down the big question…

This is a situational report on the current state, of the somewhat bi-polar condition that exists in software development right now. This is reflective of my train of thought around a number of aspects of the industry and what questions have come up time and time again while working with fellow coders and technologists.

The first segment of the industry that we often here about. it’s the hip and cool thing to do, as well as the obvious path into the future right now. It’s not particularly the idea that this segment, of building things as distributed systems is new, it’s just that it has become more important and more capable now than it ever has in the past.

A lot of this has to do with the advent of key technologies around virtualization, cloud computing and large scale object storage and network capabilities. We can spool up enough compute to rival a super computer, sitting alone at home, to storing more data than we can imagine with zero theoretical limit to that storage. All of this networked together behind load balancers, switches and programmable devices that a mere half dozen years ago would have taken more resources than any reasonably sized small business could even afford. All of these capabilities are literally at our fingertips now.

I’ve spooled up a 1000 EC2 instances for a demo before. That was 2 years ago even! Now I as well as many host applications and databases entirely in memory. SSDs as a cloud back end option at AWS and other locations provide another avenue that brings these devices into a world where they can be utilized immediately. Blink an eye, you’ll have the resources.

The storage realm, with costs falling through the floor with Glacier to operationally effective options like S3, EBS, Table Store, Object storage and others make our junk trunks limitless. The option to throw away any data at all seems less and less appealing.
Many developers, but definitely not all, have seized opportunities to alter the way they work and what they’re able to accomplish by using these new capabilities. From the now common asynchronous approach to development, shifting languages and stack to the invention of new paradigms around development and operations into a devop practice, leadership has stepped up to this changing game.

Vertical systems have in the past twenty years held the main position in the enterprise as the go to architectures. Client server or three tier or whatever one may call it. With a synchronous mindset the vertical implementation of systems produced several benefits.

We gained the ability through diligent documentation and widget style architecture to build CRUD (Create Read Update Delete) and LOB (Line of Business) applications at a rapid rate. With a simplified approach like this businesses spent a lot of time focusing on their business, not particularly on efficient utilization of resources, processing or reliability. But who could blame them, with Moore’s Law it seemed the only real ways to scale vertical systems were by writing faster code or buying a bigger computer, for a while that seemed to work fine.

Most of the, what I’ll call “vertical revolution” happened with the GSD mindset. GSD mean Get Shit Done. Again, another idea that sort of worked pretty well as long as Moore’s Law was in effect. But things have started to change, with Moore’s Law faltering.

Management practices also became a complete TLA soup during this time. The last 20 years continued the standard “let’s cookie cut people into widget producers”. It never works as well as it could or should, but the industry – and really all humanity keeps trying – to do this anyway. This is fine, we’ve got to try. The vertical stack however brought this to the extreme forefront as the industry tried to shoe horn all sorts of development into singular types of management practices.

Overall though as long as things stayed simple, we stuck to our KISS principles as software craftspeoples the architecture stays straight forward enough and the stack stays easy. However there are voluminous limitations. There are massive management and project issues with all of this.

Many parts of the industry are screaming for the future. As we have it, some agree on certain aspects of what the future should be and others agree on other aspects of the future.

We have some bright spots amid the confusion that is making the distributed world much easier, and the technology continues to do this.

Some want convergence. Which may work well in some ways, but in others it is converging into a clustered mess. As with the roadways of the 50s and the effervescent ideas of 50s planners, we’re finding the idea of the superhighways aren’t working either. The same is starting to appear for some types of device convergence. So where does this really leave us? Where are our weak spots as an industry? It seems like right now we’re stuck in that traffic jam getting to the next step.

Things are looking a little like this freakingnews.com MAV. Multifunction and not functional at all.

So to gain clarity on direction I pose the question…
- How do we change the later world to work as well as the new world of distributed systems?
…and a few follow ups.
- What do developers in the industry need to make true distributed computing advances while drawing on the known elements of the vertical computing realm?
- What do we need as developers and leaders to more reliably advance the industry without setbacks?
- What do we need as leaders to move the industry forward to the next steps, stages and developments in converging technology?
- Are these even valid questions? What would you propose to ask?
TeamCity Setup for Junction Build, Plus Implosions
I wanted to get a continuous delivery process setup for Junction that could help everybody involved get a clear and quick status of the project. The easiest way to do this for a Windows 8 .NET Project is to setup a Team City CI Server.
This article covers what I went through to get the server up and running. In the next part I’ll cover troubleshooting that I went through to get a Visual Studio 2012 Window 8 C# Project building correctly on the server.
Finally, the last part is a small surprise, but suffice it to say I’ll be getting a completely different language and tech stack up and running which you’ll likely not guess (or maybe you will). 😉
Setting up Team City 8.0.3 (build 27540) using Tier 3 and a Windows 2008 Server, or not…
Setting up a Windows 2008 Server with Tier 3 is super easy, as you’d expect with a cloud service provider. Log into your account, click on “Create Server” to bring up the create server dialog.


Next enter the information and select a Standard server.

Click next and then make the last few selections.

Click Create Server and then sit tight for a few while the server is created. Once the server is created navigate back to the server information screen (I’ll leave you to get back to this screen).

On this screen click on the add public ip button to bring up the IP & port selection screen.

On the public IP screen select the HTTP (80) and RDP (3389) ports to open up. Click the add ip address button and again sit tight for a few. Once the server has the IP set then we can log in using RDP (Remote Desktop or on Mac try CoRD).
Next install the .NET 4.5 SDK. For the latest, it’s best to install the latest windows SDK that is available for Windows Server 2008 also.
Team City install
In the instructions below, you’ll notice everything is now Windows Server 2012. That’s because after installing everything on a Windows 2008 Server I stumbled on a very important fact. I’m working to put a build together for a Windows 8 Store Application, which requires a Windows Server 2012 (or Windows 8) operating system to build on.
I got a sudden flashback to OS-X and iOS land there for a second, but leapt in and wiped out the image I’d just built. Since I’d built it in a cloud environment, it merely meant spending a few seconds to get a new OS instance built up. So after a few clicks, just like the instructions above for building a Windows 2008 Server I had a Windows 2012 Server instead. There are, however a few steps to follow once you have a good Windows Server 2012 install. Once you have a good Windows 2012 Server up and running it should have a public IP, some memory, compute and storage capabilities. In the image below I didn’t give it a huge amount of horsepower for a few reasons.
- It’s just doing builds, not computing the singularity.
- If it can build on this, I’m doing good keeping the project clean.
- I want to keep the build fast, keeping it on a weak machine and still having it fast also reinforces that I have a clean project.
- I don’t need a successful build every second, the server gets used only during pushes by devs. If we get up to dozens of devs hacking on this, I can easily spool up and get a faster, more hard core heavier horsepower option up and running.

When Windows Server 2012 boots up the first thing that will launch is the Server Manager. We don’t really need that yet, so just ignore it, close it or move it to the side.

The first thing we will need is Internet Explorer, so we can download Chrome or Firefox. Internet Explorer is wired up with high security so the first thing it will do is explode with messages about sites not being in the right zone. It is, hugely annoying. So add each site to the zone and head out to the web to pick up Chrome or Firefox.

In the following screenshots I didn’t actually download Chrome or Firefox first, but instead downloaded TeamCity. I advise getting Chrome or Firefox FIRST and then downloading TeamCity with one of those browsers. Life is dramatically simpler that way.


I know one can turn off the security settings in IE, but it’s just dramatically easier to go and use one of the other browsers. Just trust me on this one, if you want to turn off the security features in IE, be my guest, I’d however recommend just getting a different browser to work with.
Once you’ve got your browser of choice and Team City downloaded, run the installer executable.



Leave the components checked unless you have some specific goal for your server and build agents.

In one of the subsequent dialogs there is the option to run the server under the SYSTEM account or under a user account. Since this is a single purpose machine and I don’t really want to manage Windows users, I’m opting for the SYSTEM account.

After everything is installed navigate in a browser to http://localhost. This will automatically direct you to the TeamCity First Start page.

At this point you’ll be prompted to ok the EULA.

Then you’ll be prompted to create the first Administrator user.

From there you’ll be sent to the TeamCity interface, ready to create a new build project.

Click on Projects at the top left of the screen and you’ll navigate to the Create a Project dialog. Click on the Create a Project link to start the process.

Once you’ve entered the name, project ID and description click on Create. This will bring you to the next step, and to the general tab of the project. On this screen click on Create build configuration.

Now create a name, enter the config id, and click the VCS Settings >> button to move on to the next step of the process.

In VCS Settings leave everything as default and click on the Add Build Step >> button.

Now select the Visual Studio (sln) option from the Runner type and give the dialog a moment to render the options below that. They’ll appear and then enter the Step Name, Visual Studio type needs to be set to Microsoft Visual Studio 2012 and then click on Save.

From there you’ll be navigated back to the Project Build Steps screen. On that page you’ll see the build step listed. We’ll have one more we’ll need to add in a moment, but for now click on Version Control Settings again.

On this page click on the Create an attach a new VCS root.

Now select Git from the dialog and wait for the page to populate the form settings and options.

Now enter the correct Fetch URL to the Git repo (which on github looks something like https://github.com/username/gitrepo.git and is available to copy and paste from the right hand side of the repo page on github), enter the appropriate default branch to build and an appropriate VCS root name and VCS root ID. Once that is done click on the Test connection button.

Click save and now navigate back to the Build Triggers screen by click on the #5 option on the right hand side of the page. You’ll be navigated back to the magical Version Control Settings screen where you now have a few more options available and a VCS root available.

Now an Add New Build Trigger dialog appears to add the trigger. I set it to trigger a new build at each new check-in. The TeamCity server checks frequently to see if a commit has been made and will initiate a build. Another way however to setup this is to not add a trigger and instead go to Github (if you’re using Github) and setup a push trigger from Github itself. That way every commit will initiate a build instead of the TeamCity Server, which knows nothing about the actual status of the repo until it checks, giving a more timely build process to your commits & dev workflow.


Now, one more build step. Add the NuGet Installer (which is included with the TeamCity Build Server, check the docs for TeamCity 8.x for NuGet Installer and NuGet for more information). For our purposes once you’ve insured that the NuGet Installer you need is available add a new build step. Select from the Runner Type NuGet Installer and the respective form will populate below.

Once the step is added, click on Reorder Build Steps under the Build Steps list and a dialog, specifically for reordering the build steps will appear.

Reorder the steps so that Getting NuGetty (the name I’ve give to it, click for a full size image) will be run first.

At this time you now have all of the steps you actually need. You’ll be able to go back to the main projects screen and built the project.
When you do this however, if you’ve actually set this up to build a Windows 8 Store Project you’ll get a build failure. Which is a total bummer, but that makes for a great follow up blog which I’ll have posted real soon! For now, these are great steps for getting a modern ASP.NET, Java, Maven and a whole host of other builds up and running. For the solution around the Windows 8 Store Project keep reading (subscribe on the top right hand side to the RSS!) and I’ll have that posted up real soon.
Until next entry, Cheers! > Adron
You must be logged in to post a comment.