19 December 2012

KawaiiKart Chassis Assembled!

Or part of. If I fail my finals, this would be the reason.

It only took about three hours to cut the 80/20 into their requisite lengths (while screwing up the lengths for the main chassis because I don't know how to use a ruler -__-) and screw them together. Hopefully I get more done after finals.

10 December 2012

The Nicest Balls You Will Ever See

My CUDA Ray Tracer works! Now to make it photon map…

09 December 2012

Back to Triple Displays

I nabbed two Dell Ultrasharp 2007s on ebay for $230 shipped. Unfortunately, the guy forgot to ship power and DVI cables; guess I'll be haggling the price down after finals week to compensate for the loss -_-. I also have to massage xmonad a bit to get display focusing and desktop switching just right.

Also I'm quite confident that I change setups as quickly as Bayley acquires new computers as a typical girl dumps her boyfriend. Not sure who I'm insulting =P.

Aaaaand before I forget, I'm posting my xorg.conf because I absolutely do not want to dig through the internet just to re-set up this configuration again.
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 304.54  (buildmeister@swio-display-x86-rhel47-11)  Sat Sep 29 01:10:44 PDT 2012

Section "ServerLayout"

# Removed Option "Xinerama" "0"
    Identifier     "Layout0"
    Screen      0  "Screen0" 1200 0
    Screen      1  "Screen1" 3760 0
    Screen      2  "Screen2" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "1"

Section "Files"

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "DELL3007WFPHC"
    HorizSync       49.3 - 98.5
    VertRefresh     59.9 - 59.9
    Option         "DPMS"

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "DELL 2007FP"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor2"
    VendorName     "Unknown"
    ModelName      "DELL 2007FP"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 460"
    BusID          "PCI:19:0:0"

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 460"
    BusID          "PCI:18:0:0"
    Screen          0

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 460"
    BusID          "PCI:18:0:0"
    Screen          1

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24

Section "Screen"

# Removed Option "metamodes" "DFP-0: nvidia-auto-select +0+0 { Rotation=left }"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "DFP-0: nvidia-auto-select +0+0 { Rotation=left }"
    SubSection     "Display"
        Depth       24

Section "Screen"

# Removed Option "metamodes" "DFP-1: nvidia-auto-select +0+0 { Rotation=left }"
    Identifier     "Screen2"
    Device         "Device2"
    Monitor        "Monitor2"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "DFP-1: nvidia-auto-select +0+0 { Rotation=left }"
    SubSection     "Display"
        Depth       24

Section "Extensions"
    Option         "Composite" "Disable"

03 December 2012

12 Days of Christmas

Sung to the melody of Twelve Days of Christmas

On the first day of Christmas
My true love sent to me
a OneTesla coil

On the second day of Christmas
My true love sent to me
Two PSUs
and a OneTesla coil

On the third day of Chirstmas
My true love sent to me
Three mannequins
Two PSUs
and a OneTesla coil

On the fourth day of Christmas
My true love sent to me
Four GPUs
Three mannequins
Two PSUs
and a OneTesla coil

On the fifth day of Christmas
My true love sent to me
Five KawaiiKarts
Four GPUs
Three mannequins
Two PSUs
and a OneTesla coil

On the sixth day of Christmas
My true love sent to me
Six hamburgers
Five KawaiiKarts
Four GPUs
Three mannequins
Two PSUs
and a OneTesla coil

On the seventh day of Christmas
My true love sent to me
Seven ballcopters
Six hamburgers
Five KawaiiKarts
Four GPUs
Three mannequins
Two PSUs
and a OneTesla coil

On the eighth day of Christmas
My true love sent to me
Eight processors
Seven ballcopters
Six hamburgers
Five KawaiiKarts
Four GPUs
Three mannequins
Two PSUs
and a OneTesla coil

On the ninth day of Christmas
My true love sent to me
Nine monitors
Eight processors
Seven ballcopters
Six hamburgers
Five KawaiiKarts
Four GPUs
Three mannequins
Two PSUs
and a OneTesla coil

On the tenth day of Christmas
My true love sent to me
Ten SSDs
Nine monitors
Eight processors
Seven ballcopters
Six hamburgers
Five KawaiiKarts
Four GPUs
Three mannequins
Two PSUs
and a OneTesla coil

On the eleventh day of Christmas
My true love sent to me
Eleven bugs to fix
Ten SSDs
Nine monitors
Eight processors
Seven ballcopters
Six hamburgers
Five KawaiiKarts
Four GPUs
Three mannequins
Two PSUs
and a OneTesla coil

On the twelfth day of Christmas
My true love sent to me
Twelve sticks of RAM
Eleven bugs to fix
Ten SSDs
Nine monitors
Eight processors
Seven ballcopters
Six hamburgers
Five KawaiiKarts
Four GPUs
Three mannequins
Two PSUs
and a OneTesla coil

CUDA Drivers Causing Kernel Panics

For the past few days, my MacBook Air (13", Late 2010), has gotten significantly more kernel panics than before. The kernel panics would always happen when I removed the display cable and then woke the computer from sleep, at which point it would tell me that it kernel panicked was going to automatically reboot. Upon restart, I skimmed through the kernel panic (portions reproduced at the end) and concluded that it was caused by some Nvidia kernel extensions. Upon closer inspection, I noticed NVDAResman and nv50hal were at fault, which are two kexts that come with the OS X CUDA driver.

Interval Since Last Panic Report:  159692 sec
Panics Since Last Report:          2
Anonymous UUID:                    B4401137-5BE3-7AF0-D223-C1C4D49B06E5

Mon Dec  3 09:55:59 2012
panic(cpu 1 caller 0xffffff80060b7bd5): Kernel trap at 0xffffff7f86aa1a58, type 0=divide error, registers:
CR0: 0x000000008001003b, CR2: 0x00000000992f9f8e, CR3: 0x0000000008c94000, CR4: 0x0000000000000660
RAX: 0x00014424d765e000, RBX: 0x0000000000000000, RCX: 0x0000000008d9ee20, RDX: 0x0000000000000000
RSP: 0xffffff807e4ab020, RBP: 0xffffff807e4ab0b0, RSI: 0x0000000000000000, RDI: 0xffffff8012e1d004
R8:  0xffffff807e4aafb4, R9:  0x0000000008d9ee20, R10: 0x000000001017df80, R11: 0x000000000574c638
R12: 0xffffff806ac91da0, R13: 0xffffff8012de7004, R14: 0x0000000000000006, R15: 0xffffff8012e1d004
RFL: 0x0000000000010246, RIP: 0xffffff7f86aa1a58, CS:  0x0000000000000008, SS:  0x0000000000000000
Fault CR2: 0x00000000992f9f8e, Error code: 0x0000000000000000, Fault CPU: 0x1

Backtrace (CPU 1), Frame : Return Address
0xffffff807e4aacc0 : 0xffffff800601d626 
0xffffff807e4aad30 : 0xffffff80060b7bd5 
0xffffff807e4aaf00 : 0xffffff80060ce4ed 
0xffffff807e4aaf20 : 0xffffff7f86aa1a58 
0xffffff807e4ab0b0 : 0xffffff7f86a9aefb 
0xffffff807e4ab160 : 0xffffff7f86a7befc 
0xffffff807e4ab1a0 : 0xffffff7f86a7dcf1 
0xffffff807e4ab350 : 0xffffff7f86a80294 
0xffffff807e4ab3a0 : 0xffffff7f86b68ba1 
0xffffff807e4ab4e0 : 0xffffff7f86b6ef2e 
0xffffff807e4ab530 : 0xffffff7f86879659 
0xffffff807e4ab560 : 0xffffff7f867638da 
0xffffff807e4ab610 : 0xffffff7f8675efac 
0xffffff807e4ab800 : 0xffffff7f867603a2 
0xffffff807e4ab8d0 : 0xffffff7f8695415a 
0xffffff807e4ab900 : 0xffffff7f869505ce 
0xffffff807e4ab920 : 0xffffff7f8694f158 
0xffffff807e4ab9a0 : 0xffffff7f8694babb 
0xffffff807e4ab9c0 : 0xffffff7f86955e40 
0xffffff807e4aba70 : 0xffffff7f8694a61c 
0xffffff807e4abbf0 : 0xffffff7f866f63c7 
0xffffff807e4abc60 : 0xffffff7f866e057b 
0xffffff807e4abcd0 : 0xffffff7f866e31b8 
0xffffff807e4abd40 : 0xffffff7f866e3343 
0xffffff807e4abdb0 : 0xffffff7f866e2db4 
0xffffff807e4abe10 : 0xffffff7f866a9c04 
0xffffff807e4abe50 : 0xffffff7f866a8eef 
0xffffff807e4abe80 : 0xffffff7f866a82cb 
0xffffff807e4abef0 : 0xffffff80064472a8 
0xffffff807e4abf30 : 0xffffff8006445daa 
0xffffff807e4abf80 : 0xffffff8006445ed9 
0xffffff807e4abfb0 : 0xffffff80060b26b7 
      Kernel Extensions in backtrace:
            dependency: com.apple.iokit.IOPCIFamily(2.7.2)[B1B77B26-7984-302F-BA8E-544DD3D75E73]@0xffffff7f86650000
            dependency: com.apple.iokit.IOGraphicsFamily(2.3.5)[803496D0-ADAD-3ADB-B071-8A0A197DA53D]@0xffffff7f8669b000
            dependency: com.apple.iokit.IOPCIFamily(2.7.2)[B1B77B26-7984-302F-BA8E-544DD3D75E73]@0xffffff7f86650000
            dependency: com.apple.iokit.IOPCIFamily(2.7.2)[B1B77B26-7984-302F-BA8E-544DD3D75E73]@0xffffff7f86650000
            dependency: com.apple.iokit.IONDRVSupport(2.3.5)[86DDB71C-A73A-3EBE-AC44-0BC9A38B9A44]@0xffffff7f866de000
            dependency: com.apple.iokit.IOGraphicsFamily(2.3.5)[803496D0-ADAD-3ADB-B071-8A0A197DA53D]@0xffffff7f8669b000
            dependency: com.apple.NVDAResman(8.0.0)[A4C53A36-22B6-3075-82B9-9DE612A9C015]@0xffffff7f866f2000
            dependency: com.apple.iokit.IOPCIFamily(2.7.2)[B1B77B26-7984-302F-BA8E-544DD3D75E73]@0xffffff7f86650000

BSD process name corresponding to current thread: kernel_task

Mac OS version:

Kernel version:
Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64
Kernel UUID: 69A5853F-375A-3EF4-9247-478FD0247333
Kernel slide:     0x0000000005e00000
Kernel text base: 0xffffff8006000000
System model name: MacBookAir3,2 (Mac-942C5DF58193131B)

10 November 2012

Achievement Unlocked: GPU Insanity

You are looking at two gorgeous eVGA GTX 460 2Wins, which are eVGA's attempt at the dual GPU thing. I nearly had a shortage of 8-pin connectors (there's only two on this power supply), but was solved by using a dual 6-pin to 8-pin adapter (and then I almost ran out of 6-pin connectors -- go figure). My test cuda code verifies that I indeed have four GPUs:

shewu@hamburger ~/Dropbox/Projects/cuda
 % ./getgpu 
This computer has 4 GPUs
CUDA device #0
Name: GeForce GTX 460
Total memory: 1024MiB
Clock rate: 1401MHz
CUDA device #1
Name: GeForce GTX 460
Total memory: 1024MiB
Clock rate: 1401MHz
CUDA device #2
Name: GeForce GTX 460
Total memory: 1024MiB
Clock rate: 1401MHz
CUDA device #3
Name: GeForce GTX 460
Total memory: 1024MiB
Clock rate: 1401MHz

If you're interested in the code, here it is:

#include <iostream>
#include <cuda.h>

using namespace std;

void printDeviceProp(cudaDeviceProp& devProp_)
        cout << "Name: " << devProp_.name << "\n";
        cout << "Total memory: " << (devProp_.totalGlobalMem/(1024*1024)+1) << "MiB\n";
        cout << "Clock rate: " << devProp_.clockRate/1000 << "MHz\n";

int main()
        int devCount;
        cout << "This computer has " << devCount << " GPUs\n";

        for (int i = 0; i < devCount; ++i)
                cout << "CUDA device #" << i << "\n";
                cudaDeviceProp devProp;
                cudaGetDeviceProperties(&devProp, i);

        return 0;
Sad to say that I still can't tell Bayley to eat my dust just yet.

09 November 2012

Steering: Conquered

I finally fixed the steering on KawaiiKart, which meant securing one of the two remaining degrees of freedom so that the steering column won't wobble while trying to steer. Here's the updated CAD:

I did the entire CAD on my MacBook Pro Core Duo (yes, one of the first MacBook Pros!) 2.0GHz with 2GiB RAM and a now wimpy ATI Mobility X1600 driving a custom 1920x1200 panel. I'm very impressed by how old hardware works. Then again a 100-part assembly isn't very much at all.

In other news, I got a $500 grant from Techfair to partially fund building Kawaii! I estimate the build will run upwards of $1.2k, since waterjet parts are expensive (~$400), but the journey and the end product will be well worth it. Stay tuned!

07 November 2012

iPad mini Impressions

I went to the Apple Store in Legacy Place the day after launch day to check out the newest tablet in town. The same weekend (actually on launch day), I received my iPad 4, an early Christmas present from the parents.

Of course, iPad mini was sitting on a table near the entrance. I picked up the unit closest to me and started playing around with it. Immediately I noticed how light it was; its thinness came second. Its svelte proportions begged me to fit it in my pocket. Surprisingly, it did! (At least in my ski jacket pocket. It went only halfway into my pants pocket. Clearly I should get real cargo pants.)

I then investigated its usability. Upon waking the device, I noticed the blurriness of the clock and app names. Icons were smaller, but still plenty touchable. I then pulled up some scientific papers, but the unfortunate combinations of large margins and smaller and blurrier text heavily outweighed the size and weight of the device. Although I was decided on the iPad 4 at this point, I did my handwriting and typing tests for sake of completeness: I opened up the Paper app and started writing. While a 4:3 ratio is optimal for these smaller devices, 7.9" diagonal does not provide sufficient surface area for writing notes without constantly flipping pages. Yes, I do handwrite my notes on iPad with a stylus, and it works remarkably well. The typing test went surprisingly well; while the keys are considerably more cramped than those of the iPad 4, I was able to type surprisingly quickly (~50wpm).

My impression of iPad 4 is more positive. The retina display is absolutely gorgeous. Also noticeable is the increased weight from iPad 2; while it is heavier, it will be lying on a flat surface most of the time for writing notes. The device does get warm under heavy use (games), in particular, like the iPad 3, the bottom left gets noticeably warm. Perhaps the best change is the speakers (yes, there are two speakers behind the grill); they are significantly louder, maybe on par with those in MacBooks.

The iPod touch is pretty nice, but the iPad nano was pretty bleh. What in the world was Jony Ive thinking?! I'm slightly convinced that it was designed by the marketing team. Ha.

That's all for now; I'll report back if I notice more worthwhile tidbits.

27 October 2012

KawaiiKart Mega Update

Quite a bit of time passed since my last update and quite a byte has changed! (well, maybe not 8x as much, but you get the idea.) KawaiiKart is almost finished designed! Here's the latest model:

The box behind the seat is the 35cc engine. I also have to install the steering assembly at some point and decide what to do with the extra lengths of aluminum on the outer frame of the chassis.

The steering is still a little sketchy (I had to remove some (important) constraints to make Autodesk happy), but it looks fine! I still have to work out how the steering column works; my plane projection for the loft on the steering column is very sketchy. Turns out the angle of the steering column with respect to the chassis is 35 degrees, not 45. No big deal, band saws are my friends.

I also have some design updates. I'm ditching the hubmotors because time to production is way too long compared to using off-the-shelf components. I am willing to manufacture battery packs though; a 16-cell pack isn't very hard.

If you're interested in following my progress, check back every so often; I hope to make lots of progress before the new year! In fact, my BOM is almost done!

22 October 2012

I love you EVGA

The Nvidia-only GPU and motherboard manufacturer has the best customer service ever!

Remember the GTX 460 2Win I got from eBay? It stopped working a couple of weeks later. I instinctively opened an RMA request on EVGA's website and mailed the defective card in, only realizing after I dropped it off at USPS that the warranty-is-void sticker was removed! I panicked and prayed that EVGA would be nice and send me a replacement anyway.

Less than a week later, EVGA calls me, but I didn't pick up since my 6.02 exam was about to start (literally). A couple days later I receive email from EVGA that a replacement is coming my way! I checked the serial number and it indeed is not that of the one I sent in! Woo!

I finally took the time today to retrieve it from desk and test it. After booting my computer with my 30" plugged into the unit, I got a black screen, so I rebooted the machine. No luck. I then installed my 8800GTS (another EVGA card), plugged the 30" into that, and the machine booted with video. It's a bummer that the card has issues driving my 30", but I bought it for compute, so no worries.

I'm convinced that EVGA was nice only because I mentioned that I have an SR-2 in the RMA request.

Here's to two more?

09 October 2012

iPhone 5: First Impressions

The phone comes in immaculate packaging, as with any Apple product. I believe the iPhone 5's box is moderately smaller than that of the original iPhone's. Inside the box, you will find the iPhone 5 sitting at the top layer, underneath a packet of manuals other textual paraphernalia, and finally a 5W USB charger, Apple EarPods, and a Lightning cable.

I immediately saw two imperfections with my phone, both at the lower right on the aluminum. They're at most 0.5mm wide; I don't own a micrometer or have one handy, but they're certainly less than a millimeter in width. That said, I will not be exchanging the phone or putting it in a case.

When you pick up the phone, you notice how thin and light it is. 0.8oz is nothing impressive on paper, but it is very tangible in your hand. In addition, the thinness of the phone is tangible as well, but not as much as the lack of weight.

The phone boots very quickly in about 7-10s. You are then greeted by the setup assistant, which works just like the one in iOS 5. I restored my phone using my iPad 2's backup on iCloud, which took no more than two minutes.

Moving around in iOS 6 is very zippy. I haven't yet felt any lag navigating around or while using apps. Gaming is butter smooth as well; Real Racing 2 flies, although extremely cramped on a phone compared to on iPad. The phone stays cool while gaming.

I have noticed one glitch, probably caused by video drivers, but it might be hardware related. The screen will display about 5 rows of scrambled lines when I switch between the numbers keyboard and the qwerty keyboard while typing my password for the App Stores. This bug is pretty hard to reproduce; it's only happened three times to me so far.

I also noticed that the phone gets quite warm while browsing on LTE. The aluminum especially acts like a fantastic hand warmer (will definitely be useful for the upcoming Boston winter).

Battery life has been great as well. I got a bit more than 10 hours of use surfing the web, playing some light games, and listening to 5 hours of music on and off. Push Exchange was on the entire time. I predict that I will have to charge the phone every 1.5 days, compared to every night with my previous phones (iPhone, Dell Streak, HTC HD2).

The included EarPods are decent. They have more bass than Apple's in ears, but cannot touch my B&W P5's or my Sennheiser HD428s. The treble and midtones are not as warm as the P5's. Unfortunately, without any removable grill design, they look like they will be jammed by earwax by some point in the future. That said, they're definitely a step up from the previously included earbuds.

Lightning works well. The cable is indeed bidirectional and it's also very small. I'm not bothered by the lack of compatibility with old accessories because, well, I don't have or use any besides the cables.

11 September 2012

New School Year, New Strategies?

I'm back at the MIT and junior year started off with a sizzle today. Having barely survived the past two years, I figured I should revise my various strategies in hopes for a more successful remaining two years. In no particular order:
  • Digital handwritten notes: has a more similar tactile feel to writing on paper than typing on a keyboard, yet makes my notes more accessible for studying and saves organizational issues. Combined with taking iPad instead of my laptop wherever I go, this saves a considerable amount of weight.
  • Make local git repositories for coding classes: just in case I accidentally my code in between. 
  • Run/Jumprope/DDR: sufficiently tires me out so I maintain my (sleep) schedule. Plus aerobic exercises burn way more calories than resistances ones.
Classes have been fine so far; it's only the fourth day, after all! 

6.02 Intro to EECS II: This class is about compression and digital signals, with which I don't have much experience. It should be relatively straightforward since it's an intro class.

6.837 Graphics: This class is about all things computer graphics, from physics engines to modeling to ray tracing! It's also in C++, which is convenient, but could potentially be frustrating. Bummer that Fredo is not teaching it this term.

18.100C Intro to Analysis: This is a Death Class at the Institvte, which should definitely give me a run for my money. I haven't done math in quite some time, so it should be (refreshingly masochistic and) fun.

18.337/6.338 Parallel Scientific Computing: I'm pretty sure this class has already won my heart, if not for the material taught, but for our class [super]computer. We will be using a state of art 8-processor Sandy Bridge-E beast, with 80 cores and 1TiB of RAM! This baby will absolutely crush my SR-2 in (embarrassingly) parallel tasks, but I'm sure will lose miserably in single threaded tasks (that don't demand too much memory, of course). Hah.

21F.107 Chinese I Streamlined: This class is for people who have conversational skills but do not have much reading or writing proficiency. Hopefully all the memorization won't kill me.

Speaking of the SR-2, it is sadly out of commission until about next week because:
  • I left the OS X boot flash drive at home (NJ), which is pretty unfortunate. I did put the aml file onto the disk, but that did not work.
  • The AMD 6870 that I was using is now sold to a friend. Well that's a non-issue now because my new GPU came in yesterday!!
  • Both plastic motherboard standoffs were broken during transport. I purchased some epoxy from Home Depot this past summer, but never got around to re-securing the mounts. I also need to cut the hole in the back for the IO ports, which I may get to this weekend.
Obligatory room pics. 

My desk has turned into a parking lot. Name all the vehicles!

New GPU! It's an Nvidia GTX 460 2Win I bought on eBay. (oops camera rotate fail)

Steve Jobs is finally hung! (hanged?) Also the iMac makes an excellent timepiece.

04 September 2012

PhotoNotes: Alaska

Inspired by my professor Frédo Durand, I've decided to write about my photography adventures, including practical advice and whatnot. I hope you find it useful!

Practical Details


Alaska during late August is mild, around 5-20ºC depending where you go. Anchorage and the south were quite nice, at around 10-20ºC, but Denali was quite cold. All the areas were decently rainy. I think we got lucky and dodged most of it, having only rained hard one day when we were driving from Anchorage to Denali. It does drizzle often though, so make sure you protect your gear as necessary! The coldness does get to you while hiking, especially if it's raining, so bring gloves!


We rented a car for the two weeks we are here. We got a Chevy Malibu 1LT from Alamo, which was quite decent, save for the abysmal quality interior plastics, which showed every scuff and scratch. Unlike the Prius rental from last summer, this car doesn't struggle at speeds near 80mph. The roads are incredibly well paved, have gorgeous scenery, are not crowded at all, making driving a pleasure.

Disk Space

You are going to someplace exotic and probably a once in a lifetime trip, so shoot RAW! Beware RAW files are huge; it's more or less a 1.5:1 ratio between file size and resolution. My 1D3 was generating about 10-15MB files and my 5D2 at least 25MB. This explodes if you're shutter happy; I can easily shoot 30+GB of photos on an action-packed day, especially in your first few days since everything looks exotic and snapshot-worthy. My biggest gaffe was not bringing enough external storage, with about 60GB free space altogether.

Special Photography


I think this is common sense: to get the best photographs from the car, roll down the window to shoot! You never know how smudges on the window will ruin what may be an excellent photograph. Take care to use a fast shutter speed, otherwise you may get motion blur.


A day cruise will mostly likely be in your itinerary; I went on two. They're fantastic for getting up close to glaciers and to see sea life. Depending on the size and then length of the cruise, you may have to compete for a good spot to shoot the animals. The decks are especially windy and cold in August, so dress warm so you can keep your good spot. The boat also rocks quite a bit, so image stabilization won't help much. You won't be close to the animals (at all), so bring a (super) tele! I was very sad that my 70-300L on an APS-H (1.3x) sensor was not sufficiently long.


There's a nice zoo in Anchorage that's worth checking out. There's no indoor exhibits, so leave the fast prime at home. However, do bring your standard and tele zooms, as you can get quite close to the polar bears and petting zoo animals.

Birds and other fast moving critters

You'll want to practice AI-Servo or equivalent continuous focusing mode beforehand, otherwise you will get a lot of sort-of out-of-focus shots. Also good panning technique might be helpful if you can't shoot at a high shutter speed.



Moose are large animals that sometimes graze along a road. Be prepared to stop and shoot!

Mountain Goats/Dall Sheep

Dall sheep graze very very very up high. You'll probably need an 800mm lens to get close to filling the frame with a herd.

Sea Otter

Sea otters are the cutest. They're pretty shy animals, so they try to avoid the cruise ship unless you get lucky. You'll want something longer than a 400mm lens (35mm) so as to not rely on luck.

Sea lions

Sea lions enjoy lying down on rocks to absorb heat. They are easily heard by their bark.


Seals are timid animals. They highly enjoy sunbathing.



Orcas are usually seen in herds. They don't normally show off with a full body out of the water jump.

Humpback Whale

These behemoths are also quite hard to get. If anything, they just show their tail. 


Porpoises are pretty annoying. When they come above the water surface, they make a huge splash, so you have to shoot them when they're about to come out or else you'll get a huge splash.


Eagles are fast flyers! They generally fly quite far away, so you'll want a supertele. Rarely do you see them stationary, except at the zoo.


Diving Puffin

Horned Puffin

Tufted Puffin

Hello there!

Puffins are pretty cute as well. There are two kinds in the area, the tufted puffin, which has crazy hair, and the horned puffin has an interesting horn-like pattern behind its eye. They dive under water to get the fish up to the surface, at which point they torpedo up and grab a fish.

Common Murre

Common Murre are small penguins that inhabit crevices of rocks. They're all black and white, so it's pretty easy to overexpose them. The easiest way to practice is to shoot seagulls, since they also have a lot of white.

Musk Ox

These don't really count as I photographed them at the Alaska Wildlife Conservation Center. However, you might just get to see them sparring or bullying each other, which is a treat compared to lazily grazing.


These also don't count since I photographed them in captivity.


These also don't count since I photographed them in captivity.

Little Wild Critter



For this trip I brought along a 50 1.2L, a 24-105L on my 5D Mark II, and a 70-300L on my 1D Mark III. The 50 was mostly unused, save for some shots on the airplane. The 24-105 on the 5D is fantastic; you get an useful range for landscapes and other nearby things. The 1D3's crop factor on the 70-300 is quite nice, giving a ~400mm focal length on the long end, which turned out not to be long enough. To add insult to injury, the 70-300 does not support Canon's extenders. I wish I had  gotten the 100-400; they're about the same price, but the 100-400L has a bit more reach and supports extenders, at the cost of being much older and weighing a bit more.

Carrying gear

For most of the time, I had the cameras around my neck, which worked fine. I wasn't afraid of rain since the 1D3 is fully weather sealed and the 5D2 is partially sealed. I stashed them into my Thule crossover backpack at the end of the day.


I had a Slik tripod that only got used once for a night shot of the starry sky at Miller's Landing, but the shot was accidentally deleted.

There were definitely deep pocketed amateurs or professionals in the wild.



Anchorage is a pretty pathetic excuse for a city. If I weren't told what the name of the place was, I would have assumed it was a suburb. It may not be pretty, but it has some great hiking trails at the Flattop Mountain in Chugach State Park around the perimeter. Plus, it has Alaska's only Apple Store in the 5th Avenue mall!

Alaska Wildlife Conservation Center

This is a little zoo-like area outside Anchorage along the Seward Highway. It's a pretty large portion of land in which animals such as musk ox and bears roam. It's somewhat expensive, but worth a visit.

Kenai Peninsula

On the outskirts of Seward is Exit Glacier, which has an easy 1mi hike to its viewing spot. Seward also has a fantastic glacier tour, from which we saw the Aialik Glacier and a plethora of wildlife. There's also plenty of recreational activity to do, such as camping, fishing, and kayaking.
There's not much in the city of Kenai, but there are a few hiking spots and a beach along Sterling Highway outside it.
Homer is a quiet suburb and is known for its Halibut fishing industry. There's a small gem of a restaurant called Cafe Cups, which serves phenomenal steak and seafood. The town is very hilly and walkable, especially its 10 mile coastline.


Denali is the largest national park in Alaska. It's even bigger than Massachusetts! This vast space is filled with wildlife and plenty of snowy-capped mountains, including Mt. McKinley, the tallest mountain in the US. Unfortunately, you'll need to take one of their tour buses (a minimum 6hr ride) into the park to see more wildlife, since they don't hang out much near the entrance (you're only allowed to drive the first 15 miles). The moose seem to come out and graze in the morning around 11am, but no bears. Mt. McKinley is also hard to spot since it's hidden in the clouds for all but 60 days. The aurora borealis is also pretty tricky; the area is always cloudy and people claim the best viewing time is in September.

24 August 2012

Dealing with Ruby's different versions

To my dismay, Ruby on Rails seems to be linked deeply into OS X's frameworks, which I don't want to mess with. Some poking reveals that the default installation, version 1.8, is in a system framework called Ruby.framework. The normal method to updating such tools is to remove the old version and then install the new one, but I did not want to take the risks this time. Turns out there's a great tool called rvm that will manage multiple Ruby versions!

Complete instructions are here: http://bigdiver.wordpress.com/2011/11/24/update-ruby-and-rails-on-mac-os-x/

They're written with OS X in mind, but adapting them for any Linux system should be trivial.

13 August 2012

The Ideal Notebook

If I didn't have my monster of a Hackintosh already.

Presenting the Mac Pro to go, or the retina MacBook Pro. Comes with a built-in 30" screen!

Clearly the first thing I do is run the notebook at native resolution, an incredible 2880x1800. The menu bar nearly disappears, while the dock becomes reasonably-sized. For those incredulous readers, my 20/13 eyesight is sufficient for this resolution. :-)

