So after a long period of soul-searching, I recently decided that it was a getting time to leave my current job at Microsoft. I definitely learned a lot during my first couple of years there and had a lot of fun. Unfortunately I haven't really been challenged on the job for at least a year, which was a sign that it was time to move on to bigger and better things.
I was looking for something with a significantly faster pace of development where I'd be able to learn a lot. I looked around at a few different tech companies, and one consistently stood out from the others as being a great place to work. The final decision wasn't too difficult - I'm pleased to announce that I'm going to be working for Facebook! I'm really excited - they have a great product and a willingness to continually improve it, which is very important in the social networking sector. They also just hit 350 million active users, which is absolutely phenomenal growth given that they were at only 100-150 million one year ago. I can't wait to learn how to work at such a massive scale.
I'll be starting in mid-January, but I'll actually be on vacation until then. Starting next week I'll be on a month-long trip through India and Africa, culminating in a climb to the top of Mount Kilimanjaro! More on that soon - I hope to be able to post pictures from the road. In the meantime I'm exceedingly busy finishing up my current job, moving out of my Seattle apartment, preparing to move to San Francisco, and getting ready for this massive trip. I'm definitely looking forward to the vacation!
Kill A Watt
I recently got a Kill A Watt, which is a device that plugs in between the wall and your electronic devices. It monitors various parameters, such as volts, amps, watts, and kilowatt-hours.
It's very interesting to see how much power all of my devices are using. Without knowing these kind of details, it's difficult to accurately answer certain kinds of questions about my power usage. For example: "Is it worse to leave my computer turned on, or leave two lights on?" (answer: the computer is worse if the lights are CFLs, but not if they're incandescent) Or, "Should I turn off my computer speakers when I am gone, even if no music is playing?" (answer: probably)
Here are some measurements I just made:
- Computer, idle: 130 watts
- Computer, 1 core active: 170 watts (2 cores: 195 watts)
- LCD monitor, minimum brightness: 50 watts
- LCD monitor, maximum brightness: 110 watts
- Computer speakers: 8 watts (always)
There were several surprises just from measuring these three devices - I didn't expect to see such a wide range of power consumption even on one device. I will often absent-mindedly leave open web browser windows that contain Flash animations (such as the YouTube video player's animations after a video finishes playing). Little did I know, a few of these pages could end up using as much power as leaving on a 60 watt light bulb!
Another surprise was that my speakers always seem to be using 8 watts of power, whether they are playing sound or not. Previously I had assumed that they weren't using any power when they were silent, so I have been leaving them on all the time. Doing that for the past 4 years has apparently cost me $25 (8 watts x 4 years = 280 kWh).
That last number brings up an interesting point - I was surprised at how low the dollar number was when I calculated it. I currently live in the Northwest US, and our power is relatively cheap since a lot of it is provided by hydroelectric dams. I am currently paying about 9 cents per kilowatt-hour. If I were to move to California I'd need to be a little more careful about turning things off, since they pay about twice as much down there.
FiveFingers
I recently purchased a pair of Vibram FiveFingers after reading several positive reviews and a book extolling the virtues of running barefoot.
If you haven't seen them before, they're basically thin rubber soles that fit around the bottoms of your feet. They have five little "toes" on them that allow your toes to flex independently of the rest of the foot:
The idea is that they are as close to running barefoot as possible, while still keeping you safe from stepping on glass and rocks. Running barefoot is supposedly good because that's how human bodies evolved to run. Typical padded running shoes make it easy to run with wide strides, striking the ground heel-first. This striking action causes lots of stress and problems in your joints, particularly knees and ankles. Running barefoot forces you to run differently since you cannot strike your heel (or else it will hurt, like it is supposed to). While barefoot you automatically run with knees bent, "rolling" your foot from the front to the heel as you step. This extra flexibility reduces joint stress since your legs will automatically bend to accommodate the force of the footfall.
That's the theory anyway. I haven't had the FiveFingers long enough to tell if they will live up to the promise. When I got them I used them on my morning run, of about 3 miles. While running everything felt more or less fine, but afterward I noticed that I had gotten a blister on the bottom of my right foot, and both feet ached for a couple of days (it felt like the foot muscles were sore from not being used, rather than actual foot injuries). Some people recommend gradually switching to barefoot running (starting with only a half mile or mile each day), which sounds like good advice in retrospect. I need to build up calluses in places where I don't usually need them in shoes and socks.
The sensation while wearing them is very interesting. It's not quite like being barefoot, but you "feel" the ground much more than you do with regular shoes. You can really tell the difference between concrete, asphalt, a dirt trail and grass. You also notice little things that you'd normally miss, like sticks and cracks in the sidewalk, as well as temperature differences between different surfaces (cool wet grass vs hot dry asphalt).
I wore them to work one day and got a lot of weird looks. Most people did not know what they were and thought I was crazy. I didn't notice much difference after wearing them for a day at work, so I've stuck with regular shoes since then. Some people claim that it helps to wear them around to daily activities if you suffer from back pain, as they will force you to have more "correct" walking posture.
Managing photos with iPhoto + Flickr
This weekend I worked on setting up an organizational system for my digital photographs. Up until this point I've just been dumping pictures into folders, roughly organized by trips and dates. There were several problems with this system: there was no easy way to find pictures of specific people, it was difficult to browse through just the good photos, and they weren't automatically shared with anyone unless I manually uploaded them somewhere myself. It required too much work to upload and share photos that I often never got around to it.
I needed to find a system which would keep the photos organized and automatically share them on an internet site like Flickr for me. I looked at a lot of different photo apps and Flickr clients, and ultimately decided to use iPhoto. Its Flickr compatibility has some limitations, but it goes far beyond any other system in terms of ease of use. Here's how my setup works:
After a trip or a day of taking photos, plug in the camera to the computer. iPhoto pops up and offers to download all the pictures and automatically sort them into "Events". Events are just collections of all the photographs taken over a certain time period. It defaults to splitting by days, but you can also split the events between certain photographs:
This works fairly well for a first level of organization. The events contain every single photo taken, even if you took 10 photos of a certain object in order to get the perfect shot - that's OK. We'll sort out the good photos from the rest when we get to the Album layer later. You can leave all the originals in the events and not have to worry about losing them.
While still working with the events, it's only a few clicks in iPhoto to automatically tag all the photos with the location of the event (if your camera does not have a GPS built-in). A Google Maps window pops up and allows you to search to assign the location ("Tiananmen Square"), or drop a pin on the exact coordinates. All the photos in the event are then automatically tagged with the GPS coordinates and the name of the location.
The next step is where iPhoto really shines. The "Faces" feature scans all your photos and automatically finds people's faces in the photos. If it doesn't know who a certain person is, it prompts you to assign a name to the face. Once you assign a certain person's face in a couple of pictures, it automatically recognizes that person in the other photos. Then you just need to click "Confirm" or "Reject" on all of the other suggested faces to commit them. This will automatically tag all the photos with the names of the people in them. Overall I find that this feature works surprisingly well - you'll never want to go back to manually tagging people in photos again. Here are a few pictures of me that it automatically detected:
Next I like to pull out just the good photos, for browsing and sharing on Flickr. iPhoto has "Albums" for this, and you just need to select the good photos from an event and drag them in. One album can contain photos from multiple events, or not: how you want to organize things at this level is up to you. Unfortunately there's no hierarchy between Albums. I would have liked to create a super album called "China Trip" which contains sub albums for "Bejing", "Shanghai", etc., but it's not possible to do this. That's probably just as well because most internet photo-sharing sites don't allow nested albums either (Facebook & Flickr being the two big ones).
Once everything is organized into albums, it's only a few clicks to sync all the albums to your Facebook or Flickr account. iPhoto takes care of automatically uploading all of the pictures and syncing the metadata like the location and people tags. There's very little flexibility at this point - iPhoto will sync everything in the albums without giving you many options to control the details of what gets uploaded (for example, if you had kids you might not want to sync the names or photos of the kids). However, if you keep these limitations in mind while making the albums, it works out fine.
And that's it - once you have everything set up, then there's very little "maintenance" work that you have to do with the photos. Just plug the camera in, name the event, accept the detected faces (assuming it's already been trained), and pick out the best photos for an album that automatically gets syncd up to Flickr or Facebook. You don't need to manually tag or upload anything (unless you want photo-specific tags like "street vendor" or something like that, which are significantly easier to tag right in iPhoto than on the web).
I've done all this with my recent photos and syncd them to my Flickr account, if you want to check out the results: http://www.flickr.com/photos/efaller/
Furthermore, if you use WordPress for your blog, it's easy to install a Flickr plugin which creates a new "Insert Flickr Photo" button, which makes it super-easy to insert your photos into a blog post. You just click the one you want, and it automatically chooses a thumbnail of appropriate size, inserts it, and links it to the full-res version on Flickr. No need to mess with manually resizing the photo and using the WordPress upload screen any more. Here's an example:
The plugin linked above also includes a handy sidebar widget that automatically displays a random selection of your photos, linked to Flickr:
All this without needing to manually upload anything! I expect that I'll be able to keep up with this system since it's so easy. There's no more excuse not to get all my good photos uploaded with the appropriate tags.
Kindle
Before my trip to Asia I got a second-generation Amazon Kindle, which had just been released. I was too busy to write up a review at the time, but maybe that's just as well since now I have the additional perspective of having owned it for several months.
Kindle Review
Pros
- I got it explicitly for travel reading since it's so small and light. It's about the size of a paperback book, except thinner - it's less than 1 cm thick (a little more with the case attached). It's a lot more convenient than carrying around multiple books on a long vacation. You can load it up with a whole library of books and have a lot more variety than you would otherwise.
- The battery really does last a very long time. Since it only uses battery power when updating the screen to flip pages, it can go for weeks between recharges, unlike a phone or a laptop which would die after only a couple of hours. I used it extensively on a 15 hour flight to Beijing and barely any of the battery power had been consumed at all.
- You can load it up with public domain books for free. Internet people have converted pretty much every significant book published more than 70 years ago to Kindle-compatible formats, and it's really easy to subscribe to these "book feeds". I have loaded mine up with tons of books I've been meaning to read for a long time but have never gotten around to - Thoreau, Dickens, H.G. Wells, Verne, Tolstoy, etc.. Obviously you can also read all of these books for free on the internet, but then you're tied to a computer screen or a regular laptop with poor battery life.
- When you plug it into a computer, it just shows up as a 1 GB USB thumb drive. One less gadget to worry about carrying around. This has already been handy a couple of times.
- It's easy to change the text size. Unlike a real book, if you feel like holding it farther away from your face, you can make the text bigger. Or if you feel like holding it closer, you can shrink the text and get more on one page.
- It has a built in Oxford dictionary - just move the cursor over a word and click to get the definition. Very handy for books with lots of uncommon words.
- You can buy books from Amazon right on the device and start reading instantly - no need to drive to the store or wait 3 days for them to be delivered. Most books are $9.99 or less - even the new hardcover books which would regularly be $19.99. So if you buy a lot of those you can actually save money.
- There's a companion iPhone app on which you can also read your Amazon-purchased books (but not public domain books). They both keep in sync via the internet, so you can easily change devices and pick up right where you left off.
Cons
- The screen size is pretty small - the actual screen is about 4 inches across. It's particularly annoying because there's a large 1 inch bezel on all sides of the screen. It would have been a lot better if this extra space could have been used for the screen. Of course, only weeks after I bought it Amazon announced the "Kindle DX" with a large 10 inch screen. I haven't used one of those in person, but it actually looks a little too big, particularly for carrying around while traveling around or commuting.
- It's very difficult to "flip through" a book and search for something, like you can easily do with a real book. It takes about 1 second to flip a page, which is OK when reading regularly, but it makes it pretty much impossible to casually flip back a few pages to quickly re-read something, or pick up a reference book and look up some information. There's a search function and a little keyboard, but they get to be infuriating if you're trying to do anything much more complicated than jumping to chapter headings.
- You can't give a book to a friend (obviously). I read an interesting book about a topic I know a friend is interested in, but too bad: no book borrowing (or re-selling).
- The text layout abilities of the Kindle are fairly limited. If a book uses any formatting much more complicated than a typical novel, it's probably going to get munged and look wrong, particularly if the book was "ported" poorly to e-book format. This is all doubly true for any complicated illustrations or charts, some of which are rendered completely illegible.
- There's a serious design flaw in the way the case connects to the device, as noted by a class-action lawsuit. It's extremely easy to get the case into a position where it will bend the plastic, and eventually break the screen. Because of this problem I always remove the case before using it:
Overall I think it's quite an interesting device, especially for people who like both gadgets and reading. However, its limitations can be quite infuriating at times, and I don't think that it's ready for the mainstream market yet. These problems will no doubt be corrected fairly soon by newer devices. E-Books and digital distribution are definitely going to be the way of the future. Hopefully the publishing industry will understand this fact better than the music and film industries do.
Personally, I'll probably use the Kindle for travel reading, fiction novels, and "pop" books that you read straight through once and never again (Dan Brown, Malcom Gladwell, etc). It doesn't work very well for more substantive books or programming & technical reference books, so I'll probably continue to get "dead tree" versions of those.
CubeCheater Updates
A couple of interesting things have been happening in the CubeCheater world recently.
First, I recently received a nastygram cease-and-desist from the Rubik's Cube company, which claims that CubeCheater infringes on its rights. Apparently they claim rights to any and all "depictions" of Rubik's Cubes.
I obviously did not use any "Rubik" names or logos in the app, so I had thought it would be in the clear, especially since the app only solves cubes and does not simulate them. I don't know enough about intellectual propery law to know whether it's legitimate to claim rights to depictions of products, but there does seem to be some precedent for trademarking the "likeness" of a product.
Either way, there's no way I could possibly afford to fight it in court, so I didn't have much of a choice. I negotiated with the Rubik's Cube company, and we came to an agreement that I could keep CubeCheater alive as long as it was available for free.
So this week I made CubeCheater available for free on the App Store. In the few days since then, it's been downloaded about 25,000 times.
On a more positive note, version 1.2 of CubeCheater is now available, and adds support for many new languages! CubeCheater is now translated into Japanese, German, French, Italian and Spanish. Fortunately the app doesn't have a whole lot of text so it was fairly easy to translate. Still, some problems did come up, such as most of the German text strings being too long for the buttons that I had calibrated for the English version. Eventually I got everything to fit.
Here are some screenshots of CubeCheater in Japanese and German: