10 years.

I'm coming up on my 10th high school reunion. I doubt the school will do anything official -- there were 5 graduates in my class, we could have our reunion in a booth at Denny's.

All the same, it's got me thinking. Listening to old music. Charting out my progress. So, it's time for one of those navel-gazing blog posts.

Here's where I've been the past ten Februaries.

1998 - finishing high school. All my first choice colleges had already turned me down, and I was enrolled and ready to start at Arizona State's University Honors College. Studying Physics nights at community college, thanks in part to my shiny new driver's license and 1977 cop Nova. Still doing piecemeal work on Windows software for Network Safety and learning cryptography, but this year my social life began to dominate -- in clubs and councils and one of the few students that had been enrolled since my school's founding, I had a lot going on.

1999 - living in McClintock hall at ASU, which was still the Honors dorm at the time. Still making solid 4.0s, which wouldn't keep up for long. Music I'd written and recorded (techno, unfortunately) was just beginning to chart on the brand-new MP3.com, resulting in my first recording contract offer -- which I declined, but still keep in a file cabinet. I'd developed a reputation in the dorm for hanging out with all the women, which had some friends thinking I was gay, despite having just finished a semi-public breakup with my first girlfriend. At this point I was just starting to get involved with the Political Education Coalition, as a very unusual libertarian-conservative voice among greens and reds -- though we all got along fine. Got into a few clashes with campus security, who were a little power-happy and didn't appreciate having the state statutes explained by a kid like me.

2000 - living in Irish Hall, which was a wonderfully close-knit group of people while I was there. I was just beginning the only CS course I've ever taken (digital design). Jeannette and I were friends with occasional thoughts of dating. Doing piecemeal contract work with Cobalt Creative, where I'd worked over the summer (over my mom's objections that I should apply for a retail job), and starting to get deeper into Java in my spare time. I had started my first pro-student rights group, the Student Advocacy Initiative, and was spending a lot of time meeting with the Residence Hall authorities and campus groups to argue my case. I made the campus paper a lot this year, but not just for my work: I had stopped cutting my hair, which quickly became a 'fro, and (along with my size) made me very visible in photographs. Spent a lot of time at Jitters and Gold Bar for my caffeine.

2001 - still in Irish Hall with most of the same people. I DJ'd a rave or two in the dorm courtyard. My hair was just long enough to pull back at this point, which was good, since I was working in foodservice. My parents had just had some unexpected expenses come up, and I needed to get a job to help with tuition and expenses. I'd made friends with Charlie, the owner of some Tempe-area coffee shops, and was soon pulling shots and making sandwiches at his stores. Jeannette and I were dating at this point. School kept me busy, between two TA jobs and part-time work as a research assistant, and while I'd let SAI fall to the wayside I was serving on Honors College Council.

2002 - having effectively dropped out of college, I was in my last few months at AZSites, a little web sweatshop in Tempe. I had applied there in August after people convinced me I was wasting my talents making coffee; they'd said they wanted PHP and MySQL, I'd said I knew it, and then spent a week at libraries learning them and hit the ground running. Jeannette and I were living in apartments near school, and dating, though things were strained -- while AZSites was bringing in money, they weren't paying us, and I was living off savings, not having seen a paycheck in four months. Having finished my business and accounting classes the year before, I knew enough to forecast my cash flow, and I could see the day looming when my savings would expire. I had already begun planning my escape.

2003 - Extrasensory Applications, the company I founded after poaching most of AZSites's talent, was waffling between promise and disaster. My savings were gone, and I was borrowing money from people for gas and sleeping on couches, too proud to completely fall back on my parents (yet -- I wound up doing so). At one point I was literally living off quarters I had found in a couch; I got very good at optimizing fast food value menus. At the same time, we were developing what we thought would be a home run: a system to compete with Ticketmaster. I dug up my old distributed systems knowledge, learned Postgres, Ruby, C++, Servlets, EJB, and anything else that seemed useful. In February it wasn't yet clear that it wouldn't work out like we'd planned. Jeannette and I had parted ways several months earlier, which also hadn't worked out like we'd planned.

As a side note, this is when my current Starbucks order (venti iced coffee, no sweetener, no room) solidified. I ran the numbers and determined that it was the optimal caffeine-per-dollar choice; I would keep them in the fridge at the office, dilute them, and ration them over the course of a day or two. Eventually I realized that buying beans was even cheaper. When I couldn't afford them, I'd eat them at the supermarket. Not kidding.

2004 - I had been effectively unemployed for two years, but now it was official. After an eight-month stint at a web sweatshop making $400/week, the incredibly frugal tendencies I'd learned during the bust allowed me to save several thousand dollars. I got a nice (government) apartment with some coworkers, kept my car alive by scavenging parts, and decided to break out on my own with my newly minted college degree (I had just finished out the ASU program with cheaper community college credits). I had big plans, and some neat tech: this was when I first wrote Cesta, my Mac-native network analyzer, and I planned to turn it into my job. I was dating, well respected in my social circles...and running out of money without a shipping product.

About this time, my dad randomly encountered an old boss at a gas station, and mentioned that I was looking for work. I desperately wanted to avoid working for anyone else, after two sweatshops and a failed startup, but Cesta wasn't ready...so I drew up a resume and submitted it to Choice Hotels.

2005 - out of government housing and back in Tempe. My first major project with Choice, the support backend for the Choice Privileges VISA, had launched, as had the big CIS intranet system I worked on. I had finally ditched the frankenstein Taurus I'd been fixing for six years, bought a bunch of business casual clothes, and started re-learning to cook. As in, not ramen. I was beginning to transition into a bigger role at Choice, talking to other groups about encryption and security (this was about the time of SOx, now called SarbOx). I was also spending more time learning the craft of programming, having recently become able to afford the GoF and Refactoring books; this was about the time I became a noisy proponent of technology like EasyMock and Hibernate. Becky and I had been dating for several months at this point.

2006 - a month into my employment at Google, having left my friends, family, and hometown for the "frozen north" (which turned out not to be all that frozen). I was beginning to react rather badly to the code I was dropped into, which had some qualities I'm allergic to, but while I was already loud-mouthed and picky I wasn't yet bitter and resigned. (That came a few months later.) Google had substantially lowballed me in my initial offer -- I suspect because of my non-CS background -- and at this point hadn't yet corrected it, which didn't help. I was enjoying my new job but seriously considering another. On a positive note, Jeannette and I had been dating again for about a month, which (like the Google job) was totally unexpected.

2007 - A little over a month into my first big solo project at Google. Some organizational changes and firm words from my manager had dragged me out of my cynical funk, and I was mentoring (officially and unofficially) two new employees. My team was starting to make real progress, and I was starting to see a much brighter future. Jeannette and I were living in a little townhouse near Google; her belly dance classes were in full swing, while I was reverse-engineering the Propeller microprocessor and learning to fly RC aircraft.

2008 - so here I am, working at one of the world's top software engineering firms and Fortune Magazine's #1 best employer, co-leading a group within my larger team, living in a much nicer apartment in Sunnyvale. I'm not sure if 1998 me would expect this or not -- I was very optimistic, but I'd just been turned down for college and thought I was doomed to spend my life in Phoenix. (High school brains are very dramatic like that.)

I've come a long way from a tiny high school in a small town -- a town that still had hitching posts outside the school when I was growing up, and which still doesn't have a Starbucks. I'm curious where the other four members of my graduating class have ended up, but I doubt there'll be an official reunion for me to find out.

I'll close with a particularly relevant quote from my old LiveJournal, four years ago today. During one of those insipid LJ quiz memes, I was asked the following:

Q. Where do you see yourself in five years?

I'll describe where I hope to be, which may differ from where I'll actually be due to personal weakness.

I hope to be in a steady, well-paying job that I enjoy (which means probably either writing or programming something interesting). Ideally, I'll be attached to a like-minded SO who shares some of my interests (which is terribly unusual, but I can hope). If I'm still in AZ, I hope to be in Tempe -- I've been many places in Arizona, but I like Tempe a lot. If I'm not in AZ, somewhere with trees would be nice, as long as it's not too cold.

Oh, and with any luck, I'll be out of grad school. :-)


Hello, blog.

I figured I'd better breathe life back into this blog, at least for one post, before I reach 18 months without posting. :-)

Things have been pretty good for me over the last year. Jeannette and I are getting along swimmingly. My team at work has evolved quite a bit, shifting our role, and has begun to receive some recognition within the company -- we recently got an internal award for our work, but I'm not sure how much I can say. We've grown quite a bit, and as one of the more tenured team members (over two years now!) I've mentored a few new hires. While I'm not a technical lead -- we've already got one of those, and she rocks -- I'm driving a new project and keeping my eye out for new directions for the team.

For the first year and a half or so at Google, I spent much of my free time learning this field of "computer science." It's distinct from programming, see, and from software engineering (though I've learned a lot about those fields too). I spent whole evenings and weekends studying and practicing, as Jeannette can attest; fortunately she's quite tolerant, since she geeks out in her own fields too. I feel like I've got undergraduate CS under my belt now, so I'm spending more time sparring with PhDs at the office to keep learning. Can't swing a stick at the office without hitting a few, after all.

