Deef's Net

Home of all things Deef

Productivity

August E-Mail Statistics

I was helping someone try and conquer E-Mail overload yesterday, and at one point he asked me how many E-Mails I get. I actually didn’t know, so I just ran a couple of searches on my logs.

In August, I received 14,273 E-Mails, of which 12,362 went directly to my spam folder. Yes, that’s 86.6% spam. One benefit of having your own server is that you can set up a really good spam filter, so I actually only see a spam or two every few days, and I’m not aware of ever having any false positives in over six years of using this system, except for one catalog E-Mail that I didn’t really want anyway.

That leaves 1,911, the vast majority of which went into my Inbox (I used to filter into folders, but now just have everything go into the one Inbox, and I deal with it right away). 69 got filtered to trash for one reason or another (things I used to read but don’t any more, but didn’t want to unsubscribe for whatever reason). Which works out to be just under 60 per day that wound up in my Inbox.

That said, I was almost completely off of E-Mail for a week, and it was summer, which tends to be slower, so I’m not sure how representative that is of a normal month.

Looking at September, so far, I’ve received 2,375 E-Mails, 1,918 of which were filtered as spam, and 8 of which were filtered to trash. That works out to be nearly 90 E-Mails per day that ended up in my Inbox, and there are three hours left in the day.

Number of E-Mails isn’t a very good measure of how busy a person is, since the number doesn’t convey how much work is involved in a given E-Mail. I happen to get a lot of status E-Mails, which are just read-and-delete, so people who get far fewer E-Mails than me could very well have more work to do to keep up with them. And people who get far more E-Mails may be able to delete more of them without even reading them.

But it’s an interesting number, all the same.

