Windows to Mac Screen Sharing

My old black macbook has been collecting dust for no reason whatsoever, so I decided to use it as the dev machine for our HCI class (CS147) since none of my team members had their own mac machines. Surely setting up a windows-to-mac screen sharing session couldn’t be too hard!

Unfortunately Mac’s fantastic screen sharing implementation doesn’t play well with Windows. You can connect to it with a VNC client (I recommend TightVNC) but its incredibly slow.

An easy fix is to use the awesome Vine VNC Server for OS X on your mac, and connect to it with TightVNC.To get that  buttery smooth feel, use TightVNC’s CoRRE encoding as your compression medium. Boom! A usable remote desktop connection from a windows to a mac box.

Resizing your HFS+ partition? Oh boy, Adobe licenses suck!

After deleting a partition on my hackintosh, I’ve needed to resize my Mac partition to use the extra free space. Boy oh boy was I about to get acquainted with a monster. After lots of research online, I find that the only free way to increase the size of an existing HFS+ partition is to trick Bootcamp into creating a partition in whatever free space you have, then telling bootcamp to reclaim that partition into your mac partition. And for some reason my install didn’t have bootcamp on it, which you can’t download since bootcamp is not integrated into the OS.

So I came up with a smart alternative. And boy did that create probems… But I did get something running in the end!

Continue reading ‘Resizing your HFS+ partition? Oh boy, Adobe licenses suck!’ »

Arduino 16 SD and SPI interfacing

Just a quick note – the latest Arduino software does something terribly wrong in its interfacing with SD cards through the SPI interface (dunno if this affects all SPI connections or not, maybe!). I’ve struggled with this for days on end until I downgraded to 0014 and everything started working just fine!

Students arent made the way they used to be

A recent talk at Berkeley about the Engineering mentality, Freedom and Patents blew me out of the water. Here it is, transcribed. The author wished to remain anonymous.

Continue reading ‘Students arent made the way they used to be’ »

Intelligentsia, and what I hope to see in more cafe’s

The wonderful Gleb Denisov and Ashley Brown took me to the newly-opened Intellgentsia Coffee Bar in Venice Beach on my last visit to Los Angeles. As a fan of Blue Bottle and Ritual Coffee, both in San Francisco, my idea of a funky, fun, excellent coffee house involves highly-trained baristas serving me connoisseur-quality coffee-based drinks magically prepared along with a row of other drinks for those who are ordering with me. I will then take this little cup of heaven, find a place to sit or stand, and rave about the quality of the coffee and the hip-ness of the atmosphere. After finishing the delightful drink (possibly over some textbook or code), I leave with a happy caffeine high and none the wiser of where all this magic came from.

Intelligentsia does things a little different. As you walk into their glass enclosure of a shop, a barista offers to help you at their own espresso and coffee station, on one of the four corners of what looks like a big lunch cart that fills most of the store. As you follow him to his espresso machine, you pass by delicate pastries with shocking price tags (absolutely worth it, might I add) to the tune of, in my case, the great RJD2, one of my favorite electronic musicians. The decor and architecture makes you want to hang around this place, and the large assortment of coffee-related merchandise (from $1800 espresso machines to $10 milk frother jugs) pleases any coffee fanatic looking for that missing piece for their home setup.

But then comes the best part of Intelligentsia. Once you and the barista gets comfortable at his espresso machine, he makes you what you want, to order, right in front of you. You get to look at the whole process, and see how your cup is made. This is your espresso, made as you want it, while you’re chatting away with your obviously skilled and very down to earth barista. After sitting down with my espresso and finding an absurd amount of enjoyment from sipping the dark drink, I found myself more attached to this espresso than I usually am at coffee bars. In fact, it felt just a little bit like my own espresso’s I brew at home. Better in quality, yes, but also more personal. This is not your starbucks/peets/insert-other-coffeehouse experience of being handed a drink from behind some mysterious silver machine. No no, you were involved! By golly, you might not have turned any knobs or pushed any buttons, but you where there for every step of the way. And that makes a difference. Because if espresso is art, visiting Intelligentsia is like commissioning the artist. And I loved it.

Domain specific knowledge in Music. Mainstream hip-hop’s problem.

As a follow up to one of my previous opinions of the importance of domain specific knowledge to be productive, I happened across an interesting example worth sharing.

Domain specific knowledge not only helps with productivity, it also makes a big difference in accuracy. That’s where the example comes in.