An 1880px vertical is quite nice for web designing, albeit highly misleading for emulating typical usage.

Day-to-day use. I can fit a bunch of apps onto one virtual desktop, which is how I work on my 30" Dell. It's huge compared to my MacBook Air, which has a 1440x900 screen, and a lot less claustrophobic than my six-year-old MacBook Pro, which has a 1920x1200 screen.

30 July 2012

Safari 6 View Source

To my surprise (not a good one, either), Safari 6 has done away with View Source in its vanilla state. I was shocked and disappointed when I was trying to view the source of a test page:

On the bright side, it's buried in the Develop menu in the snazzy console:

But yay, syntax highlighting!

26 July 2012

Two small lemmas

Two friends kindly pointed out to me that I will have power issues next year at MIT. Since most dorm rooms have one circuit (good for about 2kW), I can at most run two out of the following three items simultaneously: {computer, refrigerator, air conditioning}.

A friend suggested that I schedule all rendering and compute jobs late at night since the power grid will not be as hosed and to automate the modulation of my fridge/AC usage during the day. I also won't be helping the situation with a near-imminent upgrade to dual Nvidia GTX 580s, either.

15 July 2012

SR-2 Adventures, Part III

I recently ordered a third power supply (don't worry, I'm not modding this one!) for my hackintosh. It's a server grade unit rated at 1200W made by PC Power & Cooling, which should be sufficient for further upgrades, such as dual Nvidia GTX 580s (for raytracing, of course). At first, 1200W seems gluttonous, but we note that overclocked processors can consume up to 200W, since power is approximately proportional to clock speed squared.