In return, I've taught a class and done a couple presentations on software engineering techniques, which I learned from my dad but folks don't seem to pick up in school.

In short, I'm a lot happier with my job than I was a year or two ago. Which is good, because I've started getting calls from more recruiters, most of which have interesting work to offer. Sorry guys; keep me on file just in case.

Speaking of recruiters, I now exist on LinkedIn -- any colleagues or friends reading this should drop me a line there. (If I don't know you and you're reading this, I'm happy to talk to you but I will decline LinkedIn requests from strangers.)

Beyond LinkedIn, I haven't bought into the whole social networking fad just yet. The isolated fiefdoms of social networking remind me a lot of the early days of consumer internet access, when I couldn't email someone because they used CompuServe or AOL. I'm sure it'll get straightened out with time; for now, it seems ironic that "social networking" should resemble high school cliques on a grand scale.

After years of eyeing digital SLRs, I finally bought one to replace my Minolta X700. The technology has finally caught up with (and, in my opinion, surpassed) film for a reasonable price. I bought a Pentax K100D, which (like my Minolta A2) has image sensor stabilization, eliminating the need/desire for expensive stabilized lenses. My only complaints stem from being a software guy: there are parts of the firmware I want to change, and I can't. Grr.

The K10D (one zero) is a nicer camera, but unlike most modern cameras, the K100D has spectacular infrared sensitivity -- and since I'm a fan of IR photography, that sold me.

So, I'll pimp some of my latest photos below. Some are visible light, some are false-color infrared. I won't spend too much time discussing each; click on them to go to the respective Flickr page.
The mystery of the question blockAgave IPines IIJeannette at Pinecrest (IR)42 on a Cloudy DayBuilding 40SpikeSunset IPinecrest Lake and hills



Jeannette and I took some photos recently; here are a few.


Ways + Means

Folks keep pointing out that I'm not updating my blog. This is kind of cool, really, as it means people are reading it. :-) Hello, people!

Contrary to popular belief, I am still alive.

I've been out of commission for a few weeks with a back injury. I'm largely better now, but I'm still taking things semi-easy. (It was the same issue I had in early 2005, when a bone in my pelvis went out of alignment and made my life generally shitty. It was rather worse this time, to the point that I could hardly walk. I've managed to find a good chiropractor in Mountain View, and he's beaten me into shape.)

Life is pretty good, other than that. Jeannette and I are getting along marvelously, going to the beach and nerdy museums and so forth. (This is a great area for nerdy pursuits.)

At work, I've been promoted after six months, which once again demonstrates that I don't interview well. :-) I'm now a notch short of "senior," which is the position I'm shooting for at the moment. My team, charged with the review and processing of all incoming ads, has moved into the corporate spotlight in recent weeks — though unfortunately, it was due to a pretty serious bug in some legacy code we maintain. But it's worked out for the best: we've gained some energetic new engineers, and done some internal reorganization (no, heads didn't roll — for once, I'm using "reorganization" quite literally). We're now better prepared to kick ass and take names, which is, roughly speaking, our job.

