Grab Bag

A couple random tidbits just to get back on the blogwagon:

  • I bought a new Macbook Pro a couple of weeks ago. I haven’t had the ZOMG MACS RULE experience yet, but there are a bunch of nice things about it. It starts up or returns from sleep very quickly. I like the two finger scrolling on the touchpad. It hasn’t burned my lap or crashed or forced me to reboot after a software upgrade yet. It just looks better, both the case itself and the GUI. I’m still adjusting to the interface, but so far it’s been a more than adequate replacement for my Dell behemoth.
  • Beej and I have been playing a new game in Jabber. It still needs a name, but it consists of posting items from the IMDB parents’ guide for a movie until you run out of clues or the other person guesses the movie. It’s a challenge to find movies that are guessable but not too obvious; usually there’s one clue that finally puts it over the top.

Oh, I also started a new job last week at VoltDB, a small startup in Billerica. It’s in stealth mode at the moment, but it’s likely that there will be something more to write about by the end of the year. In the meantime, it’s a great little team; I’m hoping I can get up to speed fast enough to be useful. I effectively haven’t had a new job in 18 years, so the whole thing is a little bit weird and scary and exciting all at the same time. I guess we’ll see how it goes.

Posted in Personal | 2 Comments

BFapolis

I spent Memorial Day weekend visiting Becca and Jim in Minneapolis (or, as we refer to it, BFapolis).  Jon and Val were going out for a volleyball tournament, and I tagged along for the pre-volleyball festivities. As usual, it was big fun, with an emphasis on eating. Jim is a serious foodie who writes for Chow and recently launched The Heavy Table earlier this year, so we always get treated to the best of whatever eats he and Becca have discovered.

Read More »

Posted in Personal | 224 Comments

On to Erlang

Been dinking with Erlang for a couple of days, just working my way through Programming Erlang, which has been sitting on my bookshelf for over a year now largely untouched.

When I went back to Python in April, one thing I noticed was how non-pythonic my code was unless I paid attention to what I was implementing and thought about the “right way” to do it in Python. Simple example: it seems to take me a couple twisted for loops before I remember list comprehensions; I’ve been coding in C and C++ for so much longer than anything else that that’s the first way my brain tries to implement anything. I had the same experience when I did some JavaScript tinkering earlier.

So, the brilliant thing about moving on to Erlang is that it’s nigh impossible to turn it into C or C++. = is not an assignment operator! Recursion is the order of the day! This is just the sort of mind-bending place where I need to dwell for a while to get out of my C/C++ imperative programming rut.

Posted in Tech | 1 Comment

Time for a New Project

I’m putting web apps aside for a while. Rapid progress is fun, but at some point building little toys is just plugging together pre-existing framework bits, and I don’t have a more inspiring target to shoot for to keep it interesting. I spent a few days banging my head, trying to get motivated to finish something and not working on anything else, until I realized that this was my project and I was under no obligation to keep working on it if I wasn’t getting anything out of it.

So, time to move on to something new, still TBD. I’ve wanted to play with Erlang for a while now, if I can come up with an interesting toy or two to motivate it. There are a couple of Javascript hacks that I’m still interested in doing. There’s a board game that I’ve always been interested in translating to the computer, which has lots of fun potential. I figure I’ll take a day or two to think it over and then get rolling; May’s a short month for me and the vacation ends in June.

Posted in Uncategorized | 1 Comment

April Retrospective

I had four goals for April. I did okay this month, but not as well as I wanted:

  1. Finish cleaning up my resume. I got everything translated over to xmlresume and hacked up the XSL to add the sections and formatting that I wanted, and I did enough editing so that I had something I could send out in the event of an emergency. I’m not really happy with it in general but decided that I didn’t want to spend any more time thinking about job hunting during what was supposed to be my vacation. We’ll call this one a partial success.
  2. Get some sort of regular exercise. This is the only goal where I’m actually happy with the results. I’ve been walking about 5 miles 5 days a week, and this last week I started adding in some running intervals.
  3. Write a non-trivial Ajax web app. Again, a partial success. I’ve got a functional web app; there’s some javascript in it, but no asynchronous interaction between the client and server. I haven’t really needed it yet and there’s been other functionality I’ve wanted to work on instead. I still feel like I haven’t gotten as much done as I could have, though.
  4. Write at least one insightful blog post. Meh, I knew going in that this one was going to be dubious. My posting rate has dipped to about one a week, which is less than I was hoping for, and I’m not sure I would classify anything so far as ‘insightful’. Still, I’m happy that this hasn’t been a complete FAIL yet.

