Recent blog entries for kevinvv

Well, It's been about a month since I last posted. For the first two weeks I was cruising in Central and South America, then worked for a week, and now back at school for a week. So overall it was a great break, going to Mexico, Costa Rica, Panama, Colombia, Aruba, and Jamaica with the family. Fun times, without email or osama bin laden. Met some cool people on the cruise too, and been keeping in touch.

CoreFoundation is working well on Win32 now. CFSockets are fully functional, and CFRunLoops work, though I still need to go back and add in support for CFRunLoopTimers. Last night I decided to try CF out on a Linux box for fun, and after a little bit of work it was mostly working. I put in some CFRunLoop support using pthreads condition variables. So it's essentially working, but I havent' yet found a suitable Linux API for implementing CFRunLoopTimers.

Also been working quite a bit on SystemStarter, and making some good progress. Now items can display messages onscreen using an IPC call. Items can also signal whether they succeed or fail. Also they can get the value of configuration setting from SystemStarter (i.e. ask if it's a verbose or safe boot.) Lots of nifty features.

Been working on a project which intersects with a lot of the functionality of Darwin's CoreFoundation. Namely, a TCP/IP server application that does a lot with XML. The interesting part is that the market for this program is windows machines, and eventually some unix machines.

CoreFoundation works remarkably well on Windows, it took a little patching to get the RunLoop and CFSocket code up to speed, but now it seems to be working well, and makes for some highly portable application code. Already I've run into a number of areas where my life is significantly easier because I have some CoreFoundation data-types to back me up.

I'm leaving civilization for a couple weeks, but when I return I have to organize my patches, make sure they're sane, and then send them back for integration. Most of the stuff outside of CFSocket will be good fixes for Darwin (mostly code laziness that gcc doesn't freak out over), and the CFSocket stuff is mostly windows specific fixes.

I packaged up the SSHAskPassword.app and posted it on my site. It's a neat little addition to the SSHAgentServices I'm working on--it lets the various ssh utilities prompt for a password in Mac OS X when not attached to a terminal. This should make things like scp droplets easier. (If only the Finder would cooperate.)

12 Dec 2001 (updated 28 Jan 2002 at 06:19 UTC) »

I fired off my SSHAgentServices plugin to Rick since he's as much of an ssh nut as I am. He noticed something I hadn't... apps launched by the Finder didnt' get the environment variables. I guess I'm enough of a Dock and Terminal weenie that I never use the Finder and didn't catch that one. Anyway, I noted the restriction in my readme and started trying to figure out how to get around it.

I found QA1067 which indicated the Finder would pass along environment variables. So what happened?

Found it. The Finder is launched before the plugins are run, the Dock afterward. That explains why the Dock gets the variables and the Finder doesn't.

10 Dec 2001 (updated 10 Dec 2001 at 16:45 UTC) »

Woohoo! Well less than 24 hours ago I decided to bite the bullet and make a real ssh-agent solution for Mac OS X. I'm pleased to announce its completion.</ p>

SSHAgentServices

I probably should make up a little project page on here... anyway, the problem was that ssh-agents could be started in individual terminal windows, but when a new window is created, the information wouldn't carry over. There have been a few scripts to deal with this, I invented my own and used it for a while, but this is what's really been needed all along.

The problem is detailed in Radar 2575100

So it took a lot longer to make than it should have, mostly from silly mistakes on my part. For example calling kill() with the arguments transposed, and figuring out to call kill() in the first place... but luckily I had iPod to keep me company...and a chorus of crickets...

Pretty soon I'll see if i can get a GUIfied ssh-add going. Perhaps one that reads passphrases out of the keychain which is unlocked right after login.

Now that I've reverse-engineered the loginPlugin API, I've got some other ideas that I'm going to work on... mostly to do with setting environment variables; probably I'll read them out of a plist that can be modified via the SystemPreferences...and I think there are some new docs out on that API, so I'm all set.

10 Dec 2001 (updated 16 Dec 2002 at 22:27 UTC) »

For a while now I've been working with Fred Sánchez on Darwin's SystemStarter project.

The initial version of SystemStarter was basically a replacement of the /etc/rc mechanism, with some neat forward-looking design decisions on Fred's part. I've found this area of operating systems to be traditionally weak. The infancy (and malleability) of Darwin, combined with the neat work Fred started, got me interested in the project. Since then, Fred and I have been working on more advanced features, some of which are unique to Darwin.

Overall I think it's pretty exciting stuff. SystemStarter is breaking away from an entrenched part of UNIX, and providing something more robust.

The SystemStarter work is discussed in the paper "SystemStarter and the Mac OS X Startup Process" which I had the opportunity to co- author along with Fred, and will be presented at BSDCon 2002. I'm really excited about BSDCon; it's the first time I've been published, and it helps to fuel that typical Apple- related delusion of working on software that makes a difference :-)

The ultimate goal is to allow services to be started, stopped, and restarted dynamically; and to have them communicate with SystemStarter enough that SystemStarter can make informed decisions.

10 Dec 2001 (updated 10 Dec 2001 at 07:45 UTC) »

Well, here's my first entry on advogato. I ran across the site during a google search, and noticed a few people I know, so I thought I'd give it a try. Looks like everyone else has been at this a while, sometimes I'm really out of the loop.

I wanted to step to the plate swinging, so I also created a project for my PerlService which is a useful little hack I put together but haven't publicly released yet. Everyone I've showed it to has liked it though, (provided they don't turn a deaf ear when the word "Macintosh" is uttered), so now it's out for all to enjoy.

Currently I'm battling an infestation of crickets, thanks to a prank that someone pulled on the guy living upstairs. Unfortunately crickets know no political boundaries, and I've been atrributed to collateral damage.

I'm also battling a wretched latency to the outside world thanks to some Windows machine in the network I'm on. At first I thought it was a chatty NIC, but I've been able to rule that out, it's just the wonderful world of Win32.

If my entry seems a little frantic, it's probably because I'm dealing with 3000ms latency between ethernet packets, and 50ms latency between cricket packets. Unfortunatley the underwhelming and overwhelming performances don't interefere destructively.

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!