Andy's Fun House


Stop Calling Me DevOps, I Do DevOps!

I’ve been grappling with a bit of personal reality as of late.  I do technical articles/posts on DevOps topics, I consult on (and perform) DevOps at work, and when I teach people how to program I accidentally teach them a bit of DevOps in the process.  The problem is this: I don’t want to be called DevOps.

“But Andy, why don’t you want to be called DevOps?!  It’s so great!  And it’s just a name.”

I’m so glad you asked, and I’ll do my best to keep it simple.  Let’s all agree that DevOps (as it relates to software development) is the concept of increasing communication and collaboration as well as cross-specialization for the purpose of building better software.  Sounds great, which is why it’s what people have done for decades before the term DevOps was uttered.

Before people had phones more powerful than the things that sent us to the moon, before we could bicker over functional vs imperative paradigms, and before we had operating systems named after furry death machines, people had to create computers.  The ones who did this weren’t computer scientists (and certainly weren’t Rockstars, Gurus, Ninjas, or anything else that absurd).  They were mathematicians, engineers, and maybe sometimes chemists.  They had other jobs and plans, and things that could’ve used automation.

Those people who did the most for our industry were often doing so because programming/sysadmin simply were unfortunate enough to get in the way.  And though I certainly wouldn’t claim I’ve done anything useful or great for the industry, I can at least relate to programming and system administration getting in my way from time to time.

I taught myself how to program, and in the process I had no choice but to learn how to keep an eye on the quality of my software, how to get rid of menial tasks for deployment, and how to communicate what I wanted/needed with my collaborators and clients.  I didn’t do those things because I wanted to expand my areas of expertise, I did them because I was annoyed and was sick of waiting for something or someone to do it for me.

When I say that I don’t want to be called DevOps, it’s really just me being frustrated.  This term, which apparently is a very big deal these days, is yet another industry repackaging of something most great engineers do anyway.

So just remember… I’m not DevOps, I’m just an engineer who has a lot of things in his way on a daily basis.


- Andy


Weekend Projects Gone Awry, Part 3

Things will be a little different this time. With the two previous entries in this series, I was recapping work on a new idea/project and had to relay information about the project. This time, however, I’m simply extending Part 1 into the mobile arena and trying out some “new” technologies. That disclaimer done…here we go!


A Recap: SlimSocial

SlimSocial is the fledgling social network devoted to making “being social” more difficult. The key limiter was that a person can only post once per day, in theory cutting down on the useless chatter that happens constantly.


Going Mobile

After pushing out SlimSocial, several of my good (aka misguided) friends decided to latch onto the idea and enjoyed the concept. It didn’t take very long for the first “can you make it work on my phone” request to come through, and after the fourth or fifth in a row I begrudgingly admitted that I could probably look into making a set of apps. I made sure to stress to each person that it was a lot of work and unlikely to be something I’d complete for months.

So of course, I started on it a couple days later when I’d finished working on Part 2.


Executing (aka Enter Cordova & AngularJS)

Last year at Microsoft’s //Build conference, they made a pretty big deal about their new cross-platform features in Visual Studio. I’d avoided it, as my past work with cross-platform mobile development via Marmalade proved to be tiresome and less than smooth, but I decided I had an opportunity to give the whole package a shot.

One of the other things I’ve been avoiding has been the concept of SPA (Single Page Application) frameworks (Angular, React, Riot, etc). Generally speaking, I find the whole idea to be a quick way to ask for trouble with performance, and they just seemed like trouble to learn.

So there it was. I felt I had the opportunity to learn two new things, and I took that opportunity. After finishing the game engine for Part 2, I continued streaming on Twitch while I fumbled my way through learning both AngularJS and Cordova at the same time within Visual Studio 2015. In the end, I’d say I managed to dump an obscene amount of my free time into this extension of SlimSocial, but on account of forgetting to track my time we’ll just put the estimate around 80 hours.

If you’re reading this and are expecting me to begin expounding the merits of both Cordova and Angular, you should probably stop reading now.


Tech Notes

Now…I can be pretty opinionated. I’m aware it may be a bit of a character flaw, but it’s part of me so you’ll either learn to ignore it or you’ll go away. Learning two new technologies at the same time goes against some hard-learned lessons for me, but it’s not as though I intend for SlimSocial to ever be a serious time-sink (I understand that it has become one, but we’re talking intentions here).

Cordova seems like a pretty promising bit of technology. It’s not as though it’s a new piece of technology, I remember PhoneGap and others being around nearly 4-5 years ago, but it’s not the sort of thing I like to use on account of much of my mobile work having very specific performance requirements that can’t be achieved by wrapping an app within an app (which is basically how Cordova works).

