Another Killer App
While writing the previous post, I thought that Remote Desktop would be the killer iPhone app, but now I've changed my mind. The new killer app is SSHD. Why would an SSH server on a phone be a killer app? Who cares about remotely logging in to their phone's command line?
The answer is that SSHD can apparently run a full SOCKS proxy server with the -D command. Using that, it's possible to use the phone's cellular internet connection on your computer. The setup looks like this:
Yesterday my Comcast connection went down (stupid Comcast), so I had to try it out in order to get back online and get my Dancing Matt fix. It worked surprisingly well - it wasn't really obvious that I was using a phone connection, except that the speeds were pretty slow.
I ran a speed test on the bandwidth, and these were the results:
208 kbps is not that bad by modern standards, and it definitely works if your main ISP connection goes down, or if you're stuck at a wedding with no WiFi.
If coverage is good, a 3G iPhone would probably be significantly better. If you need to save cash it might even be fast enough to use as your main home ISP. Hmm..
Expired Warranty
So this week all of the iPhone 2G warranties expired, at least for the people who bought them during the first week. To commemorate the occasion I decided to jailbreak my phone in order to see what all the fuss is about.
Previously, I had decided not to jailbreak since I was afraid that Apple would refuse to replace my phone if the touchscreen or other features broke (as happened to about 50% of the people I know with iPhones). Now that the warranty has expired, that's not much of a concern any more. I also figured that if my phone got screwed up, I could always upgrade to a 3G model next week anyway.
Now that I have jailbroken it, I must say that I can't believe I didn't do this a long time ago. It doesn't seem to mess up the phone at all, at least if you aren't running any custom apps. But the custom apps are completely awesome. These are what a phone with these hardware capabilities was meant to run. It's too bad that Apple's official SDK is so limited and constrained - most of the cool apps will never be allowed by Apple.
I've just gotten started trying out all the apps, but I've already found several cool ones:
Rockin' the Terminal. I booted up vi but quickly realized that that was a stupid idea when you don't have a real keyboard or Ctrl and Esc keys.
Remote Desktop is probably the killer app so far. Now I can log into my home computer and use it no matter where I am in the world (with cellular or WiFi access, of course). You'd think it would be impossible to use on the small phone screen, but with multitouch zooming and panning it actually isn't too bad.
I haven't even gotten to the 'Games' section yet, but I have definitely heard good things about the NES emulator. This should be sweet..
Stocking Up
Less than one week left!
Now I'm starting to wonder: will three extra copies be enough?
2 Years
So as a follow up to the 1 Year stats post, here are a bunch of stats to celebrate 2 years of efaller.com. These are the stats from the last year of web visitors to the site (which does not include RSS readers).
Daily Pageviews
There were an average of 225 pageviews per day, a 12.5% growth YOY but still not enough to make money with AdSense :(.
Browser/OS Combinations
This year IE/Windows increased its share from 54% to 57%, Firefox/Windows increased from 30% to 31%, and Firefox/Mac increased from 4.1% to 4.8%. The biggest loser was Safari/Mac which fell from 7.3% to 3.4%. Linux (all browsers) stayed pretty constant at 0.87%.
Search Engine Keyword Hits
In this year's search engine results I was finally able to overcome the end of false religion is near with searches for my name. The results also reveal growing interest in the zeitgeist with iPhones, GTI iPods, and broken Rock Band drum pedals.
Bugs, cereal bugs and bugs in cereal also made a big showing, and if combined would beat out searches for me.
Another interesting hit is 8bf3a13b - people are still searching for this, and I'm surprised that the answer hasn't been widely posted on the web yet.
Referrers
In the referring sites competition Google dominated all comers, but Simon made a strong second place showing:
1.21 Gigawatts
Cool thing of the day: somebody in my building has a De Lorean and actually drives it to work every day:
Still Married
When I got my new car a couple of years ago I didn't get rid of my old car right away, so I had to add the new one on to my existing car insurance policy. A couple weeks later I went to remove my old car from the policy, but the insurance salesperson said that there was "something wrong with the computer," because my new premium would be much higher after taking off the second car.
After I waited on hold for a while, she came back on and said she had found the problem: "With two cars, you're getting the married rate, but if you go down to only one car on your policy, then you're a single male so you would get a much higher rate." I found that sort of amusing, and decided not to take the car off of my policy. Ever since then, I've been insuring two cars.
Last week I turned 25, so today I went to the office to see if I could get a lower car insurance rate. Supposedly 25 is the "magical" age when you suddenly become much less likely to get in a car accident.
I inquired about removing my old car from the policy, but again discovered that this would increase my rate. This time I was able to get some specific numbers:
Cost to insure '84 Buick + '06 GTI: $277 + $560 = $837
Cost to insure just '06 GTI: $945
It's interesting to see that insuring a 2006 GTI costs 68% more if you're single than if you're "married." Apparently getting married is yet another way to instantly transform yourself into someone much less likely to get into an accident. The best part is that you don't even have to bother with the hassle of a wife: you just have to buy another car.
Now I'm wondering: could I reduce my insurance costs even further by adding a third car? I suspect not: clearly if I had three cars then I must have had a kid, and we all know how dangerous kids are..
Whole Foods vs. Safeway
Co-worker claim: Whole Foods is more expensive than Safeway.
Justification: They rip you off just because they can, and people are dumb enough to pay the higher prices.
My claim: That's BS! Their prices should be exactly the same.
Justification: This is what logical theory says. It's called Econ 101.
How to resolve this conflict? By doing an experiment, of course!
Here are my results from walking around in Whole Foods and Safeway with my camera-phone. I randomly chose different classes of foods, found products that were in both stores, and took pictures:
So what's the conclusion from all this? Averaging all of these products, Safeway is 4.3% more expensive than Whole Foods.
Result: We were both wrong. FAIL.
Netflix Bandwidth
A random thought experiment that just popped into my head: what's the bandwidth of my Netflix "connection"?
Let's assume that Netflix mails me 3 DVDs per week, each of which is just a plain old single-sided single-layer disc with a movie on it. The bandwidth should be:
The result surprised me: the bandwidth is 187 kbps! It's also sustained, full-duplex, and at 100% utilization (assuming I watch all the way through all the movies). The "download" speed is comparable to a low-end ISDN connection in the US. Switching to HD-DVD Blu-Ray would increase the bandwidth to 992 kbps, in which case the "upload" speed would actually be higher than my upload speed on my Comcast connection.
Of course, with an average latency of 2.3 days (201600000 ms), it would be pretty much impossible to run a protocol like TCP on it (unless the timeouts were really, really high). Just to begin downloading a simple HTML page would probably take several weeks, due to the SYN/ACK handshaking of the DNS and HTTP transactions..
Update 3/18: Fixed math error. Thanks Simon!
Yoda Head
My Yoda pez-dispenser at work got into a fight with a Darth Vader dispenser. Unfortunately he lost..
TransparentMaker
Sko commented on the last post inquiring about a program I had a long time ago which allowed you to make various windows on your desktop transparent. It was an old-school Windows 2000 program I wrote to try out the fancy new WS_EX_LAYERED styles in Win2K:
You could drag the cursor over a target window and adjust its transparency or make it 'always-on-top':
It's extremely simple but it was pretty cool back in the day. I just tried it out and it still seems to work for the most part, but not as well on newer versions of Windows like Vista, due to the increased security that prevents processes from messing with each other.
An interesting unintended use of the program was that it could be used to discover saved passwords in '******' textboxes, since it displayed the result of WM_GETTEXT as you dragged the cursor over various HWNDs. Fortunately they seem to have fixed that vulnerability in XP+.
Anyway, here's a link to download it:
Windows Updated
For the final project in a class I am taking we had to build a web-based disk storage system with a REST XML API, basically like Amazon S3 but at much smaller scale. The assignment was pretty cool because it was very open-ended: our servers just had to register their URLs with the professor's server and allow him to store data blocks. How we actually did it (OS, language, etc) was completely up to us.
I decided to just run my server on a computer at home, which is what most people did. I figured it would work out fine. My biggest worry was that Comcast would block a port or go down and screw me over. Fortunately that didn't happen, but there were other problems.
For about two weeks my server ran perfectly with 100% uptime, but the professor only started monitoring uptime and availability this Tuesday. Of course, on Tuesday afternoon there was a power outage at home, and my computer didn't turn back on until I got home from work and found it. I have my main computer hooked up to a UPS so it didn't go down, but the other computer was running in a closet with no UPS. Lesson learned: always have a battery backup when homework points are at stake. Also, set all computers to reboot themselves automatically after a power loss.
After I booted it back up I figured it was OK and went to bed. Of course, this happened to be the second Tuesday of the month, so Windows Update downloaded a bunch of patches overnight and rebooted, taking out the server. My process failed to start on reboot, so I had another outage all night. Normally I always set updates to "notify only" and never "automatic", but in this one case I left it on automatic, figuring that it wouldn't matter too much since it was a closet-computer that I wouldn't even log into regularly. Lesson learned: never ever ever leave the updates on automatic, they'll always find a way to screw you at the wrong time. Also, test to make sure the service comes back up properly after a reboot.
Larger-scale, I guess I learned about the importance of having geographically distributed datacenters and automatic failover, but that wasn't really a practical option in this case.
Fortunately most of the other students in the class also suffered outages as well (see graph above), so I don't think my grade will be impacted too much.
BenderCam
I was updating the links on the ol' resume page and realized that I didn't have a page about any EE stuff, so I decided to write one up.
My final EE project in undergrad was to build an embedded computer system from scratch, and my team decided to build a digital video camera, called "BenderCam" (Bender didn't really have anything to do with anything, other than that one guy just really liked Futurama).
Here's a picture of the final system:
The circuit board on the left has the main CPU circuit, which was composed of a Motorola 68HC11 microcontroller, a 32K ROM with the system software, 32K of runtime RAM, and 512K of auxiliary VRAM. It also has a Spartan II FPGA with some DACs that ran the VGA interface, as well as the RS-232 serial interface to a computer workstation. It's connected via an old IDE cable to the second circuit board on the right that has the CCD video sensor and another FPGA to drive the video capture.
Here's a picture of the back of the main board:
This was mostly hand wired by me, which almost caused me to go crazy since every wire had to be perfect or else the chips could all fry. The wires at the top are for the CPU and its two 16-bit buses, and the nasty mess at the bottom is the 24-bit buses for the VRAM double-buffer. If I had to do it all again I would almost certainly go with a PCB rather than hand-wiring the whole thing.
The system captured 640x480 video in black & white (we used a CCD sensor from a security camera) and displayed it on a VGA monitor. After some tricky optimizations in the firmware, I was able to get the framerate up to about 15 frames per second, though the bandwidth at that rate was too high for the hand-wiring to handle, and EM interference started to introduce random bit errors into the video stream. Here's a picture of it taking a video of us taking a picture of it:
The CCD sensor is the thing with the electrical tape all over it, to prevent light from leaking in. On top it has a lens that we cracked out of an old dead cellphone (high quality all around).
The microcontroller also hooked up to a computer via a serial connection which could be used to download new firmware as we were debugging it, as well as upload pictures back to the computer. The connection was only 56 kbps so it could transfer about one frame every 10 seconds. Here's the software after it has taken a picture of us and some random dude who jumped into the picture:
The random white and black pixels in the image are examples of the bit errors that happened at high speeds. The "washed out" vertical lines near the ceiling lights were caused by excess capacitive charge building up on the DAC, which could be easily temporarily fixed by licking your finger and using it to short out the DAC's voltage supply line.
CampusChat
Today while going through some old files I found an old program I wrote back in college for a Microsoft-sponsored programming contest. Microsoft was doing a big marketing push for the newly-released .NET Framework and C#, so they sponsored programming contests at various universities to promote it (hook 'em while they're young? cough). I ended up winning an original Xbox, which was also new and cool at the time. Somewhat ironically, there was a guy from Sun Microsystems at the contest who saw my program and got me a part time job there working on Solaris.
The point of the contest was to write an application that would be useful for the university, so I decided to write an instant-messaging system called CampusChat. At the time the university had no global IM system that students could use to communicate with TAs and professors, or find and collaborate with other students. My ultimate goal would have been to create a grand, unified online environment like Project Athena at MIT, but I only had a couple of months so I went with IM.
It also allowed me to finally 'correct' all of the horrible (perceived) flaws in the corporate IM systems of the day (namely AIM, MSN and Yahoo). These flaws were:
- The IM servers were centralized and under the control of one corporation; people could not run their own servers.
- The IM client software contained advertisements that had to be hacked out of the executables.
- IM sessions were not encrypted on the wire, so your dorm-neighbors and ISPs could read all the messages (this has been mostly corrected these days, thankfully).
- IM sessions were not encrypted end-to-end, so the IM provider could read all your messages (this is still not fixed today..).
- Trust and authentication were ad-hoc, with no method to determine who you were actually talking to.
- There was no way to tell if the person you were talking to had actually received your recent IMs or had become disconnected (extremely annoying back in the dial-up days).
- You didn't know if the other person was in the middle of typing a message to you or not.
- Other users would often select horrible, ugly fonts that you could not override.
- The customizability of your own font and UI themes were very limited.
- There was no plugin architecture that you could use build apps on top of the IM system's authentication and communication layers.
The (arguably) largest flaw of the corporate IM systems was that they weren't interoperable with each other at the time, and by creating my own IM system I was admittedly making that problem even worse (open protocols like Jabber and SIP did not really exist yet).
I based CampusChat around Kerberos 5, which is a distributed authentication system that can be used for secure client-to-client communication using strong encryption. All of the IT infrastructure at the University of Colorado was based on Kerberos 5, so every student and faculty member already had Kerberos IDs, which were their usernames and passwords. It was also integrated into Windows 2000+, so if you were logged into a computer with your university username, CampusChat automatically grabbed your credentials from your login session and you didn't have to type in your password again.
Kerberos allowed for the encryption and mutual authentication of individual IM sessions between users, so that you knew exactly who you were talking to, and nobody along the wire (even the IM server itself) could read the communications. I realized later that since Kerberos is based on having a trusted third party generate the symmetric keys (rather than using public-key methods), its entire security rests with the "trusted third party" – in this case the university IT department, which was arguably nothing of the sort (as far as us Computer Science students were concerned). A malicious Kerberos server could have ruined the entire security scheme.
Once you logged into a CampusChat server, the main 'Buddy List' window looked like one of these (all screenshots are using the 'chess' theme):
The screen on the left is of a server in "community mode", where users can see all of the other people who are logged into the same server and the public chat rooms that are available. This mode was designed for individual classes or departments – a professor could set up a server for his/her students to use for collaboration, allowing students to find each other and their TAs during 'virtual office hours'. This mode is contrasted with 'classic mode', which is on the right, and behaves just like AIM or MSN, where you have lists of 'buddies' that you maintain, and you can only see the online status of the people you have explicitly added. This mode was designed more for university-wide servers which everyone could log into at once. The controls on the bottom allow you to add buddies and create public or private chat rooms. The blue slider at the bottom of the window allowed you to adjust the transparency of the window and set it to be "always on top".
IM windows look like this:
The first thing they do is initialize a secure encrypted connection with the other user. At the bottom of the window the status bar lets you know that all of your IMs have been received by the other party (or it lists the number of outstanding messages for which an ACK has not been received). It also tells you if the other person is currently typing, and has the transparency-slider control. The "Direct TCP connection" button allows you to establish a direct connection to the other user, in order to cut out the IM server from the conversation (for speed, as well as to prevent malicious servers from logging the timing and frequency of your messages).
The Text Settings dialog allows you complete control over all of your text. You can use any CSS styles you want on your text, and you are also given the ability to override your conversation partner's CSS text styles if you don't like them. For example, if you were to use the CSS string "text-align: right; background-image: url(http://www.google.com/images/logo.gif);", you would get this:
CampusChat also supports Unicode (natively, since it is written in C# and Managed C++), which allows you to converse in any language (AIM was infamous at the time for not supporting Unicode):
Multi-user chat windows are pretty similar to IM windows, though users have less control over various settings:
CampusChat supported an extensive plugin API, which you could use to modify the base client software and build your own applications on top of the secure connection. It just required implementing a specific C# interface and plopping your DLL into a specific folder. Complete .NET objects could be easily sent between clients using simple function calls (they were serialized to binary form, compressed, encrypted, and sent out automatically).
To keep things simple, I implemented a lot of CampusChat functionality as plugins, such as file-transfer, away-messages, directory lookups, speech recognition, and text-to-speech. The away-message functionality was particularly cool because you could write your own away-message provider that allowed all kinds of fancy logic about which specific people to send the messages to, different messages for different people, and so on. To demonstrate the flexibility and power of the API I also created a full-featured chess game as a plugin (only requiring a couple hundred lines of code):
Alas, in the end CampusChat died a death of neglect after the programming contest and was never widely adopted at the university. It still works great, but you can only use it if you have a valid Kerberos 5 account on some domain, which I no longer do. I've uploaded the ZIP file here for posterity:
10,000 miles
My car recently hit 10,000 miles, so I took it into the dealer for a service checkup. I took it to the dealer where I bought it, which unfortunately is on the complete other side of Seattle, and it can take about an hour to get there during rush hour, which is a huge pain.
When I dropped it off in the morning, the service guys were extremely friendly, but almost suspiciously so, which was kind of weird. They told me it would be ready by 5:00 PM. I arrived right at 5:00 expecting to pick up the car, but they didn't have it ready. My suspicion is that they hadn't even started on it until I showed up, because I had to wait another two hours to get it, and it certainly doesn't take two hours to change the oil, rotate the tires, and check a few things.
While I was waiting they tried to be extremely nice about it, apologizing profusely for the delays. At the end I finally learned why - they offered to give me a "free oil change" coupon as long as I "said good things" about them when Volkswagen Corporate called me to ask how the service went. I muttered some sort of "OK" and went on my way. I think it's the first time somebody has tried to bribe me in a real-world situation, which is sort of interesting (I don't count homework-bribes in school under this category).
When Volkswagen called I told them what happened, and the guy on the phone sounded displeased and insisted that they would "rectify the situation". My guess is that this dealership has been getting bad reviews (apparently for good reason), and Volkswagen has been getting on their case. I'm not sure if my complaint was anonymous or if they can trace it back to me, but I probably won't be going back to that dealership again anyway, mainly since it is so far away and inconvenient. I honestly expect to get bad service pretty much wherever I go, so I'm honestly not too displeased about that.
No Candy
The best part about Valentine's Day is always going and stocking up on super-cheap 70%-off candy afterwards. Apparently the 17th is too late to do that, because today when I went to Target all the candy was already gone :(.
Server noise
Unfortunately, after a couple of months of operation, my Windows Home Server has started to make a lot of noise. The case fans were always pretty loud, but now the hard disk has started making a high-pitched whining noise. Normally this wouldn't be too annoying since you could eventually get used to it, but the noises fluctuate in pitch at seemingly random intervals. This is irritating since you can't habituate to it and ignore it.
My first thought was to put it in the garage with a little Linksys WiFi bridge:
This worked pretty well and it certainly took care of the noise problem. Unfortunately it was a little far away from the AP, so the wireless connection went out every once in a while when doing things like using the microwave. It wouldn't normally really be noticeable, but it interrupted things like streaming music to the Squeezebox.
Another problem with the garage setup was that an outlet shortage forced me to run a power extension cable across the ceiling on a water pipe, right next to a fire sprinkler:
This was a disaster waiting to happen in more ways than one, and it also irked my inner-Electrical Engineer.
Now I'm trying a new solution, which is to stick the server in the laundry closet. This looks like it's working better so far (it's also a lot closer to the AP), but I'm waiting to see if it might overheat the closet or computer when the dryer is running.
Speed Dating
So this evening I went to the grad student "speed dating" event at UW. It was not really what I was expecting, but it was still interesting nonetheless.
Before it started they announced that many more women signed up than men. This sounded like a good thing, but it didn't end up mattering since we didn't get through even half of the people.
It was set in a large room with long folding tables laid out in parallel. There were 20 men on each side and 20 women on the other side. Here's a rough mspaint rendering:
You were given 3 minutes to talk to the person across from you, at the end of which the women would stand up and shift down one place, looping around to the other end of the table. After you got through everybody at the table, there was a 5 minute break and then the females would all move to the next table (in theory at least).
This process worked well at first. When the bell rang, everyone would stand up and then all shift down one seat simultaneously. This broke down pretty quickly and eventually people were only moving one at a time, leading to a "bubbling" effect where people could not move until everybody else at the table had shifted down one, which often took more than a minute, cutting into the 3 minute period. As people tried to "make up" the lost time the problem just got worse and worse.
Unfortunately it seemed that the organizers of the event did not book the room for enough time, and we were only able to get through two "rounds". So while there were 180 girls there, I only met 40 of them.
On the tables were scattered "valentines" where you could write down your email address and give it to the other person if you were interested in them. The organizers did not describe the protocol for using the valentines (guy always offers his contact info first (or vice versa), guy asks girl for her contact info, etc), so it led to a bit of chaos as people didn't know what to do. The main problem with the system was that it was both awkward to ask the other person for their info, as well as offer your info to them. Shy people such as myself had difficulty doing either.
Other speed dating protocols don't allow communication between the two parties during the "dates", and participants fill out a list of people who they were interested in. When there's a mutual match, contact info is sent to both people. This seems like a much better system, at least for small groups of people where you can remember who the other people were. After meeting 40 or 180 people, I would have trouble remembering who was who, so that kind of system might not have worked too well unless you filled out the list as you went along.
During the 40 "dates" there were some good ones and some bad ones (most were just sort of awkward since it was obvious it wasn't a good match). Here are some examples of the ones that didn't go so well:
Her: So what are you studying?
Me: Computer Science.
Her: Ah, are you a hacker?
Me: Um, no.. not really.
Her: 'cause hacking is cool.
Me: Well it's not really as glamorous as it is in movies.
Her: Still it seems like it would be a lot of fun.
Me: You mean, like snooping on people's email?
Her: You can snoop on people's email???
Me: No, no, I don't do that.
Her: Why would you do that??
Me: Well if you were a hacker that's one of the things you would be doing.
Her: I'm not giving you my email address!
Me: No, no, I'm not saying I'm a hacker. I... uhh.. never mind.
Her: So what do you like to do in your free time?
Me: Uh, well I like to read-
Her: Ugh I hate reading.
Me: So what do you like to do?
Her: I like to drink.
Me: Like in bars?
Her: Yeah or clubs, wherever there's lots of alcohol.
Me: uh..
Me: ...
Me: Hmm, so 3 minutes is actually sort of a long time isn't it?
Me: So what do you like to do?
Her: I like to hang out with my ex-boyfriend a lot.
Me: Ah.
Her: He's like really the only friend I have.
Me: Uh huh.
Her: That's probably a weird thing to admit at this sort of thing, right?
Me: Yeah it is kind of a weird thing to bring up.
Her: Yeah I probably shouldn't bring that up.
Me: ...
Her: Wow, so you actually have like a real job!
Her: You probably have so much more money than everyone at this table!
Me: Uhh... Hmm well if they are all full-time graduate students, then yes I guess that is probably correct. But I don't mean to-
Her: Just like in terms of per-hour, you're worth so much more than us!
Her: Did you know that the average grad student only makes $13,000 per year?
Me: That sounds about right, I guess I didn't know the exact figure.
Her: That's as much as a McDonald's worker makes!
Me: Uh-huh.. yeah.. So how about that weather eh?
Her: Man it must be cool to have a real job.
Me: ...
Her: So how old are you?
Me: I'm 24.
Her: Wow, everyone here is really young. How old do I look?
Me: Uh, well I'm not really that good at guessing that sort of thing..
Her: No no you have to tell me! I want to know.
Me: Uh... 30?
Her: Ah how nice of you. I'm really 35.
Me: Ah... well.. yeah..
Ghost
At work a co-worker got upgraded to a window office across the hall from me, so we naturally had to rig up an office-warming surprise for him.
The shut door looks innocent enough..
.. until you open it and a ghost pops up to scare you!
The idea was that opening the door quickly would cause the Angel of Death to pop up from the shadows and startle the victim. The bright yellow network cable probably looked suspicious as the door was opening up, but we had to make do with the supplies in the office.
Unfortunately, the prank was not a huge success and didn't really scare anybody, as you can see in the YouTube video below. We tried it out on various other co-workers and got similarly underwhelming reactions.
Hmm
I saw this in a university newsletter spam today:
If you’re SINGLE and want a “special” Valentines Day – Join us for a night of Graduate student SPEED DATING. Just in time for Valentine's Day! Come meet fellow single graduate students!
Who: Current single UW graduate students
What: Speed Dating
When: [redacted]
Where: [redacted]
Please RSVP to [redacted] to let us know if you are coming. (The sooner you respond, the better your chance of getting a seat!). If you feel comfortable please also let us know what table type you would like to be assigned to. There will be four tables to choose from: straight, gay, lesbian, and bisexual.
Note: this event is only open to UW graduate students; IDs will be checked at the door.
My initial reaction is "Ha, like that would ever work. Delete.", but on second thought I'm actually considering it, if for no better reason than curiosity. I have never been to one of these kinds of things - anyone have any idea what they are like? The Wikipedia page actually makes it sound somewhat interesting.
Being an engineer I naturally started trying to do a CBA on it, but the usual approaches aren't working too well. Here's what I have so far:
Pros:
- Pool restricted to just girls who are single.
- Potentially lower awkwardness/expectation levels.
- They're graduate students, so at least some level of intelligence-filtering has already been performed.
Cons:
- Potential for embarrassment.
- Speed-dating == speed-rejection? [see: personal phobias]
- Mail does not say whether free food is provided.
Rent Increase
After last year's experience of having my rent raised on me by more than $100 per month for two years in a row, I decided to try mitigating the problem by only signing a 9-month lease. I wanted to move my lease renewal period from June to March/February, in order to hopefully lock in low rental rates during the winter. My hypothesis was that June is a bad time to sign a lease due to all of the college kids who just graduated and are starting new jobs at that point, thus creating increased demand for apartments. In my area there's also a large influx of summer-only interns that work for nearby tech companies. The traditional wisdom is that all of these hundreds of interns fill up all the available apartments and cause rents to be higher over the summer. I haven't seen any data that actually backs up this idea, but it seems plausible.
Today I got my lease renewal offer from my apartment manager and I was "pleased" to find out that my rent is only increasing $40 per month for this year, which is much less than in previous years and within the 2%-4% "move out threshold" that I established last year. I want to attribute this "success" to my plan described above, but in all reality it probably has much more to do with the plummeting housing market in Seattle than anything else.
As far as I can tell, there are two schools of thought about the relationship between apartment rents and housing prices:
- The "traditional" model says that rents and prices are tightly linked to each other, and the economy as a whole. If house prices go down, then rents should also go down because there's less money flowing around. Similarly they should both go up at the same time as well. This model seems to have matched the last few years, as both housing prices and apartment rents have climbed to ridiculously high levels.
- The "bubble" model suggests that when a housing bubble "pops", as seems to be happening right now, then rents should actually increase as housing prices decrease since all of the people who would have been buying houses are now forced into renting apartments due to the credit crunch, which increases renting costs everywhere due to increased competition. Similar logic would also seem to imply that rents should decrease or level off during a housing boom, since lots of renters are moving out and buying houses.
The fact that my rent is still going up even though local housing prices are declining seems to indicate that neither theory is totally correct (or as often seems to be the case, reality is just more complicated).
It may also be related to the fact that Microsoft keeps hiring 10,000 new people every year. Any theory is going to predict that local prices are going to be rising in that scenario...
RAM Upgrade
One of the problems with the HP MediaSmart windows home server is that it only comes with 512 MB of RAM by default. This is probably sufficient for a file server, but it gets pretty slow when you load it up with other stuff and try browsing the web. Here's my Task Manager results after two weeks of normal usage:
The way to check if your computer doesn't have enough RAM is to compare the Physical Memory and Commit Charge numbers. In this case, the server has 512 MB of RAM (Physical Memory = 490956 K), but the operating system has currently allocated about 545 MB of memory (Commit Charge = 558872 K), which means that it's 6.5% over-allocated even when it's idle and doing nothing.
The 'Peak' Commit Charge reflects the heaviest usage the system has seen since it was booted, which probably happened when I was using Firefox. In this case it was about 753 MB (770832 K), or 241 MB (47%) over-allocated. When this happens the system grinds to a halt as it tries to move unused blocks of memory to the hard disk in order to keep the 'Available' physical memory (98672 K here) high enough for programs to run smoothly. These are the kinds of slowdowns we want to avoid since they are the ones that happen when you are actually trying to use the computer.
Fortunately these days RAM is cheap and a 2GB stick can be had on NewEgg for only $50, which should be more than enough for the foreseeable future. I was surprised at how easy it is to upgrade the RAM in the HP server - it just required removing a couple of screws and sliding the motherboard out of the bottom of the case:
With the new RAM the system is running a lot faster, but the bottleneck is now the relatively weak 1.8 GHz AMD Sempron processor, which doesn't appear to be readily upgradeable. One of the reasons to go with a Sempron is the power/heat savings, so it's probably an acceptable tradeoff at this point.
Broken Rock Band pedal
The excitement of New Year's Eve got a little out of hand.
Dead cable modem
While I was gone on my brief Christmas vacation over the last week, my computer back at home disappeared from the internet - the IP address did not respond to any connection attempts at all.
Naturally I feared the worst, namely that some thieves broke into my apartment and stole all my stuff, or something like that. Fortunately, when I got home I discovered that the cable modem had simply stopped working, and everything else was fine.
There may have been a power outage or some other electrical anomaly while I was gone, because the cable modem seemed to be fried. When I plugged it in, all the LED lights turned on but it didn't seem to do anything else. I searched around on the internet but couldn't really determine what these symptoms meant, or how to fix the problem (for the reference of anybody searching for the same thing in the future, it's a Terayon TJ 715x cable modem).
What happened next was the most amazing thing I have experienced all week. I thought for sure that I would have to call Comcast, argue with them ("yes, I tried rebooting the computer.."), make an appointment for two weeks in the future, which they would be late for, causing me to miss work, etc. (being without internet access the whole time, of course).
What actually happened was that I called Comcast, immediately got a real person on the other end, explained the problem, and got a maintenance appointment scheduled for "right away". A half hour later, the guy showed up, swapped out my modem with a new one, and now everything works again. In total, it took about 45 minutes.
So I am pleasantly surprised that Comcast had such good customer service and I was able to get the problem fixed so quickly. Of course, this doesn't excuse them blocking our, uh, bible, downloads, but there has definitely been a lot of improvement since my last encounter with them.
UW Grading System
This week I got the grade for my Data Compression class and was somewhat surprised at the format. From my undergrad experience I was expecting it to be in the usual A, B, C format, but instead I got a "3.9" grade.
I looked up the University of Washington's grading system, which is apparently number-based and on the same scale as the GPA system. So 3.9-4.0s are "A equivalents", 3.5-3.8s are "A-"s, 3.2-3.4s are "B+"s, etc..
I'm a bit torn on my evaluation of the merits of this system. On one hand, it's much more fine-grained than the lettering system, and you can distinguish between students who worked really hard and got perfect scores on everything, and other students who just did the work required to get an A. The letter grade system doesn't really distinguish between people to that degree, until you start using the plus/minus quantifiers to the letters, at which point you've basically admitted that just using the letters doesn't quite cover all the information you need to convey. It seems that UW has solved that problem by just throwing away the letter system and replacing it with the number system.
On the other hand, I'm sort of miffed by this, because after all these years of school, it's become very ingrained in my mind that an A == 4.0 GPA. Now I have an "A", but my GPA is 3.9, which in my mind means "dang, screwed up and got a B in 1 out of 10 classes." Of course, in reality, a 3.9 is a perfectly fine grade and probably nobody will ever care anyway (how much to MBA/PhD programs care about GPAs? I am not really sure.. hrmm..). Still, grr :).
Now that I know how the system works, I can accommodate it if I decide I really need that 4.0 (which, honestly, I probably don't).