In terms of outgoing mail, I sent 344 messages in August, or a little over 10/day, on average (with a week off — discounting those seven days, it jumps up to between 14 and 15 per day. This month, so far, I’ve sent a little over 20 E-Mails per day. This number has dropped rather significantly since I’m no longer the one sending most of the production-related mail for my business.

Again, there’s no measure there of whether they were twitter-sized or Pauline epistles, but it’s an interesting number to look at.

I think one of the best measurements of how well you’re conquering E-Mail overload is by the size of your Inbox. Ideally, it should be zero, at least every so often (once per day is a common recommendation). This doesn’t measure how busy you are with E-Mail, but it does tell how well you’re keeping up.

For me, I aim for an empty Inbox at least once a week, and am usually able to meet it (I keep track). That means that any E-Mail that comes in will have an answer within a week, even if that means saying “I can’t get to this now, but will get back to you at such-and-such time” and otherwise ending up on my to do list.

Current Inbox size: 10, with the earliest E-Mail received yesterday.

The Aftermath

All of the letters that I’m going to be sending before Christmas are now finished. The majority of it was over Thursday night, with a few stragglers yesterday, and one express mailing today.

The period between Thanksgiving and Christmas saw about a 50% increase in volume (loosely rounded) over the rest of the year, part of which is due to end-of-year mailings, and part of which is due to customer growth throughout the year. These past four weeks have also seen about a 50% increase in volume over the same four weeks last year.

Improvements in efficiency would have let me handle a 50% increase without much trouble if they were normal mailings, but end-of-year mailings are almost always more complex. Instead of a sheet of paper in an envelope with a stamp, it’s usually a mail-merged sheet of paper in an envelope with an insert on a particular color and weight of paper plus a reply envelope (possibly also stamped). If we’re lucky. (It’s also the time of year when we get the most unannounced packages at our door containing various objects that have no hope of going through mailing equipment. Like pens.)

As a result, I didn’t end up meeting my turnaround time goals — two business days — for a little over half of the mailings, which is somewhat disappointing, considering that during the rest of the year, I get roughly 80% of mailings finished within that timeframe. The vast majority of them still got mailed in what I would consider a reasonable timeframe — four business days — but I’d like to be able to pull off my normal turnaround time even during busy periods, especially when I know in advance that they’re going to be busy and can prepare for it.

(That said, one thing that contributed negatively to my turnaround time this past month was preparing for future growth, insofar as we’re working on getting a new house/office built before the next major busy season. But I’m going to ignore that for now.)

So, what I’m doing now is looking at what happened over the past month, looking for places where I can make improvements, and trying to figure out how I can increase efficiency and lower turnaround times, given that it’s quite possible my volume next year this time could be 150% or more of what it was this year.

Here are some of the factors that contributed this year:

  • Repeat after me: “Do not start house-hunting during the busiest season of the year.” Not that I had a whole lot of other options — this one is the most economical way of handling future growth, but it is unfortunate that it had to be this month. It would have been better to have gone through the whole process a month earlier, and we’d have been facing fewer time-crunch problems involving snow storms right now. On the other hand, I didn’t have the data I needed to make the house-building decision a month earlier, so that’s moot.

    In any case, we’ll either be in a new house/office by next year this time, or else things will be enough in motion that I won’t need to spend countless hours working on it.

  • Power stacker failure. My primary inserter has a really nice doohickey at one end that creates nice piles of sealed mail, allowing us to let it run unattended while we’re working on other things. Unfortunately, the doohickey broke two weeks ago, and it took a week and a half to get fixed. The backup involves a catch tray, which requires babysitting in case envelopes don’t fall into them nicely.

    Next year, I’m likely to be adding another inserter, so I’ll have a second power stacker to fall back on in case one breaks.

  • Christmas Concerts. Short of eliminating the sound side of the business, which I don’t want to do, there’s not much I can do about this one. I enjoy doing the concerts, at least partially because it gets me out a bit more, and provides some variety. It’s also a lot of fun watching the kids perform. So, this is just going to remain an issue, I think.

  • Predictions. I knew these four weeks were going to be busy, but I failed to account for the spike on week #2, which ended up catching me by surprise. Looking at the data, I could’ve predicted that it was going to be the busiest week and adjusted my schedule somewhat to anticipate that. Instead, I was overly prepared for the first week, which ended up not being as busy. The backlog that resulted from this is probably the biggest contributor to the slower turnaround time overall, because I ended up playing catch-up for the rest of the season.

    Point to remember: missionaries are supposed to get their end-of-year mailings out the week after Thanksgiving. However, because they procrastinate as much as anyone else, they actually get their end-of-year mailings out a little later than that.

  • Complexity. I’m extremely efficient at getting one-page, non-merged letters in the mail. Short of combining machines (which is possible, but the offerings aren’t very attractive yet), there’s not a whole lot I can do to speed this up other than buying incrementally faster equipment.

    The more complicated mailings that tend to come in this month still have a good bit of slower manual labor involved. Things like cutting up response cards are done fairly inefficiently, and mailings with lots of inserts need to be done at least partially by hand.

    This is probably where I’ll focus most of my resources. One improvement that made a huge difference this year was having one printer for #10 envelopes, and another printer for #9 envelopes. That change alone meant that the majority of mailings didn’t require unloading, resizing, and reloading envelopes, which is fairly time-consuming. Colored envelopes and #6 reply envelopes still required more time, but that’s a smaller percentage of mailings. If I end up getting a third envelope printer next year, I’ll probably dedicate one printer to those special cases, so that both the #10 and #9 envelope printers can stay dedicated to their tasks.

    Adding a good cutting machine and a larger inserter will go a long way toward streamlining the remaining bottlenecks in the process. And, conveniently, I’m getting to the point where I can actually afford them. That certainly helps.

  • Inventory. This was much less an issue this year than last year. But I still underestimated how many #9 envelopes I’d need to get me through the season, twice. And, unfortunately, UPS encountered delays with both shipments (one misdirected shipment, one storm). Other than that, though, I didn’t have to make any emergency orders.

    It’s still something to focus on next year. I want to make sure I have enough supplies before Thanksgiving to get me through to Christmas, especially since the delivery companies are also swamped, and more prone to making mistakes that result in delays.

  • Picture printing. I normally get this done at Wal-Mart when I need 4x6 pictures to include in a mailing. Unfortunately, Wal-Mart had significant delays with both groups of orders that I placed with them this year — the first was a week delayed on an overnight shipment (they seem to have forgotten to actually mail it, and then sent it at a slower class of mail), and the second was two days delayed on a one-hour in-store pickup (they ran out of photo paper).

    It would be nice to be able to do this in-house, but I don’t know that I could do it economically right now. I’ll probably need to continue relying on Wal-Mart next year, and re-evaluate then. Perhaps they’ll work out their own stocking/shipping issues so that it won’t be a problem.

  • Space. I don’t think this slowed anything down this year, or at least not significantly, but there were definitely times when there was no horizontal space to be had on any table, printer, shelf, dehumidifier, or desk, and the floor was starting to become impassable with all of the various boxes.

    Other than the obvious “I need more space, overall” issue, which will get addressed one way or another before next summer, I should increase the staging area for jobs that are ready to be assembled, and get a better filing system for things that people send us to insert with their mailings so that it’s more vertical and less horizontal. Both are pretty simple and cheap to do, which is nice.

  • Communication. There were a lot of repeated questions that came up over the past few weeks that I should have answers for on the web site. There weren’t a lot of questions that came up that were already answered on the web site, so that’s a sign that either the information that’s there is easy to find, or that I don’t actually answer anyone’s questions on the web site, but I’ll take that as a positive sign.

    I’ve been keeping notes on the questions that have been asked, so I know what I need to write. The trick will be making it easy for people to find when they need it, or, even better, to let them know before they need to look for it.

  • Time. Even if all of the extraneous factors hadn’t been involved, there was still more work than I could have done in the 160 business hours of the past four weeks. What actually happened is that Christine worked about half-time for the last three weeks, in addition to whatever I worked (I don’t track my own hours very well, but it’s safe to say it was more than 40 hours/week).

    I’ll be able to make more efficiency improvements over the coming year, but, assuming growth next year is anything like growth this year (and I have every reason to believe it’ll be at least as much next year), I have all the data I need to be convinced that one full-time person and one part-time person won’t be able to handle it even with the new equipment. I could’ve kept another full-time person occupied this past month without any trouble.

All of the above, in addition to the various code improvements I’ve jotted down over the past few weeks, gives me plenty to work on before May, the next busy season, is here. That will be my trial run for next year’s end-of-year season.

Treo 650 vs. Verizon XV-6700 vs. LG vx8600

Back in February, my Treo took a fall and more or less stopped working. Not completely, but almost nothing worked.

Eventually, I figured out that it was due to the right shift key being jammed in the depressed position, keeping most keystrokes from working, along with a lot of taps. A little surgery to insert a small piece of paper between the contacts of that key, and the phone was up and running again, minus that one key. Since the shift key is the one redundant key on the Treo, it could’ve been worse.

At the time, I was only two months away from Verizon’s “new every two [years]” promotion, so I figured I’d just wait until then and upgrade to another phone. So, in April, I decided to take the plunge and switch from Palm OS to Windows Mobile.

After some research and brief contemplations about getting a smartphone instead of a PDA, I decided on the Verizon XV-6700, a.k.a. HTC Apache, a.k.a. UTStarcom PPC-6700 (this is a phone with an identity crisis).

XV-6700 First Impressions

The XV-6700 is roughly the same size as the Treo 650, though a lot boxier. Style apparently wasn’t ranking very high on the designers’ list when they put this device together — it looks like a rectangular hockey puck crossed with an Oreo.

Ignoring the fashion statement, the major selling point of this phone over its Windows Mobile competition is the keyboard. The front of the PDA only has a few buttons and a five-way knob, but the whole side of the device slides out, revealing a rather large keyboard. It’s actually large enough that you can do four-finger typing without too much trouble. The Treo, by contrast, is pretty much limited to two thumbs.

The XV-6700 also has built in WiFi. Major points for that.

Other nice features are the large rectangular screen, which can be run in either portrait or landscape mode, and the 1.3MP camera. I especially liked the built-in LED, which, while probably not all that useful as a flash, made for a very nice flashlight.

When I started using the phone, one of my first observations was that it lived up to the Windows stereotype — it crashed a lot. Over half a dozen times in the first day. I can see why the reset button is easily accessible, and not hidden in the battery compartment.

I was expecting this, though, especially on my first day or two of using it, while I was pounding the device to smithereens to find its limits. It would seem that Windows Mobile is more ambitious than the device is able to handle. After figuring out some boundaries, I was able to basically eliminate crashes.

XV-6700 Software

On the Treo, MyBible is a killer app for me. It’s ridiculously fast, and does most of what I want in a Bible program. Because of that, I immediately downloaded their equivalent program for Windows Mobile, PocketBible.

That didn’t go so well. Whereas MyBible is perfectly integrated with the Palm OS, PocketBible is, at best, clunky. It breaks the UI guidelines in a number of places, it’s slow, it crashes a lot, it doesn’t remember where you left off last time (usually because it crashed in the meantime), and it isn’t nearly as intuitive as its counterpart.

I really tried to acclimate to its quirks, but just couldn’t do it. I was finding myself bringing a paper Bible around to church and Bible studies instead, because the program just couldn’t keep up, and it would frequently crash and need to be reloaded, which is not conducive to a good Bible study.

In desperation, I downloaded OliveTree’s BibleReader for Windows Mobile. My experience with their program from several years ago hadn’t been very good, but it was better than this.

To my surprise, OliveTree has dramatically improved their product since the last time I’d looked at it, and it’s now positively pleasant to use. It used to take at least 15 seconds to pull up a verse in my old version, but it’s now more or less instantaneous, even when the Bible is on a memory card. Reference books work just as quickly, and OliveTree has really expanded their library to include all sorts of books. Such as Wayne Grudem’s excellent Systematic Theology, which is packaged with the ESV Bible translation. Perfect!

So, Bible software is taken care of with BibleReader. Internet Explorer works well — much better than Opera, Minimo, and another browser whose name is escaping me. Pocket Outlook does a good job with E-Mail, as long as you’re not using a UW-IMAP server (which I am, but POP3 works as an alternative). Contact management, tasks, and calendar both work fine out of the box. MP3-playback wasn’t a problem.

I definitely give Microsoft credit for including a very good package of applications with the out-of-box installation of their handheld OS. Would that they’d do the same thing with their desktop OS!

SSH took a long time to get straightened out, but I eventually found a program that worked and was cheaper than $80 (one SSH program for Windows Mobile would’ve cost more than my phone did!).

That’s nearly all that my PDA gets used for. Oh, and games. There’s no shortage of games for Windows Mobile. Some of them are even free. I tried several demos of the non-free ones, and they looked pretty impressive. In the realm of free games, there were a number of ports of old BBS games, and I enjoyed a much-too-long game of Space Trader on a flight to Orlando (and subsequent hotel stay, at least until I finished the game at the end of the first evening there).

The memo program was nearly the only disappointment out of the built-in software. Each memo is a separate file in the filesystem, and they’re a royal pain to work with. For one thing, there’s no apparent way to categorize them. I have a lot of memos, and this was a problem.

There was a third phone on that list…

I might have been able to find a workaround for the memo problem, but there were a few things that became showstoppers in the meantime:

  • Phone quality. The XV-6700’s speaker isn’t loud enough for use in any but the quietest environments. In addition, the microphone is much too sensitive and omnidirectional.

  • Too much stylus. The Treo has a keyboard that’s always accessible. It’s smaller, true, but it means there are 31 more hotkeys available before you need to pull out the stylus. This is huge, and it became increasingly frustrating not to have that capability, especially since most of the hotspots on the screen were too small and too close together for a fingernail-press to work reliably. Pulling out the keyboard to execute a command is more cumbersome than I’d like.

  • Battery life. This is really what killed the deal. In Boston and Orlando, it worked fine, but in West Lebanon, which is not a pinnacle of cell phone reception, the XV-6700 would barely make 10 hours on one charge, and that was with no use at all. My 2-year-old Treo easily lasts several days, even with moderate use.

Enter the LG vx8600

After about a month of using the XV-6700, I’d had enough of poor phone quality and not being able to make it through the day on one charge, and decided to add another line. This served a few purposes:

  • Since we don’t have a land-line, this would give us a back-up line and phone in case one went dead for some reason. It could also become a separate business line, if need be.

  • I could turn the phone off on the XV-6700, just use the WiFi most of the time, and have the battery last for several days. The LG phone would be my phone, and the XV-6700 would be my PDA. Bye-bye convergence, but it could be worse — the LG phone is extremely thin, and easily fits in a pocket, so I could still carry both of them.

  • It gave me a web-capable cell phone, in case I ever get around to programming some mobile web stuff.

The LG phone is pretty nice. As a phone, it does very well. Sound quality is excellent, and it’s easy to use. It has a good feature set, plus nice bonuses like a 1.3MP camera, MP3 player, and alarms. The vibrate and ringing settings are rather flexible, and you can set it to “sound on alarm only”, which is a great little touch (usually sound is either all on or all off).

The Get It Now and VCast features are much-touted, but I’m not at all interested in them, so I can’t offer an opinion as to whether or how well they work.

The web support is, in a word, terrible. I think the phone’s web support is probably decent, but Verizon has crippled it beyond redemption. They’ve locked out the ability to set a home page, and force you to go through their advertising-laden, useless menus. Even going to a manually-entered URL has to be done through a proxy web page, which means it takes well over a minute before you can get to the site you want. It’s usable, but you’d have to be pretty desperate. Especially when compared to the XV-6700’s web support, which is stellar for a handheld.

The phone’s reviewers talked about getting good battery life, but again, it seems like they live in areas where reception is better. This phone will usually give me 18 hours per charge, though, which will get me through most days.

I tried wearing both the LG and XV-6700 phones, which lasted for approximately 15 seconds. I was very quickly reminded of why I didn’t get a cell phone until I could get one that combined a cell phone and PDA — wearing more than one thing on my belt just feels ridiculous.

After that, I tried wearing the XV-6700 and keeping the LG in my pocket, and alternated that with just wearing the LG, to see which one I would prefer.

So, which phone is on Deef’s belt now?

After alternating that setup for a couple of weeks, I finally settled on… the Treo 650.

Yep, right back where I started.

With a clean install, upgraded firmware, and a better memory card (snitched from the XV-6700), the Treo is now positively zippy. I kept the upgraded (unlimited) data plan and decided to try a new set of software, and I’m very pleased with how well it’s working.

I’m hoping that my 650 will last until Verizon starts offering something equivalent to the 755p, at which time I’ll replace it with that, so as to have more RAM, faster wireless data, and bigger memory card support.

The LG has gone to Christine. I’m not sure if she’s going to keep it yet, or if the battery life is going to be a problem for her — she seems to be getting less life out of a single charge than I did. The XV-6700 is on the other line, and serves as a handy WiFi device, along with a good test environment for mobile web development.

I was going to give reviews of some of the new programs I’m using on the Treo, but this is already more than long enough, so I’ll do that some other time. I’ve definitely come back into the Palm OS fold, though, after experiencing Windows Mobile for a month and a half.

Google Maps Update

Someone just suggested I change my route to Colorado, taking I-88 and I-86 instead of I-90. Faster and cheaper, he said.

So, I decided to look it up. I was trying to figure out how to coerce Google Maps to use a different route as I typed in the URL, and then the start and destination.

But then, lo-and-behold, as I move the mouse around the map, I get this “Drag to change route” tooltip.

Neat! And incredibly well-timed. It wasn’t there last week.

My only gripe would be that you no longer get an estimate as to how long the entire trip will take — it breaks it up into segments based on where you clicked. I think it might be a little too eager to show that tooltip as well, but I imagine they’ll tweak that over time.

Mac vs. Windows

Oh no! It’s another Mac vs. Windows comparison! Run and hide!

I bought a Mac last year because quite a few of my customers were sending Mac-formatted files. Until then, I had two options for dealing with them:

1) Ask them to turn them into PDFs and resend them.

