Graduated

So, Sunday was my college graduation. I'm now a college graduate. Wow, that's weird to write. If you're curious about we details, I hold a Bacheleor of Science in Computer Science from Harvey Mudd College with overall academic distinction and with departmental honors in two departments. Woo.

It's really weird to be done. I keep expecting that this will just be a break, that things will be back to normal soon. I'd really gotten used to things at Mudd, I was really happy there. Mudders: I already miss you. In retrospect, there are a lot of things that I should have done and didn't, and a lot of things that I did do and should have done more of. And some things, mostly of the work variety, that I could have stood to do less of. But it was still an awesome time at a great school. Rating: A+++, would study again.

You may ask what I'm doing now. Well, I'll be starting work at Yelp in a couple of weeks. For the time being, I'm hanging out in LA (technically, Calabasas) mooching off of some relatives. It's nice and relaxing but, well, it's not Mudd. I suppose I shouldn't expect that it would be... If anybody is in the area and wants to say hi in the next couple of weeks, let me know. I'll probably be in San Francisco for a couple of days soon to look at apartments. Still trying to sort that out.

By the way, this post was written on my iPad using the software keyboard and Mobile Safari. It's pretty cool.

iPad!

iPad 3G Unboxing

The universe smiles on me today: on the day that I finish all of my work for my undergraduate degree, my new iPad 3G appears. It's currently doing its initial sync (photo "optimization" takes ruddy forever, and I'm only synchronizing 3000 photos). For the time being, here are my unboxing photos.

dnsextd, TCP, and IPv6

Hello interested parties. dnsextd (in my git repository) now supports TCP. It was actually sort of an amusing bug. I guess the dnsextd code must date back to PowerPC, because it had an extra ntoh call which on little-endian systems would cause TCP requests to fail. It's fixed in the "tcp" branch of my git repository. In case you're curious as to how to get that repository, you would use the following:

% git clone //files.roguelazer.com/projects/mDNSResponder-214.git
% cd mDNSResponder-214
% git branch --track tcp origin/tcp
% git checkout tcp

If you need more setup help, Dynamic DNS: Part Two contains all the gory details. If you decide to use mDNSResponder-215 and want to apply the patches, here's a patch you can apply on top of the one from the linked post to add TCP support: dnsextd_posix-215-tcp.patch.

With TCP support comes (sorta) something useful: IPv6 support. dnsextd itself isn't well-designed to handle IPv6, since it'd be a really obnoxious refitting job to get it to listen on those other sockets and understand sockaddr_in6's and what have you. However, DNS-over-TCP can support IPv6 with the following very simple command line:

sudo nc6 -6 --continuous -lp 53 --exec "nc6 -4 localhost 53"

Is it as good a solution as actually listening on IPv6? No. Does it incur the penalty of spawning a new process on every single connection? Yes. Is it good enough for me to be happy with for playing with? Also yes. :-)

As usual, feel free to comment below or e-mail if you have any questions or concerns. Cheers.

wamupd-0.1.1

