|
A year and a half ago, I wrote a little bit about RCOS, mostly explaining what it is and why it's so important in the context of RPI. Recently, though, I've had the opportunity to experience another of the virtues of RCOS; one which the faculty will never see, and which the younger students can only dream of.
The first two months of this year were spent frantically submitting job applications via all possible means, responding to multitudes of emails, fielding phone screens from quite a few companies, and finally ending in on-sites. The majority of this went exactly as you or I would expect; however, looking back over all of these conversations, I noticed an interesting pattern:
They don't care about school.
Sure, they wanted someone with a Bachelor's. But to all of them, that part seemed to be entirely uninteresting. Besides brief, passing references ("What was your favorite class?"), there was nearly no discussion of formal education. I could likely have had an English degree and they wouldn't have cared; my answer to "What was your favorite class?" was often something in ARTS or COMM, and that didn't even begin to phase them. Grades didn't even come into the picture.
What did we talk about? We talked about Notebook, we talked about Seed, we talked about the code that runs this site, we talked about all of the random stuff on my GitHub. We even talked about RCOS explicitly, because they like to hire people who do things.
The thought of a single place to go to find people who actively participate in software projects outside of what is required to graduate, and to have the added benefit of being able to instantly investigate their code had some of these engineers and hiring managers salivating. I had one manager ask me about explicit internal details of one of my projects — things he couldn't have known had he not looked at the code, and things that would have been impossible for him to know had said code not been open-source.
The takeaway from this is simple, and bipartite:
- The work you do in RCOS can help you get a job. If there's code, and it's great, you're already better than almost every other candidate, regardless of school, major, or grades.
- The work you do in RCOS should be of quality representative of yourself, because employers will look at it. In addition, there better actually be code to look at, or you're simply forfeiting this opportunity.
2011.04.01 in code
Just in time for the end of the semester, Milkyway@Home, Matt's distributed computing project, has been ported to run on iOS, complete with the ability to download tasks from the Internet and submit results back to the project.
You can now contribute to humanity's understanding of the universe — on the go!
Visit the forum post if you want to install it on your (jailbroken) iOS 4.0+ device.
Good news, everyone! Matt will be attending RPI's Physics Ph.D. program, starting in the fall!
In my last post, I mentioned my inability to write code on the iPad.
I've fixed this. Sort of.