2) Sneak over to the church office after hours to convert them to PDF myself.

It helped that I lived next door to the church, but still, option 2 wasn’t a long-term viable solution, and the whole point of my service is to make it easier for missionaries to send their files, so whenever I can avoid asking them to do any extra work, I do.

At the same time, my then-five-year-old Dell laptop was in serious need of going into retirement, so I was also in the market for a laptop to serve as my non-work and on-the-road computer.

So, I bought an iBook. It’s the 12”-screen model, is tremendously portable, and quickly got named Snowball. (I name all of my computers after either cold things with spillover into natural disasters. It was going to be cold things or weather patterns, but I couldn’t start liking the idea of calling a server “gentlerain.deefs.net”. Avalanche sounded so much better.) It predates the Mac-Intel combination, intentionally, since I wanted to be able to support legacy programs.

I wasn’t sure if a Mac would be able to keep me happy with my personal computing needs, but I was confident enough to give it a go — most of my non-work computer usage consists of Firefox (cross-platform), Thunderbird (cross-platform), Photoshop (cross-platform), and accessing other computers using SSH (which is so cross-platform that my phone can do it). Add the occasional game to the mix and some sort of PDF viewer, and there’s not much else that I use.

Apparently, the experiment worked out, because I just bought another one. A MacBook Pro this time, and on the day of release, no less. I must really look like a Mac addict. Ha!

