Main image
18th August
written by Chris

Up until very recently I was employed at FoxGuard Solutions and had the pleasure of working with FoxGuard’s resident mad scientist, Monta Elkins. Monta loves to tinker and is especially enthralled with the vast array of projects which can be undertaken with small, programmable logic boards like the Arduino. Now, I’ve played around with these things before but never seriously. Yet, somehow, I let Monta talk me into collaborating with him on a small project.

Personally, I think this is just his attempt to get me more invested in the builder community. “Come to the dark side” they said, “we have projects.

Nonetheless, at my going-away lunch, Monta dropped this guy on my lap with nary a word of explanation but asked that I document my struggles.

Now, if you’re well versed in the hardware hacking community it’s probably obvious what this thing is but it took me a bit of research to work out how I was supposed to work with it.

Attempt #1: I naively fired up my Arduino editor from some long-forgotten project and verified that I could neither talk to this thing nor identify any obvious way in which I was supposed to talk to it.

Attempt #2: On the back of the board it says “Node MCU Amica” and offers a web address that I can go to. From this I learned that there’s apparantly an entire community of people who build firmware for this thing in a number of languages and that, if I’m brave enough, I can possibly brick this thing by flashing new firmware onto it. Also, there’s a button about the size of a pinhead on this labeled “flash” that I’m almost certainly going to press at some point and regret shortly thereafter. None of this told me much of anything helpful about how to start developing for this thing.

Attempt #3: On the largest and most obvious chip on this board, in Enron-Beelzebub font is written ESP8266MOD. Googling that gets you to a page documenting a TinySine product which looks like someone took a pair of pruning sheers and trimmed off about 35% of the device I have in front of me

These are not the droids you’re looking fo

Attempt #4: Discouraged, I did some more aimless Googling before landing on searching for the phrase “NodeMCU Amica” figuring that, while there was an address printed on the back of the chip, maybe there was some better resource out there that at least talked about the thing. That took me to Amazon and this device

Getting close…

That looks close but not quite the same. At this point I’m thinking that, while I have no idea how to make this play nice with others, surely someone trying to sell it on the internet will have some barebones documentation to get me started. No luck on the page I’d landed on, but “Customers who viewed this item also viewed” the “HiLetgo New Version ESP8266 NodeMCU LUA CP2102 ESP-12E Internet WiFi Development Board Open Source Serial Wireless Module Works Great with Arduino IDE/Micropython” which, though a mouthful of a product name, had an image that nearly perfectly matched my device.

But more importantly, it also had instructions for getting started developing on it.

Instruction & Steps of How to use:

  1. Download the Arduino IDE, the latest version.
  2. Install the IDE
  3. Set up your Arduino IDE as: Go to File->Preferences and copy the URL below to get the ESP board manager extensions: Placing the http:// before the URL lets the Arduino IDE use it…otherwise it gives you a protocol error.
  4. Go to Tools > Board > Board Manager> Type “esp8266” and download the Community esp8266 and install.
  5. Set up your chip as:
    Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)
    Tools -> Flash Size -> 4M (3M SPIFFS)
    Tools -> CPU Frequency -> 80 Mhz
    Tools -> Upload Speed -> 921600
    Tools–>Port–> (whatever it is)
  6. Download and run the 32 bit flasher exe at Github(Search for nodemcu/nodemcu-flasher/tree/master/ at Github)
    Or download and run the 64 bit flasher exe at:
  7. In Arduino IDE, look for the old fashioned Blink program. Load, compile and upload.
  8. Go to FILE> EXAMPLES> ESP8266> BLINK, it will start blinking.
And indeed it did
15th May
written by Chris

I love Terraform but, as we’re fond of saying at work, “it’s a loaded gun pointed at your production environment.” There are ways to minimize the risk but they boil down to writing a bunch of test automation around Terraform so as to be sure that it’s not doing something evil.

That’s a great idea, but no one much wants to pay for it. Toil budgets would be a great way to get buy in on this, but that’s another topic for another day.

This means that while I can easily spin up all kinds of expensive cloud resources just by running a Jenkins job, it’s easy to lose track of them and forget to spin them down. This then leads to an annoying hunt through a bunch of Jenkins console output panes trying to find environments with weird names like “trusting-manatee” and “polite-tick”

So, since I’m not allowed to have a script to clean up environments, I wrote one to find the jobs I need to promote in order to clean up environments. Hooray!