Quite the abomination.
A few weeks ago, my MacBook Pro started kernel panicing constantly, just minutes after boot. Being quite familiar with similar issues in previous machines, I reinstalled OS X, to no effect. Took it to the Apple Store, "it's caused by some USB device, here, have it back". Left it with no devices plugged in, same story. I'm not sure why I was unable to duplicate the problem in the Store; though, at the time, the issue would sometimes disappear for a day at a time.
I bought an iPad the day I retrieved my laptop; I wasn't planning on going on a trip without a computer of some sort, and I had spent some time with Peter's first-gen, which was awesome as well. I've been challenging myself to find a way to do most of the things (everything besides writing code) that I do on a regular computer on the iPad; I'm even writing this post on it! (that's more of a challenge for me than you dynamic-blog people know)
It's been great.
But I can't write code. I haven't gotten to work on Notebook since Xcode 4 launched; I hear it has awesome multi-project support that will make things a lot easier. I've been working on my game for EGD, because I have lots of extra PCs around, but it's uncomfortable and I don't have a way to show things off in class, which is super annoying.
I'm going to take my machine back at some point; I have a lot more logs now, and a lot of debugging that I've done that I can't share with them (I physically disconnected all of the internal USB devices one at a time, but they don't want to hear that — also, it had no effect; I also disabled USB by deleting the drivers, but that didn't help any either (it seemed to, briefly, but then I was once again presented with that wonderful multilingual dialog)).
Hopefully they'll fix it; I miss Cocoa and Exposé and TextMate and Aperture (I have hundreds of pictures from our trip that I can't edit and upload)! Hopefully quickly, so I have a machine to show off stuff in EGD with. VNC to Jayne on the iPad is not an effective demonstration device, what with the 10+ second lag. Thanks, TimeWarner.
I found a few potential apartments in Cupertino; I'll save that for a post once I have a functional way to upload pictures.
So, if anyone's wondering why I don't get back to you as quickly as usual, or you note that I'm short on words in my replies, it's likely because I'm tapping on glass instead of plastic keys.
It's been quite a while since I've written here! While I'm only taking 12 credits this semester, it seems like one of the busier semesters I've had, at least so far... random assorted notes, in no particular order:
- I got a job! I'll be joining Apple's WebKit team in June. I'm extremely excited; however, in order to keep this website separate from work, this is the first and last time I'll mention this fact.
- I'm visiting Silicon Valley during spring break to find an apartment, along with Mom!
- Carol got a job! She'll be hanging out in Rochester, at Harris Corporation!
- I dropped Cryptography/Network Security, because it was unnecessary and was threatening to be the class that I ignore this semester in favor of the more demanding ones.
- Notebook has a few new features: indent/unindent region, and a reasonable API for providing access to an engine's globals. Progress is much slower than it was over winter break, because I have to spend so much time on other things...
- There are videos on YouTube of my first and second Experimental Game Design games.
- I'm spending a lot of time on Experimental Game Design; this always seems to happen with Arts/Communications classes when I take them! This time around, it's because I've committed to being the sole programmer on a really complicated multiplayer game, which puts me a bit out of my element. But I'm making the most of it (even if that involves spending a lot of time on MSDN...)
- If EGD takes a lot of time, IT & Society takes up just as much — there's constantly writing, editing, formatting, or meetings.
- Amy and I are going to see Donald Glover (Community's Troy Barnes) do standup and stuff at the Bowery Ballroom in NYC (the same place Carol and I went to see She & Him a while back!)
- We're (probably) relicensing Seed under LGPLv2+ so that webkit-gtk can use parts of it. What kind of coincidence is that??
2011.02.04 in school
I'm just wrapping up the end of the second week of my last semester at RPI, so it's time for another list of thoughts.
Crypto/NetSec
I've only had one session of this so far because of the snow and the fact that it meets only once a week. It seems like the final project is something like a ground-up implementation of SSH, which sounds entertaining. This is also my only stereotypical CS class this semester.
Experimental Game Design
I haven't been to this class yet, and it looks like that might continue being the case for at least another week: I wasn't in it yet during the first meeting, and the second was canceled due to snow. Next week there's a chance I'll be out of town for interviews. Regardless, I did the first project, which was to write a rough draft of a game in a week.
I wrote a multiplayer multitouch (for the desktop; you use Magic Trackpads/the built in trackpad to control it) cross between some of my favorites: Osmos, World of Goo, and Geometry Wars, entirely with CoreGraphics (read: no GL, so it's easier/faster to write, but it just barely runs at full speed on my machine when you've got a ton of bodies on the screen). It's not even remotely in a state to post at the moment, but it sits in a GitHub private repo that I'll publish after the class is over (if I determine that I'm even allowed to do that at all).
IT and Society
This is going to be a repeat of Biology: I do it because I have to, not because I want to. It fulfills two graduation requirements in one class, but it is not fun (it's a freshman class, full of reading and writing and silly IT-y things that I really don't enjoy at this point). My section's TA seems pretty awesome, though, so that'll help.
We have to form fake corporations and respond to RFPs and stuff... it makes me feel like I'm living inside Hacker News.
RCOS
I'm working on Notebook for credit for RCOS this semester; I'm giving my first presentation in less than an hour alongside Matt and Peter and probably others. Fun!
In the theme of Mom and Vivian's posts with pictures of their lovely piles of snow, here's mine:

J. Erik Jonsson (that is a statue of him, right, guys? I can't tell because the sign is covered up) with a lapful of snow.

The Academy Hall parking lot, after I made what was hopefully my last visit ever to the registrar.
2011.02.03 in code
I just pushed out the first two releases of Notebook! The second release was rushed out after the first to fix a few silly bugs that never should have made it into the first one (basically, the same reason most releases of any software are made...)
It's still in an incredibly alpha state, but you're welcome to download it and report some issues.
I hacked up a silly icon so that it doesn't look so dumb in the dock; it's supposed to be a cell, split in half: input and output. Now you see it, now you don't! In case you don't use OS X, it's the seventh icon from the left. I'm not much of an icon designer, obviously, so I went for the flat three-color approach instead of the awesome photorealistic style that Apple and co. use (which I can't even begin to replicate).

I'm working on Notebook for credit this semester through RCOS; many thanks to Moorthy and Sean O'Sullivan for making this program possible; if you're not aware of RCOS, I wrote a little bit about it a little over a year ago.
2011.01.12 in code
Since mid-November, I've been using my free time to work on a little application currently called Notebook. It's a REPL of sorts, but implemented in Cocoa, and heavily inspired by Mathematica (since Mathematica also calls its evaluation environment a 'notebook', I'm open to suggestions for a new name, and probably won't be shipping it with the current one).
I pushed up a content-free website last night... it'll get filled in eventually. The code is on Github.
Notebook has a pluggable language system; for right now, I'm primarily maintaining a Python backend, though there is a working Ruby backend in the repository as well. Matt has talked about implementing a Haskell backend, which I think would be awesome, but hasn't gotten around to it yet.

The basic idea of Notebook is simple: you have a bunch of cells, all operating with the same global state, but you can evaluate them in whatever order you want, however many times. You can define a function in one, use it in another, assign a global variable in one, access it in another, etc.; you can go back and edit the definition of your function inline, exactly where you initially typed it. When you evaluate a cell, its output is captured and attached directly to its bottom; when you re-evaluate a cell, the old output is replaced:
That's basically all there is to it, right now... I just wanted to get it out there. There are a huge number of features planned, and a huge number of known bugs, and many months of work to do before it's 1.0 — if anybody wants to help, feel free! It is currently 100% not ready for anyone to use it; while it works, many basic features haven't even been considered yet, as it's been all about getting the backends working properly (which was a Distributed Objects learning experience, believe you me!). However, I hope that someday it can be the place that I point people who want to learn Python — the instant, inline feedback that it provides could be extremely useful (it was for me, with Mathematica, anyway!).
|
|