I’m a big fan of Lupe Fiasco’s music, and his old mixtapes were some of the best works in hip hop since the early 90s. So I was listening to his “Happy Industries”, enjoying his brilliant lyrics and mash-up abilities. So I figured I should check out the full lyrics and post it on facebook. This is what I found on each of the top 5 google results for “Lupe Fiasco Happy Industries Lyrics”:

Once upon a time not long ago
An ID yeah that’s what I had
To take DNA
As a little pro two
With my MCing ways and make em mad
Just having fun not chasing cash
Apologise now for it make ya mad
Had to call g wall tell em warm up the mic
Put the pendant on the wall tell em make some maaagiicc
Shorty it’s nothing lavish
Matter of fact
It’s just an attic
Background noise from the family
Hearing the mic slaying in the outside traffic
Still turned out fantastic
Turn my vocals up just a tad bit
Fresh from the first and fifteen
Quarantine touching you super cool that asset

I’m sorry, but this is utter crap. Some fan with very little knowledge about the music industry must have transcribed this. It makes no sense whatsoever, and unfortunately the state of hip-hop is such that most people will accept that fact that it makes no sense. But Lupe tends to have great lyrics, so on listening to the song again, this is what he’s really saying:

Once upon a time not long ago
An idea yeah that’s what I had
To take demon days
And a little pro tools
With my MCing ways and make a mash.
Just having fun not chasing cash
Apologize now if I make ya mad
Had to call g wall tell em warm up the mic
Put the pendant on the wall tell em make some maaagiicc
Studio is nothing lavish
Matter of fact
It’s just an attic
Background noise from the fan
Hearing the mic slaying in the outside traffic
Still turned out fantastic
Turn my vocals up just a tad bit
Fresh from the first and fifteen
Quarantine touching you super cool thats just ah sick!

Notice what just happened. The lyrics went from some song filled with what we can only consider to be slang we don’t understand and randomly “slaying the mic” to a song about him making “sick” music using just his laptop and his little home studio in his attic, not here to make money but here for the magic. He talks about using Pro Tools, something that people with experience in the music industry knows about, and making mash-ups between tracks. Funny, because the song itself is exactly a mashup of Gorillas’ Demon Days album and his lyrics. It should be obvious that these are the correct lyrics.

If Hip-Hop is so infused with the ideas of making money that a song saying “its not about money” can so quickly become so convoluted… You be the judge.

BruteSoft comes out of stealth!

In between my studies and research (which is drawing to a close, by the way!) I’m also involved in BruteSoft, a startup pushing a dramatically different system for enterprise software distribution. We’ve been working hard at this over the last 6 months (although preliminary talks started almost 2 years ago), and we’re ready to come out and play!

To give you a snippet of the kind of things we do, I’ll pull out some highlights from the product page:

Today, BruteSoft provides enterprises with a radically new approach to managing their computers in an efficient and effective way, saving you money and reducing your carbon footprint.

BruteSoft innovates software solutions based on our patent-pending federated distribution technology (DBx). Our solutions are secure, exponentially scalable and self-healing, eliminating hardware layers and delivering unrivalled speeds in an energy efficient way. DBx decouples client demand from distribution servers, which enables software distribution to an unlimited number of clients without the need for additional infrastructure.

Our products have reached the pinnacle of software distribution efficiency. As a proof point, our products are capable of transferring the equivalent of a DVD of 5GB within 5 minutes to 10,000 desktops on a 1Gbit LAN/WAN.

Go check out the website, and if you’re managing a large amount of computers (or know people who do!) send them out way!

BruteSoft.com

Python is Wrong

I recently did about 3 days of solid hacking in Python, and discovered some limitations and some nice features of the language and its libraries in the process.
I can complain about how limited the lambda is compared to my experiences with Scheme, or how lacking its process management utilities are, but more importantly, there’s something fundamentally wrong with python.

You see, it has this neat easter egg. “import this” prints the following poem, see if you can state the gross error. To make it easier, I’m putting the gross error in BOLD.

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!

Oh come ON! Anyone who’s ever done numerical simulation or any kind of computational physics knows that Implicit has the same error as Explicit but is unconditionally stable!

Give me implicit euler integration or give me death.

The 10x programmer’s secret – Domain Specific Knowledge

There’s an interesting discussion going on on Hacker News, about “coding fast” and the mythical “10x programmer”. I know at times I’ve been that 10x coder, and at other times I was the 0.1x guy confused in the back, so I was curious to see what others were thinking.

The discussion centers around learning languages and becoming comfortable with the features, the APIs and your tools, but some comments focused on another area of programmer productivity that can be called “Knowing what to write”. Domain specific knowledge allows you to have huge boosts in productivity since you only code what is really necessary, and you don’t waste time coding peripheral features or get mired down in struggling with where to start and how to move forward.

