Programming and kids (or how I learned to love code)

I have three boys that I want to share some of my passion for coding. I don't need my children to be programmers, but I want to share what I find so enjoyable about what I do, but I struggle with where to start. So, I have been thinking about how I learned to code and what drove me. 
Coding was something that I first encountered as a boy of about 11 with my trusty Commodore 64. To do anything, you had to use Basic. I had no idea I was using Basic when I told my computer to load a program. I just knew that `LOAD "*",8` would start the process of loading my favorite games from my attached disk drive. 
From there, curiosity led me to more commands. I could sense the magic behind the little bits of English, numbers, and punctuation. Something amazing would happen that was more than just letters on a screen. It was a child's curiosity that pushed me forward. I was hooked on the machine and the magic of code behind it.
Computers were limited in 1984. They didn't have fanc…

3 problems with quality code

I have been thinking a lot about software quality lately. I’m passionate about building software that does what it is supposed to do, is extensible, is readable by future people (including me), and leaves me with a sense of achievement (a bit selfish, I know). While I love building great software, I freely admit that creating quality software can be a pain. Below are the three main things that suck about writing robust code.
Good code takes time Creating working software can be shockingly quick. Want to build software to detect some bad words in English text? It is easy to have something working in a few hours or less that accomplishes this. Voila, we have a naughty word detector. It won’t be pretty, and it will, probably, be missing a few things, but you have just created a small logic machine that does something relatively miraculous. 
Heck, you could probably build one for each language you need at a day apiece, and you would have something that would meet most or all of your needs. …

Bigger than the cloud?

I have a colleague that says that IoT will be bigger than the cloud. Depending on how you slice it, the statement is true. A Business Insider article from January 2019 says more than 64 billion devices by 2025. That is a lot of programmable things going around. Each of them needs to be managed, secured, and updated. It is a lot of work. This is a new kind of work for most of us in software.

Of course, all of these new devices will need to be managed from somewhere, and that somewhere is the cloud. IoT will drive cloud adoption further into manufacturing than it is today. Cloud is the only way for most companies to manage the scale and distribution that IoT provides. In that sense, the cloud will be bigger than IoT to encompass all of the new information flying around.
Having an IoT strategy without a cloud strategy is unworkable for any but the biggest players: Google, Facebook, Microsoft, Amazon, etc. It is also interesting to note that three of the companies that I thought to list …

Getting VirtualBox Ubuntu running with Oracle Java 7

Two times in the last few days, I have setup my environment to run a basic Java setup with Gradle and Grails. This means that I have been on Google an excessive amount. And I keep forgetting what I searched for the first time. So, here goes a quick guide to getting an Ubuntu VM ready for Java development.
VirtualBox I use VirtualBox for all of my quick development needs. I am a gamer and thus tied to Windows for my gaming needs. An Ubuntu VM is the next best thing to running the real thing. Mind you I do have decent computer with a fair bit of RAM: i7 950 with 16GB. Installing VirtualBox is pretty easy and they have native hosts for the big three OS’s: Linux, Mac, and Windows. Follow the documentation on there site for any additional help. VirtualBox DownloadsVirtualBox Documentation Ubuntu I chose vanilla Ubuntu version 11.10, the latest as of this post, for my development platform. You have two choices when grabbing Ubuntu. First, you can download a virtual appliance. This is just a …
From the Maven to the Gradle I have been itching to try out the Maven alternative Gradle for some time. I am not really in the crowd of maven haters that seems to have formed lately, but I am always interested in making my builds better. Maven
Maven has done a great job of popularizing the idea of convention over configuration in builds. It was the kind of shift I had with Intellij IDEA. Martin Fowler referred to Idea, “as the inflection point of IDEs” (Fowler). The IDE world had been reshaped. Every IDE that came out after Idea was born in a world that expected more. I feel this way to a lesser extent about Maven. Maven changed the game. Maven introduced the concept of a binary repository not as an option, but as a fundamental part of the build experience. Maven expected the project to be laid out in specific way. When it was laid out the “Maven” way, the project got a lot of functionality for free: compile, test, reports, etc. Of course, it was rarely this easy. Often projects would…

Beer fueled development

Our project at work is moving to the stressful, painful phase at the end. It was a project that I call agile under a waterfall. This is a large project, say 12 to 18 months, that someone envisions with a big bang ending. The end of the project usually amounts to the flipping a giant light switch. The expectation under this sort of project is, of course, that you will build up something so perfect that when you flip the light switch, it comes on with that beautiful incandescent glow. This is hard to do. So, people who have done agile development decide that it should be done in an agile manner. So, they put the agile under the waterfall.

In our case, this means iterations, TDD, and Scrumm. These are all things I enjoy. These are all things I like. These are all things that work well. The problem is that "release often" is a critical piece of any agile project. The big bang release does not tolerate lots of mini releases. Generally this creates a very frustrating atmosphere. We…

Android Phone (My Touch)

Recently, I picked up an Android smartphone. In many ways, this was motivated by Apple's greed and Microsoft like control. The problems I have with Apple in general now, is that they have become a monopoly. Albeit, a monopoly with good taste. Okay, perhaps that's unfair, but at least they are exerting an uncomfortable level of control over their iPhone.Out with the iPhone and in with the G-phone. I understand that Google will probably commit some of the same sins. Perhaps they are even are now: . Still, it seems that Google is making more right moves than Apple. Given their track record I expect them to continue to make at least palatable decisions.I am, by trade, the Java developer. My thinking is that this will make the transition to the android SDK very clean. However, I am a little concerned with developing for an environment with limited resources and divergent platforms. It seems that we may be getting ba…