Friday, December 23, 2011


I just imported all of these posts from a Tumblr blog, which necessitated two conversions (Tumblr -> Wordpress -> Blogger) so apologies if anything doesn't look right.

I'm currently working on something to aggregate my blog, my Twitter account, and my LinkedIn profile and Tumblr's Terms of Service didn't allow me to do this efficiently (no storing posts on my server, even with user consent). You can see a preliminary version online at (currently only has Twitter and LinkedIn).

Thursday, September 15, 2011

My summer, by the numbers

12 weeks.

60 days.

~600 hours of work.

One design proposal written and approved.

13193 lines of code committed.

50 changelists submitted.

Mean: 263 lines of code/CL.

Median: 74 lines/CL.

One feature launched!

Saturday, September 10, 2011

The best infographic

This is far and away one of the best infographics I’ve ever seen. One thing I noticed: the time when pay stops increasing with increasing productivity coincides exactly with when the minimum wage started decreasing (in inflation-adjusted dollars).

Sunday, September 4, 2011

Winding down

My summer is winding down. I’ve got two weeks left in my internship, and my emotions are a mixed bag.

On one hand, I’m happy. I’ve had a fantastic time at Google; I’ve learned so much, and accomplished more than I hoped to. Pretty soon we’ll be launching my completed project internally. People all over the world will be using and (hopefully!) enjoying what I created. That’s a huge step up from my internship last summer, where a very small amount of people ever saw the product of my labors.

On the other, I’m incredibly nervous. I’ve had such a great experience here, I don’t want it to end. I’d love to work at Google after I graduated, but I’m not going to find out if I get that opportunity for quite a while. When my friends are already finding out from their internships if they’ll be receiving an offer or not, I have a lot of time to wait. And wait I will, but I’ll be nervous - and anxious - the whole time.

Sunday, July 31, 2011

The deal Michelle Bachmann prefers

The deal Michelle Bachmann prefers
Michelle Bachmann says that the American people believe that the deal that was reached doesn’t cut enough. So one must wonder: is she completely out of touch with America, or does she know she’s lying and just pandering to her base? Every single poll about taxes reveals that the majority of Americans support increased taxes on the rich and corporations.

Americans favor reducing the deficit in this order:
  1. Raise taxes on people making over $250,000/yr and corporations.
  2. Cut non-benefit programs.
  3. Raise taxes on themselves.
  4. Cut benefit programs (e.g. Social Security and Medicare).
The most ironic thing about what Michelle Bachmann has said is that no one actually disputes this. Again, every single poll supports this. What’s interesting is that, if you look at poll results, people making over $100,000/yr actually think that it is necessary to raise taxes on themselves. This speaks to a tremendous sense of civic duty still present in American citizens - one that Michelle Bachmann seems to think doesn’t exist and is morally wrong.

Even economists agree that cutting spending in times of economic crisis is the exact opposite of the correct reaction.

So, again, I ask: is Michelle Bachmann out of touch or lying?

Saturday, July 30, 2011

I just went to download Xcode to do some Python programming, and it turns out the App Store gives no feedback for how far along you are in the install process. For something that’s a three gigabyte download, this is completely unacceptable. I had to open the Activity Monitor just to see that it was, indeed, downloading.

EDIT 1: It’s finished downloading, at least according to the Activity Monitor where my network usage dropped sharply. Still no feedback.

EDIT 2: Apparently all it did was download the “Install Xcode” application and I needed to run it manually. Would have been nice to receive some notification instead of just saying “Installing…”

Friday, July 29, 2011

This chart is exactly what’s wrong with America. Is it important to stick to your principles? Yes, it is, but at some point you have to realize that you can’t always get what you want. The Rolling Stones knew it, and most children learn it by the age of 10. It’s unfortunate that some of our country’s leaders have apparently never learned this lesson.

This current issue with the debt ceiling is the perfect example of that. If we don’t get this resolved, it could have serious ramifications for our country and, indeed, the world. Yet, it’s an issue that Republican leaders have tried to politicize. Not only that, they’re unwilling to compromise. John Boehner’s bill to raise the debt ceiling actually included a requirement to amend the constitution. This is probably the most ridiculous thing I’ve ever seen.