Now onto the fun part: overclocking! Recall that this system uses two Intel Xeon X5650-like [1] chips sourced from eBay. To get up to 4GHz, we use the following voltages:
  • Disable Vdroop
  • Set Vcore to 1.35
  • Set Vtt to 1.35
  • Set DIMM to 1.65
  • V_IOH to 1.40
Then in the signal tweaks menu:
  • Set QPI0 to -86
  • Set QPI1 to -16
Then jiggle the settings in the CPU menu:
  • Enable Speedstep
  • Enable Turbo
  • Disable C-state
Note that enabling Turbo will get you a 21x multiplier, or so people say. Finally set BCLK to 191 and voilà, a 4GHz 12-core monster! Sadly OS X does not notice the turbo multiplier at 21x, so it won't show 4GHz in System Profiler. In any case, here's a screenshot of the system at 191x21:


Mac App Store can't verify computer

This one is annoying. I haven't bothered to fix the issue for this hackintosh (I did it for my single processor computer), but the solution involves deleting the network interfaces file, rebooting, and readding the interfaces in System Preferences. I will update this section once I fix the issue.

Flaky PS2-USB adapter

For BCLKs @ 195 and 200 I noticed that my keyboard would work for about 10 seconds after being plugged in and then it would stop working. I check the Console, which says

