<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>MIT Admissions | Evan B. '10</title>
      <link>http://www.mitadmissions.org/Evan.shtml</link>
      <description></description>
      <language>en</language>
      <copyright>Copyright 2009</copyright>
      <lastBuildDate>Sat, 21 Nov 2009 01:48:20 -0500</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.2</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>Live Kernel Patching System</title>
         <description><![CDATA[<p>This is partially a plug for a friend of mine, but it's also a <em>really</em> cool system that I think some of you might like.</p>

<p><a href="http://web.mit.edu/ksplice/">Ksplice</a> is system for automatically patching a Linux kernel without reboots. Jeff Arnold '07, MEng '08 developed this as his master's thesis, and today released the system to the Linux Kernel Mailing List (LKML).</p>

<p>Ksplice requires nothing more than the currently running kernel source and the configuration settings, combined with a patch to the source code, to generate a kernel module which, when loaded, can be used to immediately patch vulnerabilities or introduce new behavior. As a maintainer of linux.mit.edu, the SIPB Linux dialup server, Jeff has in the past used Ksplice to keep this server up, which many people on campus rely on.</p>

<p>This really has the potential to revolutionize systems administration for high-reliability systems. But...don't take it from me. Take it from Ted Ts'o '90. Ted is an active kernel hacker who, among other things, developed the ext2 filesystem, the basis for the ext3 filesystem, which is one of the major filesystems used on Linux today.</p>

<p>Here's what Ted says in <a href="http://blogs.zdnet.com/open-source/?p=2333">ZDNet's article:</a></p>

<blockquote>
Top kernel developer and Linux Foundation fellow Ted Ts’o said the Ksplice software is much needed by telecommunications providers and anyone who hates downtime. “It allows you to hot patch the Linux kernel with a security update without rebooting the computer. It’s a binary patch capability that is highly automated,” said Ts’o. “Users in the carrier grade linux space have been clamoring for this for a while. If you are a carrier in telephony and don’t want downtime, this stuff is pure gold.”

<p>The best part? It doesn’t require any kernel modifications, Ts’o said.<br />
</blockquote></p>

<p>(Here's the LKML posting: <a href="http://permalink.gmane.org/gmane.linux.kernel/669951">http://permalink.gmane.org/gmane.linux.kernel/669951</a>)</p>]]></description>
         <link>http://www.mitadmissions.org/topics/learning/life_after_mit_careers_grad_school/live_kernel_patching_system.shtml</link>
         <guid>http://www.mitadmissions.org/topics/learning/life_after_mit_careers_grad_school/live_kernel_patching_system.shtml</guid>
         <category>Life After MIT (Careers &amp; Grad School)</category>
         <pubDate>Wed, 23 Apr 2008 15:19:09 -0500</pubDate>
         <author>Evan B. &apos;10</author>
      </item>
            <item>
         <title>The Zone Cell Challenge</title>
         <description><![CDATA[<p>There are lots of things I should have been doing this weekend. There's the 8 page draft paper that was due today. Or the 6.004 lab where I have to program a <a href="http://en.wikipedia.org/wiki/Turing_machine">Turing machine</a> - it's due Thursday. Or the revision of my <a href="http://www.mitadmissions.org/topics/learning/coursework/the_impossible_design_project.shtml">design project</a> which is due on Thursday (I actually still don't know what design I'm going to write up). Or either of the psets in my other two classes which are both due on Friday.</p>

<p>Yes, the weeks before Spring Break tend to suck. Like, not just your average suck. They tend to <em>really</em> suck. And with that much suck, I should have spent all weekend tooling and doing nothing else.</p>

<p>But of course that's never how it works.</p>

<p>Last weekend, I took the Zone Cell Challenge.</p>

<p>Now, this is going to require a little background. Actually, there's quite a bit of background. Back In The Day, the MIT I/S Department (now IS&T) hired student developers to basically help build Athena. They were called the Watchmakers, based on a book by Niven & Pournell (there's a <a href="http://web.mit.edu/teamhtml/Athena/watchmakers/">page</a> that explains the metaphor). The Watchmakers worked in the Watchmaker Zone, and to help them test, debug, and generally try to break the technologies they were developing, I/S donated three servers, which formed the ZONE Kerberos realm and the zone AFS cell.</p>

<p>Ok...I guess I should take another step back and quickly explain Kerberos and AFS. <a href="http://en.wikipedia.org/wiki/Kerberos_%28protocol%29">Kerberos</a>, named after the three-headed dog guard of Hades (usually seen as the Latin Cerberus), is a protocol for mutual authentication of a client and server through a trusted third party. Basically, you can prove who you are to other computers on the network, and your password never has to cross the network unencrypted. This works because there's a single machine that all other computers on the network trust, called the KDC. Kerberos is broken up into "realms," which represent distinct sets of users and servers. The normal realm here on campus is the ATHENA.MIT.EDU realm, but there are also the CSAIL.MIT.EDU, MEDIA-LAB.MIT.EDU, and <a href="http://numenor.mit.edu">NUMENOR.MIT.EDU</a> realms.</p>

<p>AFS is the Andrew File System. Developed at Carnegie Mellon, AFS is a network accessible file system. It's a way of accessing your files from any computer on the Athena network. AFS is broken up into "cells," and there are many more AFS cells than there are Kerberos realms. Like Kerberos, there is an athena.mit.edu cell. There are also csail.mit.edu and numenor.mit.edu cells. However, there is additionally, for example, the sipb.mit.edu cell, run by the SIPB. This allows SIPB to maintain its own servers and software and allocate quotas without having to go through the Athena maintainers.</p>

<p>So...in addition to all of those cells and realms, there's the lesser known Zone Cell, made up of three servers (remember - they're for the Watchmakers): casio, seiko, and timex. If you look in the Zone Cell, you'll see a series of very explicit rules. I'll copy some of the better ones:</p>

<ol>
<li>The Zone Cell is not for reliable data storage.</li>
<li>The Zone Cell is not for reliable data storage. (in case you missed it the first time)</li>
<li value="9">ASO reserves the right to remove someone's zone cell bits. Reasons
this may be done include: [...] gratuitously compromising the security of the zone cell
or zone kerberos realm, or intentionally causing Rule 1, 2, or 10 to
become relevant. [...]</li>
<li value="10">The zone cell is not for reliable data storage.</li>
<li value="11">The zone cell is not for reliable data access.</li>
</ol>

<p>So...now that we've established the reliability of the Zone Cell, what is the Zone Cell Challenge?</p>

<p>The Zone Cell Challenge is an event that is usually for people interested in becoming SIPB AFS administrators. It's designed to help people become more familiar with how AFS and Kerberos work.</p>

<p>In the Zone Cell Challenge, you start with root access to one of the three Zone Cell servers, and you have to accomplish three things. First, you have to give yourself root access to the other two Zone Cell servers. Second, you have to make yourself an administrator of the Zone AFS Cell (which is different from having root access on the servers!). Finally, you have to make yourself an admin of the Zone Kerberos Realm, which gives you permission to change other people's passwords or create new accounts.</p>

<p>It actually turns out that none of these tasks are particularly challenging if you read the right documentation. And since I was interested in learning more about how to administer AFS, I signed up for the Challenge on Friday night. And at about 3:45 AM, I actually started trying to hack the Zone Cell in earnest.</p>

<p>The first part is easy, once you find the right command. It took me about 30 minutes to gain root access on all three servers.</p>

<p>And then, almost immediately after I had logged in to all three to make sure it worked, all of them froze. And they stopped pinging.</p>

<p>Well...crud. What did I screw up?</p>

<p>Well, fortunately, I didn't screw anything up. The Zone Cell servers had been moved to virtual machines, and all of the virtual machines on one server froze, including casio, seiko, and timex. Fortunately, there were other VMs on that machine that people cared about, and one of the Athena server maintainers brought the servers back up.</p>

<p>One task down, two to go.</p>

<p>Before about 6 AM I managed to finish the second task - making myself an administrator of the Kerberos realm. I went to sleep, and when I woke up, I spent a couple of hours on the last task. The last task was also a little entertaining. I had a theory of how to make myself an AFS administrator, but I was worried that I would screw up the AFS users database. So I asked on the zone-cell zephyr class (kind of like a chatroom)</p>

<blockquote>
Me: Ok. I think I know what I want to do [...], but I'd like to check and make sure I'm not going to screw it up before I try. Anyone around?

<p>Someone from Athena server ops: I think you should just risk breaking it. At worse, you'll just have to fix it after the fact<br />
</blockquote></p>

<p>Well...ok? I guess I'll just back up the files I'm modifying...</p>

<p>Anyway, I can't really say much more, because where's the fun in saying what I did? But in any case, hacking other people's servers with permission is a really fun way to spend a weekend.</p>

<p>But I guess I should go back to tooling now...</p>]]></description>
         <link>http://www.mitadmissions.org/topics/life/student_organizations/the_zone_cell_challenge.shtml</link>
         <guid>http://www.mitadmissions.org/topics/life/student_organizations/the_zone_cell_challenge.shtml</guid>
         <category>Student Organizations</category>
         <pubDate>Mon, 17 Mar 2008 11:08:00 -0500</pubDate>
         <author>Evan B. &apos;10</author>
      </item>
            <item>
         <title>The Impossible Design Project</title>
         <description><![CDATA[<p>Ok. Well, I've been kind of busy these days. Taking 5 classes (2 <acronym title="Communications Intensive">CI</acronym>s and 2 labs will do that). So...I thought I'd take the easy way out, by giving you one of my problems to take a look at.</p>

<p>6.033 is Computer Systems Engineering. It has lots of different components to it - so far we've talked about the Therac-25, the X Windows System, multi-threading, and a couple of other things. It moves quickly through different topics, all of which are very interesting.</p>

<p>In particular, though, 6.033 has two design projects, where we're presented with a fairly real world problem, and we have to try to solve it. This year, we have to create a controller for a NAND flash device.</p>

<p>The controller sits between the filesystem and the physical device itself, and has to make the flash look like a traditional magnetic disk, in spite of the fact that flash memory is distinctly unlike a magnetic disk.</p>

<p>Here's the description of the problem: <a href="http://web.mit.edu/6.033/www/dp1/">http://web.mit.edu/6.033/www/dp1/</a>.</p>

<p>Feel free to submit solutions in the comments. My one recommendation is that you should make sure that you actually have enough RAM to store what you want. My friends and I spent multiple days coming up with and throwing out lots of different options, and none of us have a solution that we're truly satisfied with, so don't feel bad if you have a hard time coming up with something that works.</p>

<p>You can not solve this problem without making significant sacrifices in either the available storage space, the read and write performance, or the ability of the controller to balance wear over time.</p>

<p>I'll post my solution after I give you guys time to play with it. Also - feel free to let me know if you have any questions - I know it's kind of hard to follow at first. (And as usual, questions about other MIT-related things are also OK)</p>]]></description>
         <link>http://www.mitadmissions.org/topics/learning/coursework/the_impossible_design_project.shtml</link>
         <guid>http://www.mitadmissions.org/topics/learning/coursework/the_impossible_design_project.shtml</guid>
         <category>Coursework</category>
         <pubDate>Wed, 27 Feb 2008 18:58:39 -0500</pubDate>
         <author>Evan B. &apos;10</author>
      </item>
            <item>
         <title>Keep Holy the Month of IAP For It Is a Time of Rest</title>
         <description><![CDATA[<p>(title taken from <a href="http://hacks.mit.edu/Hacks/by_year/1992/cathedral_7/">The Cathedral of Our Lady of the All-Night Tool</a>)</p>

<p>I keep a list in my head of what topics I want to blog about. But I think of it as a <a href="http://en.wikipedia.org/wiki/Stack_%28data_structure%29">stack</a>, as opposed to a <a href="http://en.wikipedia.org/wiki/Queue_%28data_structure%29">queue</a> - so I cover things that happened more recently first.</p>

<p>So obviously, I need to cover what I did over IAP, and then maybe I can make it as far back as last semester.</p>

<p>Fortunately for me (and those of you who want to hear about 6.111 and my other adventures in <acronym title="Electrical Engineering">EE</acronym>), I didn't do much this IAP, so I should be able to just knock this out and move on. Last IAP I spent almost all of the month working on <a href="http://www.mitadmissions.org/topics/learning/the_month_of_january_iap/6270.shtml">6.270</a>. It was fun - the robots are really cool. But it was also stresful. I didn't get much sleep during the last week of IAP (or during the rest of IAP, for that matter).</p>

<p>So I decided that this year I was going to be on campus, but not have any formalized activities taking up all of IAP. I was going to rest and recuperate so that I could go into the spring term well rested and just generally enjoy myself.</p>

<p>I think I more or less accomplished that, with a few exceptions. So, "what I did for IAP" is a fairly short list.</p>

<p>One of the bigger things I did was teaching an introductory class in <a href="http://python.org/">Python</a> for <a href="http://stuff.mit.edu/sipb">SIPB</a>. SIPB (the Student Information Processing Board) is a student group that focuses on improving computing, both in general and specifically at MIT. They're responsible for things like <a href="http://debathena.mit.edu">debathena</a>, which is forming the basis for the new release of the Athena system, and <a href="http://scripts.mit.edu">scripts.mit.edu</a>, a web hosting service for the MIT community.</p>

<p>Additionally, they run a series of <a href="http://stuff.mit.edu/iap/">IAP classes</a>, covering everything from how to hack Facebook Javascript to the "Caffeinated Crash Courses," which attempt to cover everything you really need to know about a topic (usually a programming language) in 3 hours. They also have a series of decaffeinated introductory courses in a whole host of languages. I taught the one in Python. It was 4 classes that were 3 hours each, and covered both the basics of the Python language and some applications such as web development.</p>

<p>It was a good experience, and I had 40-50 students. That being said, I learned some very valuable lessons:</p>

<ol>
<li>Teaching is hard</li>
<li>Teaching for 3 hours straight is really hard</li>
<li>It's hard to prepare enough material to teach for 3 hours straight</li>
<li>If you do have enough material, it probably took you at least 6 hours to get it together</li>
</ol>

<p>I certainly have a <em>lot</em> more respect for the work that good teachers must put into their preparations, because I know that I'm certainly not a great teacher, and the preparation took me a <em>really</em> long time. On the other hand, it was a really good experience, and I really hope that I get a chance to teach this again next year.</p>

<p>Other than that, I basically spent all of IAP doing unimportant things - cleaning my room (although not too much), setting up a better backup solution (although it's still not there yet), and lots and lots of sleeping.</p>

<p>Anyway, that's all for now, but Monday is the Ring Premiere, when all of the sophomores get to see what our Brass Rat looks like for the first time. Lots of people think that Ring Premiere isn't that interesting, but I'm personally excited.</p>]]></description>
         <link>http://www.mitadmissions.org/topics/learning/the_month_of_january_iap/keep_holy_the_month_of_iap_for.shtml</link>
         <guid>http://www.mitadmissions.org/topics/learning/the_month_of_january_iap/keep_holy_the_month_of_iap_for.shtml</guid>
         <category>The Month Of January: IAP</category>
         <pubDate>Fri, 15 Feb 2008 10:47:00 -0500</pubDate>
         <author>Evan B. &apos;10</author>
      </item>
            <item>
         <title>More Psets!</title>
         <description><![CDATA[<p>I woke up this morning at 8:15, 45 minutes after my alarm was going to go off. I go and look at my computer (which is supposed to be my alarm clock) to find that the power adapter askew enough that my laptop's battery had completely drained. I wait 20 minutes for the shower, and then trudge through the rain to Sunny's, the greatest breakfast joint in Cambridge, to meet some friends for breakfast...only to run into them walking to campus on my way there.</p>

<p>And thus began the second of the dreariest, grayest, rainiest first two days of school I can remember.</p>

<p>Fortunately, I was intentionally getting up well before my classes started and the breakfast was tasty, so it all works out in the end.</p>

<p>Anyway! Enough of that. I think of my "list of potential blog entries" as a stack, not a queue - I do the most recent things first. So today I'm exploiting that property to put off writing about last semester <em>even longer</em> in favor of the classic what-classes-am-I-taking-this-term post.</p>

<p>I'm signed up for 66 units of classwork this year. In theory, one unit corresponds to one hour of work per week, be that in the classroom, in lab, or at home. In practice, the correspondence usually isn't so great, but it's still a good indicator of just how hosed you're going to be. To put this in perspective, for the last two terms I've signed up for 51 units. This should be an interesting term.</p>

<p>(Additionally, courses are broken down by how the expected distribution of hours, to give you a sense of how you will be spending your time. These are usually written A-B-C, which means A hours in the classroom, B hours in lab, and C hours doing out of class work. I'll go ahead and put those in, too.)</p>

<p>6.003 Signals and Systems (4-2-9): This class covers basic signals analysis, how to build filters, and analyzing things in the frequency domain, instead of the time domain by using Fourier, Laplace, and z-transforms. Lots of cool concepts, but the class has a reputation for being "grungy math part II" (to 6.002's "grungy math part I").</p>

<p>6.004 Computation Structures (4-3-8): Alternatively titled by the instructors as "The Way <tt>Digital</tt> Things Work". This class starts at the level of MOSFETs (basic electronic switching devices) and moves up through gates, modules, integrated circuits, processors, and a basic operating system. By showing you how to take some small thing, build something bigger, and then stop caring about the smaller thing, you learn how to build very, very complex components with millions or billions of individual MOSFETs. And in the process, you do actually build each of these pieces in simulation, using software that was designed for the course. 6.004 has a reputation for being one of the best classes in Course VI, and many people (<a href="http://www.mitadmissions.org/Jessie.shtml">Jessie</a> included, I believe) count it as their favorite class at the 'tvte. This term, 6.004 is being co-taught by Steve Ward and Chris Terman. I'm really excited about having another class with Chris, who was the professor for 6.111 last term.</p>

<p>6.033 Computer System Engineering (5-0-7): According to the Underground Guide Course Evaluations, covers "everything you ever wanted to know about computers, but didn't know to ask." Things from how the X Windows System works to why Worse-Is-Better is a better development philosophy than Do-The-Right-Thing (the jury's still out on that one, for the record, or at least I think it is). It should be a good class, and the lecturers are supposed to be excellent. This class is also a CI-M, a "communications intensive in major" course. I have to have two to graduate, so this will finish off that requirement (6.111 was one as well).</p>

<p>18.440 Probability and Random Variables (3-0-9): Many of the <acronym title="Electrical Engineering">EE</acronym>-related classes require a probability class, either <acronym title="Probabilistic Systems Analysis">6.041</acronym> or <acronym title="Probability and Random Variables">18.440</acronym>, which is supposed to be a little more mathematically rigorous. A friend of mine just changed his major to 18, and has to take 18.440 as one of the requirements, so I figured I'd take that, because classes are always more fun when you're taking them with people you know.</p>

<p>(Ok - I wrote that blurb this morning, but having actually been to today's lecture, I'm actually really excited about it, because while I usually hate probability, Professor Kelner seems to be a really good teacher who gives very well prepared lectures. He's a recent MIT graduate student, so he also seems to be fairly understanding of students' needs - for example, he's planning to hold one set of office hours the night before the psets are due.)</p>

<p>17.42 Causes and Prevention of War (4-0-8): The only reason I signed up for this class is that lots of my friends were as well. I've never taken a political science class before, so this should be interesting. It's a CI-H ("communications intensive humanities"). I need two of these as well, but I already have 2, so I'm actually taking this one because it counts towards the HASS-D requirement (you have to take classes in a certain variety of disciplines. Please don't ask me to explain the various HASS requirements. I honestly don't think anyone really understands them).</p>

<p>Hmm...well, I wrote just about everything up above this morning. Then classes happened, I got distracted, and am only just now finishing.</p>

<p>It turns out that the end of my day made the perfect counterpart to the start of my day.</p>

<p>First, some background. My room doesn't get much circulation, so as a general rule, I leave my window opened a few inches when I leave in the morning so that it's not uncomfortably hot when I get back from classes. This is normally fine - even when it rains - because Burton-Conner has the interesting property that it always seems to be at a higher pressure than the outside world. That, combined with the screen in the window, seems to keep my room cool and dry.</p>

<p>Of course, today I leave <acronym title="Stratton Student Center">W20</acronym>, where I had been doing homework, to walk home. After a day of fairly clear weather, it's raining again, and harder than before. So I get back to my dorm soaked, and walk up to my room to find the third of my bed closest to  the window nicely doused by the rain.</p>

<p>But that's ok. It was a good day. My classes are interesting. My professors are good. It should be a good term.</p>]]></description>
         <link>http://www.mitadmissions.org/topics/learning/coursework/more_psets.shtml</link>
         <guid>http://www.mitadmissions.org/topics/learning/coursework/more_psets.shtml</guid>
         <category>Coursework</category>
         <pubDate>Thu, 07 Feb 2008 00:41:20 -0500</pubDate>
         <author>Evan B. &apos;10</author>
      </item>
            <item>
         <title>And It&apos;s Over!</title>
         <description><![CDATA[<p>Congratulations to the Evil Midnight Bombers What Bomb at Midnight. They found the Mystery Hunt Coin at 8:28 PM tonight. They're a great team of MIT alums; lots of really smart people. They actually won the hunt 2 years ago (and I think 2 years before that...), so the Hunt last year was written by them, and they'll be writing next year's hunt too, so it should be a good year.</p>]]></description>
         <link>http://www.mitadmissions.org/topics/learning/the_month_of_january_iap/and_its_over.shtml</link>
         <guid>http://www.mitadmissions.org/topics/learning/the_month_of_january_iap/and_its_over.shtml</guid>
         <category>The Month Of January: IAP</category>
         <pubDate>Sun, 20 Jan 2008 20:40:02 -0500</pubDate>
         <author>Evan B. &apos;10</author>
      </item>
            <item>
         <title>What&apos;s This Mystery Hunt Thing?</title>
         <description><![CDATA[<p>So...there's this Mystery Hunt thing...you might have heard of it.</p>

<p>It's awesome. It's lots of fun. You should do it when you get here. Or keep working on those puzzles that Snively and Brian posted&#8212;we still don't have right answers to those!</p>

<p>Anyway, I'm only posting just now, because I've been Operating. Death From Above is a HUGE team (our mailing list tells me that there are 115 people!), and probably 1/4 or 1/3 of those are hunting remotely, instead of from on campus. Smaller teams can coordinate by just yelling across the room. Since we can't really get away with that, we have an Operator (inspired by the Matrix). It's the Operator's job to keep track of who's working on which puzzle, where they are, how they're doing, whether they've slept, and when they're hitting their heads against the wall so hard their brains are going to fall out.</p>

<p>In addition, the Operator is responsible for "calling in" answers. When you think you have an answer to a puzzle, you fill out a little form on the official Hunt website, and they call you to check your answer. As the operator, I take other people's answers and call them in, so I also get to enjoy all of the excitement when we get an answer right (which happens pretty rarely, for the record&#8212;we're averaging less than one an hour).</p>

<p>So I've got this awesome little command and control center in the corner of our headquarters. There's my laptop in the middle, where I watch what answers have been submitted, an extra computer on the left, where I have Skype, AIM, and Jabber open to talk to remoters, and the VOIP phone on the right that we borrowed from IS&T (because cell reception here is practically non-existent).</p>

<p>I realized last year that I'm a lot better at trying to organize people than I am at actually solving puzzles, so I've been focusing on doing that. Every day since Friday, I've shown up at noon, sat behind the desk for about 14-16 hours (with occasional interruptions to run over to the other rooms), and then gone home and slept for a few hours.</p>

<p>It can be boring, but it gets really exciting every few hours because you're talking with 5 or 6 remoters, and trying to handle 3 different people who all have answers at the same time, and the phone just starts ringing off the hook, and...it's just awesome. So much fun.</p>

<p>Anyway, that's my Mystery Hunt story. Anyway, back to the phones&#8212;while I was writing this, we just solved 3 more puzzles! (although we're still at less than 1 per hour)<br />
</p>]]></description>
         <link>http://www.mitadmissions.org/topics/learning/the_month_of_january_iap/whats_this_mystery_hunt_thing.shtml</link>
         <guid>http://www.mitadmissions.org/topics/learning/the_month_of_january_iap/whats_this_mystery_hunt_thing.shtml</guid>
         <category>The Month Of January: IAP</category>
         <pubDate>Sun, 20 Jan 2008 13:45:10 -0500</pubDate>
         <author>Evan B. &apos;10</author>
      </item>
            <item>
         <title>The End of an Era</title>
         <description><![CDATA[<p>Hi, everyone! Sorry that I vanished off the face of the earth. That was really kind of terrible form, I know. But Ben and my mom are conspiring, which means that I need to put that to an end. In the next little while, I'll try to do a recap of last term, which was fantastic, but unbelievably hosing.</p>

<p>This particular post, though, is about a particularly well-known class around the Institvte.</p>

<p>As many of you know, 6.001 was a class invented at MIT to teach the fundamentals of how to program. The first class was taught in 1980 by Hal Abelson and Gerry Sussman, the authors of its companion book <a href="http://mitpress.mit.edu/sicp/full-text/book/book.html">Structure and Interpretation of Computer Programs</a>, which also happens to be the official name of the course. The class has been offered constantly since then, and it's been taught roughly the same way.</p>

<p>The class was structured around Scheme, a programming language which Sussman invented with Guy Steele in the 70's here at MIT. It's an unusual language with a syntax that's radically different from most other programming languages (at least ones that aren't LISP), so most people aren't familiar with it coming in. And because of this, the class has gotten a lot of flak in recent years, especially from people who know "more normal" programming languages.</p>

<p>In spite of this, 6.001 had a very strong reputation for teaching people not only how to program, but how to think about programming, and how to take big problems and deal with them. There are a lot of classes that claim to do this same thing, and probably many of them do, but 6.001 seems to be unique in just how it manages to pull it off.</p>

<p>Starting this year, though, the Course VI department is beginning to migrate incoming freshmen to the new curriculum. And 6.001 doesn't really have a place in the new curriculum, so this is the last term that it was offered. Several years ago, Sussman said that he wanted to be the last person to teach 6.001, and so he taught it this term, taking it back from (guest blogger) <a href="http://mitadmissions.org/Eric.shtml">Eric Grimson</a>, the head of the department, who has taught the class for as long as any of my friends can remember.</p>

<p>Because 6.001 is "early" in the day (10 AM - which is very early by MIT standards), frequently the students will opt for other means of learning the material, but for this last lecture ever, current students of 6.001, past students of 6.001, and even people who had never taken 6.001 came to see the class off.</p>

<p>And just to put their own stamp of approval on the class, some hackers apparently covered the original room number (32-123) with a new number for the day:</p>

<center>
<a href="http://www.ericschmiedl.com/hacks/large-256.html"><img src="http://www.ericschmiedl.com/hacks/pictures/picture-256.jpg" /></a>
</center>

<p>For the last lecture, Sussman spent about 30 minutes talking about the halting problem - the idea that a computer can't determine whether or not it's possible to calculate something in finite time. At the end of his lecture, though, one of the TA's came up to say something about the class's passing. In particular, he noted that it was "remarkable that a course invented then [the 80's] is still so dead on in what matters." He pointed out the remarkable insight of Abelson and Sussman to see into the core of computation, "keeping it fresh for more than a quarter of a century." And afterwards, the entire room stood up and applauded the class.</p>

<p>Now that 6.001 is gone, it's being replaced by 6.00, 6.01, and 6.02 in the new curriculum. There are a lot of students that don't really like the new curriculum, but for the most part, it seems to me that they are just being resistant to the change. It's definitely true that 6.01 hasn't quite settled into being a really solid class yet, but 6.02 looks like it's amazing. Among other things Chris Terman, my 6.111 professor, is teaching part of it, and he's just generally awesome.</p>

<p>It think that the new curriculum isn't quite there yet, but it's definitely close.</p>

<p>I promise that I'll try to post more during IAP and this next term! Really! I've definitely got a long list of things to talk about.</p>]]></description>
         <link>http://www.mitadmissions.org/topics/learning/coursework/the_end_of_an_era_1.shtml</link>
         <guid>http://www.mitadmissions.org/topics/learning/coursework/the_end_of_an_era_1.shtml</guid>
         <category>Coursework</category>
         <pubDate>Tue, 08 Jan 2008 12:56:03 -0500</pubDate>
         <author>Evan B. &apos;10</author>
      </item>
            <item>
         <title>Go Sox!</title>
         <description><![CDATA[<p>I'm not a big sports fan. Never have been. Nashville doesn't have much in the way of good professional sports teams - it's mostly the Titans, and they only moved there when I was 11. In the past, I've only passively watched sports, when I did. I've been to a couple of baseball games (my dad's from Chicago, so most of them were Cubs or White Sox), maybe one football game. I never went to any sort of sporting event at my high school.</p>

<p>But when you move to Boston, it's really hard not to be a Red Sox fan - you just kind of get sucked into it. And it's even worse when you have a lot of friends from around here - you wander into a suite lounge or a floor lounge to find 10+ people anxiously watching everything, and screaming whenever anything happens - good or bad. It's exciting, and it's even more exciting when the team is winning.</p>

<p>The night of the seventh game in the ALCS, I was on Burton Third starting to plan out our 6.111 final project with Chris '09. Of course, we got a little distracted. And when the Sox won, a massive crowd of people left Burton 3rd and went down to Burton 1, cheering as soon as the elevator doors opened. They were immediately joined by Kip (who, remember, has a voice <a href="http://www.mitadmissions.org/topics/life/student_life_culture/silent_dance_party.shtml">"only a few decibels louder than a sledgehammer"</a>), and <a href="http://www.mitadmissions.org/JKim.shtml">JKim</a>, among others.</p>

<p>We then went floor by floor up Burton-side, cheering every time the elevator doors opened, and every time, people would come out of their floor lounges cheering with is, until we couldn't all fit in the elevator.</p>

<p>But that's not what this post is really about.</p>

<p>It's not even about the fact that the Red Sox completely dominated the game last night.</p>

<p>It's about the hack that went up in the middle of the night to support the Sox.</p>

<p>I got an e-mail this morning from a friend at Next House saying that she saw this above New House on her way to classes:</p>

<p><a href="http://www.ericschmiedl.com/hacks/large-132.html"><img src="http://www.ericschmiedl.com/hacks/pictures/picture-132.jpg" width="480" width="321" border="0" /></a></p>

<p>This, of course, is the wrong view of the banner. A better version looks something like this:</p>

<p><a href="http://www.ericschmiedl.com/hacks/large-142.html"><img src="http://www.ericschmiedl.com/hacks/pictures/picture-142.jpg" width="480" width="321" border="0" /></a></p>

<p>When I went to look at it, it looked like it was strung between Tang (a graduate dormitory) and MacGregor. Absolutely insane. Over 1000 feet, apparently.</p>

<p><a href="http://www.ericschmiedl.com/hacks/large-135.html"><img src="http://www.ericschmiedl.com/hacks/pictures/picture-135.jpg" width="480" height="225" border="0" /></a></p>

<p>You can see Tang on the far left, barely in the frame, and MacGregor is on the right.</p>

<p>Go Sox!</p>]]></description>
         <link>http://www.mitadmissions.org/topics/life/boston_cambridge/go_sox_1.shtml</link>
         <guid>http://www.mitadmissions.org/topics/life/boston_cambridge/go_sox_1.shtml</guid>
         <category>Boston &amp; Cambridge</category>
         <pubDate>Thu, 25 Oct 2007 22:45:37 -0500</pubDate>
         <author>Evan B. &apos;10</author>
      </item>
            <item>
         <title>Blinky Lights (Part I)</title>
         <description><![CDATA[<p>And I'm back! I'm determined to make up for not posting at all in the last month by being incredibly prolific in the next. I expect this to last for maybe one post after this one. But, hey - a guy can dream, right?</p>

<p>I should also warn people at the beginning that this is a long post. I wrote it to show people the way that I chose to tackle an electronics problem that was presented to me. It's not something that I learned directly from any class, and I don't have any clever terms to describe how I approach things. But it still shows something that I've learned from here, because before I got to MIT, I never would have been able to make it all the way through a project like this. Those of you that know basic electronics will find parts of it boring, and those of you that don't will find parts of it inaccessible. You should read this anyway, because it's just a cool project.</p>

<p>In my advising seminar last year (<acronym title="Electronics Project Laboratory">6.070</acronym> - it's a great class - I highly recommend it, not just as an advising seminar), the instructor said (and I'm paraphrasing here) that "all of electronics can be divided into blinky lights, funny sounds, and weird smells." I'm not sure why the smells were included though - we usually try to avoid those.</p>

<p>I'm a little disappointed that nobody has asked me about the breadboard I'm working with in my banner photo, because that actually happens to be a prototype for the project I want to talk about. It falls into the blinky lights division.</p>

<p>My friend Chris '09 and I rented a Zipcar for a day at the beginning of the summer, because he was helping me move into my summer room at <acronym title="East Campus">EC</acronym>, and he also needed to run to Target, Costco, and a few other places. And once you have a Zipcar for more than 4 or 5 hours, it becomes cheaper to  get it for the whole day, so we threw in a trip to IKEA just for good measure.</p>

<p>While we were there, we discovered these awesome glass shelves with fluorescent lights on the inside. They were called NIANs, in IKEA's typical we're-going-to-pretend-to-be-exoticly-Swedish-while-still-using-words-that-sound-like-English fashion. They were also on clearance, and thus marked down from $70 to $10. Now, granted, it is IKEA, so it's hard to tell whether it was originally $70, but regardless, at $10, that was an awesome deal, so we bought two of them each. They look something like this:</p>

<p><img src="http://web.mit.edu/broder/blog/2007/09/nian.jpg" align="middle" /></p>

<p>So we're two <acronym title="Electrical Engineering">EE</acronym>-inclined guys, and we look at these lit shelves, and we come to the natural conclusion that the only possible thing to do with them is to replace the fluorescent bulb with <acronym title="Red/Green/Blue">RGB</acronym> LEDs, and then make that computer controlled.</p>

<p>And because Chris was a lighting techie in high school, he suggests that we should make both ends communicate using <a href="http://en.wikipedia.org/wiki/DMX512-A">DMX512</a>, a standard protocol for communicating between stage lighting devices.</p>

<p>So...I have a project. Well, more of a problem (problem as in problem set, not personal problem). And the way that I solve problems like that is by breaking it down into a series of simpler problems.</p>

<p>But before I do that, I'd like to give a quick preview of the finished project, or at least the project as it is now. We don't have the LEDs in shelves yet, but we do have a demo board that drives one LED:</p>

<p><object CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="320" height="256" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab"><br />
<param name="src" value="http://web.mit.edu/broder/blog/2007/09/dmx-board.mp4"><br />
<param name="autoplay" value="false"><br />
<param name="loop" value="false"><br />
<param name="controller" value="true"><br />
<embed src="http://web.mit.edu/broder/blog/2007/09/dmx-board.mp4" width="320" height="256" autoplay="false" loop="false" controller="true" pluginspage="http://www.apple.com/quicktime/"></embed><br />
</object></p>

<p>Ok. Back to the design steps. The first step for me is figuring out what the signal path is. I've already established that I'm using DMX to drive RGB LEDs, so it looks something like this:</p>

<p><img src="http://web.mit.edu/broder/blog/2007/09/dmx-round-1.png" alt="DMX->Some kind of processing->3 LEDs" align="middle" /></p>

<p>Ok. The next step is to figure out exactly what's coming in and exactly what needs to go out. On the one end, DMX travels on top of a protocol RS-485. That's a protocol with 2 wires, and the signal is either a 1 or a 0 based on which of the two wires has a higher voltage than the other (called a differential signal).</p>

<p>On the other end, the LEDs will be powered with a <acronym title="Pulse-width modulation">PWM</acronym> signal. PWM is a way of varying a signal from completely on to completely off. Since the red, green, and blue components of the LED should each have a variable brightness, we can use PWM to change it. Basically, you turn the output on and off really quickly, and the longer it's "on," the brighter the LED seems, until it's always on, which is full brightness. For those of you who are math inclined, the brightness level that our eye perceives is the average voltage over time. Here's a photo showing what the signal looks like when it's 1/3 of the full brightness:</p>

<p><img src="http://web.mit.edu/broder/blog/2007/09/pwm-example-1.png" alt="Example of 33% duty cycle PWM signal" align="middle" /><sup><a href="#ref_1">[1]</a></sup></p>

<p>Just for comparison, here's another signal that is 2/3 of full brightness:</p>

<p><img src="http://web.mit.edu/broder/blog/2007/09/pwm-example-2.png" alt="Example of 67% duty cycle PWM signal" align="middle" /></p>

<p>Ok. So we know what signals we're dealing with now. Let's go ahead and summarize again:<br />
<img src="http://web.mit.edu/broder/blog/2007/09/dmx-round-2.png" alt="DMX->Some kind of processing->3 LEDs" align="middle" /></p>

<p>Now that the problem is pretty well defined, I try to start from each side and work my way inwards until I have a series of processing "blocks" that I know I can implement individually.</p>

<p>For example, the two wires in the RS-485 (the protocol that DMX uses) signal can as high as +12V or as low as -7V, but most of the chips that I work with operate with signals that are +5V for a "1" and 0V for a "0" (These are known as "TTL logic levels"). Feeding something with the levels of RS-485 will almost immediately fry the chips, so I need to convert those levels to TTL logic levels.</p>

<p><img src="http://web.mit.edu/broder/blog/2007/09/dmx-round-3.png" alt="DMX->Level converter->Some kind of processing->3 LEDs" align="middle" /></p>

<p>Now, it just so happens that I know of a component that can take in TTL level DMX signals and convert those to PWMs: a microcontroller (often abbreviated &mu;C - remember that &mu; is the Metric abbreviation for micro). A microcontroller is sort of like a miniature computer: you can write programs for it (usually in C), download them onto the chip, and either read inputs from the pins or make the pins high or low. Their processing power is roughly equivalent (or maybe slightly better) than the earliest computer that used to take up whole rooms. Since I've turned the problem into TTL signals coming in, and TTL signals going out, a microcontroller can probably take the place of that void of "Processing."</p>

<p>So, the final flowchart looks sort of like this:<br />
<img src="http://web.mit.edu/broder/blog/2007/09/dmx-round-4.png" alt="DMX->Level converter->Microcontroller->3 LEDs" align="middle" /></p>

<p>And that's the signal path. But that's a whole lot to digest for one post, so I think I'm going to stop there, and deal with the questions that I'm sure people have (because I'm terrible at explaining these sorts of things). Sometime soon I'll do another post about how you go from that flowchart to a circuit, and then to an actual working <acronym title="Printed Circuit Board">PCB</acronym>, and also deal with some of the problems I had - because it's never as simple as the flowchart makes it look!</p>

<p><small id="ref_1"><a href="#cit_1">[1]</a> (This photo was adapted from the Wikipedia article on <a href="http://en.wikipedia.org/wiki/Pulse-width_modulation">PWM</a>, and so I am obliged to release it under the <a href="http://en.wikipedia.org/wiki/GNU_Free_Documentation_License">GFDL</a>. Therefore, I also provide the source code used to generate the images - <a href="http://web.mit.edu/broder/blog/2007/09/pwm-example-1.gpl">1</a> and <a href="http://web.mit.edu/broder/blog/2007/09/pwm-example-2.gpl">2</a>)</small></p>]]></description>
         <link>http://www.mitadmissions.org/topics/life/workplay_balance_at_mit/blinky_lights.shtml</link>
         <guid>http://www.mitadmissions.org/topics/life/workplay_balance_at_mit/blinky_lights.shtml</guid>
         <category>Work/Play Balance At MIT</category>
         <pubDate>Fri, 21 Sep 2007 16:28:00 -0500</pubDate>
         <author>Evan B. &apos;10</author>
      </item>
      
   </channel>
</rss>