RichardBerg : CompSciAutobiography

FavoriteLinksCondensed :: PageIndex :: RecentChanges :: RecentlyCommented :: UserSettings
9/3/03

Computer Science Autobiography

I'll try to keep this brief, but can't make any promises...

I started using computers around age 6: after discovering the piano, but before discovering girls, to give some reference. I used my dad's "portable" Compaq and the family's color (!) Tandy to type out some early prose in Professional Write -- all of which I still have, I should add, in a textual archive I'm slowly revamping in sync with this Wiki-web. We owned a Mac briefly in the early 90's, but the vast majority of my early experience was at the MS-DOS command prompt, and once in school, the Commodore64 BASIC interpreter. Within a few years I had discovered games; I'm convinced I had more fun with our then-386's Fun Pak than I ever did in future computing eras.

I first encountered programming in 4th grade, scripting those C64's into flowchart-based text adventures and LOGO wannabes and some elementary graphs (on my own with the owner's manual by this point, considering you have to Poke to execute sprites). I didn't do anything more complex on my home machines until MS started packaging QBasic (I never "got" GW) -- this spurred the most prolific period in my programming career by far, culminating in about 250 programs during 7th grade. The seminal book at this time was Ethan Winer's, at whose urging I "acquired" QuickBasic from poor Dr. Allen's backpack: with a real compiler at my fingertips, Ethan taught me everything from simple ASM and BIOS interrupts up to quicksort and database implementation. The program from this stage I remember best was nothing grand on the algorithmic scale (on which I'll confess I had actually absorbed little, committing to memory only low-level optimizations such as those that result from knowing how the libraries are implemented), using nothing more than simple trig, but I mention because it exhibited to my knowledge my first concentrated effort at refactoring: a program to display a line design* grew into a framework for graphing a wide variety of designs with at least 20 variables specified by the user (well, DATA statements).

*you know, those silly things you see in geometry class that generate "curves" from several not-quite-parallel line segments

For a couple years I resisted learning Pascal or C. Who could stand to declare each and every variable? By the middle high school, though, I had come to love C++ enough to resent the stupid, artificially limiting AP classes. (If I show a disdain for Tapestry, it stems from the many nonverbal arguments I had with APfoo). That pretty much brings me up to date as far as programming languages -- I internalized a few extra ADT's in 100, and 108 v1.0 piqued my interest in <algorithm> and <functional> enough to go learn them, but that's about it. I've picked up lots of pointers (no pun intended) from reading various FAQs, newsgroups, the Symposium, Joel, and the original Wiki, but I don't expect they will come into play much on the small scale of software developed in this class.

On a daily basis, a screen is in front of my face for far too long. Well, that's a tough value judgment, since a few years ago I eliminated all computing activities that were wastes of time prima facie (read: games other than online poker, which I justify by monetary gain); even if you don't brush aside the hours of forum-whoring that seem to crop up each week, on the whole I'm quite productive here. I chat with friends at home and abroad; I lead a large OSS project; I use my email record to keep a handle on my commitments; I use this Wiki to track medium- to long-term todo lists and as a virtual scratchpad; I archive all manner of personal effects, from the aforementioned 2nd-grade text to digital photos to Blazing Sea Nuggets; I use a lot of specialized software to arrange music (Finale), record/edit/master sound (Vegas), filter video (Avisynth, linked above), and so on; I entertain myself with the CDs I've digitized and catalogued, and with what I believe to be the largest personal collection of digital TV shows in the world* captured by myself and friends, as stored on the BergServer and played on the BigGateway; I'm probably forgetting something but you get the idea.

*no need to arouse AOL Time Warner's wrath by mentioning just how large (although I'm convinced sharing OTA broadcast shows is legal), but let's just say it's measured in terabytes