IOUSBPipe:ClosePipe for address, ep 1 had a retain count > 1. Leaking a pipe
IOUSBPipe:ClosePipe for address, ep 2 had a retain count > 1. Leaking a pipe

I am convinced that this is due to the overclock being unstable. The problem goes away when I'm running at 190 or 191. I also noticed that USB mouse and ethernet adapter aren't flaky at all, but my USB headset does develop crackling noises after a short while (under 10 min).

It's heating up my room!

Yep, sadly this rig is overpowering the air conditioner in my residence. I can feel it spewing hot air out the back. :(

[1] Duck test, but for CPUs: If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck.

10 July 2012

A Very Tasty Salad

I've been going to this deli called Hale and Hearty and concocted quite possibly the most delicious salad. I get it every single time I go in an attempt to redeem a free 10th salad (you know this marketing technique). Here goes:

Serving size: 1 bowl
Prep time: 5 minutes

  • 6-8oz spinach
  • 2oz Mozzarella cheese
  • 1/4 large tomato
  • 1/2 Hass avocado
  • 1/4 red onion
  • ~30 Chickpeas
Mix together in a bowl, chop in the bowl, and voilà!

06 July 2012

RIP Dell Streak

It's too bad that the device couldn't survive a three foot drop. I feel conflicted at the moment: on one hand, I feel bad that I essentially wasted $500 (phone + docking kit), but on the other hand, I couldn't care less about this monster that I never loved since day one. Besides its pitiful build quality, it had its share of software problems too, such as clock randomly going 15 minutes ahead or sudden rebooting syndrome (StreakDroid Gingerbread).

04 July 2012

Independence Day

Greetings from the tristate area!

Happy Independence Day, everyone!


I used to think that a millionaire was a person who had a salary greater or equal to $1mm/year. Strange that I knew the other words (billionaire) meant people whose net worth was that amount.

29 June 2012


I'm back in the tri-state area for the summer. While it's unfortunate that none of my MIT buddies are remotely close to me, I figured these three months alone were sorely needed to get stuff done.

Or not.

It's too bad that I have more or less only two hours of down time at home every weeknight; transportation is significantly nontrivial compared to last year; I lived half a mile away from the Infinite Loop. Transportation is especially horrendous when the weather is ungodly humid or when the bus is late.

I also miss the shenanigans I'd partake with my MIT buddies. My internship friends are the kind who wouldn't want to be caught dead in a McDonald's, never mind play the Triangular Burger game, in which a group of people line up and, starting with ordering three cheeseburgers, order one more cheeseburger than the person in front. *cough* #richpeople. After two months without McDonald's, I got a little nostalgic for my favorite infant-hood food:

Tower of Hamburger!

For the record, the cheeseburgers from 56th and 8th in NY are considerably drier than the ones from Central Square in Cambridge. They're also 20% more expensive, to my dismay.

On the bright side, work has been pretty fun. My boss has a 5ft remote-controlled flying shark! After only a week I've learned how to drive it really well. I am really tempted to glue an Arduino onto it and make it do something silly, like 8-bit music.

And then of course there are the NYC zoos, which are quite picturesque. I've only been to the Bronx Zoo so far; I'm hoping to go to the other four and practice my photography.

I've also seen some exotics around the city, namely a Mercedes SLS AMG, a Rolls-Royce Phantom, and a Maybach 62S. There's also a ton of fullsize luxury sedans; Audi A8, Mercedes S-class, Lexus LS, and BMW 7 series. It's too bad that one cannot take advantage of the potential of these cars while crawling through streets cluttered by yellow cabs and people.

Now excuse me as I hide from the humidity.

28 June 2012

[NT] Learning and Life: a late mid, er, end-semester update

I haven't blogged about non-technical subjects in some time; in fact, readers have told me they couldn't understand what I was talking about in my previous few posts.

Classes have been going fine, well, not quite. I finally discovered my tolerance for code when I had four coding assignments (read: projects) due in a span of 27 hours. As much as I worked on them over spring break, I hit my breaking point come that period, so I ended up dropping a class. Luckily, it was only an elective.

6.005 Elements of Software Construction: On the surface, this is a relatively easy class for anyone with experience, except when you need to deal with the staff because a miscommunication resulted in automated testing disasters.

6.115 Microcomputer Laboratory (dropped): I walked in confident in my assembly skills, but as time went on, I got incredibly sick of writing assembly code. Who wouldn't? In addition, I found the labs to be incredibly contrived and boring. Luckily, I stayed in the class long enough to have learned a sufficient amount of EE approaches and skills for me to tackle decently nontrivial side projects.

6.815 Computational Photography: This class is incredible! You make sense of photography using mathematics and Fredo is an awesome professor :-) Sadly, my motivation for going to class is so that I can drool over his backpack of Canon L-lenses (read: expensive) since the assignments aren't too hard and lecture notes are posted. I really enjoyed the class because it isn't just pure coding; I had to work out the math of the algorithm to be implemented before I coded it up, which alleviates some of the pure-coding-related boredom.

