Friday, May 22, 2009

Move to Mac? Not based on iTunes

With the death of my old MP3 player I have been trying to use both my iPod Touch and iTunes to play my podcasts. As I have said before, I am not happy that iTunes, natively, does not allow you to adjust the playback speed of the file. The iPod will allow a 20% increase in speed for audio books. There is an easy to flag files as an audio book and it does seem to work.

One option to get variable playback speeds I read was to use Quicktime Pro. At $29.99 it is not a bad option. I double checking something online about the variable playback speed in Quicktime Pro and found that in Quicktime 7.0 variable playback was built in. No need to go Pro. Bonus!

Well I did try it on one file and truth be told the playback at double speed was pretty nasty. Admittedly the file I picked had bad audio to start with. I will try it again with another file. This still leaves me with the problem of updating the play count in iTunes manually. No worse the using Windows Media Player, which only gives me a 40% increase. Then again Windows Media Player also has a MUCH better interface than either iTunes or Quicktime.

The frustrating part of this is, at least according to the Wikipedia entry for iTunes, is iTunes is just a front end for the QuickTime player. It is not like the ability to do this is not there (assuming Wikipedia is correct about that).

For a company that prides itself on a superior user experience and a slick user interface, they sure do fall short with iTunes on Windows. They can't even play the "it's Windows" card - the Apple version of iTunes has the same problems. To me they are missing two key features:

  1. The Now Playing list - a temporary play list that you can add files to on the fly. When you close down the player, the play list goes away. The allows the cherry picking of files to listen to now without creating a formal play list and then deleting the files. (Oh, and shuffle does not work if you have audio books from places like Podiobooks. Some of your files have to be played in the correct order.)
  2. Variable playback speed for all files. At least all audio files. Hey, I don't even mind a little "chipmunking" of the voices. If I am playing the files back faster, I expect the tone to shift a little.

One other minor feature, that was there at one point, is the ability to create smart play lists based upon something in the file name. That would allow me to have the unplayed podcast play list to use. Another example of how iTunes falls short of Windows Media Player.

This may not sound like a lot, but for me these are critical parts of my listening experience. These are things that their users have asked for in the past (partially). If Apple cannot beat Windows with a simple media player, how can I trust their machines to be better?

Wednesday, May 13, 2009

Trackable Keeper

I have been trying to find some projects that not only are helpful to me but allow me to learn some things about .Net and C#.

I love to go geocaching. Geocaching has these things called travel bugs. These are usually little toys with a special dog tag attached. You can move the travel bug from cache to cache and track that movement with the special number from the dog tag.

To take things a step further. there are also geocoins. Geocoins are, well coins, that are trackable just like a travel bug. The problem with the coins are that people tend to steal them. Now if you send out a travel bug, you are out about $5 for the dog tag and usually less than that for the trackable. Usually people steal their kid's McToys and pick up the dog tags on special. Also dog tags come with a duplicate so you can send out a lost travel bug again. But once a coin is gone, it is gone.

As result of this, many serious (and the not so serious) coin collectors do not send their coins out in the wild. Instead they take them to events for people to "discover" - a way of saying you saw a coin (0r other trackable) without actually moving it from a cache.

The problem with this is the nice people over at do not allow what they call 'virtual discoveries.' This is where someone, hopefully the trackable owner, puts out the special number for people to discover the trackable even if they have not seen it. If they suspect a trackable's item has been compromised, they will lock said trackable so no one can discover it.

Now, I like to share my coins. And I take my coins to events all the time. To not offend the powers that be, I drop the coins at any event I will be at. Dropping them at an event is not a problem. Picking them back up is another matter. Now if you have a handful of them, it is not bad. When you get a couple dozen it starts to become a problem. When you get over 200, you want to take a an ice pick to your eyes. Ok it may not be that bad but it IS annoying.

Being a programmer I figured there is something I could do to help with this. Hence the Geotracking Tracker Keeper was born.

Each trackable has 3 numbers, 2 of which are of concern for this. There is the 'external number' - i.e. the magic number I talk about above that is on the trackable itself. There is also an internal ID, that you can get once you have the external number.

So, the program uses an XML file to keep these 2 numbers and 1 other field - a flag if the trackable is at an event. This allows me to snag some coins here and there as time permits without having to go through ones I have already picked up. How does it work? If I have the internal ID, I can go straight to the log page. If I only have the external ID I go to the trackable's page and then have to add the new log. In either case the external number is pushed into the clipboard so it can be pasted on the log to prove I have the trackable. I then just have to select the log type, date & enter a log (I usually just enter 'Pickup' for my own coins). Once I close the browser the program brings up the next coin.

