Nov 272017
 

Following what’s probably a very predictable course of operational maturity, my team at work started out manually uploading jars onto VMs, maybe with a few simple services, scripts, and setup tricks to keep the manual steps for deploying software to a minimum. As the amount of code we wrote and maintained grew, we started to focus on automating more and more of our code deployments, with an emphasis both on rolling deployments (so there’s no visible downtime to users), and on increasing reliability by reducing the number of steps we could possibly mis-type or forget. Since our code was heavily deployed on AWS anyways, OpsWorks seemed like the perfect setup for us. So far, while it isn’t actually perfect, it’s been a good tool for getting our app deployments and instance configuration more automated, which is what we really needed.

Continue reading »

 Posted by at 9:00 PM
Oct 222017
 

So a while back I had a fondness for ranting about social networks on this blog. Lately, I’ve had the urge to revisit that trend and spend some more time ranting about social networks on this blog. Why? Well, I’ve been using Mastodon some recently, and that’s got me thinking about my whole concept of what social networks (and the apps built on top of them) should be. And while I’m not going to try to claim that a relatively minor (compared to the other social networking apps out there) app is the future of social networking, looking past the app to some of the design decisions show a lot of things that make me happy about the trend in how some of these newer apps are getting built.

Continue reading »

 Posted by at 12:05 AM
Sep 292017
 

Automatic software testing is an interesting thing. Books have been written on the topic, libraries have been built to try to bring the practice to traditionally hard-to-automate sections of testing, and in some places, it’s so important it’s the first code that gets written. There’s a lot of different philosophies about how it should work, but in my experience, it’s probably an area where the less religious you are about it, the better it’s likely to work for you.

Continue reading »

 Posted by at 11:01 PM
Jul 292017
 

I’ve noticed several new blog posts on journalism and its future over the last couple of months. Couple this with listening to This Week In Google regularly along with following Jeff Jarvis’s blog, and the question of what journalism is going to evolve into (and the journalism that makes it to several years from now will have changed dramatically from how they operate today) has been on my mind of late. The more I consider it, the less I think journalism’s ultimate destination will be recognizable as what we have available today.

Continue reading »

 Posted by at 1:15 PM
Jun 262017
 

Java 8 introduced a lot of cool features, 1 of the most useful of which was the stream() method. This nifty little method lets you treat an Iterable as a stream, enabling cool things like lambdas operating over a list. Related to stream() is parallelStream(). This lets you group your stream into smaller streams that are run in, you guessed it, parallel. Specifically, your data is processed in a thread pool the size of the number of cores on your machine, minus the one running your app. That’s a handy piece of information you’re going to want to keep in mind before you start throwing this nifty little call around in your code.  Continue reading »

 Posted by at 2:44 PM
May 242017
 

Not too long ago, my friend Warren wrote an article proposing some campaign finance reforms. This got me thinking about whether or not there’s a reliable to way of dealing with monetary donations to political candidates that both encourages integrity once a candidate reaches office, and can stand up to legal challenges. Personally, I think there is, but to do so we’re going to have to approach the situation from a different angle.

Continue reading »

 Posted by at 1:28 AM
Apr 302017
 

For a while, I worked for a manager that wore a lot of different hats on our team, including that of “product manager.” Sadly, that meant he was often really busy and thus hard to pin down to get a product answer from. He knew that this was an issue, and wanted to get a full-time product manager for our team. At the time, I was thrilled about the idea. Fast forward a few months, and a little reorganization later, and our team now has a dedicated product manager, and I’m regretting my earlier enthusiasm. There seems to be a disconnect between product people and developers, so for any product managers reading this, here’s a few tips to help improve your interactions with developers.

Continue reading »

 Posted by at 1:00 PM
Mar 272017
 

By now, a lot of us have read Susan Fowler’s tale of her year at Uber. It’s certainly not the first time Uber’s been accused of misconduct, and to be honest, the only thing that was surprising in Fowler’s post was just how institutionalized this behavior was, and just how hard so many different people at the company work to defend it. Fowler’s post describes a company that is being run wrong in just about every way imaginable, and it seems Uber’s most noteworthy success is not having been sued out of existence already.

Continue reading »

 Posted by at 12:16 AM
Feb 282017
 

The team I’m on at work currently has a remote developer. He’s very good, but he lives in another country, and is technically a contractor and not a full employee. That means there are restrictions on what he can and can’t have access to or do for us. These limits have started me wondering, at what point is a remote developer’s ability to contribute so limited that it limits their value to the organization as a whole?

Continue reading »

 Posted by at 11:59 PM
Feb 052017
 

Software development is all about making tradeoffs. Sometimes, we do stuff because it’s quicker and get things out of the door faster, not because it’s the best option long-term. Do software development long enough, and you’ll learn the term “technical debt” – which is formally defined on Wikipedia as “a concept in programming that reflects the extra development work that arises when code that is easy to implement in the short run is used instead of applying the best overall solution”. A more informal, but probably just as accurate definition could also be “the price(s) you’re paying now to have shipped things earlier.” Here’s the thing, most of the time we do something that incurs technical debt, we know it then. It’d be nice if there’s a way for us to log the decisions we made, and the debt we incurred so we can factor it into planning and regular development work, instead of trying to pay it off when there’s no other alternative.

Continue reading »

 Posted by at 2:18 AM