Here’s a great statistic from CNN: since 1962, the debt ceiling has been raised 74 times.

So, why not this time? Why is something that is typically a non-issue suddenly being used to further political ends, at a potential great cost to our country and our world? You’ll have to ask the 240 Republicans in the House (i.e. all of them) who voted against raising the debt ceiling at the end of May.

Thursday, July 28, 2011

This is some of the stuff I’ve been cooking lately. I’ve been making a lot of food that I can make big batches of, cheaply (mostly pasta, rice, and sometimes sandwiches where I prepare a bunch of meat one night and just use that for the rest of the week). The first picture is a sauce of mushrooms, white wine, and cream over rice. The second is cheese tortellini and shrimp in a four-cheese sauce (this wasn’t cheap, but it was delicious… also took the least amount of time to cook out of all of these because the sauce was premade). The third is rigatoni with mushrooms and bacon in a rose sauce.

These are the long-promised pictures of Google’s office. The first picture is of my desk - I can see the mountains out my window! The other pictures are from the rooftop deck, where I eat lunch a lot. It’s got a fantastic view of the mountains and on sunny days, it’s gorgeous. Unfortunately we’ve had a lot of overcast, rainy days recently…

This. Is. Awesome. This is a fantastic version of a fantastic song.

Wednesday, July 27, 2011

Project progress

I got the go-ahead to talk about my project (in vague terms) so I thought it’d be interesting to talk a bit about what I’ve been working on as well as what the state of it was.

First, the project itself. I’ve been working on making Google Groups more dynamic - suggesting relevant, interesting, and popular topics and groups to users. That’s about as much depth as I can give, but it’s extremely interesting.

My two main deadlines are this Friday and September 9th. I’ve basically finished everything that I needed for this Friday, which was most of the stuff on suggesting relevant topics to users. I’m hoping I’m on track to be done well before the September 9th deadline as well, which is everything else.

I’m learning a lot about subjects I hadn’t expected to learn anything about. I’m learning about front-end design, back-end design principles, and best practices for enterprise applications. It’s great to be exposed to ideas I’ve never had to think about before, and also great to be able to take a lot of these concepts and apply them to my own projects (e.g. when I was doing my rewrite of my anagram solver I converted it to a Model-View-Presenter [MVP] style).

So far, this has been an extremely rewarding summer and I’ve loved every minute of it. I hope that the last half will be just as good.

New pretty web layouts, or: thank you Google Web Fonts

Over the past few days I rewrote the UI both for this blog and for the aforementioned anagram solver. I didn’t like any of the available Tumblr themes, so I wrote my own in a much more minimalist style.

I did the same thing with my anagram solver, but a lot simpler - just black and white.

What really saved the day was Google Web Fonts. It’s a really neat concept: basically, you load your font from Google and then you can use whatever font you like without needing to worry that your users have it installed. They have a large selection of clean, modern fonts and it was the work of probably 30 seconds to get a font set up and loaded and it vastly improved the quality of both my anagram solver and my blog.

Saturday, July 23, 2011

A day of disappointment

I’ve had some free time lately and I finally got around to improving and polishing my Words with Friends anagram solver like I’ve been meaning to. I converted it from HTML + jQuery to GWT with a declarative UI, and it’s a lot nicer - both in terms of the codebase and the UI. Adding more of a split like that also allowed me to throw in some unit tests, which gave me the confidence to play around with my original algorithm.

I changed it to alphabetize the words before it adds them to the Trie (e.g. “dog” and “god” become “dgo” and are both stored at the same node). This will reduce the amount of time that it takes to look up any word by a significant margin. If you have the letters “dofga”, it will now alphabetize it to adfgo and then it only needs to look up adfgo, afgo, ago, ao, dfgo, dgo, do, etc. as opposed to every permutation of those letters.

There was a problem, though. It did significantly increase the speed of looking up words. However, any time where you specify necessary start, contains, or end strings it now needs to add all those letters to the word that is searched and filter the results at the end. This is a major use case and it is much slower, leading to an overall decrease in speed so that I had to revert all the changes.