This program is, really, not that complicated if you look it. Launching a process and waiting for it to finish is not tough. At least once you find the write part of .Net it is not that tough :). I would like to find a way to push keys to the browser, although I am not sure if that would be useful for selecting the log type. XML was used in case I ever decide to rewrite this program in another language (like Ruby or JavaScript). There is no major search or reporting done on the data so SQL seems like overkill. Also lots of APIs work with XML, including RSS, so learning some of the XML tidbits in .Net is worth it.

A side benefit of what I have done is I can create lists of coins from other cachers and of trackables that I find at events and discover them. Same basic process, but I have an XML file that stores the coins that I have discovered in the past. Since I have a couple of coin hounds I can just write down whatever coin codes they have and not worry about if I have discovered it before - the program keeps track for me. By keeping these in my Palm or iPod I can get them in a text file, which of course I setup the discovery part of the program to read.

Future thoughts on the program: I slapped this together so I could use it. I would like to go back and refactor large parts of this. One example - a wrapper around the file selector code. Cut & paste reuse is not good. I also would like to setup an object & collection to wrap the logic. I could have done this all the first time, but this also gives me a chance to stretch my refactoring chops.

Wednesday, May 06, 2009

A Few Random Thoughts

It has been awhile since I last posted and thought I would throw out a few random things.

R. I. P Nomad Jukebox. My Creative Nomad Jukebox up and died on me. I loved this MP3 player because it felt sturdy in my hands, held a metric butt load of music & podcasts and let me play everything back at 1.5 speed. The music still appears to be there, but none of the meta data is there so I have no real idea what I am listening to. The biggest issue is when plugged into my computer it is not acknowledged as an MP3 player anymore. I tried both a standard reset & hard reset with no luck. That leaves me with my iPod Touch, which I am not very happy with. I did find a way to get my podcasts to play back faster, but there does not seem to be an automated way. So every time I get new podcasts I need to manually mark them as audio books. Arg! Better than nothing.

Keeping my brain from turning to mush. I have to admit it would be too easy to just veg out and watch TV all day between sending out resumes. Fortunately I have a couple of programming projects that keep me off the streets & not in front of the TV. The first was my Geoaching Trackable Keeper. Hey, I'm a coder not a marketer. It helps me pick up my geocoins after I drop them at an event. It also helps with discovering coins that I see at events but I am not moving along. I might be sharing this one with a couple of local coin hounds so I need to clean it up. More on that later. I also have an email program I want to work on to help when I send out emails for For Purpose, Inc. That has run into some snags. I also have an idea to generate a field note file for geocaching to help log temporary caches at events. None of these are glamorous programs, but they help me to work in C# and explore parts of the .Net framework. I still have some ideas for creating something long the lines of Eva. I like the idea, but I think my version would revolve around things like sending a tweet or getting something on my shopping list. If nothing else I will be kicking the tires of some APIs while trying to get the program up and running.

House & Lawn Care. I have been working on knocking out some projects here at home while I have a chance. With summer coming the lawn will start to take priority, along with some outside projects. I want to fertilize this year. I am not sure the lawn has ever been fertilized and it is starting to show it. I will probably not be able to swing the stuff I want to use, but it needs something. One other outdoor project I should be able to get done regardless of my employment status is a new address sign for the front. The one my brother made for mom years ago is showing its age. I would love to get the house painted and a couple of windows replaced, but those things can wait if need be. Inside I already have the programmable thermostat, I just need to set it up. The bathroom will be getting some TLC next. Mostly little stuff with little cost involved.

Walking. I am having some problems getting going. The Spree For All showed me I am not as ready as I thought. The bigger issue is still getting the routine established, which is going tougher than I thought. Mostly it is mental - since I am still building my endurance back up I am not walking for a long period of time. So it feels like a waste when I head to the gym on a bad day and walk for 10, maybe 15 minutes. Once I get past this hurdle and I am walking for longer than it takes to go to/from the gym things will be better. To just get to that point.

iPod. I am still liking it for the PDA type stuff. I need to find a better calendar program for the desktop. Google Calendar is great, but not convenient when working with Maybe I need to dig a little further in getting that info to automatically flow to Google Calendar. Battery life seems ok, although it seems to go from 'no problem' to 'charge me now' with little notice. On a road trip yesterday I played music for 3 hours (1.5 hours each way) and the power indicator did not move. Today after not playing anything and being in & out doing PDA things it is down to half mast. Weird. I am glad I had it yesterday though. I did not write down the address of where I was going (thought it was there) so I had to steal borrow some wifi to get the address.