18.06 Linear Algebra: This class solidified my fuzzy understanding of applied linear algebra. It was useful for understanding the algorithms in 6.815.

21W.789 Communicating with Mobile Technology: This HASS class is actually a programming class in disguise. Mobile apps aren't my forté, but it's still interesting to play with them, especially if you get credit for doing so :-) It's a three hour class that runs once a week in the evenings, but usually only runs for two hours.

The workload (erm, codeload?) about 600 lines of code a week (including 6.115; taking that out reduces it to approx 400), just for classes, sometimes more. Sometimes I feel that coding is dreadful.

At one point in the semester, I felt that I was losing focus -- especially in side projects, and thus getting extremely annoyed at myself. I think I had six or seven things I wanted to do, which is quite impossible given my time-constrained schedule. Thinking back to Steve Jobs' words:

Focus is about saying no.

I pared down that list to something more reasonable and stuck to it. I'm nearly done with the CAD of my scooter and the assembly of my scooter's hub motor. I am looking forward to finishing it before I leave campus. :-) Sadly, both NJ and NY outlaw electric vehicles (or registration of such vehicles is incredibly convoluted).

Another thing that's been really holding down my productivity was constantly worrying about my grades. Don't get me wrong; I realize grades are important, but recruiters only care so much, i.e. that you're not a miserable failure. In other words, think of it as a high-pass filter, with qualification on the y-axis and GPA on the x-axis. Once you hit a certain threshold, you're more or less fine in that respect.