The discussion is here: http://news.ycombinator.com/item?id=590460

So I have one suggestion for both building domain specific knowledge and avoiding the slump of getting stuck, or writing unnecessary code: Prototype and Iterate! It’s already a fairly well established idea in design and programmer circles, but the advantages of prototyping becomes even more clear if you consider it in the light of learning a domain.

That 10x programming speedup you’re looking for probably lies in coding simple systems, and building on top of them, rather than spending hours writing code that “will come in handy later” or attemping to complete some set of the code before moving on to the next.

My friend Marcello mentioned the amount of projects he’s started – much more than he’s ever finished. I think that this points to going through the process of learning a domain by building prototypes, throwing them away, and letting your ideas organically grow as you build things.

So let’s go be productive!

Repair: Rewiring your Sennheiser HD 280 Pro

2 years ago I, with much excitement, ordered a pair of Sennheiser HD 280 Pro’s. Both Gleb and Matt has a pair, and after listening to theirs… Apple’s little iPod buds just didn’t cut it anymore. I loved my pair so much that their connector ended up being severely bent when i squeezed past a, um, slightly oversized person sitting next to me in economy class on a flight back to South Africa. Anyways, the deed was done and the headphones became pretty much unusable, since only the one channel was getting through the bent pin!

I finally got around to rewiring them, which was more tricky than i expected! So here’s a post for others trying to do the same thing.

On stripping the connector, you discover 4 wires, rather than the expected 3:

First thing’s first, TIN THESE WIRES WITH SOME SOLDER! I had no idea that the copper strands themselves were covered by a thin film of resin, which needs to be burned off with some solder. If you try to connect an alligator clip straight to the bared wire, you get no connection, causing much confusion.

The 4 wire mystery was solved when I peeked into the left earphone. The two drivers are separately wired all the way to the connector. Two wires per channel = 4 wires. The mapping I discovered is as follows:

White – LEFT, GROUND
Black – LEFT, SIGNAL
Blue – RIGHT, GROUND
Red – RIGHT, SIGNAL

As follows:

If you’re interested, inside the left headphone there’s a little splitter board:

I bought a nice connector from Radioshack and wired this up. Be really careful when soldering the wires to the connector and don’t use too much heat! The shielding melts quickly and you don’t want your cable all melted together inside. I connected the two grounds from the two drivers together, which worked just fine.

After doing this, I was rewarded with a fantastic set of cans working again!

Real Time Raytracing Success!

Oh man oh man oh man, two bottles of 5 hour energy and a delicous mug of Peet’s Major Dickasons freshly roasted coffee later and I’m doing real time raytracing!

Its nothing super fancy, but as part of the assignments I’ve been working out for the graphics class I’m TAing (CS184 at UC Berkeley) I’ve been putting together a framework for the students to explore raytracing in. And while we’re at it, why not try to make it run in realtime. Turns out that cutting out disk access and loading everything up into RAM, using OpenGL as a final pixel buffer to display images, gives you gobs of performance for free. Now who would have thought that? ;)

So, I’ll clean this stuff up and post some demos. Phong shading has never looked so good as when you can swing the camera around objects!

Monitors monitors monitors! What’s with 16:9 and shiny plastic bevels?

After Microcenter rudely and unceremoniously canceled my in-store pickup order of the Samsung 2343BWX (errors in their inventory database…). Apparently this monitor is pretty hard to get – 23″ and 2048×1152 for $199 is such a sweet deal – that neither Fry’s, Central Computers or any of the online retailer could even get me this monitor (although there were some refurbished models around).

At this point I’m very happy with my dual 20″ Samsungs, both at 1680×1050, but I had some reason to add another two screens to my setup. The 16:10 aspect ratio of that resolution is really great for coding with side-by-side editor windows. They’re just not big enough to prevent me from constantly resizing windows. And whenever I work at home on my dad’s 1920×1200 screen, I have significantly less of these issues. My preferred coding setup is two sets of 80-characters-wide text screens with a project explorer and outline view flanking them. This just fits well with 1920 by 1200 pixels. Which is why I’m out shopping for a good pair.

Fry’s had one of the 2343BWX on the showroom floor so I had the opportunity to see it in bad light running at a shitty resolution. Hmm, the 16:9 did look a little less “coding-friendly” than what I currently had, and the incredibly shiny bevel looks plasticky next to the matte bevels found on monitors aimed at professionals. Since I didn’t want to order a monitor online and find that I didn’t prefer its features. So right now I’m looking at a comparable Samsung 2233 monitor ($199). Also shiny bevel, also 19:6 but a lower resolution of 1920×1080 (compared to 2048×1152) and I find that my worries were unfounded.