There were a few things that didn’t work out, so I’ll list those first:

  • Microsoft Money. I’ve been using Microsoft Money for a long time. In fact, my current Money file has been around longer than I’ve known my wife. Outside of Windows itself, there’s no program that I’ve used continuously for a longer period of time (I switched from WordPerfect to Word when I went to Dartmouth, otherwise it would’ve won even over Windows). It’s not remotely Mac-compatible, so it’s on my work computer.

  • GAIM (now Pidgin). There isn’t/wasn’t a native Mac version of GAIM available. I didn’t like iChat, and none of the other alternatives I tried were all that impressive to me. I think I settled on iChat by default, but drifted away from IM pretty quickly.

  • Games. Lots of Yahoo’s games don’t work on the Mac. That was disappointing. Fortunately, Text Twist does. In addition, Neverwinter Nights was a no-go (not that I think the iBook’s specs would have met the requirements). Warcraft and Starcraft both work, which is nice. I did buy a copy of Bejeweled 2 for a low-brain-commitment game while traveling, and that helped.

  • The display. After just a year (or, more precisely, just over a year), I have a number of pixels that aren’t working right. I’m not impressed by that, which was never a problem with the Dell.

  • Preview. The font rendering is illegible most of the time, unless you’re zoomed in. Acrobat on Windows is much better, especially with small fonts. Presumably Acrobat can be set up in place of Preview. I haven’t checked yet.