After this term, I'll be halfway done with college. Incredible, isn't it? There's only two more years left! Goals (in roughly order of importance):
  1. Acquire diploma
  2. Finish my scooter
  3. Build KawaiiKart
  4. Attend motorsports driving school (sadly, this is starting to seem unlikely)
And then afterwards, I hope to obtain a Porsche 911 Porsche Boxter (and then maybe a 911), the dream car I've always wanted as a kid. (Speaking of which, I've driven a 997 GTS, albeit for half a mile). But first, I need to learn how to drive a stick in order to appreciate operate the Porsche.

To those who have not experienced driving: there's a magical feeling when you're behind the 911 (or any comparable sports car). You have an immense amount of tactile feedback from the road from the steering. It's weighted quite a bit more than your average car, so it's easier to select a turning angle without overshooting. Then there's the engine, which is tuned to make a sweet roar while accelerating without accompanying white noise, but nearly nothing while idle. Here's a more concrete example:

It's also a shame that I'll be leaving so quickly, as I don't plan on staying in the greater Boston area or the east coast. I never had a constant home, a constant set of friends, or similar. Prior to coming to MIT, I've lived in six places. When I graduate and begin anew, I'll have lived on average 3.14 years per place, whereas many of my friends have just grown up in one area. I've grown accustomed to ever-changing aspects, such as meeting new friends, exploring new areas, and going through hardware relatively frequently, for better or for worse.

