Links
#!/usr/bin/perl # use strict; # use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; my @sidebar_items = ( {title => 'About Me', class => 'aboutme', url => 'index.html', children => [ {title => 'Academics', url => 'index.html#academics', class => 'aboutme'}, {title => 'Interests and Hobbies', url => 'index.html#interests', class => 'aboutme'} ]}, {title => 'Projects', class => 'projects', url => 'projects.html', children => [ {title => 'The Right Decision: Justifications of Morality', url => 'projects/suff/index.html', class => 'projects'}, {title => 'Attribute-based File Management (Coming Soon)', class => 'projects', disabled => 1} ]}, {title => 'Essays', class => 'essays', url => 'essays.html', children => [ {title => 'Coming Soon', class => 'essays', disabled => 1} ]}, {title => 'Gaming', class => 'gaming', url => 'gaming.html'}, {title => 'Resume', class => 'resume', url => 'resume.html'}, {title => 'Contact', class => 'contact', url => 'contact.html'} ); # If they're at a directory, assume they want the index.html file there: if ($ENV{REQUEST_URI} =~ /\/$/) { $ENV{REQUEST_URI} .= "index.html"; } # If we're viewing pages of a document, associate them with the index.html file in that directory: if ($ENV{REQUEST_URI} =~ /(.+?)\/(.*?\/)page(\d+?)\.html$/) { $ENV{REQUEST_URI} = "$1/$2index.html"; } my $sidebar_string = "
\n"; foreach my $item (@sidebar_items) { $sidebar_string .= "\t\t\t

{class}"; if ($ENV{REQUEST_URI} eq "/~phoenix/$item->{url}") { $sidebar_string .= "sel"; } $sidebar_string .= "\">{url}\">$item->{title}

\n"; if (exists($item->{children})) { $sidebar_string .= "\t\t\t
    \n"; foreach my $child (@{$item->{children}}) { if (exists($child->{disabled}) && $child->{disabled} == 1) { $sidebar_string .= "\t\t\t\t
  • $child->{title}
  • \n"; } else { $sidebar_string .= "\t\t\t\t{url}") { $sidebar_string .= " class=\"$child->{class}sel\""; } $sidebar_string .= ">{url}\">$child->{title}\n"; } } $sidebar_string .= "\t\t\t
\n"; } } print "$sidebar_string\t\t
";
About Me

About Me

Hi! I'm Brian, and you've stumbled upon my little corner of the Web. I shall, for the moment, make the incredibly egotistical assumption that you want to know more about me — if this is, in fact, not the case, feel free to skip this whole bit and click one of the links on the sidebar to the left.

So, who am I? The short version is that I'm a computer science major here at WPI, hoping to pursue a Master's degree in human-computer interaction once I graduate this May. The long version is much more interesting.

Academics

Having almost completed my degree, I've taken quite a few courses here: everything from software engineering to cognitive psychology to social and political philosophy. In my final year, I'm hoping to pursue a philosophy minor, but that's still somewhat up in the air. I like to think of myself as a fairly well-rounded student, though it's easy to think that way in a school that's 85% engineers.

I've also done extensive project work as part and parcel of the WPI curriculum. The write-ups of these projects are available here for your reading pleasure. I did my Sufficiency, WPI's only humanities requirement, on theories of morality. My IQP, a project that is supposed to study the effects of technology on society, ended up being an odd hodgepodge of computer programming, social science and policy studies, and role-playing. (I have hazy memories of being in Maryland somewhere during this process.) My MQP — or senior thesis — was a treatise on, and a working prototype example of, attribute-based file management. That may seem fairly obscure, but it turned out to be quite topical: my work built on and extended that of Dominic Giampaolo who, several months after my MQP was published, finished building an almost identical technology into the yet-to-be-released next version of Mac OS X.

I have ambitions of going on to graduate school somewhere with a good human-computer interaction major — Carnegie Mellon University fits that bill — and eventually getting a nice job doing software engineering and interface design, preferably for a smallish company making software for the Mac platform. Check back here in 10 years or so for an update on that one. In the meantime, I am eminently employable — please have a look at my résumé if you think you might have a position for me.

Interests and Hobbies

As you may have gathered from the preceding paragraph, I have a deep and abiding love for computers, especially the Macintosh. I've been a Mac user since 1987 (which is rather more impressive if you consider that I was six years old in 1987). Perhaps predictably, my Mac foundations have instilled in me a love of graphic design and layout, which can (I hope) be seen in the design for this Web site. I've tried my hand at icon design, as well, not to mention desktop artwork, print design, typography, and a few other related trades. I'm also a true believer in standards-compliance (in the long tradition of human interface designers the world over), which is why this site is written in XHTML and CSS without using a single table. It may not make much of a difference to most people, but this site will make sense to text-based browsers, and also to screen readers for visually impaired users, whereas a table-based site often will not. I like the idea that I'm doing a little more to make other people's lives a little easier.

Above all, though, I love programming. As a creative outlet, few things are more satisfying to me than building a moving, dynamic, useful machine out of nothingness using only words and the power of thought. The very first programming language I ever learned, at the ripe age of 10, was HyperTalk. Unlike BASIC and C, the languages first learned by most programmers my age, HyperTalk is object-oriented, and thus my first forays into programming were from the point of view of that paradigm. While this has held me in good stead while learning new languages like Java and REALbasic, I have always found procedural languages like C rather wrong-headed in their focus, with so much more attention paid to the how than to the what, and scripting languages like perl continue to baffle me even after I have learned their fundamentals. (Not for nothing has perl been called "checksummed line noise with a sense of purpose.")

In the past few years, I have also cultivated a great love for the works of J.R.R. Tolkien. I read the books about a year before the release of the screen adaptation of The Fellowship of the Ring, and was instantly captivated. Since then, I've read the Silmarillion (Tolkien's notes and commentary compiled together to form the epic history of the Elves, Middle-earth, and the world in general) several times through, and have taken a particular interest in the languages and writing systems used by Tolkien; he himself said that his books were simply an expression of the world that developed when he wrote the Elvish languages. I have a small working vocabulary of Quenya and an even smaller one of Sindarin, and have now gotten to the point where I can write in the Tengwar in the Classical mode without having to look up every other character. It may well be said that I have far too much time on my hands if I'm off researching fictional languages, but the applicability of such pursuits is vast: I've already picked up the basics of calligraphy, phonetics, etymology, and a few other varied fields. And besides, my love of language isn't dependent on the pointiness of the speakers' ears: I'm mostly fluent in French, and have a smattering of Latin as well.

My enjoyment both of written language and of computers has led me to write a few essays, usually on the topic of interface design, but occasionally branching out into other subjects, including some less technical ones. At present, I have only converted one or two of them to HTML, but more will be forthcoming.