In honor of Christmas, I wanted to put up a little script I wrote for a family holiday tradition. Every year, we each pick a name at random and fill their Christmas stocking. There’s a few rules to this little game, but the one that applies for the purposes of this script is that you cannot be assigned your own stocking. While this script randomly assigns someone a stocking, you can use the same code to dole out Secret Santa targets if that’s more your thing.
Well, obviously, this is going to fall in the “Shenanigans” portion of “Software and Other Shenanigans”, but with the election over and the country’s attention (presumably) turning back to spurring innovation and economic production, I’d like to offer my humble suggestion. Namely, we need to start hiring, encouraging, drug dealers. I’m not talking about the shady-looking, ill-reputed people on street corners. I’m talking about the people making drug dealing work on a more corporate and organizational level. These guys are innovative, resourceful, and they get things done. In other words, they’re exactly the kind of people we keep saying we want to unleash in our economy. Well, they would be if we weren’t so busy trying to put them in jail.
While perusing the Internet, I stumbled on some question about getters and setters and why people are supposed to use them (which of course I can’t find the link to now, even with the help of the might Google). After reading the question, I realized something. Holy crap, a lot of getter/setter examples on the Internet aren’t that good. Most of the tutorials on getters and setters talk about variable visibility, and you don’t get any real useful discussion about how to use them properly outside of technical forums or discussion boards. So, I thought I’d write a quick little guide on the topic in part to increase the number of useful pages on the topic out there on the Internet, and thus make it easier to find a good reference on the matter.
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.
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.
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.
So all of the new phone line announcements are in and the comparisons, snarking, and general smuggery are underway in earnest. Apple and Android fans are still Montagueing and and Capuleting each other, and Microsoft fans totally understand how Rodney Dangerfield felt. Since Apple and Nokia (aka Microsoft’s phone division) recently had major press events (I think Motorola, aka Google’s phone division, made an announcement right around the same time, but apparently that didn’t seem to be a big deal).
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.
When a friend of mine made a Google+ post a while back asking StackExchange what happened to the links to post your question on Facebook, Twitter, Google+, etc., he learned that the links were removed because they were hardly being used. This led to a brief back-and-forth thread between him and me on the post about the propriety of removing old features that just aren’t as cool as they used to be. Long story short, I’m in favor of cutting the links (and removing unused features in applications), he was opposed.
Like everyone else who’s ever wanted money at any point in their lives (i.e. like everyone else on the planet), I’ve put a little thought into just what I’d do if I ever go so obscenely rich I could stop worrying about money. Now, since definitions are important, I’ll define obscenely rich as making so much money a year, your immediate reaction is to utter an obscenity.
One of the things on that list is starting an open source foundation at my old college. This would be a setup designed to have students create or maintain open source projects that are released to the real world. The idea here is to give students an easily-accessible option that gives them all kinds of crazy useful real world experience other than “get a real-world full-time programming job.” Part of this was inspired by
Steven Hicks Steven Hicks’ [ed. Fixed my grammar] post on Computer Science classes he’d like to take.