However, the one constant has been the venerated Hamburger, who has been by my side for eleven trusty years. He's traveled over 50,000 miles (I kid you not -- China and even the west coast are far away!) in planes, boats, trains, and of course cars.

17 June 2012

[Partially Resolved] Vim Segfaulting

So it turns out that files in OS X Lion that have extended attributes will cause vim to segfault every now and then. To determine whether a file has extended attributes, do an ls -l and see whether an '@' is next to the permissions. Now to figure out how to remove these pesky attributes…

10 June 2012

PhotoNotes: Bronx Zoo

Today was the first time I've been to the zoo since when I was a kid, probably. (I may have gone to a petting zoo in the last seven years, but that's beside the point.) Besides reliving my childhood memories, going to the zoo was a serious test drive of some sweet gear in preparation for my journey to Alaska at the end of this summer.

Tax returns well spent.

  • A gripped DSLR around your neck with a (white) telephoto lens will get lots of looks and comments of awe.
  • At the risk of sounding like a jerk, having a telephoto is really convenient for crowd-pushing; you stick your lens between people's heads and they will move out of the way.
  • On the same note, sticking your lens at an open exhibit will cause birds to attempt to land on it, thinking it's a twig.
  • Walking around for 4+ hours with six pounds of camera around your neck is really tiring. My hands were aching at the end of the trip trying to hold onto the camera.
  • The 70-300L on a 1.3x body was superb for outdoors and bird exhibits. The 50L was a beast for low-light exhibits, such as the reptile house.

I nabbed this cute little dude with the 50L @ 2.0.

Less cute, but the V formed by the branches makes for an interesting shot.

Obligatory tiger shot.

Bird. The turquoise/teal palette came out quite nice. (cleaned up in postproduction)

Nonwatermarked originals at full resolution are available at request.