Tales and thoughts from the founder of NormSoft (maker of Pocket Tunes), working and living in St. Croix, USVI

Sunday, December 26, 2004


[Posted with hblogger 2.0 http://www.normsoft.com/hblogger/]
Even the airlines are joining in on the Christmas Cheer. I got a coupon for up to $150 yesterday. The catch is that my luggage needs to remain lost for 5 days...

[Posted with hblogger 2.0 http://www.normsoft.com/hblogger/]

Monday, December 13, 2004


I just had to share this support request...  I'll withhold the name to protect the ... err ... not so innocent.

"I just want to know if I can set Pocket Tunes to vibrate mode so my tunes will vibrate to the beat instead of playing music. I want to drop it down my pants and be happy all day!  Rock on dudes!"

Sunday, December 12, 2004

Pocket Tunes Update

Pocket Tunes 3.0.6 is now available with lots of nifty new features, including support for M3U playlists.

I've also updated the Pocket Tunes automation API and the Pocket Tunes skin compiler.


Wednesday, November 17, 2004

Tuesday, November 16, 2004

Don't use blacklists!

Today we sent out a newsletter to all of our users.  It's a perfectly legitimate email sent to existing customers with clear unsubscribe instructions, and we completely honor all subscription/unsubscription requests.  We even process all bounce requests and remove emails that bounce 3 or more times.

Several hours later, SpamCop blacklisted us, and we got a slew of complaints from customers who weren't getting their order confirmations.  This is a perfect example of why blacklists are bad.  Do not use blacklists on your server!  If you use blacklists, you are likely blocking legitimate email because most of these blacklists make ill-informed decisions based on over-zealous user reports of spam.  There is no oversight and very little recourse for valid companies to contest the blacklisting.  For all we know, it could be one of our competitors reporting the spam.

All the user has to do is click the unsubscribe link, and we'll NEVER email them again, but yet they'd rather go through the trouble of filing a bogus spam report.  Go figure.


Friday, November 05, 2004

Don't Install the T3 DIA Compatibility PRCs on a T5

We've had half a dozen customers angrily email us that the DIA is no longer working on their T5 after installing Pocket Tunes.  It turns out they installed the T3 DIA compatibility PRCs.  The only solution that I know of is to perform a hard reset and restore your files except for those 2 PRCs.  Two problems here:

1. Why the hell did PalmOne let the T3 compatibility PRCs screw up the T5?

2. Why do customers insist on installing files for devices that they don't have?  (In the past, we've heard from customers who installed these files on their iQues and Zodiacs, too!)

If you're a Palm developer, it's another support nightmare to worry about.  Have fun!

Saturday, October 30, 2004

NormSoft Acquires HBlogger

Well, this announcement is a little old, but I've been quite busy lately.  NormSoft recently acquired a suite of software products from the PalmOS company Hexlet LLC.  Among these products is HBlogger, a very nice PalmOS app for posting messages and photos to your blog.

We've also acquired TrafficStat and DialStat, two tools to track your data and voice usage on your PalmOS smartphone.

To see all of NormSoft's products, visit http://www.normsoft.com/products.shtml


Saturday, October 09, 2004

Here's Mark Belliveau, Director of NormSoft, getting ready to enjoy a fun week with PalmGear on their 2nd annual cruise...

[Posted with hblogger 2.0 http://www.normsoft.com/hblogger/]

Wednesday, September 29, 2004

It's been a very successful PalmSource EuroDevCon. NormSoft announced a partnership with GlooLabs to provide a service for listening to your home music collection anywhere from your wireless Palm. Go to NormSoft's press page for details.

Mark and I are now headed over to downtown Munich for Oktoberfest. We'll have a few beers for Pocket Tunes!

[Posted with hblogger 2.0]

Sunday, September 12, 2004

Well, according to Symantec, SideStep is now considered spyware... Apparently it spies on your web browsing and sends your URLs to their main server to determine whether to open up SideStep...

It looks like you might be able to turn this 'feature' off, but I decided not to take the chance...

Tuesday, August 24, 2004

I found an interesting meta-search engine for travel called SideStep.  I just booked a flight to France for the Orange Code Camp and I decided to give them a try.  I have mixed feelings so far.

Their flight search engine found a great deal on American Airlines for 50% of the cost of what Expedia or Travelocity could find.  It's offered from airfare.com, which seems to be a low-budget travel site with strict cancellation policies.  So far so good.

I also found a hotel in Paris for the last night of my trip.  It was a decent hotel within my price range, so I picked it.  It was offered by PlacesToStay.com, apparently powered by WorldRes.  Less than 24 hours later, I received an email from the hotel saying that they are cancelling my reservation because WorldRes has not been paying them on time, but if I'd like to book the hotel directly, I should contact them.  That's not a good sign.  Granted, it could be that the hotel is trying to side step (pun intended) the commission from WorldRes, but it seems like they could only do this for so long before they were delisted.  So my bet is that the hotel is telling the truth and WorldRes is delinquent.

I contacted SideStep and told them about my incident.  It's not in their interest to partner with financially irresponsible companies, so I hope that this will improve over time.  At present though, I'd say to be cautious whom you book through.

Monday, June 21, 2004

Oppose Discrimination

Help oppose this ridiculous constitutional amendment.  Besides the fact that it's discriminatory, it's giving the federal government power to legislate things that should remain the domain of individual states.  I don't understand why people want their lives to be more regulated.  Even if you happen to agree with what this amendment says, consider that you may not agree with the next amendment that comes along.  Ask yourself if you want your rights to be dwindled away by overzealous politicians eager to be re-elected.

Monday, June 14, 2004


I just took a look at the number of viruses that my script caught today.  It was over 10,500!  Holy crap!  There's 826MB of viruses in the blocked folder since May 1.

Saturday, June 12, 2004

Pocket Tunes 3.0

Pocket Tunes 3 is finally out.  We're now dealing with the usual flood of emails, questions, comments, etc. that follows a new release.  We'll be busy all weekend, it looks!

New Spam/Virus

Apparently there's a new virus going around in Germany that will make people reconsider their catchall email accounts.  It makes up a bunch of email addresses, presumably by random or by looking at the local name of addresses in your address book, and then it sends them all to each mail domain in your address book.  So a few times an hour, I've been getting batches of 20-50 emails from the same zombie computer.  Looks like I may have to start filtering out dynamic IP addresses with our mail server. :(


Thursday, June 10, 2004

FntDefineFont gotcha

Beware if you use FntDefineFont on the Tungsten T3.  You should be prepared for other applications popping up and redefining your fonts!  In particular, the clock application (which pops up when pressing the select button on the 5-way nav while the device is turned off) redefines the font fntAppFontCustomBase.  When your app gets control back, if you try to use that font, you will get garbage on the screen or your T3 will crash.

The fix that we've implemented is to re-call FntDefineFont whenever we get a winEnter event.  This seems sufficient for this particular case, but theoretically, there could be another background app that redefines the font without even opening another window. (ack!)  In that case, you should call FntDefineFont before using any custom font.  But I'm not going to go that far.

(Even that, if you want to be absolutely safe, is not adequate.  There could be another thread (e.g. an audio callback thread) that calls FntDefineFont, causing a race condition on your code.  This is so unbelievably rare that I think it's ridiculous to worry about.)

The conclusion is that FntDefineFont is broken at the OS level because it allows other applications to mess with your resources.  Custom font IDs should be dynamically allocated.  This has probably been addressed in OS6, but I haven't been paying as much attention to OS6 as I should.


Monday, May 24, 2004

Stock Price Manipulation in action

I've been getting spams all weekend for the OTC stock TTTP.OB.  They've been trading at around $0.08.  This morning they've spiked to $0.12.  Someone's making a killing on that spam...

Sunday, May 23, 2004

How many bugs did you fix before breakfast?

We're in full-fledged beta mode now.  It's quite gratifying to churn through a list of bugs and knock each one off the list...  But maybe that's just me.


Cool, I was building a PC out of spare parts, and it blew up.  It was sitting there at the Windows 2003 Server setup screen (some people might argue that was my problem) and all of a sudden there was a loud bang and crackling noise.  The circuit breaker tripped, and the room filled up with smoke.

I still haven't plugged anything back in yet, so I don't know if it was the monitor or the power supply on the PC.  My guess is the monitor; I haven't used it in a few years, and it's been sitting on the floor of a damp basement...

Thursday, May 20, 2004

Fundraising Ride

I signed up for the Mass Reb Ribbon Ride in August.  I have been a supporter of Community Servings in the past, and this seemed like a good way to support them again.  We'll be riding 225 miles across Massachusetts in 3 days, which will be my longest ride yet.  Help support me!

Tuesday, May 18, 2004

Pocket Tunes 3.0 Beta

The Pocket Tunes 3.0 beta program is finally underway.  We've got a good number of users signed up, and we're getting some great feedback so far.  Everyone's been excited about the new features, particularly the tag-based song browser and the Windows Media Player interface.  There have been some good bug reports, but we'll get those ironed out.  Hope I can keep up with the beta emails!!  I'm a bit worn out, now.

The things people will do...

to get support.  I just got an email from a customer who claims that he invested $100,000 in our company to get it founded.  (As I believe I've mentioned previously in my blog, NormSoft is completely self-funded.)  What will they think of next?

Thursday, May 13, 2004

Another Time Trial

I raced another time trial (my third so far) last night.  I did pretty well; I shaved 18 seconds off my time, bringing me just about to an average 23mph for the 9.75 miles.  As I crossed the finish line, I passed my 30-second man, who was using aerobars, so I felt pretty good about that. :)  The ride was tough; I was really struggling to keep going, particularly on the flat sections, where I couldn't get aero enough.  I took one hill too quickly, and my lungs were burning for a few minutes afterwards.  On the last hill, I gave it everything and easily caught my 30-second man.  He caught me on the downhill, and then I passed him again right on the finish line, as I sprinted up the small incline.  Overall, I felt good.  Today I'm off to the bike shop to get a set of aerobars!

Stupid me, I forgot my helmet at the race.  Doh!  I went back later, and it was gone.  I emailed the race organizers, but no word yet.  Might be time to get a new helmet today...

Friday, May 07, 2004

My first Time Trial

Okay, I'll post something that should be a little more interesting...

A few weeks ago, I did my first bicycle race - a time trial in Dover, MA.  A time trial is a race against the clock; each rider sets out at 30 second intervals and tries to finish the course as fast as possible.  You're not allowed to draft (ride close behind) other riders because that gives you an advantage in a race that's supposed to be all about your own effort.

I started off at a little under my maximum effort; I needed to save some energy for the upcoming hills. The race starts going up a few stair-step hills, and I was feeling like I was having a little trouble. Just ahead of me was a girl on a bike. When I started to pass her, she suddenly swerved to the left, struggling up the hill. I yelled, "Look out!" and gave her plenty of room. That got my adrenaline going, and I picked up the pace.

I reached the top of the hill, surprised thinking that it was not as tall as I'd remembered. There's a nice steep downhill section afterwards, and I got down as aerodynamic as I could and got close to 40mph; it felt great! At the bottom of the hill is a hairpin turn; I looked around and there was no traffic, so I took the whole lane to get a good line around the corner to keep up my speed, just tapping my brakes a little.

After that is a less-steep climb. I started grinding away, and I heard the whir of wheels to my left. The guy who started 30 seconds behind me was passing. You can't draft in a time trial, but the mental advantage of having someone to chase (your "carrot") is big. I picked up the pace again and tried to keep him in sight.

After that hill is a short descent with a blind 30 degree right-hand turn. It always makes me nervous. I saw the rider in front of me speed around the corner and briefly thought about slowing down for the turn. But I looked around - no traffic - so I moved left and took the turn wide. Still no traffic, so I was still making good speed.

I saw the rider in front of me hit the last big hill. I used to commute on these roads, so I know this hill quite well. I knew that I could climb it quickly because it's short, and it's the last hill. So I gave it everything I've got and sailed past the guy who just passed me. I looked down at my speedometer: 19.5mph UP HILL. I was smoking. :)

At the top of the hill is a flat section. I was feeling pretty beat at this point, but still going strong. Then I heard the whir of wheels again. Another rider zoomed by me with his special time trial bike with disc wheels and aerobars. He was out of sight while I was thinking, "That's not right". :)

On the last downhill section, I was fighting the wind a bit. The rider whom I'd just passed had aerobars (I don't) and was able to catch me again and got about 5-10 seconds ahead. There's one last short, but steep, hill before the finishing line, and I made up a few seconds there, using up the last bit of energy, then I yelled my rider number as I crossed the finish line and sat up and tried to catch my breath.

22.48mph was my average speed. My previous maximum speed for any ride was 21.2mph. All the riding on the trainer this winter (and down in Florida) is paying off. :)

That's it. It was exciting. Can't wait for the next one!

Here are the results.  Scroll to the bottom for the most recent.


Message from TJIC


Remember back when you used to have a blog, and you'd post things in it?

Those were great days!


Sunday, April 11, 2004

Bike Racing

Well, I was going to try to enter a few bike races this year, so I went to go watch a criterium this morning.  It's supposed to be one of the safest criteriums around, so I figured that I should be okay to race in it.  (Don't want to get hurt and miss my trip to France!)  Well, there was a nasty crash midway through the race; someone flew into a telephone pole.  No one was hurt too bad, but I think that's too much excitement for me! :)  The race director told me they should call it a crashterium.  I'll probably do some time trials, though.

