I like to write

A writing portfolio can be tough to maintain, as links tend to change over time. Instead, I've decided to share a copy of some of my contract work here, as well as some of own personal writing.

In need of some fresh technical content?
Articles

Incident Management and Continuous Integration, a Partnership for Success

As a developer, I’m a huge fan of continuous integration. For the uninitiated, continuous integration is a software engineering practice in which code changes are tested as soon as they are committed. This enables early problem detection. It also provides immediate feedback on code quality, allowing for issues to be identified and fixed immediately. Often mentioned in the same breath as continuous integration is continuous deployment. Continuous deployment is an extension of continuous integration in that, as soon as the unit tests pass, the code is immediately released to production. By continuously integrating and deploying code changes, developers can reduce risk and quickly adapt the product to the business’ needs. This process, while incredibly valuable to both developers and users, does have some room for improvement. As in a production environment, integrating your team’s incident management process into your continuous integration workflow is an excellent way to improve communication and...

Read more »

Smart Activation of SME's and Effective Dev Handoff

Have you ever caught a ticket that you just couldn’t figure out? You spend hours on Google, slowly reading the entirety of Stack Overflow, while occasionally banging your face against the desk. By the fourth hour, solving the problem becomes a matter of pride. Productivity be damned! It’s times like these when a process for effective incident management can save your sanity. Don’t get me wrong — I understand the desire to solve a problem without involving anyone else. Whether it comes from hubris, shame, or just an honest desire not to bother anyone, it happens to me all the time. Problem-solving is an unnatural obsession of mine, but when it comes to the health of my projects, I’ve found that following a pre-defined process makes everyone’s life easier. Prioritize Some problems are real, some aren’t. Not every issue is mission critical, so when a ticket hits your desk, the...

Read more »

Impact of Incident Management on the Developer

While I’ve had an interest in computers for almost as long as I can remember, it wasn’t until I was a freshman in college that I got my first computer-related job, as a Systems Administrator for the Center for Integrated Plasma Studies. It was, like all jobs at the university, a great learning opportunity for under-market pay with an emphasis on self-direction. My job duties at the time ranged from true systems administration tasks to basic help desk services for the staff. I spent the next 4 years working as a sysadmin for various departments at the university, and another year afterwards as a broadcast engineer (a story for another time). I’d like to think it was the work I did during those few years that gave me the respect I have for just how difficult proper incident management is. Stop me if this sounds familiar: a user reports a...

Read more »

What Are Isomorphic Applications?

Isomorphic ApplicationsHaving been a backend developer for my entire career, isomorphic applications are still a very new concept to me. When I first heard about them, it was a little difficult for me to understand. Why would you give that much control to the front-end? My brain started listing off reasons why that is a terrible idea: security, debugging, and complexity are just a few of the problems I saw. But, once I got past my initial flurry of closed-mindedness, I started to look into the solutions to those problems. While I am not necessarily a true believer, I can definitely see the power of isomorphic apps. So, what exactly is an isomorphic application? Well, in a nutshell, an isomorphic application (typically written in JavaScript) tries to mix the best parts of the front-end (“the client”) and the backend (“the server”) by allowing the same code to run on both...

Read more »

What is Full Stack Deployment?

Full stack deployments are a relatively new concept to me. At first, I was confused as to why you would redeploy the entire stack every time, rather than just the code. It seems silly, right? My brain was stuck a little in the past, as if you were rebuilding a server from scratch on every deployment. Stupid. But what exactly is full stack deployment, and why is it better than “traditional” code-only deployment? Traditionally, deployments involve moving code from a source code repository into a production environment. I know this is a simplistic explanation, but I don’t really want to get into unit testing, continuous integration, migrations, and all the other popular buzzwords that inhabit the release engineering ethos. Code moves from Point A to Point B, where it ends up in the hands of the end user. Not much else changes along that path. The machine, operating system, and...

Read more »