SEARCH_STRING = "lost-environment"  
Jenkins.instance.getAllItems(AbstractItem.class).each {
    if(it instanceof hudson.model.FreeStyleProject) { 
      for (build in it.builds) {
      	def log = build.log 
        if (log.contains(SEARCH_STRING)) {
    		println "${it.getFullName()}: ${}"

Is it fast? No. Is it elegant? No. Does it work? You bet.

6th October
written by Chris

There are few indications of how broken an office communications culture is than emails titled “PLEASE STOP AND READ THIS MESSAGE.” There was a time when Email was to office communications as Democracy was to government — “the worst… except for all the others.”

That’s not true anymore. There are better ways to communicate, collaborate, and work together. Choosing good ones and encouraging the adoption of them can really change the character and nature of your work-place. Give it a try.

27th September
written by Chris

Like many Americans, I watched the Presidential Debate last night. I could spend pages on what was said and not said by both candidates but one line from Secretary Clinton really stood out to me as a technology professional in the field of Cyber Security.

“We need to make it very clear — whether it’s Russia, China, Iran or anybody else — the United States has much greater capacity. And we are not going to sit idly by and permit state actors to go after our information, our private-sector information or our public-sector information.” (more…)

28th January
written by Chris

I’ve been doing front-line software development for more than a decade now.  I got my first job in the industry working for this small startup making the digital equivalent of a calendar or a fruit-basket for real estate agents to give out to their clients.  The business side of the enterprise seemed so far away then; the rest of the team and I put our heads down, banged out features, solved problems, and were shocked to find, three years later, that the product we’d so  lovingly crafted wasn’t selling because our target market didn’t have money to buy it.

Since then I’ve worked for the military and done battle with ColdFusion, a contract development shop where I tooled around with mobile before mobile was big, and another small company doing C# web development for the mortgage industry.  As I’ve changed jobs my roles and responsibilities have drifted further and further away from head-down coding and towards more nebulous things like “architecture,” “process,” and “professional development.” (more…)

13th March
written by Chris

This is less of a blog post and more of a brief public service announcement.  If you are using Entity Framework and you change the namespace of your Context file bad things will happen.  Future Add-Migration commands will attempt to re-script your entire database.  Google will be remarkably unhelpful in diagnosing this problem.

“But,” you say, in your best Comic-Book-Guy voice, “changing namespaces is annoying; no one would just change their Context’s namespace.”  To which I reply, “if you’re using ReSharper you might, because it pretty much automates the process and nags you if you move files around.”

Not that solving that problem just consumed an hour of my day or anything.

25th February
written by Chris

One of my goals in spinning up a software development team at Foxguard has been to have a development environment ready to go before the first person comes through the door.  That means a vague skeleton of the application we are developing as well as the apparatus of building, deploying, and testing that application.  Since anything worth doing is worth doing right we’re approaching the latter problem with a Continuous Deployment solution in mind.  That means that every time we commit code it is picked up by a automated script, built, tested, and published — ready to begin evaluation through some as-yet-to-be-determined test suite.

The first part of this is fairly easy.  Jenkins is a great tool and there is no shortage of tutorials out there on how to make it play nicely with GitHub, MSBuild, or any other technologies you might be using.

Deployment, though, is a bit of an more difficult nut to crack. (more…)

22nd February
written by Chris

picard-facepalmThus is the danger of over-automating your life.  I long-ago configured to bundle up messages from my hosting provider as well as several of the services and plugins I use on this site.  I check messages…. occasionally, but not often.  As a result, I missed several notifications: that my account with a spam-comment filter service had lapsed, that my site was being moved into a suspended state by my hosting provider for excessive spam comments, and the replies to my inquiries to that some hosting provider about what happened to my site.

Mea Culpa.

So now we’re back up and running with a new and improved spam filter.

Tags: , ,
17th November
written by Chris

Software development is about process refinement.  Try something, see if it works, revise, adapt, reset, and try again.  If you’re doing the same thing the same way every time you’re not moving forward and, in this field, that means you’re falling behind.  Do that long enough and you start to apply it to other things in your life.  I switched from a QWERTY layout to Dvorak for more or less that reason (working out well, by the way) and I’ve taken up baking and gotten into coffee with much the same approach.   (more…)

27th October
written by Chris

After a lot of soul searching on my professional future and the path that I want that future to take I have left VirPack and, today, begin my new adventure at Foxguard.

Here I will have the opportunity to build and likely manage a development team, the freedom to build quality and maintainability into the software process from day-one, and an opportunity to really make a difference in an industry in flux.

On the down side, I no longer have a window in my office.

Deep breath; here we go!