Tuesday, April 06, 2004

Back in Business

Well I just wasted the past 2 days re-installing all the software on my laptop.  For some reason, it was just rotting away.  My sound output was really low through the built-in speaker, and the hard disk access was painfully slow.  Perhaps there was some driver I installed that caused these problems, but they're all fixed now.

On the plus side, I got to update all my applications with the new MSDN subscripiton we just got.  Outlook 2003 is quite nice; I think I could get used to it. :)

Back to work!

Tuesday, March 30, 2004


So if you can't get your TH55 to connect to your WiFi access point, check the access point's channel.  Apparently the TH55 doesn't work with channels of 7 or higher.  Nice...

Saturday, March 27, 2004

Baaba Maal

I went to see Baaba Maal at the Sommerville theater last night.  It was absolutely incredible.  I first heard his music on Napster 2, but I had no idea what the live performance would be like.  It was extremely up-beat; I think I worked off 1,000 calories just watching it!  They did some amazing dances and dueling (between a drummer and vocalist), and they really got the audience involved in the music.  It was quite improvisational, and a few audience members joined them on stage for a short bit of dancing and music-making.  Overall, I enjoyed it immensely, and I highly recommend seeing his band if they're playing locally.


Tuesday, March 16, 2004

Stolen Credit Card Verification

