Vital statistics of a day hacker...
[Full name]: David A. Desrosiers [Email]: hacker at gnu-designs dot com, desrod at sourcefubar dot net, palm at pilot-link dot org [Birth Date]: 7/16/1971 [Birth Place]: St. Francis Hospital, Hartford, CT. [Current Age]: 4 dog years [Height]: a little over 4 cubits [Food(s)]: Chocolate pop tarts, cashews, and Captain Crunch Boo-Berries [Quote]: Yes I like Star Trek, no I don't own a phaser.

I'll make it short and sweet...

My involvement in Open Source, the internet and Usenet in general started way back in the bbs days in 1988 with a bbs I was running called Hacker Heaven BBS. It was a full open access bbs running RemoteAccess 2.5b under OS/2 Warp with nearly 500 megs of text files, source code, information, games, about 80 different kinds of electronic magazines (emags) (including T@P, Phrack, Risks Digest, cDc), and other tools and toys for the local community to read and enjoy at that time. My bbs was completely dedicated to supporting anonymity and privacy from the start (including a PGP-only message base for my users), it was constantly persecuted by the other local sysops that said I was:

"...breaking the law by not requiring real phone numbers and addresses of all my users..."
They also said I was hiding something by providing a PGP area for my users to post messages in. They insisted I decrypt the messages, and delete any that I felt were offensive or contained viruses. I nearly fell on the floor laughing. Decrypt PGP. Yeah, I'll get right on that.

Yes, I was hiding something... the identity of my users.

So I joined Fidonet, which eventually would prove to be a mistake, but also a blessing because it drove me closer to where I am today. My node address (in keeping with the theme of my bbs) was 1:320/2600, which infuriated the local sysops who were constantly trying to take me down. Eventually it got to the point where they would actively delete any messages coming from my system from any of my users before they ever reached their destinations. I then applied to and was accepted into NirvanaNet(tm) after their vigorous voting period, and found a group of people who believed and shared the same values as I did.

So I started to create my own local message echoes, and gate usenet into my message bases for my users with a very alpha product I was helping develop called Watergate, written by a developer in Sweden, Ramon van der Winkel. My friend Rob Szarka and I were using it and actively testing and developing it from a user perspective.

This was my first real taste of distributed collaboration and development...

This was the beginning my career in the Open Source world. I started thinking much more about privacy and the issues surrounding what would happen if information, all information were truly free. What really would become of the internet?

I read a usenet post from a developer named Linus Torvalds in one of the message bases Rob and I were gating, comp.os.minix. Linus had come up with a way to run an operating system on the PC which was tied to no particular vendor. I decided to spend as much time as it took to download the entire distribution onto floppies in early 1992 over my 14.4k modem and run it. The version I started with was around the time of the version 0.11 release of the kernel. I was never going to be a Windows user, and never even liked using Microsoft OS/2 when I had to... prior to the IBM and Microsoft split.

Time warp to the present...

After a nearly-fatal car accident in 1992, I decided to give up the bbs world and push ahead persuing linux as the platform of choice to do my computing on. Due to complications with the accident, I lost all memory of the first twenty years of my life (and to this day, those memories have not returned). My recovery process included reading all of my old messages and trying to piece together what life was like before the accident.

I wanted to make a contribution to the Open Source community and to Free Software in general. I started my own web design and hosting company called GNU Designs which I wanted to be an open source hosting company. Basically the idea was to design and host sites for open source projects for free, while other 'for profit' sites would be charged based on time and materials and bandwidth. Within the first month, our customer base ballooned to about twenty customers, and we were designing and maintaining web sites almost full time. This allowed me to combine my skills as a web developer and as a project manager. Managing and designing several dozen web sites, administering the required cvs servers, and projects for the open source community requires daily attention (some are listed below). I've since hired two employees who do design, customer relations, and sales for me. I only manage the physical server and the security and policies of the machine now.

I started working as a contractor for Pfizer, Inc. in late 1995 with their IT department. My manager gave a US Robotics Pilot 5000 to me to use for tracking our numerous meeting schedules. I scoured the net and found some useful programs for it, but it still didn't fit with my personal beliefs. I wanted to use my Pilot with a linux alternative. It wasn't enough to use "The Windows Option(tm)", the Palm Desktop was no longer sufficient for my growing needs.

