Home
login

Software

Donations are welcome

I have had several people ask me if I accept donations for the work I am doing on Acidfree. I guess I could say no, but that wouldn't be very gratious, now would it. Besides, my wife, Lauren, would probably appreciate the nice dinner date that your donations would finance. I figure that is only fair — Acidfree takes me away from her — so you can ensure that she allows me to continue to work on Acidfree by giving a small amount to me to encourage her with flowers and fine dining. So click on the logo below and make a contribution.


AVR junkie paradise

The Teensy
The Teensy
I have been pining for some shiny tiny hardware that would look good in the CW (Morse code) paddle that I am making. Arduino had been a first choice for several days. I was on the verge of buying a couple of boards when I came across PJRC's Teensy. It really is teensy. But it incorporates a little bit of hardware that I had not seen in a proto-board before: Atmel's 8-bit MCU with USB support. The Teensy has the Mega32U4 processor at its core, which has 32kB of flash, 2.5kB SRAM, and 1kB EEPROM, support for up to 6 USB full-speed functions, and lots more of the standard AtMega goodies. I think one of the coolest things about this board is that once you have a bootloader in place, you can flash the system over the USB connection that is already has. No need for an extra programmer and more cables. And even if you screw up your application, the bootloader is safe, because it is protected by separate lock bits.

To make a short story even shorter, I ordered two Teensy boards over the weekend and they arrived today. Fast shipping. (It helps that PJRC is less than 20 miles away.)

I am in Atmel junkie paradise.

Training My First Mutt

At work, I deal with a lot of mail. Not as much as some people, but still, it is a non-trivial amount. I don't have to respond to all of it, nor is it all of the same importance. For example, I get emailed by various cron jobs, some of which are critical to read and others are more informational. All in all, it averages out to 60-80 emails a day, depending on how crazy things are. This adds up fast, with the last two years each landing about 14,000 emails. Since I need to keep my email, I am getting quite a stash -- about 51,000 messages totalling 1.2GB. How in the world do you keep that organized? More importantly, what mail client can present all those without choking?

When I first started my current job, I chose Evolution, since that was about the best thing at the time. But somehow, it got dumber. Each new release took away features that I had come to love and depend on. When it started changing the key bindings without allowing me to have a say in the matter, I finally gave up and went with Kontact and Kmail. There are some things about KDE that I really like. One of the things is how customizable things are. I set all my key bindings so things worked for me. By this time, I had accumulated a fair amount of email and I noticed that it took a second or two to change folders. Annoying, but I just dealt with it. But on one of my upgrades, I noticed that Kmail was constantly crashing. That is beyond annoying. I moved to Thunderbird. I installed the Lightning extension to allow me to integrate my calendar with my email client like Evo and Kontact. Another year or two goes by and I notice a sufficient number of things about Thunderbird that drive me nuts. Time to move again. I look through the options. I test some out. But they all are SO SLOW.

I start looking at some of the second-tier mail clients, you know, the ones that only have a small following, like Sup, and Notmuch. I like a lot of things about both of those, but neither one is really ready to handle my abusive behavior. They both have powerful searching using the Xapian engine. They both deal very well in threads. Sup even has a UI. Notmuch doesn't have a UI. I wrote the beginnings of one and decided that there was still way to far to go before I could really use it. I threw my hands up and adopted a Mutt.

Mutt is really a full featured MUA. It doesn't speak SMTP, it only knows how to speak with a local process such as the venerable Unix Sendmail program. This is perfectly okay, since there are any number of ways to get around this. I chose MSMTP, which runs like sendmail and then makes an SMTP connection to your configured MTA to actually get your mail out there. So my entire mail stack looks something like this:

My Mail
My Mail
We have any number of IMAP servers to collect incoming mail. Fetchmail contacts the servers and delivers the mail to my local machine, filtering and tagging the messages on the way. Mutt notices the newly delivered mail and I read it. I reply or send mail and Mutt passes it off to MSMTP, which looks at the envelope from address and chooses the appropriate SMTP server to contact and pass the message off to. The entire stack suits me quite nicely. Each piece does its thing well and does not depend on the other pieces being of any particular brand. I am now free!

But let me tell you, taming your first Mutt is a non-trivial process. I still have not read the entire 12,000 line manual, but I have read much of it, some parts many times. I have spent many hours learning how Mutt does things, what I can change (almost anything) and what I can't change (very little), customizing key bindings, writing macros, etc. I finally feel like my Mutt and I are getting along. One of the things I really LOVE about my Mutt is that I get to use a *real* editor to compose my mail. Not some clunky built-in, unconfigurable, piece of junk. I use VIM to compose my mail. With a few key settings, it even does syntax highlighting (mail headers, quoted text, etc.), spellchecking and automatic line wrapping for my typed text. It also allows me to paste verbatim text in without messing up its format. I can paste a patch in without whitespace mangling. Hooray. How many other email composers allow this? None that I know of. You don't like VIM? You can use any editor you like.