So apparently someone decided that my web site would be a good place to verify their stolen credit card list.  He placed about a dozen orders with obviously false information.  Since my shopping cart is automated, it can't tell that "khkljhl" is any different from "john" for someone's name, so it just processes the orders.

I ended up blocking the entire C class of IP addresses where he was coming from (somewhere in .ae United Arab Emirates), and I'll have to keep an eye out for crap like this in the future.

I'd like to limit orders to 1 or 2 per day for each IP address, but that would mess up people behind big firewalls.  I could store their last order in a cookie, but that's easily circumvented by deleting the cookie between each order.

Can't think of a great solution except to keep blocking addresses when people do this kind of thing...


Monday, March 15, 2004

Breaking Away Bicycle Tours

Okay, I found a replacement for my bike tour: Breaking Away Bicycle Tours.  I talked to Greg Hogan, its directory, on the phone, and he was very accomodating and managed to squeeze me into their almost-full tour.  The dates are almost the same, so I can keep my flight.  Sweet, I'm going to France afterall. :)


Discover Card

Someone allegedly from Discover card just called me (the caller ID said "Unknown number") asking me to fax them a "proof of address" like a bill or something, plus my Discover merchant account number.  We've been a Discover merchant for about 8 months now.  Yeah, that sounds legitimate...