So, some news on the wamupd front. I just released version 0.1.1 (tagged as such in git; also available as a tarball at //files.roguelazer.com/projects/wamupd/wamupd-0.1.1.tar.bz2) which has a lot of new features over the prior, unnamed release.

  • wamupd now stays resident, renewing leases and such
  • It can talk to Avahi over D-BUS and pick up other services registered on the computer (sort of; it's kind of hack-ish)
  • Lots and lots and lots and lots of bug fixes

I've got ideas for the next few releases (still looking into xdg, making this behave like a real daemon, and maybe setting up a Rakefile to build a gem). Exciting times!

Sorry for the brevity of this post, but, well, coding is more interesting than writing, I'm afraid. Feel free to e-mail me or leave a comment here if there are any questions or requests you have about wamupd.

Dynamic DNS: Part Two

This post is a follow-up to Dynamic DNS

Bonjour logo

When last I left you, we had basic updateable DNS running and could update it from OS X. I've been a bit busy since then, but thanks to some prodding from @Loredo, I got back in and started looking at. What follows is the exciting story of how I got things up and running — by the end of this post, you'll have access to a working copy of dnsextd for linux, and a client application that updates SRV and IP (A/AAAA) leases. Woo.

read more

iPad Reactions

iPad

So, yesterday was the big day. The Coming of The Tablet. I'm not exactly a big tech pundit. I've never seen an iPad in person. I haven't even played with the emulator yet. But I thought I'd still post my immediate reactions.

The Name: It's not that bad. It doesn't trigger the same juvenile "feminine products" joke urge in me that that it does with all of the commentators on Slashdot. It kind of reminds me of PADDs from Star Trek, which is a good association for a high-tech device. It's better than "iSlate" would've been. I think "Apple Tablet" would've been better, but I don't know that it'd be trademarkable. Not that "iPad" is exactly easy from a trademark standpoint...

The Hardware: Looks gorgeous. ARM Cortex-A9, which is about what I figured. For you people that have never designed an ARM before: that doesn't mean that ARM designed the chip and Apple/PA Semi just slapped their design down. Given Apple's propensity for attention to detail, I'm sure they didn't just use the synthesizable core from ARM and put it in an SoC — I'm sure that they took the architectural/micro-architectural IP and built their own chip.

The non-ultranerd parts of the hardware look nice, too. People online are complaining about the bezel, but I think it looks about right. John Gruber agrees. The screen isn't OLED, but I have a Sony NWZ-X1061, and I can personally attest that the screen technology is not useful in bright light. OLEDs now are where LCDs were 10 years ago — completely transmissive (well, actually emissive in this case, but it's the same idea). Somebody somewhere will come up with a way to make transflective OLEDs like they did for LCDs, and then we'll have reasonably usable OLEDs. Then the price can come down about 90%, and Apple can put one on an iPad. Until then, a big IPS LED-backlit LCD is the way to go.

The Software Ecosystem: This is the biggest point of contention. It's true: Apple is deploying another closed ecosystem. Like the iPhone, this product will not encourage tinkering. I'm sure somebody will jailbreak it. I'm equally sure that it won't matter. I have a few different responses to this issue:

  1. It's as open as the web. Yes, you can't run native code on it without getting it through a barrage of Apple testers. You have a first-class web browser which seems to be much better at handling multiple open pages than Mobile Safari on the iPhone is. I see this as no different than WebOS or ChromeOS. Apple has no problem making useful APIs available through the browser (like Geolocation). Hell, with things like Bespin, you can even do development through the web.
  2. The iPad isn't going to replace tinkerer's computers. If I could move my parents away from full computers to iPads today, I'd do it. The safety of a managed platform far outweighs anything else, given how much important stuff people are putting on their computers nowadays and how dumb most people using computers are. Yes, I've heard the argument that without being able to tinker with the inner workings of your OS, you can't grow up to be a proper hacker. Well, I never really tinkered with the inner workings of my OS until I was old enough to buy an old desktop and put Red Hat 5.1 on it. That ability won't be going away.
  3. It doesn't matter what I (or anybody else reading this blog post, probably) think. The 3 million people that will buy iPads this year (my personal guess) don't give a crap whether or not you can deploy unsigned applications to it.

The Audience: This is going to be big. Not as big as the iPhone (at least, not right out the gate). But big. It kicks the crap out of Chrome OS and netbooks in general (the idea of a cheap netbook-level device with decent industrial design and fabrication is amazing). I'm going to want one. And you're going to want one, too.

SpamAssassin 2010 Bug

Hey all. One of the sysadmins at Mudd, Claire Connelly, pointed out that there's a widespread bug in SpamAssassin that might cause large numbers of false positives on mail sent after 2010-01-01. Apparently, the "date in future" rule is hardcoded to look for years after 2010. You can read more at LWN; the short of it is that you probably want to add the following to your SpamAssassin config:

score FH_DATE_PAST_20XX 0.0

sa-update may or may not be pulling down updated rules. You can find the relevant bug at the SpamAssassin Bugzilla (#5852). Anyhow, something fun to be aware of.

Happy 2010.

Job Search: Complete

This post is a follow-up to Real-Life Update

Yelp Logo

Well, it was brief but exhausting. My job search has now come to a close. I interviewed at a large number of companies, got offers from a smaller number, and accepted an offer from Yelp. I'll be starting in June on the Infrastructure team, doing something between software engineering and system administration. Which sounds, you know, awesome.

For the unaware, Yelp is a local search company based out of San Francisco, CA. They've got a pretty large userbase, and lots of views, and, in general, interesting problems to work on. There's already a Mudder there. Plus, it's a really small company. Should be a great atmosphere to work in coming out of Mudd's tight-knit community. And, of course, San Francisco is an awesome city.

read more

*nix Tip of the Day: Dynamic DNS

Bonjour logo

It's nice to have DNS records for all of your computers. It's a giant pain in the ass to remember IP addresses, especially if you're on something like a cable connection, where the IP address is dynamic (but only changes every month or two). Now, you could go ahead and use DynDNS or No-IP or something. But those are lame. You have to use a subdomain of one of their domains, and you have to use their software to update. You might be wondering if there's a better way. Well, there is. Standard DNS supports updating, it turns out. In BIND, this is managed through the allow-update parameter. I had some free time this week after I finished finals, so I went ahead and set it up, along with the other trimmings required for Wide-Area Bonjour. It's cool, so I thought I'd post a bit.

The most important resource for all of this stuff is dns-sd.org. Aside from a couple of minor errors that I corrected and an update for OS X 10.5+, this Tip will be based off of the guides from that site. So credit to them.

read more