First Brick of 2017

I completed my first “brick” of 2017 this morning with a friend. For those who don’t know, a brick is basically a bike ride followed immediately by a run. They’re pretty popular amongst triathletes (of which I am not). They’re also awful. Luckily, we took it easy on ourselves with a 25k mile in town ride followed by a 5k run.

I’ve been out of the saddle for a few months aside from short stints on the track so I’m having to force my body back into the very unnatural position of an aero road bike. The first few rides of the year make you think you need a new saddle but the reality is that your body has simply regressed back to a more natural state of being which don’t include hours of routing your body weight through your sitbones.

I also find the transition from biking to running to be particularly tough. As soon as I take off running I’m reminded of three things: 1) Why the hell am I doing this? 2) Did I miss the part where legs converted into Jello? 3) Why does it feel like I’m going to slow??

Unfortunately, I can’t answer any of those things except #3 which is likely just the speed differential of going 3-4 times my running speed only moments early. It’s that feeling you get when you get off the interstate going 80 and are suddenly stuck on 35 mph backroads. You feel like you’re going absolutely no where and the change of pace is frustrating until you rationality that you’re still traveling 35 miles per hour or roughly 10 times a quick as you can walk.

This year I’ve really got to focus on distance riding. There are a few rides I’d like to do. I’m not certain what I’ll be able to do with work and life being what they are but I hope to have at least two bike trips coupled with roughly 50 miles per day.

 

Deploying Builds Automagically

The main application we ship is pretty big and complicated. Currently, the only way to install it is through the installer. The installation is, from what I’ve been told, pretty complicated. Installing the application by updating binaries and restarting IIS is not an option.

Recently, a teammate configured the installer to run headless by passing a XML to it with all of the properties needed to install and we’ve been dogfooding it within R&D to help ease the burden of installing builds. I wrote a PowerShell script to connect to the server we want to upgrade and performs the installation. It’s designed to run connect to a server using a remote PowerShell session, copy the artifacts over, backup the database, update the database, then update the application.

Now that we’ve gotten this far, I’m trying to implement a set of tests to run post install and pass/fail the build based on these additional criteria (Did it install? Did it pass all the tests?). I’m trying to have the running, at least nightly, by the end of the year.

 

Extended Downtime

This blog is hasn’t been updated since the beginning of the year and has been down for a long time. I decided to stand this server back up tonight and begin documenting things again.

The previous post mentioned six things that I needed to do by the end of January. Well, we accomplished all of them except for the last one (CI).

This has proven to be a daunting task that we’re still tackling but we’ve managed to get some things in place to help increase the quality of builds and cut down on the number of failed builds.

Over the next few weeks, I’ll document what we’ve done and where we’re headed.

 

The Next Month

In the next month, I have to:

  1. Prepare documentation to assist 200 developers in their transition from TFS to Git.
  2. Provide training for developers (do a video?).
  3. Solidify branching strategy and document branching strategy for developers and for release management team.
  4. Get builds working with Bamboo (This is already done, actually.)
  5. Migrate source code from TFS to Stash.
  6. Demo a rudimentary CI build, including unit tests, deployment to a test environment, execution of functional tests, and test results.

I’m kinda freaking out. I’m going back to work on Monday and I know the next month is going to be insanity…

 

Learning a New Language

I’ve been going back and forth for awhile on learning either C# or Java. They’re pretty similar syntactically and there are plenty of opportunities with either language. I’ve chosen C# for two reasons.

  1. The recent announcement that C# will soon be cross-platform.
  2. I was asked if I’d be interested in working on some InstallShield tasks for our installers.

As for #1, I’m not holding my breath, but I hope the support and the community will come. As for #2, I can’t say no to getting relevant, transferable experience.

So, in order to start learning C#, I’ve decided to re-write the Python application KillAllBindings that I shared (and then unshared) last week. I wrote this on my personal time on my own personal copy of Visual Studio. It’s done(-ish) and it works. I’ve tested it and I’m reasonably certain that it’d work for others. It’s not very well abstracted nor does it have any error handling, but it should do the job. I will likely use this application as base for continuing to learn C# in my personal time. Hopefully, I can add additional features (if needed) and get good error handling implemented.

I’ve put it up on GitHub for the world to see. Don’t judge too hard, It’s my first foray into C#.