The shiny bevel, although nothing to be excited about, becomes unnoticeable against the very bright screens and impressive contrast of the latest Samsung releases. The 16:9 is great for movies, but since a 1080p monitor has less vertical than the 16:10 monitor of equivalent width. After messing with Eclipse on the 1920×1080 resolution, I came to the conclusion that upgrading would only be worth it if I gain a decent amount of pixels both vertically and horizontally. So I’m taking these back and waiting until the larger 23″ 2048×1152 monitors are back in stock.

Of course, the real answer comes in a much simpler package – 30″ of pure viewing bliss like the monitors in the Graphics lab!

Dawn on a Rainy Day – Hackathon 09

There’s something quite magical of watching dawn from your apartment, rain streaking the windows. And its an ideal time to reflect why you’re up at this hour, and what you’ve been doing over the last 48 hours.

In my case, I’ve been hacking at Prycr.com all through Friday and Saturday. The website is blank, since its not a web service (yet) and it was for Hackathon 09, so no time was wasted on nice frivolities like “websites” and “marketing”. All the focus was on our SMS application, that does price lookups for UPC codes texted to it.

The scenario is as follows: You’re standing in Fry’s, looking at some piece of tech gadgetry that you just have to have. But are you going to be angry that you bought it here if there’s a sweet deal online? Or even better, what if Best Buy across the street had it for 20% off and you didnt know? Send off a text message with the UPC product code to our service, and you’ll receive a reply looking something like this:

"WD 250gb My Passport Hard Drive. (4.5/5) $52 at CompUPlus.com, average price of $69. Locally at Best Buy for $75"

I built this with an impromptu team of three other Berkeley students – Timothy Liu, Dounan Shi and Irving Lin – and decided to do this text message based service similar to DialPrice.com (which, BTW, is also a very cool service, but I find that whenever I use it I’m extremely frustrated that I have to make a call and stand there, waiting for the voice prompts to read me info on my product.) It was a really fun experience, and although we didn’t win anything we’re planning to build this out into a serious web service that people can use.

For future hackers, if you’re doing a mobile app, have it ready to demo on the judges’ phones. Let them whip out their cell and use it. We didn’t do this and we realized after showing it to people later that day that the coolness factor is just about zero until someone can do it themselves. And good luck!

Another cool thing I saw at Hackathon was Mugasha.com – online electronic music sets from premier DJs. I’m jamming out to it right now! They release DJ sets (those hour-long musical journeys that DJs create by mixing many different tracks) in a track-by-track form in their music player. Finally, you can get both the awesomeness of these DJ sets and the convenience of knowing which song it being played, and jump to the songs you particularly like.

Finally, it was interesting to see a different interpretation of the “Hack day” concept from the Yahoo hack days I’ve been involved in. Yahoo hack days are known for their 90 seconds presentation, and I wish they did that as well. We had 4 minute presentations, and it was a lot harder to follow the main points of people! 90 seconds is an excellent time limit to explain hacks done in 24 hours. Schwag, Pizza and Beer was also notoriously missing… is the recession taking its toll? Hmm, no, because they had Sushi (which disappeared in a matter of minutes) and burritos in the afternoon. Possibly the lack of alcohol explains the productivity! The turnout was amazing – 25 teams in total! – which they managed to do by offering $200 to the student group that turns out the most entries. So they had CSUA, IEEE and UPE all working for them, which was utter genius.

Anyway, the sun is rising and I’m off to go pick up my new Samsung 23″ HD monitor. My aim for desk domination through sheer pixelcount is nearing completion since I’m about to put down the third monitor on my desk. Once I upgrade to 4 by duplicating the current purchase (yea, im waiting for the end-of-the-month paycheck) I’ll finally have that 3840 by 2300 pixels of screen space on my desktop. 30″ monitors be damned!

I got into Stanford, now what?

As the good news keep rolling in, with PhD acceptances suddenly going from scarce to abundant, I’m being slapped in the face by the question I should have been asking while applying – WHICH ONE?!!!?!

Undergrad was a fairly easy decision. Go to the best school you get into. Grad school… A little more complicated. The questions range from “Can I afford the area?” (easy, fellowships!) to “Will I want to marry someone from here?” (interesting… but not very informative still) to “Are there people I want to work with?” (crucial… but true for too many!) to “Do I want to live here?” (which just makes it harder).