After that, I decided that I wanted to persist the dictionary structure in the Datastore to reduce the long (~30s) wait times whenever Google App Engine needs to spin up a new instance. It took me a couple hours to get this set up (I’ve never worked with the Datastore before). I actually needed to rewrite a portion of my algorithm because the Datastore doesn’t support persisting any sort of map, which is what my Trie structure is based off. After I finally got all of that working, I found out that the object I was trying to store in the Datastore was too large, and I had to revert those changes too. Great.

Tuesday, July 19, 2011

Wednesday, July 13, 2011

Sorry I’ve been lax in posting… I’ve been extremely busy. When I enjoy my work, I work a lot and I’ve really been enjoying my work, and I’ve really been working a lot. Last Friday I presented my proposal for my summer project, and after a meeting that went way longer than it was scheduled for, I synthesized all the feedback I’d received with my original proposal. This week I’ve started the work on that. I’ve got some tough deadlines to meet, but some really exciting work ahead of me this summer.

Despite all the work, I’ve still been making time to have fun. These photos are from two weeks ago where I went white water rafting over the weekend with some of the other Google interns and some interns from NCAR. Last weekend, I went to Breckenridge as a Google-sponsored event, so I got to meet more of the interns that I haven’t met before.

Meanwhile, I’ve signed up for some fun events at the Google office - a Design Patterns book club and an Advanced Java lecture series. The book club meets during lunch every Wednesday and the lecture is every Tuesday afternoon. We had our first book club meeting today, and, while the material we covered so far was more or less intuitive (I already knew it, though I didn’t know it was any sort of defined/formal “pattern”), I learned a lot from the discussions. That’s the great thing about Google, so far - there are all these brilliant engineers who have been writing code longer than I’ve been alive, and I get to work with them every day.

Monday, June 27, 2011

And thus begins my summer

I set my alarm last night for 7:30. Boy, was that a pain… but I could barely contain my excitement when I woke up this morning.

After showing up at work at 8 am today (ouch), I got a quick tour of Google’s Boulder office. It’s actually bigger than I thought - it currently spans three different buildings! The Boulder office isn’t big enough to have their own cafe, so they have catered food. I had a morning breakfast of approximately five different kinds of fruit, and then I sat down to work through some tutorials.

However, the first thing I did was struggle with setting up Eclipse for an hour and a half. For some reason, despite the plugins being installed, Eclipse was refusing to recognize/install them. So, an hour and a half later, I finally had everything set up and could do some work.

Lunch was at picnic tables on the roof of the building, with a breathtaking view of the mountains - I’m going to bring my camera tomorrow and snap some photos. After lunch, I realized that my monitors were blocking a window that also had a beautiful view of the mountains, so I spent 10 minutes or so rearranging my desk. Now if I look one way I can see my work, and if I look the other I can see the mountains. I finished up the day with more tutorials and walked back home, excited to wake up tomorrow and do the exact same thing.

Sunday, June 26, 2011

One thing I’m very excited for is to get off dorm food and start cooking for myself again. For lunch today, I went and bought a cheap, two-pound steak and a fresh-baked loaf of french bread. I gave the steak a dry rub of oregano and basil (also salt, pepper, and garlic, of course!) and this is the result.

It was delicious.

Orientation fin

I just finished my internship orientation in Mountain View, and boy was that ever an experience…

On Monday, I left Chicago at 10 am, had an hour delay, and then was on the plane for five hours. I landed in San Jose around 2 pm, and my first stop was Adamson’s French Dip. I definitely recommend anyone in the area to check it out, the only sandwich place I’ve been to that compares is Al’s Deli, back in Evanston.

Tuesday was the first day or orientation. I had to get up at 7 (ugh!) in order to get to Google by 8 am, and from that point on it was a deluge of information. I kept hoping it would stop, but it never did - needless to say, by the end of the day I felt pretty nervous.

Over the next three days, I was kept pretty busy. In between meeting people, doing some small projects, and attending orientation lectures I was wiped at the end of each day, but I feel a lot less nervous now.

I’m really excited to get to work tomorrow and dive right in!