I also had a few other gripes listed here, but they’re business-related, and this is more about the personal side of things, so I removed them.

On the positive side, there’s the following:

  • Cost. At Dell, the computer I spec’ed out as a not-especially-extravagant laptop for personal use cost between $1800 and $2100. The cheaper stuff was either not powerful enough to run the software I’d be running on it at a decent speed, or the parts were flimsy and/or meant for desktops. The Mac that met my specs was $1299, minus whatever rebate Amazon was running at the time, plus a little extra to upgrade the RAM myself.

  • The “it just works” factor. Especially when compared to Windows and Linux, this is truly impressive. Wireless networks just work. Networked printers show up automatically, usually without needing to find and install drivers. Apache, with PHP? Sure, just check this box to turn it on.

  • Dashboard. I like having a bunch of frequently-accessed tools just a keystroke away.

  • Spotlight. Load any program or file with Apple-Space, first two letters of the program or file, maybe an arrow key or two, and Enter.

  • Less lockout. I don’t know about “no lockout,” but I don’t have to authenticate my operating system every time the computer boots up, there’s no 30+ character license key to enter when you reinstall the OS, and I can get updates without having to install validation software. It’s nice when the OS doesn’t (at least visibly) assume that you’re out to get it.

  • It’s pretty. Windows Vista makes up some ground in this respect, but the Mac is still more aesthetically pleasing, in my opinion. I’m utilitarian enough that I don’t care much about this aspect, but it’s a nice bonus.

