Like the post title says, this is my last day here at Bell Labs. Ron Minnich suggested that I stay out a day or two past the conference and see what they're working on up at the lab. I've spent the whole day here in the Unix Room with Ron, Eric V. H., Sape M., Jim McK., Geoff C., Charles F., Aki, and a few other people I don't know... Dennis Ritchie just came in, washed his hands in the coffee room, and left again. The Unix Room is actually more like 5 rooms. The primary room, which has the door to the hallway, is large and has desks around the walls; almost all the computers in here are running Plan 9 and that is what everyone is using to do their work. I saw some old pictures of the Plan 9 crew working in here on the old Blit and Gnot terminals--cool bits of technology, and a real sense of continuity in this place. The coffee room, with the very popular coffee grinders and espresso machine, is just off the main room, as are another two rooms with lots of space and computers but nobody working in them. The server room is through another door, and it's *very* impressive. Lots of machines of various types, including one or two of the old big SGI machines and the now well-known (to Plan 9 users) archival jukeboxes.
My flight out is tomorrow at 07:40, so I need to either find someone to give me a ride or figure out a cab company to call. Hope the weather lets me get out of here!
Another fun day (see my previous post) at Bell Labs; plenty of interesting talks and an enlightening tutorial on the Plan 9 debugger, Acid. Plan 9 users, the ones that showed up here anyway, are a very friendly group, even though things may come across as a bit strained on the mailing list. Like last night, we all went out for dinner afterwards and spent a couple hours there... the restaurant brought out just one bill for all of us, so it totalled up to something like $650!
Since the conference is only two days long, most people are leaving tonight. I'll be staying one more day
It's been a couple months since the last post, so some explaination is in order. I have found a job with Sandia National Laboratories, starting December 10 and lasting 6 months. I'll be working with Ron Minnich on the BlueGene/L supercomputer and a new Cray XT4 system arriving the same time as me. Our task will be to port Plan 9 to the Cray and rework some of the code on BG/L's Plan 9 port.
Anyway, with that background given, let's turn to my current situation. At the last minute, Sandia gave the go-ahead for me to attend the second Internation Workshop on Plan 9 (IWP9) in Murray Hill, New Jersey. Despite a cancelled flight, I did manage to reach Jersey late Sunday night. Today, Monday, was the first day of the conference. Several of us met down in the lobby of the Best Western Murray Hill Inn and rode in to the conference site, the one-time Bell Laboratories site, now Alcatel-Lucent. It's a very impressive brick building with a huge copper roof the color of the Statue of Liberty. The day's presentations went quite well; the full schedule is on this pdf. The best part was meeting all the people; it was basically a meeting of the entire active 9fans mailing list, so I recognized practically everyone by name. It was great to finally talk in person to such folks as Ron Minnich, Sape Mullender, Eric van Hensbergen, Russ Cox, Francisco Ballesteros, Uriel, and others with whom I have often exchanged emails but never conversed in person. Dennis Ritchie even showed up to give the keynote; I got him to sign my conference schedule. After the talks, we all got to go up and visit the Unix Room on the fifth floor--pretty impressive.
Ah, the hunt, the thrill of the chase! It's time to look for a winter co-op, so I'm spreading my resumes far and wide in hopes of getting a good job. I haven't heard back from Google, but I interviewed with both IBM and Boeing at the career fair, and now a manager at IBM has contacted me to see if I'm interested in working with his group this spring. Not sure if I want to do that, since they're apparently doing most of their stuff with Java, XML, and web apps--and because I'd like to co-op in the winter.
I'd like to try getting a job working on or with Plan 9, so I contacted Eric Van Hensbergen to see if there were any co-ops down in his section of IBM. He said there might be some for the spring and summer, but that I should contact Ron Minnich at Sandia Natl. Laboratories and Sape Mullender at Bell Labs for a winter co-op. I emailed both of them, they seemed interested, so I sent in my resumes to all three people. Now I wait.
Okay, Applied Programming time, packin' it up here, boss. (Yeah, pack it up)
It's been a long time since I've updated. In the meantime, I've finished my co-op and returned to RIT for my third year. I'm living in a Bennington Hills apartment now with Mike Neurohr and Adam Richlin. Between Applied Programming, Operating Systems, Circuits 2, and Electronics for CE, school is keeping me pretty busy. In fact, I should be writing an Electronics lab report at this very moment instead of doing this.
Anyway, I've got a job as a grader for Prof. Carl Reynolds' CS1 section. Those kids... have some problems. Stump said I'd want to kill myself after seeing some of their stuff, and I'm already seeing what he means. When a whole bunch of students turn in *exactly* the same wrong answers to a simple UNIX knowledge survey (they had a bunch of references to use, too), it's a bit depressing. Here's a jem I saw a few times--the question asked for the command to get a long (detailed) listing of the current directory, and a good number answered "ls -1". That's ls with the number one as an option. Admittedly, it produces a "long" listing, but only because that "ls -1" means list the current directory with one file/dir per line. That's not too bad, even--at least they ran it and copied in the real output. What was worse was when they were asked to give a command to list all files ending in "java". I saw plenty of "ls *.java" and quite a few correct answers, but I was surprised by the number of people who just answered "*java". They obviously didn't test it, or they would have seen that it was wrong. I expect that one person wrote it down and half a dozen other people copied that.
To any students from that class who happen to read this... do your own work. Everyone in the class should be able to handle CS 1 without any trouble.
Now, to write a lab report!
Well, against all expectations I actually won an ebay auction for an HP-48S calculator; came out to $50 including shipping. Now that it's here, I'm finding that this is really a great little bit of equipment. First off, its construction is sturdy and attractively plain--standard HP calculator brown with white, orangish-brown, and blue text. The keys have a satisfying feel to them. In look and feel alone, the HP-48 sends my TI-86 home with its tail between its algebraic-entry legs. There's another thing; when you turn on the HP, you're using RPN, which some people never seem to "get", but I find it delightful. Programming, the very little I've done so far, outstrips TI-BASIC by a mile. The HP uses Reverse Polish Lisp (RPL), and I'm already enjoying it. Here's the coin flipping program I wrote a few minutes ago (uglified because it's hard to make HTML display what's on my HP screen):
<< RAND -> Y << IF 'Y > .5' THEN "HEADS" ELSE "TAILS" END >> > >The calculator actually displays that quite nicely, and it doesn't really use <<>> it actually uses some funky little marks that look like that and don't seem to display well on some browsers. I'm learning more about using the calculator when I have spare moments, and it looks like there's quite a lot more cool features. I guess I can burn some time one the flight back home trying to re-create some of my more useful TI-86 programs in RPL.
Also, Belkin keyboards apparently suck. Sure, I've got the cheapest one they make, but I don't expect the left Shift key to pop off after only two months of use. I can put it back on, but it's only a matter of time before it comes off again; I have to fix the thing several times a day. Oh well, tomorrow is my second to last day here, so I can deal with a broken keyboard that long. Soon, I'll be back with my Model M!
Got an email from Alice Cheung at Google's Engineering Staffing Team yesterday. Apparently she came across some of my postings on the Plan 9 mailing list, made the connection to Rob Pike (he was a major Plan 9 architect and now works at Google), and decided to send me an email asking if I was interested in working for Google. This is, of course, pretty exciting; I sent back a reply saying that I'd love to look into what they have available. My next email will include my resume, and I'll try to set up a time for a phone call. With luck, this could be my winter co-op! And they said Plan 9 would never do anything useful for me...
I spent last weekend over on Oahu. Quite a pleasant place. I stayed in Waikiki in a pretty cheap hotel, saw some sights, ate some good food, but the most excellent part of the trip was visiting Pearl Harbor (oh god, I started typing Perl Harbor there...). I'm a bit of a history nerd, and World War 2 has always been interesting to me. Thus, visiting the site where our involvement in the Pacific Theater began is a big thing. Pulling up to the harbor, you can see several ships, most prominently the huge USS Missouri on the far shore. A couple hundred yards in front of the Missouri's bow is the Arizona memorial. Although it's not immediately visible, the USS Bowfin (WWII submarine) is docked on the near shore. Upon arriving, I got a ticket for the Arizona tour and was told it would be a few hours before I could go. In the meantime, I visited the Bowfin. Walking up to the sub, you see a bunch of torpedos and some sub-launched nuclear missiles. The nuclear torpedo was... interesting (never fired). They also had several anti-aircraft guns and a one-man suicide torpedo/sub created by the Japanese. The main attraction was the Bowfin, of course. It's a beautiful craft. Although incredibly cramped, the sub is a marvel of engineering, and quite beautiful with its shining brass wheels, levers, and gauges. It's powered by four huge diesel engines driving generators, which power the drive motors and the rest of the sub. I took a lot of pictures in there, but for some reason the *!$# things didn't develop. I'm incredibly ticked off, but I didn't check the pictures when I picked them up. Anyway, an amazing submarine that I didn't even know was there.
By the time I finished with the Bowfin, it was my turn to see the Arizona. They take you out there on a boat, you get about 15 minutes. The memorial is impressive, with a big granite wall showing all the seamen and Marines who died in the destruction of the ship. Apparently, a number of survivors have also been buried at the Arizona when they later died; their names are also recorded. What I found very striking was the base of a gun turret that sticks up above water; the memorial is actually built over the still-submerged hulk of the Arizona with the over 1,000 dead still inside. You can see bits of the ship down in the water, and the bow and stern are marked by buoys.
I was running a little short on time once I was finished with the Arizona, but I was not willing to leave Pearl Harbor without seeing the Missouri. I bought a ticket and hopped on the bus. I was most definitely not disappointed by the Missouri; it's probably the most impressive ship I have ever seen. Aircraft carriers are pretty amazing, but they don't have 16-inch guns on their decks. Some parts of the Missouri are opened up, so you can walk through and see the officer's quarters, the bridge, the mess hall, and other areas. Since the Missouri was modernized and used in the first Gulf War, many areas contain seeming anachronisms such as PCs and touch-tone phones. However, much of the original equipment can still be seen, and it's AMAZING. I have made my decision--Iowa-class battleships were the most excellent war vehicles ever built. The B-17 may have been a beautiful, powerful, and reliable airplane, but since it isn't made up of thousands of tons of steel and it lacks 16-inch guns, I'm afraid I have to rank it behind the Iowa battleships; it can have #2, I guess. Basically, see the Missouri before you die. I stood right where the Japanese Instrument of Surrender was signed (on a table from the mess, because the one the British donated was too small), looked at a pen used to sign it, saw copies (I think they were copies) of both sides' documents. Incredible.
I was going to write about today's hike through the bamboo forest, but I guess that'll have to wait.
As I whipped out my debit card to pay for $100 of groceries, I was digusted to realize that all that money only buys two bags of Maui Hippie-Approved Organic All-Natural Grass-Fed etc food. There's one store in this little town, and they sell only organic hippie crap. There are some normal stores a few miles away in Kahului, but the stubbornly-held beliefs of at least one of my housemates means that we can't eat anything that doesn't have that moronic "organic" label on it. Of course, being organic doesn't mean it's better; the vegetables at this store are of a decidedly inferior quality, and a gallon of the usually past-date milk costs over $8. That's right. I'm paying double prices or more for bruised, rotten vegetables, mediocre meat, and disgusting milk. For about $2 worth of gas, we could drive to town and save something like $20-40, but that wouldn't be organic, i.e. a product of a wasteful unsustainable process that still uses chemicals but doesn't have to get them as rigorously approved as for non-organic products. Bah, this is making me sick just thinking about it. Ooh, in about half an hour we can have another meal of stir-fried tomatos and zucchini served on white rice; we eat that at least 7 times a week, I swear. God knows what it costs... probably about $5 each. Back on the mainland I could make myself a damn deluxe lunch for what it costs to get a couple tomatos out here.
Well, just putting in a quick note as I take a short break from work. Sure it's Sunday, but we're working to release a new version of the Velocitek Control Center and device firmware by tomorrow morning. Things are going okay, but it sounds like a previously un-discovered bug has just shown up... maybe I better get back on it. Err, that's all for now.
If you've only ever read this page and never explored the rest of the site, you might not know that this is actually hosted on a computer over in the RIT Computer Science department that is running the Plan 9 operating system. I set up the machine with the sponsorship/assistance of Professor Axel Schreiner and have been connecting from my various locations for nearly 6 months now.
Anyway, I've generally connected to the machine using drawterm, a program for Windows and UNIX systems that provides an interface to the computer that approximates sitting down on the cpu/auth server console (cpu and auth servers are part of the idea behind Plan 9). This is generally pretty good, because up until a few weeks ago I was still on the RIT campus, which meant I could connect to csplan9 through the school network. Now that I've gone nearly half way around the world, I've found that drawterm is a bit annoying, so I've been trying to get an alternative working. Today, I installed Plan 9 on VMware Server. Booting the host OS, I choose to get my root filesystem over the network and provide the IP address of csplan9. Now, up until now, everything has worked beautifully, but at this point I hit a problem. It takes about 5 minutes between the time I enter the IP address and my username and the time I am prompted by the remote system for my username and password. Once I enter those, I can get into the rio windowing system relatively quickly, but it's such a terrible delay on a system designed to be rebooted whenever you're done working. Having reached rio, I am able to open windows and start programs, but there's another problem--when I start a program, the binary must be read over the slow network connection before it can be run here. Once the program actually starts running, it responds very nicely, but it can be quite a while before it will get to such a usable state. Running the operating system in Qemu provides no noticeable improvement, either.
I think it may be necessary to run Plan 9 as a "standalone terminal", using its own filesystem locally and mounting csplan9's filesystem when I need stuff. Maybe I'll create a local "john" user and mount csplan9's /usr/john onto the terminal's /usr/john. Anyway, we'll see how it goes. If you have zero interest in Plan 9 but you still read this damn thing for some reason, I apologize.
I've now been in Hawaii for nearly two weeks (since May 31). It's pretty nice here, very warm, but windy all the time. The new job is going well; currently, I'm engaged in converting our old GUI to use the new underlying layers, which are being rewritten as I go along, so it's a constant race between myself and the other developer. The whole GUI will be re-done in WPF before too long, so this re-hash of the old one is more to test stuff. I've also started fiddling with the Xbee radio units that came in today, which are intented for use in a remote control for the next unit design.
On the more down-to-earth front, I'm sleeping on the floor beside my desk, which sounds really bad but isn't much different from the other guys, who are also sleeping on little mattresses thrown on the floor in their rooms. As the intern and the last to move in, I ended up sleeping in the living room. Food is pretty good, although the only store in town is some little hippy place called Mana, which sells only organic food. Seriously, I couldn't find anything that didn't say "organic" on it. Damn hippies. Anyway, I must learn to bake bread, since that, rice, tomatoes, and onions are most consumed items here. Rice is cheap anyway, we don't have a garden for vegetables, but I think if I could get a couple loaves of bread made from time to time, we could save some money. I also need to put my machete to good use and chop down some more coconuts and bananas. I already harvested about 4 coconuts and a bunch of bananas, but we ate the coconuts the first day and the bananas are almost gone.
I've also purchased a ukulele, so we'll see how well I do with that. So far, I know maybe 6 or 7 chords and I can pick a little bit of "Wipeout". More later.
The Hawaii thing is confirmed now. Assuming nobody dies and Hawaii doesn't sink into the ocean, I have been instructed to report to Velocitek headquarters--okay, a house in town, the company is doubling in size to 4 full-timers this summer--at 9 a.m. on May 31st. I'll be working until August 10 and apparently accruing 2 weeks of paid vacation.
Things left to do:
A different piece of news: I picked up a discarded Cisco 7505 router here at RIT the other day. It's currently full of fiber blades, so it's not much use to me. Darn thing weighs what feels like 100lbs, but it sure makes a nice doorstop. Right now I'm looking for someone to trade it or sell it to. If you have a couple hundred dollars or an Alpha, Itanium, or VAX machine, get in touch with me.
Okay, so RIT Housing assigned me to the RIT Inn. This would simply be really really annoying IF I had a car out here, but I don't. That takes the situation from annoying to unworkable. What I'm hoping is that they follow up on their many reassurances that I will probably be placed in on-campus housing of some form. What I'm expecting is that, like many of my friends, I will not end up in any form of decent housing and will instead be expected to spend the next year sharing a dorm-sized room with somebody I don't know; it's like the first year again, except without any of the conveniences offered by a dormitory. I'm happy to put up with a small dorm room because it's a really short walk to the academic side; being on campus, I have access to a lot of stuff. Now take a dormitory, turn half of it into a hotel, move it away from campus, and set up one restaurant at the bottom. Ta-da, it's the Inn! The rooms are a little bigger than a dorm double and the beds are bigger, but combine the two and you're back with very little floor space and worse furniture than you get in the dorms.
So what am I going to do? Maybe I'll get moved back on-campus, but cynicism tells me no. Anyway, I see two clear, workable options: find a place really close to campus (bike/walking range), or drive my car back to Rochester next fall and live wherever I want. At the moment, I'm kinda leaning toward the second option. I'll be done working for Velocitek two weeks before school starts, so I would have quite a while to make my way across nearly the entire U.S. Admittedly, I would be spending quite a bit on fuel and food; I've also purchased a round-trip ticket to Washington and back for the summer, but since it's apparently often cheaper to buy round-trip than it is to buy one-way, I don't feel too bad about that. Besides, it would be a fun trip, even though I would probably have to sleep in the car (can't afford to spend so much on hotels). I could probably stop at my grandma's house in Wisconsin, even.
In today's Intro to Philosophy lecture, we discussed Plato's "Crito", in which Socrates explains his theories regarding civil disobedience and social contract. Socrates states that, as an adult who has taken advantage of the benefits and services of the State, he is responsible for following its laws and defending it with his life if need be. Now, at the moment I'm not going to get into the whole thing, how it relates to modern draft-dodging and law-breaking. Suffice it to say that the main point of the lecture was Socrates' principles of social responsibility, of showing some respect and responsibility. What's the first thing I see when I stand up and turn to go? Somebody's discarded muffin wrapper on one of the chairs. Perhaps this doesn't make much sense if you weren't there, but I thought it couldn't have been better if it was planned. Of course, I didn't pick it up, so maybe I've failed in my civic responsibilities as well.
Most people here who are in any kind of computer-related major have taken some CS courses. Since we're at RIT, the language that gets taught first is Java. Now, at first blush, this seems like a good idea. Java is not hard to write, and everything generally has a self-explaining name. However, there's already some problems here. After you've written about your first two programs, you'll start wishing you didn't have to type "System.out.println()" every time you want to output something. C has printf, C++ has cout, even BASIC has PRINT (less versatile than the others, I know), but Java makes you type the whole long thing every time. "Hey John, you're complaining about nothing--Eclipse practically writes Java for you anyway!" Yeah, that just ignores the fact that Eclipse is, in most ways, a steaming pile worth using only because the debugging utility is sometimes useful. I used it for a quarter, then realized I was starting to hate my life... so I switched back to emacs. Now back to Java--why must it be so slow to compile and execute? Why must its GUI be so terrible? I'd rather RIT had taught me C++ first, if they feel a need to start us out on an OO language. C would have been great. I'd have loved to learn Python, Perl, Scheme, Lisp.
By the time we got to CS4, a lot of us were thinking in Java pretty thoroughly. However, I think most of us saw that, although there's some annoyances due to the lower-level nature of C++, it was a much better language. What I don't like, though, are some of the things I'm hearing from professors and my fellow students. Apparently, RIT is considering removing CS4 from the Computer Engineering curriculum and possibly from others. Okay, what's the big deal? Companies that hire RIT students have apparently been complaining that they don't really want Java monkeys--but RIT seems to be quite happy to keep producing said monkeys, even to the point of removing an even more popular OO language from the curriculum.
Keep hacking the good hack, everybody.
Well, it would seem that my summer job in Hawaii has been approved by the co-op office. Barring any strange occurences (like me getting the Microsoft scholarship/internship) I'll be working at Velocitek as a programmer and tester.
Now, this needs a bit of explaination--why am I getting this job? Well, when our parents told us all about how good it is to have connections, we all probably ignored them (rolled our eyes, snorted ironically, etc), but in this case it was actually true. Convoluted story begins: The summer after I graduated from HS, I went to work at Hood Technology Corporation, where I worked with Kenichiro Kurihara and Walter Burkhardt, among others. When I went back the next summer, I rented a room in a house Walter owned. This house happened to be also occupied by Ken and his college friend Alec Stewart, who had been designing and selling GPS-based speedometers to windsurfers for some time. After living with them for a few weeks, they offered me a job shipping out speedometer units to customers, a job I accepted and still work. Now, they have offered me a full-time position for the summer. Here's the job description:
Computer Engineering Intern, Velocitek, LLC
-Assist senior software engineer in developing GPS track replay software using Visual C#
-Assist senior embedded systems engineer in developing firmware for handheld GPS receivers using embedded C.
-Assist senior embedded systems engineer in designing and prototyping handheld GPS receiver electronics using Eagle CAD PCB layout software.
Required Skills
-Strong basic programming skills and ability to learn new coding concepts quickly
-Hands on experience prototyping PCBs
Salary
-$3500 / month
Well, we'll see how this works out