That said, it’s not perfect. Some of the workflow can be aggravating, and figuring out how to configure things on the different machines, while not bad, is far from perfect. Even so, I imagine whenever I have projects in the future that don’t need me to squeeze every ounce of clock speed I can out of a phone I’ll be turning again to Cordova and its VS 2015 integrations.

And then there’s Angular… I can’t tell you how many times I’ve been told I need to learn Angular/React/Riot/Backbone/Knockout/Whatever. It’s borderline ridiculous how many frameworks there are that achieve more or less the same thing. Angular’s learning curve is pretty fascinating as well, starting off shallow when you look at the tutorials, and then taking a curve so steep that it feels similar to running into a wall head-first.

Angular calls itself “Superheroic” on their website, which is a pretty vague thing. Does it work? Sure. Does it do so in a way that’s easy to grep? Not at all. You have to learn intricacies of the entire framework in order to do even marginally complex actions for your app. You also need to grapple with incomplete and/or insufficient documentation when trying to learn said intricacies, basically relying on Bing or Google to show you the dark corners of StackOverflow where your answers lie.

I’ll try out Angular and one of the other frameworks for another project or two, just to be sure I’m giving it a fair shot, but thus far my decision to stay away from these libraries is feeling pretty justified.


Conclusion & Reveal

Once again with SlimSocial, I had hoped to make my prototype over the course of a weekend. This estimate was built off of my experience with doing prototype mobile development natively, and thanks to the learning curves of both Cordova and Angular I was about as far from correct as could possibly be (which is the reason I have a personal rule to not learn new technologies for business critical projects).

Adding onto this, there is a problem with distribution. In order for me to properly make this app available to individuals who aren’t interested in testing, I’ll be shelling out some serious dough to Apple and Microsoft (and subjecting myself to the chaos that is the Android build process). I’m not sure how willing I am to do that for SlimSocial. However, when the day comes that I do renew my Apple and Microsoft developer accounts, I’ll probably publish this immediately. Until then, enjoy some screenshots of the app working on my Windows 10 desktop.

home feed
friends profile


- Andy


Weekend Projects Gone Awry, Part 1

Lately I've been spending a lot of time at home, which has produced an odd side effect.  It seems the more time I am left alone, the more I get stuck on ideas without real merit.  Generally speaking, these are passing thoughts at best, but sometimes one takes root and seems dedicated to obstructing real productive thought.

In past years, I've simply bided my time until the thought eventually passed.  The more recent thoughts, however, don't seem to be following the pattern.  Whether because of changes in my personal life, or the ongoing process of maturing, I find myself having to invent new methods for clearing my mind.  And so we find ourselves here, dear reader, where I will attempt to quickly bring these concepts to life and subject you to the process.


The Idea: SlimSocial

At heart I am most comfortable playing the role of an introvert.  As such, the world of social networking is irksome to say the least.  Don't get me wrong, I have met many great friends thanks to the internet, but I also think they talk too much at times.  With that in mind, I'd like to introduce you to "SlimSocial," my solution to social-overload on the internet.



Instead of allowing everyone to talk so much, I wanted to create a simple network that limited the number of posts someone could make per day.  Initially, I'd envisioned limiting everyone to one post per day, and most of my prototype work has been done with that in mind.  If I were to put more work into the system, it would be more appropriate to generate a system on top of the "likes" and "dislikes" a person accumulates.

Speaking of likes/dislikes, since I'm robbing people of the ability to flood the network with their idle musings, I certainly can't take away their ability to show support or disdain for their fellow network members.  Still, I couldn't quite re-use the terminology of sites like Facebook, Reddit, etc.  I spent a while racking my brain on what to call this feature, and eventually got a helping hand from Jordan.  He took the "Slim" in the title a bit more anatomically, and suggested the system use weight loss or gain to represent likes and dislikes, respectively.  Imagining the confusion this could cause, I quickly jumped on the idea and the chance to further solidify the network's uselessness.


Tech Notes

There aren't really any interesting tech notes for this project, except to say that there aren't any interesting tech notes.  What I mean by that is that I decided to forego utilizing any frameworks outside of jQuery and Boostrap on the UI.  This was the first PHP project I've done in years without my framework (N2F) save for a game to keep tallies of annoying phrases on phone calls I did for a friend over the course of 2 hours.  The whole experience was...enlightening.  I can now say I know what parts of my framework are the crucial ones that really do save me lots of work.  Beyond that, I might say I got to practice a little more with build/release automation in TeamCity, but that was less a goal for the project than it was a result of my server outage.


Conclusion & Reveal

I had hoped to make the prototype for this project over the course of a weekend.  The mockup took about an hour after I found a template, but the remainder of the work was broken up due to said server outage, the holidays, and of course my day job.  I'd estimate I spent 4 full days of work (32 hours) on the project to get it to where it sits today.  The prototype is essentially complete, and though there is obviously more work to do, it is time to move on...or so I hope.


- Andy