I’ve had a fantastic run at Berkeley, and although there’s plenty I don’t agree with and plenty I’ve loved, I came out on top overall. But now that I need to again ask the question of where to go, life gets a lot more complicated really quickly!

On the plus side, it is President’s day, so maybe I’ll spend some money on two new monitors to complete my 4-screen desktop setup. Hmmmmmmmmm how does 3800 by 2400 pixels on your desk sound?

Valve Complete Pack

I made the plunge and shelled out $99.99 for the Complete Valve Pack, which includes a list of games to keep anyone busy for many hours. Too many of my roommates are playing Left 4 Dead, and if you’re going to spend money, this is a sweet deal to get everything! Counter strike, the Half-Life series, and of course Portal are such fun and innovative games (if not quite revolutionary) that this collection gives it all.

Sweet!

Hackintosh: Installing OS X on my PC – Triple boot osx, ubuntu and windows xp

My macbook laptop was recently destroyed in a car accident, and since I now had a lack of os x and a unused leopard license to my disposal, I decided to become a member of the OSX86 group and install OS X on my PC.

The way to go about installing OSX on your PC these days are fairly simple. You figure out what instruction set your PC supports – is it AMD or Intel, and does it have SSE2, SSE3? Then you download a prepatched distribution for your particular system, install a vanilla attempt, and start tweaking drivers to get your system working.

Here’s the specs of my system:

Asus P5K-E WIFI motherboard with intel P35 chipset, 1333mhz FSB
Intel Core 2 Due E6550 2.33 Ghz dual core processor
8gb Patriot Viper DDr2 memory @ 800mhz
NVidia GeForce 8600GT 256mb video card
1x WD Raptor 150GB 10k sata hdd, three partitions (liux ext3, windows ntfs, osx hfs+)
2x Seagate 750gb baraccuda storage drives, one NTFS, one FAT32

When I started this process I already had linux and windows running, which I wanted to keep. I tried both the iDeneb and Kalyway distribution and found iDeneb to work the easiest.

I used Ubuntu to create a partition for this install, and left it unformatted as a primary partition on my main hard drive. I popped in the iDeneb 10.5.5 dvd, used the Disk Utility to format this partition as a mac extended (journaled) partition, and customized my installation as follows:

- Kernel: Sleep
- Chipset: ICH*
- Video: NVinject256
- all the available applications (specifically we want osx86 tools)

Everything else you can install later.

Once the install was done it booted into osx (with the cd still in the drive).
From the “applications->iDeneb App->osx86tools” folder in finder I launched osx86 tools, and clicked “Download and Install Hardware Drivers”. This is basically pure awesomeness. It will prompt you to install probe utilities – do so, and then restart the computer. Once you’re back in osx, launch osx86 tools again, open the same Download and Install Hardware Drivers box, and it will start probing for hardware.

I selected “AD1988b” for my audio driver – experiment to see what works! Everything else was listed. IMPORTANT: Before installing, I REMOVED the listed Graphics controller by selecting it and clicking “remove item”, since I found that this driver conflicts with the already-installed driver I selected during setup.

Click “Download and Install”, and after a couple of dialogs your install would be complete. Reboot your computer (keep that disc in the drive) and you should have an awesome setup ready to go now.

Setting up multiboot

I was getting annoyed at having the dvd in the drive to boot osx and I wanted access to the other OS’s on the system. To enable this I wanted to reinstall GRUB on my MBR, which I did by using an Ubuntu live cd, and the help of Restoring GRUB and OSx86 installation guides. Restore GRUB to the main harddrive, then add osx to your grub list.

You should be all set now! Go on and install Quicksilver and enjoy OSx!

PS: Using Parallels desktop, you can turn your windows partition into a virtual machine inside OSx so that you can run all those expensive apps you bought for windows inside osx. its awesome!

The Ending of an Era.

With graduate applications sent out and another semester coming to an end, I can’t help but look back at where I came from. If I have to choose one expression that really influences and reflects on life, something that touched me, that changed my outlook on life and that reinforced my awe and wonder at our magnificent world, it would have to be the words of Albert Knag in Jostein Gaarder’s novel “Sophie’s World”:

“Life is both sad and solemn. We are let into a wonderful world, we meet one another here, greet each other and wander together for a brief time. Then we lose each other and disappear as suddenly and unreasonably as we arrived.”