As chronicled above, programming fascinated me from an early age, in I suppose the same way that Erector Sets do for other kids. If anything, learning to structure programs instead of diving in has sort of waned that initial enthusiasm. To be perfectly honest, I'm sticking with the CS degree mostly because of the extraordinary flexibility it allows (the 5 electives can all be in philosophy? score!); I came to the conclusion in my latter years of college that I'd rather spend my life playing music and coding on the side, than chug away at programming and only have time to play music peripherally. [I'll go ahead and address the "future" question here since it fits.] I do see myself working in the industry for several years out of college, but more long-term, if/when I go to grad school it will be in music. As fun as doing cutting-edge research in AI or computation geometry sounds on the surface, I have too many other options on the same priority level like learning algebraic topology or learning German, all of which I expect will not happen realistically until I have sufficiently dusty textbooks plus some spare time in my 30s.

On an average day at Microsoft, I found myself grappling with new (to me) technologies: first the intricacies of the MSI standard such that I could write an installer using an XML transcoder, and second the managed c++ framework. Being the new guy is somewhat of an exceptional case, of course -- I'm certain that the more general answer to the question is simply: debugging. Approximately comparable to beating your head against a wall until suddenly, after the 104th strike, your head magically heals.

My worst experience was trying to get C# to deserialize input that was not generated by XmlSerializer but by a macro-laden C program written to an indecipherable spec...but that's a boring and highly MS-specific story. My best experience was the day/night I spent totally ripping apart what I can now lovingly call the "legacy" Avisynth codebase, refactoring and splitting five files into about 30, and it compiled, yielding the earth-shatteringly-important version 2.0. Ok, I exaggerate, but it was a nice feeling. Thankfully, I get something like it every time I add new functionality (or even squash bugs) in Avisynth, because it's something that I know I and thousands of people use every day. My biggest disappointment with the project is simply the lack of time I've been able to put into it lately, a drawback I unfortunately don't see abating this semester (at least if Duvall has any say in things ;) ).

I'll close with a little plug for the WikiNature. Websites like this one I created for my homepage offer some great benefits. You can view AND edit them from anywhere; multiple writers can collaborate with ease (the backend includes CVS); the ease of editing (just double-click and use some intuitive markup) encourages you to "release" documents early and often (the amount of content on this site isn't huge yet, but I think it's impressive given it's only been up for 2 months); blah blah blah, no way anyone has read this far, but if I convince my teammates to publish our design documents here, you can't say I didn't warn you.


Personal Tidbits

whereby I give your eye a new header on which to catch as you scroll past my mountains of text

"Richard" is fine. Some teachers mistakenly call me "James" since my real initials are JRB, but they're quickly corrected (and happy, because there are usually name collisions with that hash). Friends and even teachers from high school called me "Ice" for some reason, and still do actually, though it makes me pause for a second nowadays since I haven't been in high school for 5 years. The nickname "Tricky Dick" somehow evolved in my early college years -- I blame a marching-band icebreaker -- hence the handle "trickydickberg" used across the several IM networks.

My computer-related hobbies are mostly above: creating & collecting, to sum up. In the music sphere, I've now been a part of every ensemble at Duke: marching/pep band, wind symphony, chapel choir, symphony orchestra, Hoof 'n' Horn, jazz band, and most recently chorale; instruments put to use at various points have included trombone, euphonium, bass voice, french horn, tuba, and mellophone. I'm also the director of sorts of Duke's student-run brass quintet, (warning: link to highly outdated webpage) The Brass Ring. I hit Wilson and the local Y for various physical activities, most of which are solitary, with the exception of pickup basketball that I've come to adore like most true Blue Devils. Not as fun as partying with the team in our hotel after the NCAA Championship, granted, but what can ya do. When relaxing with my friends after some intense bball, it's usually time for cooking -- a slowly developing passion for this apartment dweller -- and a few hours of SocialPoker.

I'm a senior, and a wise, aged senior at that ;) Honestly, I do have some quality experience under my belt, for which I credit (1) my study abroad in Vienna as a freshman (2) my involvement in the OSS community (3) my job at Microsoft after junior year (4) my year off working between junior and senior years. So yes, I am in fact a bit older than most seniors, having matriculated in '99, but in the end it doesn't really matter aside from the fact that I don't have to deal with Curriculum 2000, nyah nyah. This and the A.B.'s leniency allows me to do fun things like have three minors (music, math, philosophy) despite being a total slacker.

I'm taking CPS 108 (again, don't ask) and 271 (despite having done 270, don't ask)...and that's it. Being a lazy musician, I've arranged to take private lessons on two instruments and perform in two ensembles, which fills me up to the required 4.0 credits.

I already have a WikiPage -- my browser's start page, actually -- devoted to FavoriteLinks, so I won't replicate that effort. Click away, Joaquin.


Back to SoftwareDesign

There are no comments on this page. [Add comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.4
Page was generated in 0.7551 seconds