When I first switched to Mutt, I was considering writing up a patch that would work with labels, giving me virtual folders for my labels. But after exploring the current label support that Mutt has, I found that to be uneccessary. All my incoming mail get passed through fetchmail, which does filtering and delivery. Part of my filtering process is to remove the junkmail and tag all the rest of the mail with labels according to some regular expressions. I have a little script I wrote that will read the headers of a message and spit out the 'X-Label:' header to add to the message. Once delivered, Mutt caches this in its header cache, making for some VERY speedy searches by label. Not only can it search by labels, but it has a very powerful search pattern language. For example, I can limit my view of my messages to '~(~d 6m-8m*2w ~f ("telly"|"cookie") ~Z >1M ~s recipe)' which means "all messages from threads containing messages from 'telly' or 'cookie' with dates from 6 to 8 months ago, plus or minus 2 weeks, that were larger than one megabyte and had recipe in the subject". Tell me this is not a powerful search engine. All of those things it can do without actually re-reading the messages because of the header cache. Some of the modifiers do force Mutt to actually read the messages (like ~b or ~B, which end up searching the body of the message). The header cache does not save all the headers, only the ones that Mutt deems important. Personally, I think this should be configurable.

Besides the Mutt manual (available online at http://www.mutt.org/doc/manual/ or included with your Mutt installation (Debian/Ubuntu users can press F1)), there are loads of online resources to help configure and train your Mutt. I found this site to be very helpful: My First Mutt.

If you are curious what I have done, drop me a note, leave a comment or something and I will share configs or whatever with you. In the mean time, I have some mail to read.

[Edited 27 Jan 2010] Fabio wanted to see my config and my label script, so here goes... A little insight to the twisted mind of Vernon.

What I need is another project

I feel a lot of pressure from all those Acidfree users who are just dying to have Acidfree-6.x released. But that is not the reason I am working on it. I am working on it because 1) I feel a sense of responsibility to do it, and 2) I like working on Acidfree. So I do have a start on the work. When I say start, I mean pre-alpha; not even finished enough to commit to the Drupal CVS repository. I have made commits that I am willing to share with the not-so-faint of heart.

Awake the sleeping giant

As I was reading my daily quota of SlashDot a few days ago, I stumbled across a very intriguing sci-fi story called Engineers's Dreams by George Dyson. The fact that he could not get it published in any science journals because it is fiction and that he could not get it published in any fiction venues because it was too technical just makes me laugh. In fact that is half the reason I was intrigued enough to read it. That and it is a story about Google.

IPv6 regex

I spent too much time today playing with IPv6 stuff that I didn't have any time to work on my latest time sink, Pyrobox. I will have to write about that some other time.

For now, I wanted to get this out there. I was curious about how easy it was to confirm that a string is a valid IPv6 address. It turns out that it is not so simple, thanks to the "space saving" techniques of zero folding that is used. Here are some examples of IPv6 addresses that are valid:

::                           unspecified address
::1                          localhost
fe80::219:7eff:fe46:6c42     link local address
::00:192.168.10.184          embedded IPv4 address

Yes, those are just some of the variety that was introduced that makes the protocol easier to use from a high level, but harder to implement and use from a low level.

Underground overhaul

About a week ago, vernon.mauery.com and www.mauery.com both had a major overhaul, though it probably (hopefully) went unnoticed by all the users. I had been running Drupal 4.6 for about a year, ever since I started using Drupal. Drupal 4.7 was released a couple of months ago and I finally got around to upgrading my website. I figured it would give me a chance to work on a few Acidfree bugs over the holiday weekend as well. I managed to fix/close 25+ bugs over the the holiday. Granted, some of them I closed as "won't fix," but I did actually fix some bugs and implement a couple interesting features. And now that I am running Acidfree 4.7, it will give me more motivation to make sure it works correctly.

MythTV + MediaMVP = Time Shifted Television

I have long been slightly jealous of Darren's MythTV setup. I kept telling myself that I have enough other projects (a.k.a. kids) to keep myself busy for the next 18 years. Plus, the VCR and TV have always been fine for our needs and up until about a month ago were working fine. The TV has never really been what I would call a great piece of electronic equipment. A great piece of something. But it was free and I can't argue with that. It still works if not for its slightly discolored screen. The VCR is in the same boat. But it finally did give up the ghost. First it stopped rewinding tapes and then it stopped recording. So I tossed it. But that left us without a way to record Sesame Street. Dun dun dun...

Acidfree albums

Acidfree is the 4th generation of a brainchild of Darren Hart, Bret Gundersen, and mine as we sought to create a cool webpage that our families could use as a communication hub. The original photo albums looked about the same, but were so integrated into the website that it was a bit of work to extract them and insert them into my own young website. The code was, frankly, not my best work ever. But I was young, inexperienced in web development, php, and user interfaces so my shortcomings can be overlooked for this first generation. The important point is that I got better.

Same great look, new great content manager

The sign said 'Under new managment' and I was skeptical. But it did still look like the same web page that I had grown to love over the past few years. So I thought, 'What the heck, I'll give it a try.' And what a booming success it has been ever since.

This is just to say that I have spent hours and hours learning about the drupal architecture, designing a good photo album for drupal and implementing acidfree photo albums for drupal. I think I did it The Right Wayâ„¢ so I am hoping that I can eventually get it into the drupal contribution modules page. Unfortunately for me, there are already several competing albums (all of which are weaksauce IMNSHO), so it may be difficult for me to convince them that my albums really are as cool as I think they are.

12next pagelast page