My response to this was (and still is) a humble “Wow”. Gaarder expresses both the majestical highs of exuberance and the unthinkable but ultimately true end of life without judging or diminishing both. And is that not how life truly is? Although this quote deals on a first level with life as a whole, it is just as true for our daily lives. It amazes me to experience the daily comings and goings of people, the connections we make with humans that we meet one evening and afterwards, as we walk away, not realize that we will never see them again. The profound sorrow that is a part of all existence, but also the profound joy of every moment that we share amongst those we connect with. I sometimes wish that we can hold on to the beautiful moments, the great achievements and the times of joy and happiness, that we can freeze time, that we can relive our profound moments in more than just memory. But as this quote so aptly conveys, this is not the way of the world. But that is not a reason for despair or sorrow. No, it is just a motivation to cherish every moment for all that it encompasses. If we could relive times at our slightest whims, if we could get a second chance at life, maybe we would find that, instead of finding recaptured glory and awe, we are only diminishing the worth of the moment. Maybe the biggest factor in creating the exuberance and awe that we experience is the fact that we can’t relive it. Why would we walk the extra mile now if we can do it tomorrow? But still, our heart yearns for the chance to recapture and relive. And not in vain, for by doing so, I believe we keep the memories unstained and unspoilt, the memories of our “brief time” in this wonderful world. Although we all spend only a limited time here, this world in filled with so much emotion, so much strength and weakness, so much love and hate, so much exaltation and so much sorrow, that “wonderful” fails to describe the awe, humility, joy and love that we find here on earth. I would not exchange my memories for any riches or glory.

Skydiving

“If you’re down, I’m down” – Jeremy Estrada’s reply to my suggestion of going Skydiving. We were somewhere in the Sierra Nevadas, standing above a waterfall, discussing Basejumping – the illegal and dangerous sport of throwing yourself off a cliff with a parachute strapped your back. Since we didn’t have the parachute or a big enough adrenaline addiction to jump off a cliff there and then, we figured we should go jump out of an airplane thirteen thousand feet up. Go figure.

I finished my internship at Pixar Animation Studios, where both Jeremy and I worked over the summer. Bay Area Skydiving was recommended to us by Jeff Jensen, and we were accompanied by coworkers and one of my roommates. We all had our reasons for going – the thrill-seekers, adrenaline-junkies, fear-facers and freedom-chasers were all represented in the car ride over to Byron. The skydiving organization calls an aircraft hanger their home, and it’s full of activity as skydivers move in and out and parachutes are packed for the jump. I called ahead and made a reservation, but that seemed to be unnecessary – they have enough instructors and flights that, upon arrival, you easily become part of the list of waiting jumpers. They provide some comfortable couches and a big television, screening videos and pictures of the previous jumps of the day to keep you occupied while you wait. We waited for about an hour – which was just enough to let the nerves settle and allow you to focus on what you’re about to do.

I was paired up with a friendly and professional instructor called Victor. I was handed a very attractive purple jumpsuit, and although I enviously watched my friend step into his dark green suit, at this point I bet any color would be attractive, as long as you get to step into that superman suit you’ll be wearing on the way down! I went through a simple lesson in the arch you need to form with your body while falling, and received instructions on the procedure for exiting the aircraft. Victor was extremely professional, and he was describing the actions you go through without deliberating on possible emotions or sensations you might encounter during the experience. I, for one, didn’t want a spoiler! Everyone gathered around, and the call came over the intercom – “Load 12, load 12, 5 minute call!”.

Right about now your whole chest feels like it’s being filled with rushing warm blood as your mind starts informing your subconscious that you will be boarding that plane to throw yourself out of it. The reply, in the form of sensations throughout your chest and abdomen, might be likened to butterflies before a big rollercoaster or when receiving an award for your achievements, but there’s a whole different edge to it. It’s a very pure and clean feeling of anticipation. You have to remind yourself that breathing is a necessary facet of life, and good thing to keep on doing despite the anticipation in your chest!

Victor stepped into the plane just ahead of me, and we nudged up against each other on the little benches, facing the rear of the plane. We were flying up in a PAC 750XL, with 14 skydivers and a pilot. Around 4000 feet they opened the door to let two jumpers out. These two were working on their canopy techniques – canopy being the time during which you have your parachute open – and subsequently did not go up far enough for a significant freedall. I don’t think I was quite ready to see what it looks like when someone jumps out of an airplane. The one moment the two folks were standing there looking down, the next moment a strange sucking-like sound was followed by their disappearance from the plane. You’re moving so fast, and you fall so quickly, that a skydiver literally disappears as he jumps out. Seeing this fueled the anticipation of my own jump, another nine thousand vertical feet ahead.