La Corsa Tours

Well, La Corsa Tours just cancelled my bike tour on me.  Great!  Time to go searching for another tour at the last minute.  I called them up, and spoke with Lori, and at first she was a bit rude and defensive, which really put me off.  But I insisted that she help me find another tour to go on that matched what they were offering, and she became much more friendly and gave me some good advice.

Sunday, March 14, 2004

Trek 5200

Test rode a Trek 5200 at Wheelworks today.  Man, that thing rides smooth!  Also looking at the Specialized Roubaix Comp, but I'm not sure about those gimmicky inserts.  Rides nice, though.

Gotta have a nice bike for my trip to France this summer!!


Wednesday, March 10, 2004


What the hell!  Microsoft's new SP3 for Outlook XP now has even stricter blocking of access to the address book.  This breaks all kinds of things, like SpamNet.  This is getting ridiculous!


Tuesday, March 09, 2004

USB Hell

I'm in USB Hell right now.  I bought a USB hard disk (it also has a Firewire interface, but the stupid makers of Firewire decided to have two cable standards, so I have to wait for the right cable to arrive).  I can't unmount the hard disk for some unknown reason (Windows says to "try again later".  Thanks!).  So out of desperation, I unplugged it, and now I can't use that USB port for anything else.

Add to the fact that I just bought a D-Link 7-port USB hub, which ocassionally (5-10 times per day) flakes out and needs to be unplugged and plugged in again, and it's USB Hell.  How many USB devices do I have?  Let's see.  A mouse, hard disk, 2 card readers, USB->serial cable adapter, and numerous Palms.  Argh!


