Showing posts with label life lessons. Show all posts
Showing posts with label life lessons. Show all posts

2009-08-17

Firsts

It has been a year! Here are some of the things I've done in the past year:

1) Forgot / lost passport, had to travel 3 hours to get it back
2) Setup an experiment using somewhat dangerous radiation while I was suffering a headache from lack of sleep
3) Was the last person on a plane, having nearly missed it (this experience is over-rated)
4) Laid out a portion of an integrated ciricuit that (if it works, crosses fingers!) will have 5.12 GBps going through it
5) Lost PhD topic
5.5) Lost PhD topic
6) Found PhD topic (errrr.....I think?)
7) Went all-in and won a poker pot, went all-in and lost a poker pot, successfully spotted a bluff at a poker table, successfully set a trap at a poker table
8) Gone to one of those fancy European clubs in Paris (it was worse than I thought and I will not be returning)
9) Bought plane tickets, booked a hotel, flew on plane and checked into hotel within 5 hours of one another
10) Successfully found apartment in a foreign country and moved into it from another apartment
11) Gotten a first-hand view of how difficult it is to be an immigrant
12) Earned the title Expatriate

Things I haven't done:

1) Successfully had a conversation in Dutch (I haven't had many successful ones in English over here, either)
2) Joined a choir
3) Written a paper (I'm working on one right now, and I have two in various stages of the paper pipeline)
4) Used tools to go from VHDL to ASIC

By the numbers:

Guitars purchased - 1
Bicycles purchased - 1
Haircuts - 2
"Original" research ideas that someone else had actually tried but adviser didn't know about - 3
Canned hot dogs consumed - 4
Moose seen - 4 (two real, two mascots)
Shoes purchased - 6
Countries book was purchased in - 5 (6 if you separate England and Scotland, 7 if you include online purchases)
Countries "visited" - 7 (Scotland, US, Canada, Switzerland, Ghana, France, Belgium)
Passport resources used - 27 boxes from stamps, 2 pages from visas
Train tickets purchased - ~100 (I go through about 8 a month)
PB&J Sandwichs consumed - ~150 (they have this awesome sour cherry jam over here)
Emails sent - 2,088 (more than I thought, 25 were to myself)
Emails received - 2,698 (fewer than I thought)
Most lines of code written in a single day - ~3,200 (most of it was test code...firmware test code can be pretty massive to go through the appropriate states)
Lines of code written overall - ~16,000 (again, around 14,000 lines are test code)
Heartbeats - ~37,000,000 (the heart is a work of art)

And finally:

Dutch postcards sent - 0 (yeeeeeeeah...I still owe a lot of people postcards.....)

2009-06-08

Most Useful Undergraduate Classes

Today I was thinking about how small the knowledge intersection has been between my undergraduate courses and my jobs. I made a list of all the classes I found directly useful at either of my two jobs, and it was shockingly small.

Classes I found useful at my previous, finance job (in order of usefulness):

1.  6.111 - Digital Design Lab / FPGA-based design lab
2. 6.001 - Intro to ComSci with LISP


Classes I've found useful at my current, graduate school job (in order of usefulness):

1.  6.111 - Digital Design Lab, or FPGA-based design lab
2. 6.004 - Computation Structures, or Build a CPU
3. 6.002 - Intro to Circuit Design
4. 17.477 - Technology and Policy of Weapons Systems
5. 6.001 - Intro to ComSci with LISP
6. 6.041 - Intro Probability


I think a lot of the other classes I took, such as the math classes and signal processing courses, have had a large impact on how I think and approach problems, but I haven't used this knowledge directly in my day to day life. I was shocked that 6.046, my algorithms course, isn't on the list. I haven't used any of the important concepts from 6.046 in either of my jobs. Just the other day I wrote a one-liner for bubble sort when I needed to sort data.

I'm not sure why there are so few classes on the lists, but I was thinking yesterday about why my design class, 6.111, was so high on both lists. I think it has to do with the design project, which was the first "real" design project I ever had. In 6.001, the programming introduction course, there was also a design project, but 6.001 worked on the principle of building up proven components. You wrote something and checked that it worked. Building bigger things meant building up the system one proven component at a time. When you were handed code, you read through and tested the code to check that it worked.

Unfortunately real life is more messy than this. Components are usually too complex to verify for yourself, and sometimes you have to work around interfaces that were designed for another task. My 6.111 project had to deal with these issues, along with the issues found in building up a proven and known system. My team created an electronic version of Labyrinth, the old tilting maze game wherein one tilts a board to guide a ball through a maze to a goal, avoiding hole traps along the way. Not only did we create a pretty big custom system, we also had to interface our system with a lot of 3rd party components, including tilt sensors, circuits that converted the tilt sensors into something understandable, a VGA controller and an LCD.

This was the first time that something I created had to work with sloppy, complex components. The components we interfaced with included complex but standard interfaces, like the LCD, and sloppy and non-standard ones, like the components written by the teaching assistants for the course. I still remember, four years on, that the tilt sensors could enter an error state during the read-out. This error state required a lot of hand-holding to work correctly. I also remember fighting for a week with the start-up sequence because of nuances with the timing.

It makes me sad that none of the theory courses I took actually have anything to do with my job, but the theory courses that I took don't really have much to do with anything. I indirectly use this theoretical knowledge every know and then, but rarely directly. Whenever I do digital circuit design, for example, my tools use the graph algorithms that I learned in 6.046, but this is abstracted away from me. I don't think I've used a single academic thing I learned in my senior year. What a waste of money. Sigh.