Diary moved to my web log…
I recently set up my own IMAP server at home so I don't end up with all of my mail on my laptop, the loss of which would make me rather sad.
In the process, I started using junkfilter. I enjoy using junkfilter. It's spiffy. Thank you, Mr. Sutter.
Well, I haven't posted since Burning Man, which is pretty lame. Quick summary of whassup since then:
Burning Man was awesome. Unlike the prior year, this year featured fairly warm nights, which made for a far more comfortable atmosphere. They days were bloody hot, but that's normal, I guess. If you go next year, I strongly suggest volunteering; it's absolutely worthwhile. I worked as a Ranger, which was great, and with Playa Information, where you spend the hot day sitting in a shady place when you still get to meet and talk with people because they come to you. It's a good deal.
ApacheCon Dublin didn't happen, which was a major bummer.
I finally got an electric pump for the big ball. We're starting a Silicon Valley Pushball league. We've had two games so far. We've learned that with four people per team, it's really pretty painful; like arm-wrestling, but with your whole body. Six per team worked better, but I'm thinking eight or more.
MacWorld was this month. New iMac is cool. I was looking forward to iPhoto; I'm a fan of iTunes, and I have a bunch of pictures. A program that will help me manage them simply would be cool. I was highly dissapointed. Unlike iTunes, when you drag images to iPhoto, it copies them somewhere else on your disk, to a place when really only iPhoto is meant to look. If iPhoto is the only app you want to open files directly with, fine, but in my case, that's absurd. Actually, iTunes can probably get away with that, but I use several apps to view and edit photos. Plus it doesn't generate web photo albums; what is does do it upload to iTools, which generates an album. But with the wimpy disk quota of iTools, my images won't all fit, plus I don't really want to use iTools anyway. The photo book feature rocks; it's the only feature that does, that I saw.
Hopefullly, you'll be hearing more from KnowNow soon. I'm starting with a talk on what we do at the Bay Area NeXT Group this week. Drop by if you're curious.
I bought a ball. It's pretty large... six feet tall. I call it a man ball, as I recall having heard that once, but it's also known as a push ball or earth ball. I've been looking to get one of these for a long time, and it turns out that one of the pastors from my church had ordered a couple, so I got a catalog from him, and scored a ball. Dave (my housemate) and I spent a hour blowing into it (we knew it was stupid, but we couldn't help it), and after nearly passing out, we got it maybe half a centimeter high. So I went to REI and got a bike pump, and after four hours of pump pump pump pump pump, it got to about a foot before I had to take a shower and go to bed. So I went back to REI and got a good foot pump (for matresses), and that only takes an hour or so to get it all the way full. Phew.
You might think that's tiring. But then try playing a game of man ball. I invited a few folks over and we played a game with four to a team. Two minutes into it, we had to take an eight minute break. It's like arm wrestling with your whole body. Nuts. We need a lot more people, I think. Also: don't eat burgers right before playing.
Kevin Smith's latest movie, Jay and Silent Bob Strike Back will be out soon. I caught the preview at the local AMC and it was pretty cool. Gotta go watch all the other Askew films first though, if you haven't already. It's an insider's movie.
Burning Man is next week. Last year, I went fairly unprepared (first time, went on a week's notice). This year, I'm all set. Dave is coming along, and we're bringing a trampoline to lounge on and a blender and fruit for making smoothies. Yum. And I'll bring a man ball just in case. :-) If you're there, look me up with Play Information... might even bump into me there; I'll be working at Checkpoint Salon Wed afternoon and I'll be working with the Black Rock Rangers early in the week and again during the burn. Should be a hoot.
Sadly, I missed MacHack this year. I supposed that's what I get for not working at a Mac shop. Reports from those who did go is that it was the usual blast. The keynote had a bunch of the original Mac team there, and the hack contest ran as long as last year.
I'm thinking next year that a bunch of Unix weenies should go, just to see what can be done with Mac OS 9 and prior, before the Classic OS starts fading into the past. While it's easy to criticize the Mac OS design in today's computing world, the things you can do specifically because it has a single address space for all programs can be truly remarkable. As a Unix guy, it's hard to even think of these things. So one might consider going next year just to learn something different, before it's too late. Plus Mac Hack is an event unlike any other, and worth a visit.
I learned to fly a new kind of airplane this weekend. I've so far been a Cessna pilot (well, with a 10-hour stint in a Beech Barron). Now I've been introduced to the Piper Arrow, which is a low wing with retractable gear and a variable pitch prop. It was interesting... it's a fair bit more work to fly, and as my instructor put it, it "flies like a desk". But it goes 120 knots to the C-172's 90 knotts, so that's appealing.
I'm thinking of flying out to Burning Man this year. That could be pretty cool, though I need to find someone who is driving up and is willing to take a few things for me, since I don't think everything I need will fit in the back of a little plane.
People who've been curious about what it is that KnowNow is working on and what "2 way web" means--no, it's not web pages on the back of your monitor--it's all up on our web site... www.knownow.com. The short answer I give is that we provide asyncronous event delivery over HTTP. It so happens that it works rather well with web browsers, but clients can be written in any environment, and they can all share the same information.
For some time, I've been working with Kevin Van Vechten on improving SystemStarter, a program I wrote for Mac OS X to bring up the system to the multi-user login prompt. It replaced /etc/startup from Rhapsody, and does what /etc/rc does in BSD systems. Part of its design is that startup tasks are encapsulated into "startup items," which are, in the simple case, a program and a configuration file. The program is an executable (usually a shell script) which takes a single argument like "start" or "stop" much like SysV /etc/init scripts. The configuration file (a property list) describes what the program does (displayed to the user), what services it provides, and what other services should be started before the program should be run. For example, Apache doesn't want to run until after the resolver is running.
One of the nice things about the design is that it is easily parallelizable given a dependency graph built from the information in the property list. Kevin has been doing some work to allow SystemStarter to bring up the system to a given point (eg. bring up the network) from single-user mode and to support a shutdown sequence as well. While I was integrating his code, I noticed that enabling parallelization became rather easy due to some cleanup we did in the process, so I spent a few hours implementing that, which is what I demonstrated at the open source session WWDC last week...
Apple's WorldWide Developers Conference was last week. There was the usual keynote by Steve Jobs and Avie Tevanian. Maybe I've been to a lot of these, but they are starting to feel pretty long. Steve had an attempt to scare developers into thinking that if they don't port their apps to run natively on OS X, that other product will get there first, and customers will switch. Now I think that's true for some programs, and I'll certainly use a native app over one that makes me launch classic, even if the native app is a little less cool, but the whole thing felt very contrived. Mentioning it was a good idea, but he and Avie both harped on it way too much, to the point where it felt really hollow by the end.
But there were some cool things about the keynote. One is that Apple has truly come about on the Unix front. There was a time when I had lunch with Jason Thorpe of NetBSD, and we were talking about Apple and NetBSD working together. Jason was very helpful, and NetBSD played a key role in getting the BSD subsystem in Rhapsody (which fed into Darwin/OS X) updated. (That work is by no means complete, but it got a lot better.) But I couldn't imagine Apple ever putting "powered by NetBSD" on any public material, and I told that to Jason. At that time, Unix was highly feared at Apple, as it threatened to make the system a lot scarier to users. But Apple has done a pretty good job (still a little more work to do there) of making Mac OS X take advantage of the Unix underpinnings without being a terror to users. And a lot of users think Unix is great and can interact directly with BSD if they choose to. The upshot is that Apple now sees BSD as a major asset, and no longer as a liability; this was obvious at the keynote, and it made me smile some.
One of the best things about WWDC is free Jamba Juice all week long! Woo hoo! Plus there is the free loot: I scored a free bag, Cocoa and Carbon books from O'Reilly, a decidedly spiffy Mac OS X leather jacket (courtesy of WWDR), and a most excellent Hexley shirt (courtesy of Brett Halle). All on a free pass. Party on.
I made it to the StepWise WWDC BoF which is always packed. This year was particularly crowded. Having gotten there late, I crawled over the people sitting on the floor and myself found a patch of carpet. Some cool things there...
My friends at NetStruxr have managed to release four of their toolkits for WebObjects developers under a BSD license. This is a big win for WebObjects developers looking to save time.
On a similar note, the MiscKit is getting its third reboot (once per operating system, NeXTStep, OpenStep, and now Mac OS). The MiscKit is a collection of Objective-C classes which are shared by the NeXT developer community. It is now starting again by updating the code base to the current Foundation and AppKit frameworks, and may switch to new licensing terms (I'm hoping, naturally, for a BSD license). The kit will switch from being a loose collection of submissions to a high-quality set of frameworks and an experimental set of frameworks where new code can be vetted. They are setting up CVS now. Bill Bumgarner has contributed his Python<->Objective-C bridge to the MiscKit, which is excellent. The bridge lets you call into Foundation and the AppKit from Python, which is way handy. Bill also wrote up an app which just exports Python as a Cocoa Service. This means that in *any* Cocoa application (and someday maybe Carbon apps; here's hoping), you can select some text and pull down a menu which causes that text to be evaluated as a Python expression. Shweet!
When I walked in, there was someone showing an Objective-C to Java bytecode compiler. I missed most of the demo, but this is truly psycho in the trademark Obj-C weenie style. Goes to show you can take Obj-C away from the program (WebObjects 5 in this case, which is now 100% Java), but you can't take Obj-C away from the programmer.
The Windows PC on my desk hasn't been turned on since my last diary entry. Whew. This week I need to learn how to build our stuff with it (I'll use Cygwin and fake it, I hope) and how to use Wise or some such to make packages. We'll see how that goes. What do you do with this other mouse button, anyway?
I now have a Windows PC (a laptop) on my desk. I turned it on and used IE. It took me a while to find where Windows weenies hide the preferences panel; apparently they can't decide, so it depends on the app. I can't seem to figure out how to tell it not to underline links, which I've always hated. Anyway, this is a first for me. I've used Windows.
I'm feeling kind of ill and need to go home soon.
Apple's Worldwide Developers' Conference is coming up. I need to come up with a decent demo for Darwin. It's hard to be all that impressive in front of an Apple crowd with a command line console.
It's been a hectic moving week.
My housemates have moved out, which is a bit traumatic. I got home Sunday after dance class at church (my church is cool) and the lights were all out. All of 'em. It's not right. I couldn't find the door. So I've spent my evenings this week cleaning the house and unpacking all the stuff I've had boxed up in the garage.
We've also moved offices at KnowNow from Menlo Park to Mountain View. This is a big win for me. The commute is better for one. Better still, the food on Sand Hill Road was unimpressive, but now we're one block from Castro Street and the chow here is most righteous. And the office space is much nicer to boot.
ApacheCon was, as expected, excellent. We had a special "Hackathon" event before the conference (something we started doing at the London conference). I had volunteered a very cool space in the Apple campus for the Hackathon before I left Apple, and some folks at Apple we very cool to make sure we still were OK to use the room. The Hackathon is a great thing because the ASF contributors work together primarily via email, and the opportunity to get everyone in one room to hash out architectural and other issues is invaluable. A lot got done in those two days.
While at the conference, I finally had the time to commit some of the Darwin patches into the PHP repository. Still some work to be done there, but it was good progress. I also put some work into httpd 2.0. The first Beta release went out last week, though (despite the press release) it does not build on Darwin/Mac OS. I do have it building now, but Darwin lacks pthead_sigmask(), which means that signal delivery in the threaded MPM is still wonky.
I recently released an app called DropScript. DropScript is a little application that I wrote as a demo for the BSD in Mac OS talk I gave at WWDC last year. Basically, it lets you drop any program onto it which takes files as command line arguments and creates a new application from that program. Generally, these programs are scripts written in sh, perl, etc. So you can now write a shell script like so:
gzip -9 "$@"
Then call the script "GZip.sh", drop that file onto DropScript, and out pops DropGZip.app next to GZip.sh. When you drop files onto DropGZip, it compresses the files for you.
DropScript is one of my favorite hacks for two reasons. First, it's pretty cool functionality, and very easy to use. Second, it's a shockingly simple program. Check out the source code for yourself. It's a great example of how you can use Cocoa (the Objective-C application framework in Mac OS X) and use that to provide BSD functionality to users without making them use the relatively arcane command line, which is why it was a good demo for my talk.
I'm noticing that being a Darwin developer that doesn't work for Apple is harder than being a Darwin developer that works for Apple. Of course, I knew this to be true all along, as Apple's still learning about how to give Darwin developers better access to the thing they need to get things done. Fortunately, one upshot of my having switched jobs is that I know what I resources I need access to and the open source program at Apple might be able to help work these things out.
For example, I've got cURL in the Darwin CVS repository, and I want to move it to the "supported" list from the "ports" list, so that it can replace wget (which is similar, but GPL'ed), but it's harder to drive that from the outside.
The good news is that Apple is already taking some action to improve things, so that's great.
Mac OS X shipped Friday. It's not too shabby.
Elite Computers, across the street from Apple, had a big OS X midnight madness event. I was driving home after a late night at work, and I saw the search lights coming from Cupertino, and could help dropping by. There was an impressive hoard of people there, and a lot of familiar faces, so I hung out for a long while.
Saturday, I went to Sonoma with some of the members of BaNG (the Bay Area NeXT Group) to celebrate the OS X launch, and we spent the whole day there. Much fun all around. I bought a portable mister, which I saw and must have. Yes, there is still a Bay Area NeXT Group, and they meet monthly at Apple, usually in Town Hall. If you find Cocoa or WebObjects interesting, you should drop by some time.
I had stopped flying while the California weather was less than California quality, but I recently picked it up again, and--good news--I can still land a plane, an important skill to keep up. Yesterday, I took my friend Mark from church on a trip to Napa. Unfortunately, the plane I rented didn't pass the "I will fly in this" pre-takeoff tests (first time that's happend to me, it turns out), so I had to bring it back and get another, which meant we had no time to hang out in Napa, so it was just an aerial tour of the East Bay. but that was fun anyway.
Of course, between staying up on friday at the OS X launch party at Elite, then getting up early for the Sonoma trip and getting back late, and getting up early for flying and returning to the church (Mark and I go to an evening service called Real Life), I was pretty zonked. Well, we also have dance lessons at the church after the service, which I always stay for. I wanted to collapse in the corner and sleep in the chapel for the night.
So it was a full weekend.
ApacheCon is next week. I love ApacheCon. Looking forward to getting together with everyone again; it's always a blast.
It's rather obvious that an update here is a bit overdue, so here's some of what's been going on with me.
I spent the end of January trying to ensure that all of the stuff I thought was important for the upcoming Mac OS X release was taken care of. That included un-frameworkifying OpenSSL so that it's a library, which I didn't get to in December before my vacation, and making sure PHP builds on Darwin properly. I had still found problems with the Darwin support I has added to GNU libtool, but by the end of the month, I had that well enough in hand that PHP is now in pretty good shape on OS X.
I think I pretty much suceeded at getting my high priority items taken care of, so that put me pretty much done with Mac OS X for this release. Which was good timing, because Friday, Februrary 2nd would be my last day at the company. A lot of people slack off when they know they are quitting, but I was exhausted by Friday; I barely had time to pack up my stuff. Call me nuts.
I'd met Rohit Khare and Adam Rifkin almost a year ago, I think. They were in Silicon Valley trying to get some things done for a startup that they had going up in Seattle, and they came by to offer me a job. Now I got job offers pretty often for whatever reasons; recruiters called by office every week or so and I *always* turned them down. I'd listen sometimes, because it's prudent to know what's out there, but I like Apple and I really liked working at Apple, and I certainly liked working on Mac OS X and so that was that.
But Rohit is a blustery sort of fellow, and he talks quickly for long stretches and so I got inundated with information within minutes of meeting him--he came with a PowerPoint presentation and everything--and amazingly enough, he was making a lot of sense, and I though he really had something interesting there. Even so, I had to pass, because I wasn't finished with my work, and I have this compulsion to finish what I start, especially when I think it's helping make the world a better place, as Apple folks like to do.
However, many blustery conversations later, and having approached The Big Milestone of helping release a system I will undoubtedly prefer over any other for a long time to come, I was ready to take a leap into something new. It was probably the harder "life" decision I've ever made, and honestly I was quite terrified after having made it. I was, after all, giving up a job I really liked for one I hoped I'd like even more, and that's not a trivial thing--for me, anyway.
So Monday, February 5th was my first day at KnowNow. It took them a while, but they sucked me in. When there is something meaningful to say about what we do, I'm sure we'll have plenty to say. At the moment, I'll just say that my first two weeks have been pretty cool, and I like the people. That is, the terror is gone. Though would probably make our receptionist like me better if people would stop calling and sending email; she's had a busy week.
That said, I got a lot of encouraging email of late. Some from MIT buddies, ex-Disney Online folks, family, and people I've met since working at Apple. Many from people I haven't met. My apologies for not responding to all of them, but I have a new job and I should probably do some work. I do read and appreciate it, though.
Last week which was rather quite still, I was fillding with mod_perl and found out that I was stomping on CFLAGS in the mod_perl build in a way that that normally causes things to break, but in mod_perl's case was building find but causing it not to build with -DEAPI like httpd, which is really very bad. So I fixed that.
Chuck Murko got a port of cscope to Darwin started, and I did a little more tweaking and checked it into the Darwin CVS repository, where Umesh tweaked it some more, and I think we have a nice, clean port of it now. Chuck is making sure the resulting patches get sent upstream for integration. (Thanks, Chuck!)
This week, since I do web things now, I was in the market for a good open source HTTP library. I need one that lets me specify the headers to stick into the request and get the result back as a stream as the server outputs it. So I looked around and the only one I found was W3C Libwww.
Libwww has all the features I want and a bunch more, so I download it and I wrote a really simple client which sends a GET request. In this case, I don't care about the response, I just care that some CGI program gets poked. Libwww is a horrible library. The docs are obtuse, the API is inconsistent, and were it not for the example, I'd have taken a long time to write this very simple thing. It should have been easy, but it was a yucky experience. Plus I had to link in more libraries than the number of Libwww functions I used in my program. I know poeple put some effort into the functionality, but that's some crappy library design, guys.
So I asked around some more and someone at MIT suggested libcurl. Now this is a really nice little library. Simple and functional. It does exactly what I want with not fuss, and now I have a happy program, and I'm a happy programmer. Libcurl rocks.
I shared some thoughts on my understanding of open source with Louis at OpenOffice this week as well, and he wrote that interview up on their site. It was kinda cool to think through some of that stuff.
This weekend I'm off on a spontaneous trip to Tahoe with some MIT buddies. I went on a wild spree at REI a few hours ago buying warm things. (I don't like cold; I'm from Puerto Rico, after all.)
And that's the past month. Hope yours has been exciting, too...
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!