Monday, March 08, 2004

Windows 2003 Server

Dr. Dobb's came with a Windows Server 2003 CD this month.  The CD package is called "Essentials of Windows for UNIX Developers".  Interesting; seems Microsoft realizes that they want to convert UNIX developers over to Windows.

Personally, I'll program for whatever OS there's a market for.  (That doesn't quite explain why I'm writing low-priced consumer apps for the Palm, but hey; I like to have fun, too!)


Friday, March 05, 2004

Tree Removal

Going back to my first post in this blog, the construction workers are now removing several trees from the road in order to complete the bridge work.  I've never seen anything like it.  They have a small crane that they drove up in front of our driveway.  They extend the crane all the way, drop the hook, and send someone up on it.  He ties a rope around the tree and ties it to the hook.  Then he slides down his rope, and ties himself at a lower point on the tree.  He then releases his rope from the crane, pulls out his chainsaw, and cuts the trunk.  The tree then gets pulled up with the crane and deposited in the road.  Then it gets thrown into a chipper.  Repeat for all major branches and finally the main trunk, and they're done.  Next tree.

I'm curious to see how they do the bik oak tree in our front yard.  They have to go over the electric lines somehow.  Initially, the contacted us and wanted to put the crane in our front yard, but we told them "No way" because we have a septic tank there.  They also wanted to cut our electricity for a few days, which we also vetoed; how can NormSoft operate without electricity :)

Weather.com Gold

So weather.com just started offering a Gold service for $20/year.  You get no ads, faster maps, blah blah blah.  I've always said that I would sign up for such a service if it existed, so I felt obliged to do so.

It's a good idea, but so far it's plagued with problems.  The web interface is really confusing to use.  It took me 15 minutes to figure out how to customize my main page.  And it doesn't offer as much functionality as the free version!  For example, you can't click on a particular day in the 10-day forecast and see the detailed forecast for that day.

I wrote them a letter of complaint; I'll probably never hear back from them.


Thursday, March 04, 2004

Virus Block

Hmm, my blog is turning into a list of complaints about email.  I promise to post something Palm-related soon!

