When I first arrived at MIT in 2010, I was awed by how much computing infrastructure was readily available. Dorm rooms had 100 megabit internet connections, the at-the-time latest 802.11n Wi-Fi blanketed campus, and setting up a website took a few clicks. The most amazing part was that if you needed a service that MIT's Information Systems & Technology (IS&T) didn't officially provide, you could…
I've always heard stories about nasty Android malware that throws full-screen advertisements at inopportune times, but I'd never seen it myself until a family member handed me their Galaxy Note 5. The malware certainly exits, it triggers in any application and shows a full-screen advertisement, probably in a WebView. The recent applications list shows no identifying marks, and trying to switch to…
As soon as Rust 1.0 Alpha 2 was released, I downloaded the release and sat down to finally play with Rust. With the final release of 1.0 on the horizon, I decided that the language was finally mature enough to try writing some real code. My first test of the language would be to try to implement a program with deep UNIX heritage: a shell. Writing a shell exercises a lot in a language — string…
Last week, I found myself trying to update the software on a server that was still running Red Hat Enterprise Linux 5. My goal was to run an ASAN build of zephyrd, the Zephyr server to catch a heap corruption bug. ASAN is a feature of the clang compiler, which unfortunately wasn't available. RHEL5, as well as the free derivative distributions that offer compatibility, was first released in 2007…
systemd, to some Linux users, is a curse word. Dramatic change always is. I was quite excited when it was first announced; features like proper dependency ordering and using cgroups to track service status meant I wouldn't have to write complex shell scripts for sysvinit. I even went out of my way to port the legacy boot scripts I had to systemd service units when I installed a Fedora 15 server.…
We've all been there---a code base so horrible the only coherent thought is "This has to be re-written. Now. It's beyond saving." One of those days where you find yourself staring at your favorite text editor wishing you were instead reading The Daily WTF or that this is all just a dream. But alas, it's real. Unfortunately, rewriting this component is just the tip of the yak stack. Due to legacy…
"We just passed 10 years of cumulative uptime!" an XVM maintainer announced, celebrating how reliable the 8 servers that power the SIPB XVM Virtual Machine Service have been. Just an hour later, at 4:38 PM, Nagios alerted " Host DOWN PROBLEM alert for xvm! " xvm.mit.edu is a virtual machine running on the XVM hosts itself, tasked with running the web interface, DNS, and DHCP server for the…
Every year, hundreds of prospective students come to MIT for Campus Preview Weekend , to explore the campus and learn what life is like. Departments, living groups, dorms, and even student groups all put on events to demonstrate all of the awesome things that happen at MIT. SIPB decided that, in addition to our normal events of the fsck and inode block party, the Everything You Wanted To Know…
A few days ago, I was installing a Fedora 18 on a brand-new machine, which had two 1TB SATA hard drives which I wanted to put into a RAID1 (mirroring) configuration. mdadm makes managing software RAID on Linux easy, and the Fedora Installer (anaconda) has always had extremely powerful tools for setting up a RAID. Anaconda also supports Logical Volume Manager (LVM), which is part of the recommended…
On Linux and other UNIX system, a domain name is translated to an IP address using the resolver(3) family of functions. Usually, these are provided by libresolv , but on some systems are available directly in libc . Over the last couple of days, I've been working to overhaul the code for Hesiod , a system for querying users, groups, and other useful information information in a networked computer…
Today, at around 2:30 PM EST, Scripts went down. For most MIT students, this means a few class websites are inaccessible, a few friends' blogs are down, and web development is a bit annoying. For me, it means panic mode . I'm a member of the Scripts Maintainer Team, so the availability and security of the service is my responsibility. The MIT network has been particularly unreliable recently,…
Most of the time when programmers write code, they're writing in userspace. This "normal" code doesn't have to worry about the underlying hardware, it interacts with the operating system's abstractions only. I'm currently taking 6.828 Operating System Engineering , which teaches how to write a 32-bit multitasking operating system, using the exokernel design, for the Intel x86 platform. This means…