The kicker, though, and the reason I just bought a new MacBook Pro, is the powered-by-Unix aspect. The iBook gives me access to just about everything I like about Linux, and adds a really nice UI, without the need to spend hours upon hours downloading and compiling KDE, replacing it every few months when there’s a new release, and trying to work out compatibility issues.

Having a Unix variant on hand was particularly useful back in April, when I found out that I wasn’t going to have Internet access at a conference that began the next day. I was able to get a full working copy of my software going that night, which really saved the weekend in terms of marketing.

That also lets me put my development server right on the laptop if I want, so I can write and test code wherever, without needing to connect to an outside server.

When combined with an Intel chip and Parallels (if it runs as advertised), that means I’ll be able to take just one computer out to a big conference in Colorado this summer, and use it to do all of my work as well as run a demo server at my booth. Otherwise, I’d need two or three.

I went with a MacBook Pro to get the bigger screen, more RAM and disk space for the PostgreSQL database (9GB address validation database, for instance), and more processing power for running Windows simultaneously with the Mac, the database, and Apache.

My main work computer is going to remain on Windows, for a few reasons:

  • Most of my incoming work requires Windows.

  • Printing is much easier on Windows.

  • I have no idea what the algorithm is behind the green plus button on the Mac (please fill me in if you know), but it certainly isn’t as useful as Maximize is on Windows.

  • Windows seems to be better at multi-display than Mac. There’s certainly a much broader variety of video cards, and Windows makes it very easy to do a three-monitor spread, which I prefer by far to one large screen (never mind the fact that my three LCDs combined cost less than a single cinema display). It’s simple to assign programs to a specific monitor.

  • Mac desktops strike me as being overpriced. The exceptions would be the non-expandable iMac and Mac mini, which don’t support my three-monitor setup and are therefore not in the running. Going from three monitors to one monitor would be like trading in your Hummer for a Mini-Cooper. Cramped. And you don’t even get the improved mileage in this case.

I’m very curious to see how Parallels is going to affect the playing field. I haven’t installed it yet (I need to do a Windows license shuffle first), though it’ll be happening soon. If I can negate some of my Mac frustrations and get some of the Windows benefits, it might be worth doing. We’ll see!

Business Retreat 2007, Days 3-5

I’m currently running a bunch of backups as a change of pace, and since that’s going to take a while (many GBs moving around on three servers in different parts of the country), now’s a good time to write an update on what I’ve been doing.

The rest of Sunday was spent with some CCC friends from the northeast who moved here. They have a four year old and a nine month old, both of whom are very outgoing, which was a bit of a shock to my system since I’ve been working alone for some time. :-) After a bit of adjustment, though, it was fine — they were both very well-behaved, which helped.

We visited Downtown Disney for dinner. In order to get into the Magic Kingdom for a few hours, I would’ve had to pay $72 or so, which didn’t exactly seem worth it. Downtown Disney doesn’t have an admission charge (just a whole lot of shops), so that was a better option. It’s very definitely a capitalistic, materialistic empire. And I’ll probably just leave it at that and move on to other things. The Lego shop was neat. The fish was pretty bland. The hot fudge ice cream brownie Sunday made up for it. And walking around gave us something to do while we talked, which kept the kids busy.

On Monday, I visited CCC headquarters. I think this was either my third or fourth time there, but it’s been a few years, and I wasn’t mailing letters for people (or even considering it — I was still a student at the time), so I had a somewhat different agenda this time. I’m not sure how many visitors to CCC want to spend several hours in the mailroom and warehouse, but the mail services staff were gracious and let me watch them work. They also went out of their way to fire up the big inserter and do a batch of receipts while I was there (they normally do that in the evenings).

So I now have a few more ideas of how to work effectively in my office. I also have some ideas on how to lay out my next office space, when it comes time to move into a bigger space. Most of my mailroom experience (actually, all but one visit to UVM) comes from things I’ve done myself or have read on manufacturer web sites, so this was helpful.

Before I left, I also got a brief tour of Donation Services’ workroom, to see their equipment, and get a better idea of how to best prepare inserts for mail that’s going to be sent to them to process. They go through quite a few envelopes.

During some downtime on Monday while I was there, I put together a program that generates sample names and addresses. It’ll be helpful for making demo screenshots without needing to use other people’s mailing lists, and also for testing loads (e.g. what would happen if I were to get a 5,000-person mailing list going out via non-profit mail?) The generator chooses addresses that are theoretically valid (the street, city, state, and zip all line up, and the house number is in the right range, though there may or may not be a building at that particular address), and gives it a random first and last name.

Yesterday, I started work on redesigning my work pages, trying to figure out how to display a massive amount of information (at least for one screen) in such a way as to not miss any customer requests, ensure the right letters go with the right envelopes, that the paper and envelopes are the right colors, and so on. Now that Christine’s working with me fairly regularly, I also need to be more careful to make sure that things are written down and not just in my head. That sort of problem has resulted in a fair bit of waste lately (all my fault, unless you want to blame her for not being able to read my mind!) as we’re going through the learning curve of working together.

