What's Up, Dude?

So I suspect that a number of you that know me might be curious as to what I've been doing with myself since leaving San Jose State. I graduated in May and left my full-time SJSU post at the College of Engineering in late June. Since then, however, I've been relatively silent on the job front. This, unfortunately, has been somewhat intentional--my employer does not want me to blog about them. So I won't.

I think, however, that I'm free to talk about the sort of work I've been doing in general.

Before my current employer (let's call them WidgetCo for fun), I had been straddling the line between programmer and system administrator for many years. For SJSU's College of Engineering, it was about 50-50, with me writing a number of web-based applications and scripts to automate the way things are run. Indeed, some of my better high-level abstractions were used in the Grand Unified Login Accounts system, which uses a custom set description language to abstract away a bunch of stuff that would otherwise be written in lower-level Perl. There was also a great deal of work with LDAP, a VNC Load Balancer that I wrote from scratch in straight C, and a bunch of other neat stuff.

At Sun, I worked on everything from racking systems to arranging labs and workspaces to hacking PXELinux code (x86 assembly) and messing around with the innards of various Linux kernel modules. Still the hybrid sysadmin/programmer, I did a lot of neat things there (though a bit more of the "racking systems and arranging labs" than I'd have preferred).

Now, however, I am a full-time Linux platform developer (i.e. my sysadmin role is now near zero). As such, I have moments where I debate the relative merits of NUMA with my coworkers, mess around with bits of the Linux kernel, ponder how to do hands-off OS upgrades (including kernel and boot loader) in the field, and warp my brain figuring out the occasional thrice-abstracted rule set in a Makefile ("oh, look. This rule creates a set of rules that in turn create sets of rules for sets of meta-targets. That's not at all confusing..."). I have to worry about vagaries of not just processor scheduling, but differences in thread models, JVM performance statistics, file integrity, and code maintenance/migration/deployment.

I also interact closely with product teams, taking on the work of integrating things like new SNMP OIDs and the sub-agents that talk to net-snmp, or perhaps integrating third-party code into WidgetCo's UI and templating systems. There is work (in no particular order) in x86 assembly, C/C++, Perl, PHP, HTML, JavaScript, Java, and more obscure languages--the range is broad and the scale is often breathtaking. Not to mention the fact that, since WidgetCo is in the business of producing server appliances, we have to make sure that manufacturing has the support they need in infrastructure, code management, and release engineering to actually manufacture things.

Oh. And supporting customers. Recently, we found a bug that was pretty deep in the Linux kernel network stack. It only popped up with a couple of customers, in rare configurations, and even then only once a week or so. When it did pop up, however, it caused a kernel panic (taking down the server). It was my job to track down the problem and fix it. After a bunch of research, hours of trying to replicate the problem, and massive testing, I found a solution (which is now in the hands of some very grateful customers and will soon find its way into the open-source community).

In short, I wear a lot of hats. But that's OK--I have a big head :-)

Thanks again to the folks at SJSU, Mission College, Sun Microsystems, Taos and everyone else that has indulged my various curiosities over the years. Without you, the work I do today wouldn't be happening.