"we" have been working pretty hard lately on corduroy, a web-based billing system for small businesses. the live demo site is available showing off its features and functionality and the signup system will be ready shortly to start taking subscriptions.
i started writing corduroy years ago out of a personal need for a billing system for superblock. i tried quickbooks and hated it; all i wanted was a simple system for making professional-looking invoices and keeping tabs on my accounts. so, i quickly ditched quickbooks and started writing a web-based system in ruby on rails which i have been using ever since.
i started working on an acpi driver this evening to make my thinkpad x61 work better under openbsd. i just finished it and so far it matches on the IBM0068 acpi hid device, checks it for the appropriate version, enables the bluetooth device (which is required before the hardware toggle switch can power it on and let the ubt0 device show up), and sets up a callback to run whenever a special button (e.g., fn+f[1-9], brightness, thinklight, etc.) is pressed. i'm pretty sure it will work on most other thinkpads but i haven't tried it on my x40 yet.
i mapped out all of the events that get generated, which on my x61 tablet include the screen rotating around, the lid opening and closing, and even the pen being ejected from its little slot. when the brightness buttons (fn+home and fn+end) are pressed, it sends a cmos command through acpi to actually adjust the screen brightness accordingly, so now it's working just like my x40 did on its own. being able to turn the brightness down when on battery is the main reason i wrote this.
for certain reasons, i've been looking at getting a tablet laptop. i bought a fujitsu lifebook p1610 tablet in december but found its screen and keyboard too small to use on a daily basis.
after using openbsd on one of my imacs for the past few months (and rarely using my thinkpad x40), i had gotten used to the extra screen real estate of the 1440x900 resolution. now that i'm back to using a laptop as my primary machine, i've been looking for something with a higher resolution (as well as more cpu power and ram) to replace the x40 as well as provide tablet functionality. the thinkpad x61 tablet satisfied those requirements while still staying relatively light and thin, so i bought one.
a while back i wrote a half-assed growl-like notification system called "meow" that i could use on openbsd. i wrote a gaim plugin that used meow to notify me of new messages so i wouldn't have to keep switching back to the workspace it was in to see who was talking to me. but it was a perl plugin for gaim and i didn't remember how i got perl support working in the openbsd port. the port's maintainer didn't care to fix it and i could never get it working in any future releases. so without gaim notifications, i didn't really have much use for meow and it was scrapped.
recently this bothered me again so i looked into writing another plugin for gaim pidgin. i read up on its dbus support and with a quick port of ruby-dbus, i had a working ruby script listening to pidgin events via dbus and sending notifications to meow. but as it turns out, dbus is used in a lot of software these days and has its own specification for notifications (for which a notification daemon exists in openbsd's ports). i installed it and changed a few lines in my new plugin to just send the events back through dbus to the notification service:
someone finally made a utility for the iphone to constantly alert you when you have unread sms messages. usually the iphone just vibrates and alerts once when you get a message and if you miss those, you usually never notice the message until much later. the continuous nagging was something i missed from my treo.
however, i didn't like that it vibrates every 15 seconds and that it will vibrate right after you get a message even if you haven't really "missed" it. since it's just a shell script that calls "sleep 15", it isn't really smart about what a missed message is. so i modified it to wait 60 seconds between alerts and only alert when an unread message is older than 60 seconds, so you have time to actually see the new message before being nagged about it.