Where did things go wrong? First, I got distracted by the Internet a bunch this month. On the plus side, most of these have been relevant distractions, looking at project ideas or technology details or other things related to software development. I’d like to cut these down or at least schedule them better, but I’m not unhappy about what I’ve gotten out of them.

Second, I think I did too much context switching, trying to squeeze in a little bit of everything every day. I’ll be better off if I actively devote an entire day to a single activity rather than jumping around. I know that I’m more productive this way, but I fooled myself into thinking that not having a job to go to meant that I had so much free time that I didn’t need to worry about focusing. Definitely false.

About the blog specifically: it’s still taking too long to write short posts. I’ve got a bunch of one-line ideas searching desperately for a point. I need to constantly remind myself of this and ponder some tricks for generating more quantity without worrying so much about quality (which ends up lacking anyway because I finally publish just to get something new up).

Overall, I’m happy that I avoided falling into the “I’ve got a ton of free time, so there’s no pressure to do anything today” trap. In the mortal words of Herm Edwards, “We can build on this!!” Stay tuned for some thoughts about May, coming soon.

Posted in My blog, Personal | 3 Comments

Instant Gratification

I’m a little over a week into my web app experiment.  The thing that I’ve found the most striking is the rate at which you can add useful functionality to the system, which is both inspiring and fraught with peril simultaneously.

When you’re working on cellular base stations, it takes a while to add a new feature to the system, even with the software-intensive approach at Vanu.  When you do finally get something finished, many times the only evidence of success is the before/after difference in plots and graphs of system performance numbers.  On the other hand, it’s taken me less than a week to get a prototype web app to the point where I could start eating my own dog food, and most of the features and functionality that I’ve wanted to add so far have taken less than 30 minutes to implement.

Now, I’m aware that this is all a function of scope and complexity.  Cellular base stations are inherently complex beasts with a ton of moving parts and not nearly the same level of open source framework support (although you can buy a bunch of commercial telecom libraries for protocol stacks, if you can afford it), so you’re starting out almost completely from scratch and you’ve got a lot further to go to get to something that actually works.  Don’t get me wrong, there’s immense satisfaction in getting a large, complex system built and working.  But, after years of only working on large, complex systems, I’d forgotten the simple joy of going from idea to usability in one or two sittings, which is seriously invigorating.

The downside is that I’m making progress so quickly that it’s tempting to jump ahead to the next thing rather than taking care of the maintenance aspects around each new bit of functionality.  Even though it’s just a prototype, I’m trying to use it as a way to keep practicing good development habits, but it takes some serious discipline to go back and fill in some docs and add unit and functional tests (I guess this is always true, but it’s even worse on a purely personal project).

I think that wherever I land next I’d like it to be someplace with a bit of the development instant gratification feel to it.  Perhaps a daily taste of success is too much to ask for, but I’d settle for something in the weekly to monthly range.  When you start going longer than that without seeing any tangible results of your work, can you really stay excited about what you’re working on?

Posted in Personal | 1 Comment

My Favorite Thing About TDD (This Week)

I’m finally digging into building a little web app using Pylons.  Even though it’s a toy that’ll probably never see the light of day, I’m sticking to some reasonable coding practices, including a good bit of test-driven development.  For me, one of the best things about TDD when I’m working on coding anything of non-trivial size is that it allows me to deal with the consequences of my own stupidity in manageable pieces.

I’m not a TDD strict-interpretationist, in that I don’t always write the tests before the implementation, but I never let the implementation get significantly ahead of the test suite because I hate getting into a position where I’m debugging more than a few components for the first time simultaneously. I generally make a bunch of little niggly errors on my first development pass, especially in circumstances like now, when I’m switching back to Python from C++ after many months, not to mention a bug hunk of time recently not writing code on a daily basis. Forget, for a moment, all the other benefits of test-driven development; just having a sandbox where I can uncover and correct these issues in small batches without having to hero-test the entire application is brilliant.

Posted in Tech | 3 Comments

Get Off My Lawn, You Damn Kids

This blog is not my first website. Back in the day, when you had to write all the HTML for your web pages by hand, and we didn’t have any of these fancy shmancy web frameworks (is there a ‘Grandpa Simpson’ CSS property?), I had a meager presence on the World Wide Web. Just a few pages, tucked away on the lab group’s old-school NCSA httpd web server, which was one of the few easy ways for people to get their own space on the web (personal web hosting being pretty much unheard of at the time).