At the time, there were some really crude tools for getting data from the palm to the desktop and back under linux and Unix in general. My involvement started with several projects that were bringing palm and PDA integration into the linux world, and I settled in there.

There's much more involved in my story, but I promised to keep it short and sweet... on to the tools!

My Involvement
  • Plucker: I found this tool about two years ago while poking around to find a way to capture web pages onto my pilot. There were several tools to do it, but nothing really robust, and certainly nothing that would maintain and keep the links intact. Mark Lillywhite started this as a pet project using awk and sed to gather the content from the web, which were slow and somewhat limited. Together, we pulled in some other folks, some of whom were already working on the project (but not really devoting a lot of time to it), and created what exists today. It's main competitor AvantGo takes a totally different approach to the web-on-palm idea. (I was on the AvantGo beta team for a summer in 1998). We use the power of the desktop to render content, while AvantGo actually pushes real html content onto the palm and renders the html into something usable on the palm. Plucker is a very capable offline web portal. You can bring down web pages, images, documents, local files, text files, and almost anything that the Palm can understand and view (Plucker does not support binary files, however, such as MP3s). Anything you can view on the web can be viewed with Plucker. It also supports several options with images enabled, disabled, and maximum depth spidering. The project is fully covered under the GPL, including all support tools and source code (including the Windows sources). The team works very well together, and we're progressing the project at an accellerated rate. I maintain and host their homepage, cvs server, and am a very active participant on the associated mailing lists.

Plucker CVS and Plucker Palmweb
  • Strip: Strip is a really cool project for the palm, and also another fully GPL'd product. It allows you to store account names and passwords in your palm, but they're encrypted with 128-bit encryption. You have you choice of algorithms, as well as conversion formats. I have contributed several patches to the main code for Strip, and have written their automake/autoconf scripts for the latest version builds. The new version contains many new features going into the new version. How many passwords do you have to remember on a daily basis? Even average internet users can quickly become bogged down with the number of passwords and accounts that have to be remembered. Strip is here to make life a little bit easier. Strip is a password and account manager for the Palm® Computing Platform.
  • POSE/Palm OS Emulator: The Palm OS Emulator is software that emulates the hardware of the various models of Palm OSŪ platform devices. It is extremely valuable for writing, testing and debugging applications. The emulator creates a "virtual" handheld by running the Emulator on Windows, Mac OS, or Unix computers. Keith Rollin from Palm Computing is the main contributor to this project. We've managed to get this entered into the public domain, where now we are able to contribute en-masse to its development. I've checked it into Sourceforge specifically for this purpose.
  • ...also here...

  • pilrc: PilRC is an application that takes a resource script file and generates one or more binary resource files that are to be used when developing for the Palm Computing Platform. PilRCUI gives you a preview of your resource file. I am specifically working on the Gnome integration with pilrcui, the graphical form emulator. It needs to be updated to handle color and transparent icons on GnomeCanvas. This was just recently (last week) put under version 2 of the GPL license.
  • OpenPalm Group and Open Handheld Group: These were started as a way to literally open up the development and user community with Palm and the Palm Computing Platform. When Palm decided to start suing everyone who used the word 'palm' in their name, product, or website, this site and it's membership decided to disband. I am personally taking on the task of putting this back together. My first goal is to build a list of Open Source palm software and offer it on a quarterly distributable cdrom. Our first idea was to allow the cdrom to query the palm when sync'd and offer replacemnets of open source software for programs you already had on your palm, such as "I see you're running AportisDoc, would you like to try cSpotRun instead?", as well as offer upgrades of existing software that you had on your unit.

If anyone wants to help, please contact me

Here's a brief list of what's available:

User Space Tools (there are dozens more not covered here)

  • pilot-link: I've been granted the rights of maintainer for pilot-link for the purpose of a complete rewrite from the ground up. It does it's job, but it needs a general update to remove some of the bloat (and get rid of the 35 separate binaries) and clean up some of the functions of it. pilot-link is a general "glue" between pilot and desktop and a suite of tools that allow you to connect in various ways to your palmpilot to sync, add, delete, move, copy, and manipulate palmpilot data across the serial, USB, and IrDA ports. pilot-link has code examples in Perl, python, and Java.
  • PilotManager: PilotManager is a tool which allows you to synchronize databases on any 3Com Palm device (PalmPilot, PalmIII, PalmIIIx, PalmV, TRGPro, Visor) with applications on your Unix platform. It includes a full Hotsync daemon that is user extensible. Developers can write their own conduits to synchronize Pilot databases with the desktop application of their choice.
  • JPilot: J-Pilot is a desktop organizer application for the palm pilot that runs under Linux, and Unix. Judd Montgomery and I have been talking about some really innovative new features for the upcoming releases of JPilot. I've submitted some patches and code enhancements to his existing 0.99 release. More to come in this arena very soon...
  • KPilot: Another example of a Palm Desktop clone written in Qt with KDE libs. I've never personally used this, since I've never used KDE, but if anyone wants to give me a review, I'll be happy to oblige.
  • XPalm Desktop: This was my first attempt at writing a Palm Desktop clone in Tcl/Tk before JPilot and KPilot even existed. The development has lagged considerably, but the product still is very functional. I'm converting it over to GTK+/glib when time permits.
  • Web Palm Desktop: I had this crazy idea about using MAL and malsync to talk to the remote server and exchange data. Ideally I'd love to use some sort of ssh tunneling to get it there, but that's another matter, since this is not http we're talking about here. This may be obsoleted by OpenFlock or
  • ColdSync: ColdSync is another tool for synchronizing PalmOS devices (PalmPilot, Palm V, Qualcomm PDQ, etc.) with Unix workstations. This is an open source project, and is free for both commercial and non-commercial use, under the terms of the Artistic license.

Development Tools (there are dozens more not covered here)

  • prc-tools (from The prc-tools project currently consists of patches to binutils, gdb, and GCC to support Palm OS, along with several post-linker tools. This is supported by Palm in a somewhat limited way, and being managed by a Palm employee, John Marshall. I have had trouble compiling this, but your results may differ.
  • prc-tools-0.6.0: This site was down when I checked, but this is Michael Sokolov's version of the m68k-palmos-cross compiler toolchain. I've had some success with this toolchain both in compiling it and using it.
  • par: The par utility creates and manipulates PalmOS database (.pdb) and resource (.prc) files. Par is designed to be a Swiss army knife for managing these files. It's a shell-based (commandline) line tool not for the faint of heart. It is very handy and replaces a bunch of little utilities that you might otherwise use. Please consider the current state as a Beta release.
  • POSE: The Palm OS® Emulator is software that emulates the hardware of the various models of Palm OS® platform devices. It is extremely valuable for writing, testing and debugging applications. Create "virtual" handhelds by running the Emulator on Windows, Mac OS, or Unix computers.
  • xcopilot: XCopilot is an emulator for the 3Com/USRobotics Pilot/PalmPilot/PalmIII that runs on Unix systems Under X11.
  • copilot: Obsolesced and now called POSE
  • uClinux: uClinux runs on the XCopilot emulator, on real PalmPilots with a TRG memory board and on a 68332 based custom hardware device designed and built by the developers. This includes full networking support and a small web server, telnet daemon and ping are provided. There are also a number of other interesting things included in the new kit including frame buffer support and example code for the Palm LCD. The kernel, libraries and compilers are now considered production quality. You can now build finished embedded systems products with them.
  • pilrc: PilRC is an application that takes a resource script file and generates one or more binary resource files that are to be used when developing for the Palm Computing Platform. PilRCUI gives you a preview of your resource file. I am specifically working on the Gnome integration with pilrcui, the graphical form emulator. It needs to be updated to handle color and transparent icons on GnomeCanvas. This was just recently (last week) put under version 2 of the GPL license.
  • Pyrite: Pyrite is an extension package for the Python programming language which allows access to Palm Computing platform devices (such as the popular Pilot, PalmPilot and PalmIII connected organizers) and their data. Using the pilot-link library, Pyrite provides a high-level, object-oriented, extensible interface to handheld-related data, both on the local system and on the device.