I've been charged with some higher-level design tasks, and will be semi-leading some of our new projects. (I say "semi-leading" because there's a distinct "lead" title that I don't currently hold.) Things are going well.

I've been hanging out with the Silicon Valley Patterns group, who are currently hosting a "language buffet" track: every few weeks they pick another programming language, try to wrap their (generally quite large) brains around it, and see what it has to teach them. This is right up my alley — its' been a hobby of mine for years — so I'm attending as much as I can and trying not to talk too much. :-)

As a side effect, I've been putting renewed effort into my programming language, still code-named Mongoose. I've been inhaling hard-CS papers, which are very frustrating in the way they use 20-page formal proofs to demonstrate something that's pretty freaking obvious to long-time programmers. (My strong predilection for working prototypes over academic proofs is probably showing through here.) Some of the research I'm doing would probably make for good papers, but I don't use enough Greek letters to be accepted by their little clique. I'll just release my code on the net instead. :-)

(For a domain with the word science in its name, Computer Science seems to involve a lot of math and industrial engineering, and strangely little actual science.)

My family's coming out in September, which should rock. It's a little early for the leaves to turn, but Mountain View is still beautiful. I find myself still ill-equipped for leading tourist expeditions into San Francisco; I'll probably have to pick up a tourist guidebook and read it when they're not looking. :-) At the very least, I know most of the interesting bits of Mountain View, and I can direct my dad to the Computer History Museum. Judging from current patterns, I'll update sometime in early October and report on that.


DPR rides again!

Readers may remember my robot, DPR, from posts last year. I've gotten a bit of spare time, and I've started working on him again.

Last year, he used his proximity sensors to chase my feet. This year, I got him a camera.

New year, new robot-chasing-something video. Currently, he's terribly amused by an orange street-hockey ball I picked up at Albertson's.

DPR loves the ball. MPEG4, 746K