I was second to last in the airplane, and my instructor walked us forward to the edge of the door. Looking down is a completely unrealistic experience. Nothing in your conscious or subconscious understand what is going on. I experienced a certain amount of disbelief that this is actually happening. My body was simply following the instructions of my jumpmaster behind me. He scooted up to the door, and I grabbed my harness and curled my feet around the bottom of the fuselage. Hanging in the slipstream, with the wind gusting into my face and absolutely nothing below me except two and a half miles of air, I came the closest to what I believe to be the Buddhist idea of “living in the now”. At this point, seconds before a jump, your body suspended from your jumpmaster, you experience an absolute clarity, a lack of thought so profound and beautiful that you can very easily be completely lost in that moment. I don’t remember feeling particularly excited or scared. Even the anticipation of the moment was left behind by now, cast aside somewhere on the floor of the airplane in the crouched walk to the open door.

The jumpmaster leaned my neck back into the arch position, ready for the jump, and my body felt as if my heart was racing with pure adrenaline. His last words to me, shouted against the rush of air past the wings, penetrated my mind – “If it’s all black as you fall, it’s probably because your eyes are closed!”. In retrospect, these words are hilarious, but at that moment it was the perfectly calm, obvious, professional comment to purge the last fears and doubts from you. The strange battle between absolute excitement and pure calm reached it’s climax as he rocked off the jump.

“Ready, Set, GO!”

*blank*

I was brutally ripped from my reverie on the similarities of Skydiving and Oriental philosophy. There is nothing, absolutely *nothing*, that can come *close* to the feeling of that moment. My stomach went straight up to somewhere right below my eyes, and I was gripping onto my harness with all my senses screaming at me. For a moment I felt real fear as I accelerated to one hundred and seventy six feet per second over the course of an infinitely long three seconds. The only action I could force my reeling body to take was to keep my eyes wide open as the earth tumbled below me.

As quickly as the jump started, it evened out, and as we reached terminal velocity my senses dropped their assault on my conscious, and I was immersed in an experience unlike anything I have come across in life. A feeling of immense peace, an absolute clarity and presence came to me as I was streaking to the ground at one hundred and twenty miles an hour. I looked up and saw Mount Diablo and the Bay Area in the distance, and became aware of the air rushing past my ears, and for a moment that deeply-ingrained rational mind of bullshit and idiocy attempted to intrude on the experience, reminding me that, rationally speaking, I should be scared witless at this point. I looked back down at the ground, almost in a challenge to these thoughts, and brushed aside all fear, purging my Self from all doubt and disbelief, and in a moment of intense passion, opened my mouth and yelled in awe and wonder at the beauty of the moment.

They say that the adrenaline of the first jump stays with you for weeks. What they mean when they say “adrenaline” is not the wide-eyed, heart-pumping image that it conjures up. It’s the clarity and peace of the experience that stays with you. The words I put down here pale in comparison with the actual experience, but in a frail attempt to convey what it felt like, I will describe it as “Beautiful”. It is, most definitely, a beautiful experience. The freedom of free fall cannot be compared to anything else. Jeremy and I discussed these sensations afterward, and he aptly summarized it by pointing out how skydiving allows you to experience, very directly, the peace and immediacy you can achieve by living without any fear.

As the parachute opened, nine thousand vertical feet of air later, the third part of the experience started. I had some discomfort from the harness as I hung off my instructor, but the quiet and floating sensation was pure bliss. I was laughing, telling my jumpmaster that that was the greatest experience of my life. There’s a certain tone in your voice that is only there when you’re truly passionate about something, and I heard my voice drowned in it. You might expect it to be a frightening experience to be hanging off a parachute, nothing below your feet and a lot of time to think about it, but it’s a very pleasant experience. There’s no concept of that “standing on a ledge” feeling. It must be some ancient feeling, some primordial immediacy, that you experience in these moments of flight. My jumpmaster handed me the parachute controls, and I steered us around the sky. My days of powerkiting made this very enjoyable, since a parachute and a foil kite steers exactly the same way. Swooping across the sky, turning tight circles downwards, I became aware of my body again, settling back into a now much more comfortable skin.

We had a very smooth landing, giving a couple of quick steps to come to a standstill as the parachute slowly collapsed to the ground. My jumpmaster deftly unhooked my harness, and a strange unfamiliarity with the ground greeted me. There’s a certain amount of disbelief that you’ve been living your whole life with your feet planted on the ground, now staring up at you from right below your feet.

The rest of the day we all had sensations of calm and beauty, and we spoke of it endlessly until, blissfully carefree, I fell into my bed, dead tired and ready to do it again next weekend.

Next time, be there with me.