So I finally get fed up with all the viruses I've been getting via email lately (several hundred per day; it makes my Treo 600 nearly useless for receiving emails), so I wrote a Perl script and filtered all my email through it.  Any email with an attachment that ends with .com, .exe, .scr, .bat, or .pif will be blocked.  Unfortunately, that doesn't cover the new viruses like Netsky that send ZIP files.  After some thought (and copious searching of CPAN for useful modules), I added code to extract ZIP attachments from all emails received and parse the contents.  Here's the algorithm I used:

  • If the ZIP file contains a .com, .scr or .pif file, it's blocked.  No one sends those files these days.
  • If the ZIP file contains a .exe file, then check to see if it has a double-extension (e.g. ".htm.exe").  If so, block it.
Netsky sometimes sends out viruses that are in ZIP files without a double extension (e.g. document.exe inside document.zip).  So those will get through.  But I think I've hit about 99% of the viruses I get every day, so I'm pretty happy with this figure.
Just in case I'm blocking any legitimate emails, I log all the blocked emails to a directory and email a report to myself once a day.  A quick two-second scan of the subjects is enough to tell me that they're all trash.
If you're interested in the Perl code, I'd be happy to share it.  Just send me an email.  It works as a qmail command, but I'm sure you could modify it for your use.

Thursday, February 26, 2004

Spam on my phone

Okay, this is great.  I just got a spam by SMS on my phone.  Might have to turn that feature off... *sigh*


Monday, February 23, 2004

Something New For Me...

So this is something I haven't done before.  I've been talking to a few independent artists to try to find ways to use Pocket Tunes's success to promote their music.  I met with Lori McKenna this weekend, and I spoke with Geoff Byrd last night.  Both amazing artists, and I'm trying to think of things I can do to get them more fans.

As a business person, I obviously want to be successful by selling Pocket Tunes.  But as a music lover, I feel I should take the opportunity to give something back and promote great music like this.

Sunday, February 22, 2004

Blogger API changed

Apparently the blogger API changed, so I had to update Newsgator to point to the new URL: http://www.blogger.com/api  Hope that doesn't happen too often...


Friday, February 20, 2004

Music I'm listening to: Yiriyaro (Percussion Storm) by Baaba Maal. Cool stuff :)
Can't do that

Apparently there are quite a few things you can't do from within a sampled sound callback on PalmOS 5, I mean Garnet. As you may be aware, the callback runs in a separate thread of execution from the rest of the application. Therefore one of the things you need to be careful of is synchronization with your main thread. There are no synchronization constructs available to 68k apps or PNOlets, so you've got to implement your own. (Open up your favorite operating system book and look up spin locks. With audio callbacks, you can modify spin locks in such a way as to avoid pegging the CPU. I'll leave this as an exercise.) The other option is to avoid doing things that require synchronization between the threads, which is probably a good idea anyway.

Besides the threading problems, there are also problems with certain OS functions that appear not to be thread safe. We've run into the following functions that seem to have problems:

  • DmDeleteDatabase - calling this from the audio callback on some devices causes resource-management functions (e.g. DmGetResource) to later fail in catastrophic ways.
  • PrefGetPreference - calling this from the audio callback at precisely the wrong time (i.e. when another thread is accessing the system preferences DB) causes a Fatal alert because the system preferences DB can't be opened.
  • FileClose - just found this today. Calling this from the audio callback corrupts something and leads to hard-to-track-down crashes sometime later (possibly after leaving your app and coming back, which is kind of scary!)

Powered Up Award Winners

I've been remiss in posting here due, in part, to going to the PalmSource 2004 developer conference last week.

Pocket Tunes was given a "Powered Up" award from PalmSource! I got to give a quick 2-minute demo in front of about 1,000 people at the keynote address.

It was my first time at a PalmSource conference. It was quite a lot of fun; I highly recommend it for all developer types. I made quite a few contacts and friends and received a boost of energy for Palm development. :)

Wednesday, February 04, 2004

Tapwave DRM

Tapwave has an interesting DRM scheme for licensing software on their devices.  It looks like they thought it out pretty well so that applications can be reasonably sure they haven't been tampered with and are registered to the current device.  Too bad our software has to run on other devices as well; otherwise we could take full advantage of it.