Figuring out a workable design that isn’t tremendously cluttered is taking some time. I’m probably not going to get that finished on this trip, though I hope to have at least a new iteration live before I get back.

After working on that for a while, I switched to address parsing. My main programming goal for this trip was to get the software to be able to reliably check city+state+zip (5-digit version) and make automatic corrections whenever possible, and also to start code that will process the street-level part of the address as well, to be able to assign 9-digit zip codes. Standard and non-profit mailings are currently taking longer than I’d like, mostly because of the required address validation for those rates (compounded by the fact that for a while I was forgetting to do any validation until after the envelopes were printed). Most of the corrections I’m making can be easily automated, which will make these mailings much less painful, and I’ll be able to promote them more broadly without wincing.

Most people would just buy a piece of software that will do the validation for them. I have a number of vendors from the National Postal Forum who are all trying to sell me their respective packages. And I was considering buying one of them, but I’ve just about made up my mind not to. The main reason is the level of control I’d lose.

Let’s take my mailing list importing code as an example. One of my design goals with this service was to allow people to send a new mailing list each month, if they want, in whatever format they normally use, at no extra charge. If I had to open each mailing list, scrub it, save it in a particular format, and then import it, that would be time-consuming, and I’d need to charge a labor fee for that, or lose money, especially with some of the more eccentric list layouts (e.g. donor list from a table on a web page saved into a Word file, with phone numbers and E-Mail addresses included — not everyone sends their mailing list in Excel).

Instead, I click an “import” button, and the software sees that it’s a Word file, figures out the layout of the document, pulls out the addresses, removes the phone numbers and E-Mail addresses, and then splits out the addresses into the component parts (name, street, city, state, etc.). If the file had been an Excel file, but with the city, state, and zip combined into one cell, it can deal with that as well.

If a new file comes in that it can’t handle, it’s usually just a matter of adding a bit of code to the program, rather than needing to touch the file in any way. For example, I started receiving Word files that were set up as ready-to-print envelopes, complete with return address. The Word importing code already did most of the work. More or less all that needed to be done was to add a couple of lines that said “if a particular address shows up roughly 50% of the time, toss it”.

Going back to address standardization products, each of them is a black box. There are shades of blackness, but the general idea is that you put an address in, and you either get a standardized address back out, or some variation on nothing. Some products are better at getting to the standardized address than others, some do everything on your computer whereas others need to call home, some (well, maybe one) run on Linux, others need a Windows computer, some are designed for client/server, others are client only, and they run the gamut of prices from roughly $295/year + unadvertised other subscription costs up to more than my annual income.

But the “variation on nothing” bit is what gets to me. For instance, I brought along a particularly troublesome mailing list to the National Postal Forum, and had one of the companies demo their product on it. One of the addresses came out as non-standardized, and in looking at it, we eventually discovered that the street, city, and zip code were in New York, but the state was marked “Philadelphia”.

The rep’s reaction: “Yep, that’s wrong.” My reaction: “Yes, but that’s incredibly trivial to fix.” If I were to use their product, I’d be stuck fixing that one by hand every time it shows up on a mailing list, until and unless I could convince them to add that check to their code, and then pay them more money for the new version. With mine, a few minutes tinkering with the code and I’ve gotten rid of that entire class of error.

The trick, of course, is getting the codebase to the point where I’m not spending more time coding rules into it than I get in terms of benefit. That’s why I do these programming retreats and have the occasional programming day at home. By spending a day or two with the phone, E-Mail, and all the various machines turned off, I can usually get something going that works well enough to be usable, at least for me. Then, once the base code is there, I can add to it in bits and pieces over time.

This has worked extremely well with the mailing list importer. It’s now at the point where I’d usually rather have a list of address blocks rather than having the information broken out into fields, because my code will usually do a better job of splitting it out than people or other programs. There are still a few exceptions, but the “it’s arrived” (or is that “it’s alive”?) moment came when I was importing a list from Outlook, and decided to use my own code instead of their pre-split-out fields. It does a noticeably better job with most international addresses nowadays, too.

As of about 3am last night (yes, I should’ve gone to bed earlier, but the end was in sight), the software can correctly assign 5-digit zip codes to somewhere between 97% and 99% of most address lists, taking into account spelling errors, the wrong state, numerous zip code errors, missing letters, extra letters, wrong letters, and so on.

it has a couple of improvements over the version that I wrote at the Postal Forum, including that of being more accurate. First, it’s able to handle several errors in one address. Second, it’s more optimized, trying all sorts of simple corrections before getting into the much more CPU-intensive tests for missing letters, transposed letters, etc. It’s therefore not much slower than the earlier version, even though it does a lot more work.