(That's a power cord you see hanging off DPR; the control is completely on-board.)

I'm still working on the camera interface code, trying to teach him some new tricks.

A glitch in the code yesterday caused him to lose interest in the ball, and start watching black objects...guess what the only moving black object in the room was?

The cat is surprisingly tolerant of having a small, noisy robot staring at her. She eventually decided to lick the top of the robot and slink off.


Work, JavaOne, etc.

It seems some folks have been wondering where I've gone. Sorry for the lack of updates; work's been nutty.

I've spent the past two weeks or so working on my first real project, analyzing the performance of some of our systems here. It's been fun: part programming, part statistical analysis, part data visualization and report writing. Right up my alley, really, though I'm glad it's winding down.

I spent much of last week at JavaOne, working our booth. It was a lot of fun -- it got me into the city, which I haven't been able to do nearly as much as I've wanted to, and I got to show off some of our neat tech. Met a lot of interesting people.

It felt sort of appropriate on some level. A year ago next week, I approached Google on a lark, at this very conference. I was thrilled to be invited out to dinner with a bunch of them, where I met luminaries in the field who are now my much-respected coworkers. I also met Brian Goetz, who wound up soliciting my help with a pre-publication review of his excellent book.

Now, at dinner a year later, I was doing the inviting and helping to host, rubbing elbows with some of the same people, and some new ones. Brian's book has been released, and was the best-selling book at JavaOne.

Of course, I was still the same opinionated pedant, giving the Java team crap. (They're used to it by now, I suspect.)

At the conference, I ran into a few of my old coworkers from Choice. They seemed to be doing well. Things seem to have come full circle, in a sense.

On Saturday, Jeannette and I went up into San Francisco to hang out with Morgan. It was awfully nice being in the city, but I still don't think I could live there. We hung out with some of her tech-industry friends, and three times in one day I got the same line:

"Yeah, Google seems nice, if you like that sort of big-corporation culture."


I've worked for big corporations. I'm not sure what Google they're talking about, but I think we have a disagreement in terms. :-)


And now for something completely different!

I'm doing something rather unusual: tinkering on a game engine.

Some of y'all might remember, about two years ago, when I started writing an RPG for cellphones. I eventually decided this was silly and stopped, but I had the basic foundations for a plot laid in my head.

In a conversation with Chris about a week ago, it came up — and I have new ideas.

I'm designing an engine for adventure-game type RPGs, in the vein of Maniac Mansion, Monkey Island, Sam and Max, or Out of this World. This genre of games has completely disappeared in the past ten years — much to my dismay, since it was a real hotbed of creativity in the early 90s. The games had depth, and had humor, interesting character interactions, and plot complexity that was totally lacking from their contemporary battle-oriented RPGs (like Final Fantasy). Other than flight sims and Tetris, they were really the only video games I ever got into.

In the early 90s, some friends and I wrote text-based adventure games of the Infocom style, like Zork or Hitchhiker. There was a package called Adventure Game Toolkit (which is still available for download!) that let you script text games in a simple file, and run them on all sorts of different machines. This was great, because it let you concentrate on the game design, rather than the menial programming.

So, fast forward twelve years or so. Sure, I was programming commercially back then, but my software design skills have improved over time. I'm going to try my hand at writing a graphical counterpart to the old AGT. And, to make things interesting for me, I'm targetting two very different systems: desktop computers and the Nintendo DS.

I just bought a DS, you see, and there's a thriving homebrew software community around it. It's a neat little machine, with neat programming problems to solve — and, with a pretty damn powerful processor, a touchscreen, and good sound, it's ideal for this sort of game.

And once I get the engine done, the exact same game data will run on both systems. Hell, I might even make save-games transferrable — the DS has wifi, after all — so you can play on whatever's convenient.

The programming will be a good challenge, but this lets me work in a number of areas, since I'll need graphics and sound as well. I'm designing a game as an initial use for this engine, and with any luck it will be quite neat: an intricate, dark, and twisted plot; hand-drawn graphics that swing between comic strip and surreal Vasquez-esque scenes; a multi-path plot that gives a good feeling of player freedom.

The scary thing, to me, is that I think I can pull this off. I've got some test graphics done, and discovered I've gotten pretty good at drawing people. I've put some basic music together, somewhere between Collide and Razed in Black. And as of yesterday, I've got a little guy walking around in a room — the basics are in place.

We'll see if I lose interest. It happens. :-)

Preliminary Game Synopsis

You play as Evan White, who's fresh out of college and has returned to his hometown to look for work. He runs into his old flame and some other folks he knew from way-back.

And, at about the same time, murders start — gruesome killings that have the town shocked and on edge. The local police force is out of ideas, and the FBI takes up the case. They take a particular interest in Evan, who arrived in town about the same time.

Evan, meanwhile, seems to be going slowly insane. He keeps seeing things. Weird things. And some crazy homeless guy is following him around yelling at him.

Things get weirder from there; I'm not telling where I'm going with the plot, in case some of you decide to try to play. Anyone who's read my fiction knows I love to put normal people in really twisted circumstances; you can expect plot twists, surprises, and character interaction similar to my novel (though it won't give you clues to the plot). (Matt, if you're reading this, yes, I will be playing with your emotions.)