I wonder how long until someone cracks it...


Monday, February 02, 2004

I Smell Spring

Well, maybe I'm just being overly optimistic, but it was a balmy 40 degrees F today.  So I went for a bike ride.  Yes, I was bundled up and it was chilly, but it was still fun to get out there!  I got a few strange looks, but that made it more interesting.

Next week I'll be out in California for PalmSource.  I'm planning to do a bit of mountain biking with some friends while I'm there.  I'm looking forward to the warm weather...

Saturday, January 31, 2004

Excellent article on starting your own software company

Eric Sink has a great article in the MSDN about starting your own software company.

They key points that I strongly agree with here are, "Ideas are worthless" and "Choose your Competition".  These are two of the most important concepts I've always kept in mind while working on NormSoft.

I'm also happy to say that NormSoft is the exception to the rule with regards to seed capital.  We started with $0.  My initial legal expenses of $500 were paid for within a month or two.  NormSoft has paid for everything since then and has always been profitable (albeit not very profitable for the first 3-4 years!).


Indian Outsourcing

Oh yeah, an article on Slashdot just reminded me of this...  Yesterday I got a call from some guy in India asking me if I wanted to outsource to India.  So apparently they are getting pretty pushy about this kind of stuff.  I couldn't understand him (his accent was much worse than any of my Indian friends in the US), so I pretty much hung up on him.

Well I'm just catching up on this, but it's directly relevant to my email woes this past week:

Microsoft's Penny Black Project

I like the ticket approach, and it makes good sense for businesses who want to operate a legitimate announcement list.  If a customer doesn't refund your ticket, then you take them off the list and don't mail them next time.  That way you can send notifications only to users who appreciate them.


Just added an Atom feed for my blog.

Attachment Save

I'll give a quick review for some software I just purchased: Attachment Save

There's a free trial, but it's hidden so well on their web site that I just gave up and bought it ($30) since they have a money-back guarantee anyway.

So it does exactly what I want (well, almost; see below).  Whenever an email is moved to a certain folder in Outlook, it saves the attachment to a specified directory.  This will save me hours of saving those stupid CSV files that all of my resellers send me.  (PalmGear has wisened up and has a nice little tool for downloading a CSV that includes all the orders within a certain date range, but Handango and PDAssi still send you the individual ones.)  Now I don't want to hear from Unix weenies about how easy that is to do in Perl/TCL/etc.  I didn't want to mess with my Linux mail server until I fully understand how that control panel my ISP uses interacts with the configuration files.

The only problem I have with it is that it doesn't have enough options for renaming files due to name collision.  So, for example, if you have two attachments called "sales.csv", it will create "sales.csv" and "sales-2.csv".  Not great.  I'd rather have it append a date on the file so I have some idea of what the file is for.  No big deal, though; it was easy enough to write a Perl script to rename them the way I really want. :)

The developer is very responsive; he responded within a few hours of my email asking for that feature.  He said it's planned in a future release a few months away.

So it's good; it saves me lots of time, and I don't have to muck with my mail server (yet).


Geek Leisure

After a rather stressful week of dealing with the Pocket Tunes 2.2 release, subsequent 2.2.1 patch release, and numerous email worms and difficulties, I decided to take it easy this afternoon and indulge in some "geek leisure".  So I'm learning PHP and MySQL.  My first goal is to write a customer database tool for our web site so that customers can look up their past orders and registration codes and change their email preferences.  I've already automated the links on the pTunes homepage to add yourself to the mailing list, etc.  PHP looks pretty cool, but I'm sure everyone knows that already.

Next I'm going to delete my unused cookies.  And you though Palm developers were the coolest guys around...

And tomorrow I'll indulge in some non-geek leisure and watch the game on my widescreen HDTV *silly grin*  Go Pats!


It seems I just can't win with email this week.  After sending out a perfectly legitimate email announcement to my customers about new versions of Pocket Tunes and Athletix, I have seemingly been blacklisted from Hotmail.com.  What's strange is that, if I send an email to Hotmail.com or MSN.com, it doesn't bounce back with an NDR (non-delivery report).  It simply disappears into the ether, and the recipient never gets it.