As of early this afternoon, the code can parse and assign 9-digit zip codes to somewhere between 70% and 80% of the people on the 18 mailing lists I ran it through, without spitting out any warnings or crashes (at least on those lists). It still has quite a way to go before I open it up for customer use or let it run automatically, but it’s enough that I can get that bit of code out of my test folder and into the live code and build it up over time. It’s also working well enough that I’ll be able to use it to help figure out some of those last few 5-digit zip codes without needing any user intervention (e.g. when the address has a city and zip code that don’t line up, I can check to see if the street address exists in one or the other automatically, rather than needing to do it by hand like I do now).

Dinner-time, now. After dinner, I’ll be adding some code to make sure the corrections look nice, and then incorporating it into the mailing list importing code. After that I’ll either work on merging duplicate address records, or more work on the work pages, if there’s any time left in the evening.

Recommending against Firefox 2.0, at least for now

At least for the time being, I would not recommend that you upgrade to Firefox 2.0, which came out a week or two ago. It has some nice improvements, but they’ve removed some of the flexibility, which has resulted in me needing to change hidden settings and (just now) code in order to get behavior that used to be default. In my opinion, the improvements don’t outweigh the drawbacks.

For instance: in FF1, clicking on a link to a PDF would either open it in an Acrobat applet or prompt you to either open the file in the Acrobat program, or save it to disk. Which of the two it offered depended on what MIME type was used (application/pdf or application/octet-stream). This was reasonable.

In FF2, it either opens the PDF in an applet (depending on how you have it configured) or prompts you to save it to disk. The “open” option is gone, because of a decision that all application/octet-streams are potentially dangerous, not just .exe files, and that the user can’t be trusted to decide for himself. From my point of view, that’s not reasonable. I can accept the .exe case, even if I don’t like it (and I hear there are extensions that let you get around that problem), but not for .pdfs.

It’s compounded by the fact that this is a task that I do literally dozens of times per day for work, and I’m certainly not about to save each of those files to disk just so I can go hunting for them, open them once, and then delete them. That would be going from one keystroke (“Enter”) to “Enter-Win-E-mouse-click-[figure out what the file was called]-scroll-mouse-click-click-Alt-Tab-Alt-F4” or “Enter-Alt-Tab-Tab-Tab-Alt-F-O-[figure out what the file was called]-[type first few letters of filename]-down-down-down-down-Enter-Enter” (and it doesn’t help that most of the files will be named something like “November letter.pdf”).

What’s worse, though, is that, unlike the other gripes I’ve had with FF2, this one isn’t configurable, even from a hidden configuration option in about:config. You just need to put up with it. Or change the code (which is the classical example of why open source is better than proprietary software, and it’s what I did, but I’m still annoyed).

I’ve yet to see what else is going to slow me down (I’ve been running FF2 for about two hours of light usage so far), but based on that find and the default minimum tab width (described in one of the recent links), I don’t think you should install FF2 at this time if you’re more than a novice user (and less than a code hacker) — wait for 2.0.1 or 2.1 and see if there are enough complaints that the developers open things back up and set the defaults to be a little more friendly to power users. Or, at least, keep a copy of 1.5.0.x handy, so that you can go back if you find that the changes aren’t to your liking.

AutoHotKey

This looks like it’s going to be worth an install: http://www.autohotkey.com/

It lets you create scripts to automate keystrokes and mouse clicks, which could definitely come in handy. And this program is open source, unlike a few others that I’ve tried.

I’m on my Mac for the weekend, so I’m just writing about it instead of installing it, but if it works out well, I’ll probably be writing about it some more.

One-liner: Open all modified, uncommitted files

emacs `cvs -nq up | grep -e '^[MA]' | awk '{ print $2 }'`

From bash (may or may not work in other shells), run emacs, opening all locally-modified or added-but-not-committed files (e.g. so that cvs diff can be run on them, or to allow last-minute changes before committing them directly from within emacs, rather than the shell.

You could also include new files that haven’t yet been added to CVS by changing [MA] to [MA\?] in the grep. Be sure to note that everything after “emacs” is enclosed in backticks (the key to the left of the “1” key on most keyboards), not apostrophes.

(I’m sure this could be converted to vi and/or Subversion pretty easily, as well.)

Move messages in Thunderbird with a single keystroke

(You can tell that this hasn’t been as busy a month for prayer letter printing as May…)

Somewhere, in an article I was reading over the past week or two on productivity, the suggestion was made that we could save quite a bit of time (cumulatively, at least) by binding “Move current message to folder x” to a keystroke, so that we don’t need to use the mouse, or memorize the sequence “Menu-key M Right Enter O Enter” or “Menu-key M Right Enter L L Enter”, which was what I was doing on the PC (the Mac is less keyboard-friendly, and I couldn’t find an equivalent*).

I thought: there has to be a way to do this in Thunderbird (my E-Mail client of choice — I tried Mail.app, but it’s missing some very fundamental features, like multiple identities within one mail account, which I use all the time**).

Syndicate content
© 2000-2008, Stephen Simms. All Rights Reserved.