1 of the things I work on regularly was originally created with a fairly consistent data set. We had a very good idea of what fields were going to be in the data. As a result, we thought we knew where exactly we needed to check for null data, and when we didn’t need to know. Then the data set expanded, and the new data wasn’t nearly as consistent as what we started with. That’s when we realized that we were very much wrong in thinking we knew what needed null checks. Continue reading »
Dogfooding is an important part of software development. Google “dogfooding blog post” and you’ll have reading material for weeks. But what do you do when it’s tough to dogfood your own product? What do you do when dogfooding your own product isn’t even a viable possibility? Continue reading »
Recently, I was looking what it would take to notify a Zabbix server whenever an error is encountered in a Python web server. Ultimately (before I realized that Zabbix has log monitoring and that we weren’t going to be installing a Zabbix agent on the server), we went with Zabbix’s log monitoring, but before that I started looking at sending the notification directly from the Python code itself. The quick and dirty lesson here is to thoroughly research the features of monitoring servers (and discuss them with your system admins) before writing code to solve a problem you don’t actually have. The other lesson is here’s how I learned to send notifications directly to Zabbix servers directly from your Python code. Continue reading »
All developers have been in this situation, sitting around, staring at the monitor, trying to make sense of the code staring us back. It’s a tough, miserable period for developers going through this. Specifically, it’s a tough, miserable period for developers that doesn’t have to happen. No matter what the code that does this to you, there’s 1 common, glaring thing in common with the code that does this to developers – there are hardly any, if any at all, comments in the code. In the interest of sparing developers this pain, here are some simple rules about commenting that will reduce developer suffering whenever somebody has to read your code. Continue reading »
When Marissa Mayer ended Yahoo’s work from home policy, the Internet went nuts, and stayed nuts for days, which is a pretty long time for Internet nuttery. There’s been all sorts of random talk…um….personal annecdotes…er….”news articles” have sprung up discussing this very important issue of 1 specific company’s policies. It’s almost as if people think that Yahoo, great, shining beacon of largely irrelevant and nobody cares anymore, is a precursor to the whole tech industry (something it hasn’t been in a long while). Some people have at least either tried to either limit their discussion to Yahoo’s particular situation, or moved everything to a broader discussion of telecommuting in general. I’m going to focus on why I personally don’t like to telecommute if I don’t have to. Continue reading »
I was going to write something about the 1 or 2 tricks I’ve learned about trying to wrap your head around large codebases, but the last few months at work have pretty much made it clear to me I know nothing about knowing things, so that one’s pretty much in the scrap heap at this point. My very first post tried to capture that sense of being overwhelmed and in over your head when you start a new job, and it turns out it’s pretty easy to keep that sensation alive 6 months in. I wouldn’t be surprised to discover that I know less about what I’m doing now than I did when I started. Continue reading »
I’m sure there are lots of ways to handle documenting things (design documents, release notes, requirements, etc.) in a software development environment, but I’ve only ever seen 2: a corporate wiki, and something from Microsoft (I forget the name of it, all I really remember is that it had a check out/check in model, and all the developers thought sucked. I’ll just call this option “the Microsoft option” for lack of something more accurate). From what I’ve seen, wikis have a lot of promise, and do a great job, but to live up to their full promise they still require an anal retentive developer dedicated to periodically reviewing and fixing the documentation for anything they actually deal with on a day-by-day basis. Continue reading »
Maybe it’s just that I’m slow on the uptake, but I didn’t get the whole hype over using virtual machines for development up until I actually started doing it. After all, why use virtual machines when you have a perfectly good physical box sitting right there and ready to go? I get that it saves money and power and is easier to administer, but that’s an administrative reason to use virtual machines, not a reason for me to put my server set up on a VM rather than the computer sitting right here next to me. Continue reading »
We all have our own personal Kryptonite, that little something you encounter as part of your job that just never seems to go right no matter what you do. For me, that Krytonite is server configuration. It doesn’t matter how clear you make the how-to directions, I will find a way to fail at it no matter how hard I try to get it right on the very first time. It’s like magic, or karma, or some other-worldly force that’s determined I fail when trying to set up any new environment. Continue reading »
For the first time in my professional career, I’ve found myself working without any type of laptop. I can still work from home on my own machine, but given how easy it is to telecommute as a software developer, it struck me as odd that my work machine would be just a desktop. It led me to think about just what the reasons could be that I have a desktop for working, and why everywhere else I worked chose to make sure that I had a laptop capable of doing development work, or at the least could remote desktop into my development machine. Continue reading »