If you were around and remember anything about the Web in 1994, these pages were exactly the kind of cookie cutter abomination that just about every undergrad or grad student or professor or employee of some high-tech company with access to a web server threw up (sometimes literally, it seemed). A big bold title that included your name, followed by the obligatory thumbnail mugshot either from a scanned photo or a low-res digital camera, maybe a brief biography, maybe some additional photos of you with a pet or a significant other or something, maybe a list of publications. And, somewhere mixed in there, the inevitable section of “Cool links” or “My links” or “Things I Like” or whatever you wanted to call your personal manual link aggregation. Easily 80% of the web was like this at the time; cropped GIFs and a long list of links, most of which led to other people’s long lists of links.

Finally, one night, after surfing page after page of “cool links”, despairing of ever finding anything resembling new original content, a terrible, wonderful, thesis-procrastinating idea was conceived. And the next day, Mike’s World Wide Web of Barfbags was born. It wasn’t much to look at; we didn’t have JavaScript, we didn’t have CSS, we served our pages through 40 feet of snow, we ate rocks for breakfast and we liked it. But, for a brief shining moment, you could go somewhere on the web, see some ugly scanned-in barfbag photos, and read some sarcastic and (dare I say?) amusing text describing them that you couldn’t find anywhere else on the Web. It was one small thumb of the nose at unoriginality, a fart in a hurricane of circularly referential links, and then I got back to the thesis and more or less forgot about the barfbags. The whole episode was good for a laugh, and people would bring me barfbags when they flew (unused, always unused) as a joke, but I never really intended to add to or even maintain it after that initial burst of energy.

Now, of course, the Web is chock-full of original content (which may cause despair for altogether different reasons). Neglected, the barfbag page lingered on at the lab even after I left and took on a pseudo-life of its own, with people occasionally linking to it as recently as 2006. My favorite random link is this guy, who is clearly annoyed that my crappy page showed up prominently on Google. Alas, sometime in the last few months the lab finally put Mike’s World Wide Web of Barfbags out of its misery, ending its pathetic zombie existence, although the morbidly curious can still find it lurking on the Wayback Machine. I’m a little sad to see it gone; since I have some free time, perhaps I will be inspired to resurrect it in bold Web2.0 style. And, I will call it Barfbook.

Posted in Personal | 3 Comments

The Internet is for Porn

I read this from CodingHorror this morning, and it reminded me of one of the invited talks that jrsantos and I went to see when we were presenting at USENIX ‘98. My external Google-based memory reminds me that it was by Daniel Klein and even provides the slides for it. He seemed comfortable with running an internet porn site at the time, although I notice that he doesn’t explicitly list it on his resume.

It was an overview of the whole business of providing porn on the Web, not just the technological challenges. I recall it being interesting and very funny, although even after reviewing the slides (I looked up coprophagia and then wished I hadn’t) I can only remember one particular bit where he was talking about when the traffic spikes were and being amazed at the post-lunch porn spike. There are some other good bits in the slides that show how much the Web has changed in the last 10 years; there’s one slide that talks about JavaScript popup bombing to generate more hits to climb up the Top10 lists which just doesn’t happen these days thanks to modern browsers and decent search engines, and another entitled “Getting Hits” that makes no mention of search engine optimization or google-bombing.

As for me, I can’t say for certain whether I’d take a development job with a porn site. I don’t think my issue would be telling people what I did for a living; it would have to good for a bunch of spectacular stories, and you could always finesse the details of your employer if you needed to. I don’t think I’d have a problem putting it on a resume, either, assuming that the work was interesting and challenging (which it would have to be for me to even consider it). If the work and the money were reasonable and the company seemed respectable (read as: not obviously kidnapping Russian women to the U.S. in shipping containers, locking them in rundown row houses, and addicting them to heroin so they’d be easy to control, but seriously, how could you actually know if this were true or not?) I might do it. But that “where is this porn actually coming from?” question is probably what would nag at me the most and flip my decision the other way.

Also, Dan Klein’s talk has a “Let’s Talk About ‘Product’” slide where he compares working in the porn industry to working in an ice cream shop; after days and days of having to scoop and sell ice cream, you stop liking ice cream so much. Let’s just end on that note…

Posted in Personal | 2 Comments