Being the Boss – an incomplete opinion on managing teams from the intern in the group.

This is a post about management. It is a post about my observations of being a member of software engineering teams over the last two years. I’m compelled to comment on managing teams, not because I’ve been in that position, and I don’t presume to tell my superiors how to do it “right”, but it has been an educational process to be part of teams as an intern.

A Project for an Intern

For my sophomore year I worked for the research lab of a big internet company. We were a team of about 6 people, with 3 other teams reporting to the same director of the lab. My team lead was responsible for assigning projects to us. After the initial stage of getting accompanied with the different moving parts the team was using and doing some bugfixes on the codebase for about 2 weeks, my lead met with me to get me started on a project. He had 3 different projects that he offered me, talked me through each, and left me to pick one. The next day I chose my project, pitched my approach to it, and started work on my own project with more than enough excitement to get me started. When I interviewed, they gave me a fairly open-ended idea of the work I can do with them, and although these projects were more specific, the range the 3 projects covered reflected the original interview.

Keeping Track of the Intern

Since I chose the project, my interest and curiosity was my main motivating factor to work on the project. My team lead would check in on my anywhere between daily to twice weekly. This would normally start with him asking me whether I was getting stuck anywhere or whether I was making good progress. This opened the floor for asking questions and discussing blocks rather than me giving him a purely “status report” reply. He would pick a time when he could sit down and work through issues with me if I had any. These check-ins took on three different types. Sometimes it would be a quick “nothing to report” hello. Sometimes I would have an almost-complete feature or a major bugfix to show. Often I’d have a question. These meetings were especially good to get rid of those minor questions that’s not really worth asking someone only that one question, but that’s still handy to get answered.

Making The Intern part of the Team

The lab was applying the SCRUM concepts to manage the group. The biggest effect this had on me as an intern was the weekly “stand-ups” we did as a group. Every Friday, we had a team lunch with everyone present. We would then stand in a circle, giving each person the opportunity to say what they did during the week, what they hope to do next week, and what things were blocking them. This did fulfill all the ideas that SCRUM wanted it to do – create conversation, let the team know what each member is doing, help to get rid of blocks, etc. etc. Something far more important was happening here though – we were all standing on the same level, with everyone from the director to the interns talking about their challenges and successes. This integrated me into the team and made for several interesting conversations after hearing of something cool a person is working on.

Talking to your manager

It was almost ridiculously easy to go up to my team lead and ask questions, make suggestions, or even (on the off chance) complain about something. We were interacting on a level of two engineers working on a common problem, with me respecting his skills and experience and he acknowledging my passion and accomplishments. This managed to make troubles easy to address, since I had no qualms about asking for help when I came upon stumbling blocks.

This is a hard lesson to learn at my current internship, where the above three points are not as emphasized – having my own project, frequent check-ings on a problem solving level, and being on an equal footing with the team. An internship of bugfixing is mentally hard and forces you to jump all over the codebase. You learn a lot, but you never get to “own” some of the code. Now, there’s lots to be said about how good or bad the idea of code ownership is (I’ll leave it to Paul Graham, Guy Kawasaki and the rest of the smart folks in the blogosphere to talk about that, their opinion us much better developed than mine on this subject). I believe it’s good to have a specific project, whether you’re the sole owner of that piece of code or not. Its definitely much most satisfying than semi-random bugfixes.

Thus my observations on managing teams are as follows:
- Give team members specific projects, and let them choose it.
- Check in with members, and do it in a “Can I help you with anything?” manner
- Bring everyone together and make the doings of the team transparent

and to team members
- Interact, interact, interact!
- Let the people above you know about your experience

I hope this helps in the future!

Installing Eclipse on Fedora Core 5 (with its own Java JRE)

I’ve been dying to try out the new Eclipse Ganymede, especially throwing the multi-million-line codebase i’m working on at Pixar into the new CDT version to see what will happen. Until now I haven’t been able to get eclipse working on Fedora Core 5 – the machine i’m using at work.

The main difficulty is to get Fedora 5 to use the latest JVM from Sun rather than the default GNU 1.4.2 compiler. There are several resources on how to make the global switch (this being the most complete I’ve found) but for some reason Eclipse was still not using it. So here’s how I managed to do it:

* Download and extract Eclipse to a local directory
* Download the self-extracting Java version
* Run the Java .bin file and extract its contents.
* Copy the directory extracted from the .bin file (“jdk1.6.0_06″ in my case) into the eclipse directory
* Create a symbolic link called “jre” in the eclipse directory to the jdkx.x.x/jre directory

voila!