Sunday, September 23, 2012

A Joke

On Thursday night I saw the movie "Sleepwalk with Me." It's a pretty funny movie about the life of a stand-up comic. You should see it.

Anyway, this stand-up comic, like many, is constantly writing down joke ideas on little scraps of paper. Over time they refine the idea into a joke, which they practice at small venues and over time make the jokes a part of their overall material (or sometimes, the material for a particular tour).

Anyway, I'm no comic, but I love this idea. This morning I had a joke idea. So here it is:

Begin Joke Sequence
"About six months ago I found out that my bank was going to start charging me a bunch of extra fees. I had already been pretty fed up with this bank, so this was the last straw. I took out all my money and transfered it to a different account. Cleaned the account out to $0. Funny thing was, I had a decent amount of money there, so a couple of weeks later, the bank issues the statement, and I earned some interest, so now I have like $3.50 in my account. Like I said, I hate this bank, and I'm not going to let them have any of my money, so I took that money out too. Next month the same thing happens, because I earned some interest on the previous interest. This time it's like half a cent, but I don't care, I still want my half a cent you know? So I take it out. Now this goes on for months and months, eat time the money I earn in interest on the previous interest gets smaller and smaller. Until one month I get a job. But by the time I have a job, I just give up on the whole thing. Now that I'm making money, I just can't get myself to care about .000000009 cents, you know?"

Okay, well that's the joke. It was probably funnier when I was half asleep. 

Sunday, July 22, 2012

Project Fortress is Wrapping Up

I was interested to learn that Project Fortress, the programming language research project from Sun (now Oracle) was wrapping up:

I was an intern on Project Fortress during the summer of 2008. Fortress was an ambitious language project that attempted to incorporate a number of advanced and experimental features.

I'm sorry to see the language be wrapped up without a JVM or native code compiler, but I understand there were a number of technical challenges, many of which I encountered during the course of my internship. Best of luck to these folks on their future projects!

Wednesday, May 2, 2012


Pretty soon I will be traveling for Korea for two weeks. I'm pretty stoked about this!

What I was also pretty stoked about was using the Google Translate Android app for the Korean language. It allows two people who speak different languages to alternatively talk, then it uses voice recognition & translation to allow them to communicate. It's pretty cool.

What is less cool is my cell phone provider. I am generally very favorable towards T-Mobile. Their customer service has been excellent and I have been a happy subscriber for almost ten years. But I want to use my cell phone in Korea on a data network so I can take advantage of Google Translate and other fine apps. But guess what?

International data roaming is $15/MB. Fifteen dollars per megabyte!!! 

That is insane. A quick browse of my phone's "Data usage" app reveals that I use anywhere from 80MB to 1.1GB in a two week period. In other words $1200-$16,500 at these rates. Other providers have plans that you can upgrade to if you know you are going to be using lots of international data roaming, but not T-Mobile. (My friend Jeff told me he pays $20 a month extra for unlimited international data roaming!) This is also insane because South Korea is one of the most mobile-friendly countries on Earth. Please T-Mobile, get with the program here.

Sunday, February 26, 2012

Weddings with Awk, Latex and Google Docs

Hey guys, I'm getting married! Pretty sweet, right?

Like any good software developer, I am always trying to save myself boring work with scripts and tools. Sure it may end up taking more time, but it's more fun.

Anyway, I thought I'd share a little bit of our wedding workflow, since I think it has been pretty effective. It all starts off with a few Google docs. These documents are all shared, so both my fiance and I can update them at any point during the day. Those documents include a text file with ideas and tasks to be completed, along with a spreadsheet of the gifts we've received, who gave them and whether or not we'd sent them a thank-you. We don't want to forget anyone, nor forget what they gave!

But the most useful document has been a spreadsheet containing the guest list. In the row for each name we filled in their addresses as we received them along with a Y/N column indicating whether or not that person would have a 'plus one.' We were careful to put each piece of the address (street, city, state, ...) into its own column, which is helpful for the script I wrote later. We also had two Y/N columns indicating whether that person had been sent a save-the-date and an invitation.

Putting the addresses in a spreadsheet, as opposed to a Word document, is a great idea, because then it can be exported in CSV format, and I can write scripts over them. After exporting the guest list to CSV format, I wrote an Awk script that would go through the file and output a LaTeX file so that I could generate address labels. I used the "envlab" LaTeX package for generating the labels, and because I had saved each part of the address as its own column, it was easy to play around with alignments (e.g., "should the apartment number go on its own line or after the street?"). Also, I made the outputting of an address label conditional on the Y/N value in the column recording whether or not that person had already received an invitation. This was really useful, since we wanted to send out save-the-dates as soon as possible, even before we had addresses for everyone. So we could effectively run the script any time we wanted without having to worry about generating the same label twice. Finally, we printed the labels onto those standard Avery 5160 inkjet labels (or at least a compatible label). I happen to think that the clear labels look really good, and professional.

So that's it. Nothing particularly clever, but I kind of wanted to share my experiences. I think that overall we've saved a ton of time generating the labels this way. Certainly vs. writing them by hand, but even vs. using Word to create the labels.