Some folks on the Palm Entrepeneur's Forum suggested that I just wait; Hotmail's list is updated fairly frequently.  We'll see...


Thursday, January 29, 2004

I just noticed that most of the viruses I'm receiving are addressed to email addresses in the .txt files shipped with Pocket Tunes.  Duh!  So taking out those addresses in the next release should save me quite a bit of this junk...


I will make the predication that 2004 will see the demise of email as we know it.  My email has become nearly useless, between the thousands of viruses I'm getting, misfiled spam (see previous post), and lost emails.  I had to resort to the telephone (gasp!) to call my French translator because neither of us could receive the other's emails.  And then I spent two hours on the phone with MSN, trying to figure out why I can't send email to any hotmail or MSN users (they were no help at all, of course).

I don't know what the solution is, but I think that some kind of authenticated email scheme or micropayment system for sending email will solve many of these problems.  I'm sure others have thought about this more than I have, so I won't make any off-the-cuff suggestions.

As a last ditch effort attempt to stem the flow of spam, I'm obfuscating all my email links (google for "obfuscating email" for some good tips) on my web pages.  What a waste of time...


I've been using SpamNet (www.cloudmark.com) for some time now, and it's been working fairly well.  However, I just checked my spam folder, and I found all kinds of things in there that aren't spam.  Regular mailing list entries, bug reports from customers, and more.  Looks like I might have to start scanning the Spam folder every day.  Sigh...  Email is becoming virtually unusable with this virus and spam.


Tuesday, January 27, 2004

I wake up to 200 copies of the W32.Novarg.A virus  http://securityresponse.symantec.com/avcenter/venc/data/w32.novarg.a@mm.html

And this is after I blocked all the bill@ joe@ john@ etc. email addresses that it seems to spam.

Sunday, January 25, 2004

While working on the German translation of Pocket Tunes 2.2, it occurred to me that German speakers must be used to having their language abbreviated!  All the words are so long that a good proportion need to be abbreviated to fit on the Palm's small screen...

I was looking around for a good bike tour of France with a nice combination of challenging riding and time to drink some wine.  I found a tour company that looks really promising: La Corsa  I'm getting a trip ready, so I'll let you know how it went in July!


Friday, January 23, 2004

Pocket Tunes 2.2 beta is now out.  http://www.pocket-tunes.com/beta.html

So now I'll tell you about the optimizing I was doing a few weeks back.  It was for the equalizer code.  We are now using a real equalizer, rather than the previous hack of tweaking the MP3 subbands.  The new equalizer has much better audio fidelity, but it's slower than tweaking MP3 subbands.

So the optimization was to get the equalizer to run as efficiently as possible without any tradeoff in audio quality.  We succeeded!  We can now claim to have the fastest equalizer on the Palm platform, and it sounds great, too!  To get the speed, I am using a fixed point integer with 28 bits of fraction.  Taking advantage of some of the properties of the digital filters I'm using, I managed to reduce the number of multiplications to 22 per sample for the equalizer, and just 3 per sample for the bass boost.  In order to ensure the best quality, I wrote some software to calculate the optimal band spacing and band widths to get a good, flat frequency response.

Try it out; tell me how you like it!

So I'm trying out NewsGator to post to my blog.  It looks to have some pretty nifty features.  www.newsgator.com

Sunday, January 11, 2004

Well, Athletix 1.0.1 has officially been announced. (1.0 has been out for a few weeks already, but we wanted to wait a little while before making a big announcement.)

The official release can be found here: http://www.normsoft.com/press/2004-01-12.html


Friday, January 09, 2004

Optimization is fun. Don't know why, but I get a huge kick out of tweaking a few lines of code or assembly instructions and seeing the next benchmark soar. If I'm not careful, I can waste an entire day. Like today for instance... Inline some code here saves 10%, unroll a loop there saves 50% (woo hoo!). And so on.

What am I working on that requires such speed? You'll just have to wait for the next Pocket Tunes release, now won't you?