Older blog entries for wsanchez (starting at number 32)

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?

4 May 2001 (updated 4 May 2001 at 02:44 UTC) »

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:

#!/bin/sh
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.

16 Feb 2001 (updated 16 Feb 2001 at 07:47 UTC) »

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...

Well, I got back last night from a 3-week vacation at home (Puerto Rico). Given I was at the beach three days ago in the not-very-cold-at-all Carribean, San Jose seems pretty darned cold. Of course, my buddy Eric, in town from Chicago, begs to differ. Vacations are good. I did my Christmas shopping rather frantically on the 23rd; an eight-hour marathon at the Majag├╝ez Mall with my cousins did the trick. Went to the movies a lot (it's cheaper there)... Played dominoes a lot... And I rented a Cessna 172 and took each of my two sisters up for a trip around the island. Anyone know where I can buy Puerto Rican food in the Bay Area? I'm sure it can be done, but I'm terrible at finding such things...

In December I bought a digital camera, the Canon PowerShot G1. Not to plug a product, but that was one of the best purchases I've made (eBay, $800) in a long while. I have this rather expensive and quite excellent camera that I bought a long time ago, a Mamiya 7. It's a wonderful camera, and takes beatiful photos on 6x7cm film, but it's the short of camera one doesn't carry around all the time, and I tend to take few pictures with it. Plus, since I left the proximity of the MIT campus, I no longer have a darkroom to play in. So this new Canon G1 is great because it fits in my jacket pocket, and it's easy to use, and it's trivial and $FREE to get the pictures onto my Mac, whereas on my Mamiya, I need to get the film processed somewhere (in my case in Palo Alto), then scan them in. Needsless to say, I took a bunch of pictures in Puerto Rico, and I'm very happy with my new toy.

MacWorld Expo 2001 started today in San Francisco, with an impressive suite of new product annoucements at Steve's keynote. Everyone's wondering where they are going to find the cash to buy a new PowerBook G4... I'll be at the show tomorrow, and probably again this week, depending on what's going on. I should be dropping by the Mac OS X booth every so often, this that tends to be a hub for people I know. The Stepwise BoF is tomorrow, I'll be there for that, as usual. This time I won't be sick and hoarse (probably).

James Duncan Davidson did come by Apple to repeat his talk from ApacheCon, and it was, as before, and excellent talk followed by some lively Q&A. It was great to have someone else with a similar perspective on open source come and share ideas. Them, of course, James had to tell us about what he lives about Mac OS X and what doesn't work for him, which was immediately followed by some of the authors of the offending software showing him that he can, indeed, do what we wants with our tools. So that went well, too. :)

I've spent a bunch of time recently trying to clean up some BSD compatibility issues in Darwin. Specifically, there are a few BSD-ish libraries which we install as frameworks.

For those of you that don't know a framework is a directory bundle which contains a library, it's headers, and any associated resources such as images and documentation. The cool thing about frameworks is that everything associated with it is in one place; it's all in this bundle which can easily be treaed as a single object. This has some nice advantages over installing in a typical BSD layout: you put the library in /usr/lib, the docs in /usr/share/man, the headers in /usr/include; if you have image or text resources, those go in /usr/share, and so on. The BSD system has advantgaes as well, but it's more geared at managing the operating system, rather than at managing components.

Anyway, the upshot is that we've been mangling libraries into frameworks because frameworks are what we prefer in Darwin, but of course then you end up needing to build clients in a slightly different way when building on Darwin, which creates an annoying portability problem. So the new plan for now is that new stuff should be frameworks, but let's not monkey around with BSD/Unix/POSIX style software so that porting code is easier. We can't rule the world all at once, after all.

So that works is all in CVS now. Affected projects include libSystem (!), zlib, tcl, and kerberos. I still need to do OpenSSL, when I return from vacation.

Speaking of which, I'll be taking off for vacation tonight until the start of MacWorld Expo SF. If you go to the expo, don't forget to swing by the Mac OS X booth and see what's up. In the meantime, happy holidays, all.

Today, I'm back in California, having arrived yesterday from my ApacheCon trip.

But first, two weeks ago was BSDCon. I met up with a bunch of people there and synched up some ideas we've been kicking around for a while.

I mentioned before (18 Jul 2000) that I had been talking to Jordan about sharing mode code in real time between Darwin and FreeBSD. At the O'Reily Conference, I sat down with Jordan and Charles Hannum (from NetBSD) to talk about actually sharing repositories for code like /bin/cp and /bin/ls, which we can probably agree on a common implementation. The general consensus was that this is a good thing, probably doable with some infrastructure work and a bit of political ironing, but none of us has had the time to really dig into it.

So then comes Chris Coleman and the Open Packages idea, which is a similar idea, except for the ports collections, rather than the base system software. This is a great thing, because there is already some good technology in place which can be tweaked to work accross BSDs (and other platforms as well), and the ports are already pretty neutral ground, so consensus is generally easier (though not trivial) to accomplish. So I'm very excited about this, because success here might be something we can extend further down into the system software, which for me is the jackpot. (From the Darwin point of view, most of the BSD subsystem is already a "port," since we're already drawing the code from NetBSD and FreeBSD; if we can find a way to share code uniformly accross our systems, that's just too cool.)

To make things even better, Keith Bostic gave us a great keynote at the conference, and one of his questions to the community was "Why are we sharing the code to cp?", which got more people thinking about it as well.

Last week, I was in London for ApacheCon. We started with a Hackathon, where the ASF members and some guests got together to work our some issues while we have everyone in one place. We had about 30 people sharing a 56K net connection, which was rather interesting. Mostly it was a good chance to meet everyone before the conference and hack out some code with all of the relevant experts nearby. I spent a lot of time trying to wrap my brain around libtool, and thanks to some help from Sander (from Covalent) and a kick start from Sascha, I got libtool working well enough that PHP will build on Mac OS X correctly. And, as a bonus, it even works. Rasmus hooked me up with a PHP CVS account, so I'll probably be committing the fixes this week, and I'll need to send a new patch to the libtool folks.

ApacheCon itself went very well. Duncan gave a fabulous talk about how Sun came to open source Tomcat via Apache, and the hurdles they had to get past to make it work, which I'm going to try to get him to repeat at Apple some time. It's a great success story for a big company starting an open source project well. Douglas Adams wrapped up the conference with a fun talk about the unpredicatable evolution of computing. For such a young conference (this was #3), it's going very quickly, and it's packed with good talks and all the right people there.

While we were there, I got to check out London with some of the ASF guys. Roy and Greg and I were staying in this small Bed-and-Breakfast type hotel, and we played tourist all over the city. I have to say I really liked it. The weather was pretty reasonable for walking about. The only thing that I didn't like was the itty bitty portions you get at restaurants (it's like I was on a diet for a week).

I've been getting poked at by a few people because I haven't updated my diary in a while.

One of the big things that has happened in the past month is that we shipped Mac OS X Public Beta, which is the first public release of the software I've been working on for the past three years. The reception has so far been very positive, and I'm pretty happy about the results. We still have a long way to go, but looking back, we've actually gotten a lot done.

One reason I've not posted here in a while is that I've been working on an internal project lately, to help with deploying Mac OS X at Apple so that more of the company is using it now that it's fairly stable. Unfortunately, it's not all that interesting to talk about.

One great thing is that the Darwin community is really picking up some steam. There has been a fair bit of code pouring in this month. Luke Howard is cranking on adding PAM support, which he started working on by back-porting the current linker to Rhapsody DR2, as all he had was a PC at the time. Fortunately, he now has a shiny new G4 do his work on. Check out his diary for some status. Rob Braun has been doing a bit of a code audit in parts of the system and has committed a large pile of fixes to clean up things from possible buffer overruns to nicer syslog output. Dave Z. is working on getting a Darwin 1.2 release out the door to coorespond with Public Beta. Rob's also started working on getting the FreeBSD libc I imported, which is the critical and most difficult software sync we have to do in order to get the rest of the system software updated. There has also been some work on creating a Darwin logo; I'm a big fan of Hexley.

Tonight I'll be driving to Monterey for BSDCon 2000, and Friday I'll be flying to London for ApacheCon 2000 Europe, so it'll be a good couple of weeks for conferences. I'll be repeating my USENIX talk at BSDCon; and I figure I'll get the PHP4 port finished up, which I've been putting off, as well as Apache 2.0 while I'm at ApacheCon.

23 older entries...

New Advogato Features

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!