December 7, 2009
With over 4,500 downloads of the GUI version, and 1,700 downloads of the console version, the 2.0 release of iTunes Export appears to be a success. Thank you to all who have helped out.
This release provides a few bug fixes and incremental improvements based on the feedback received so far. Thank you to everyone who has helped out, and please reach out if you have issues or suggestions.
This release as a few fixes for both versions, including:
- iTunes uses different values for ‘Type’ based on the user’s language. Changed logic to match file extension instead of value of ‘Type’ for MP3 file matching.
- Updated processing of Playlist Name. All characters are replaced with an underscore (_) except A-Z,a-z,0-9,.[]{}-$=. This should resolve any issues with playlists containing illegal characters. This may result in some characters in non-western character sets to be replaced with _. GUI and Console versions now contain the exact same logic.
And a few changes to the GUI version:
- Resolved issue with File Separator replacement (/ ) on Windows.
- Fixed issue where scroll bars would appear with long Music Path.
- Fixed Show Songs feature to update the song list when a different playlist is selected.
- Implemented basic ’type to find’ logic for Playlist list. Only matches first character, and you must select an item before the search works.
The new version can be downloaded from the project homepage: http://www.ericdaugherty.com/dev/itunesexport/
If you find any issues or have questions please email me (eric@ericdaugherty.com). Please include which application and version (GUI or Console, 2.1.1 etc.) of iTunes Export and the operating system you are using.
December 1, 2009
Like many experienced Java programmers, I’ve played with several other languages and platforms over time. While most development languages are not game changing on their own, they can have an impact on the speed and level of enjoyment of a developer. Development languages are like a carpenter’s tools. Most tools won’t change they house an experienced carpenter can build, but they may make the experience more enjoyable.
With that caveat in mind, I wanted to explore my (current) preferred toolchain, Scala and ActionScript (Flex). Not only are both languages powerful and enjoyable in their own right, their similar syntax and easy integration provide a powerful combination.
Scala is:
"… a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages, enabling Java and other programmers to be more productive."
Scala brings the benefits of a functional language, the accessibility of an object-oriented language and the power of the Java platform. I find the concise yet familiar syntax a joy to work with.
ActionScript is a dynamic language based on ECMAScript used to develop Flex applications. ActionScript brings the familiarity and dynamic nature of JavaScript, with the addition of more object-oriented features, and a powerful Flex API.
While there are some major differences in these languages, their basic syntax is very similar. To define a ‘POJO’ (where J is really Scala or ActionScript):
ActionScript:
November 30, 2009
I’ve been struggling with my DSL connection for a while now. Over the past week it became intolerable, and I dug in to investigate this weekend.
I had been experiencing intermittent outages, which I wrote off as bad service (Ameritch and I have had issues in the past*). Over the past week I started experiencing significant packet loss (>30% on pings to the ISP’s DNS server), so I knew it was getting worse.
Doing some basic troubleshooting, I thought I heard ’noise’ on the line, so I replaced the DSL filter I setup. No luck.
I gave up and called SBC (Ameritech). They immediately acknowledged that something wasn’t right, and referred me to their troubleshooting center. The next morning I got an automated call that I needed to call them to discuss. After some debugging on the phone, they decided that it was probably my DSL Modem. Since it was > 5 years old they thought it was probably starting to flake. I went out and bought a new one.
The new modems actually have a nice web interface so you can see what is going on. Unfortunately, it told me that my downstream connection was ~ 500 Kbps, while my upstream was 640 Kbps. Yes, this is WRONG. The downstream should have been 6 Mbps, or ~6,000Kbps. I called them back, and they agreed it was still wrong, and dispatched a technician, with the warning that there may be a charge if the problem is in my internal wiring.
I decided to verify that the issue was external, so I took my laptop, DSL Modem, and some wires outside and plugged them directly into the telephone box on the outside of my house. To my surprise it connected at full speed, indicating that the issue really was internal.
I tried some simple debugging (unplugging devices, etc.), but eventually just ran a fresh line from the inside junction box to my DSL modem. Success!
I’m a little annoyed I couldn’t find the problem, but there must be some type of interference on the wiring inside the house. However, since it is all effectively hard wired together, it is nearly impossible (well, given a reasonable amount of effort) to track down. So, I’ll have to settle for good enough.
* ‘Back in the day’ I had a frustrating experience with Ameritch (or whoever they were back then). There was noise on our line, causing my modem all sorts of problems. What really annoyed me was when they told me they only supported speeds up to 9600 bps, and if I was using a faster modem I was simply out of luck. It took a while but I convinced them that the issue was bad enough I could hear with my own ears. They ended up dispatching a truck and found that there was ‘water in the line’ on their end.
November 26, 2009
This release of iTunes Export provides some additional features requested after the 2.0 release. These features include:
The ability to override the file path separator used. This is useful when you will be using the playlist on a different operating system.
iTunes 9 File Structure. iTunes changed the file structure starting with version 9, with a separate ‘Music’ folder under the iTunes Media folder. This version now includes the Music folder as part of the musicFolder, excluding it from the path when using file copy with the iTunes Structure.
The GUI version now remembers your last settings and will use those as the new defaults. There are buttons to restore the initial defaults if you wish to revert to the normal defaults.
The new version can be downloaded from the project homepage: http://www.ericdaugherty.com/dev/itunesexport/
If you find any issues or have questions please email me (eric@ericdaugherty.com). Please include which application and version (GUI or Console, 2.1 etc.) of iTunes Export and the operating system you are using.
November 25, 2009
I host my site at GoDaddy, for better or worse. The site is comprised entirely of ‘static’ HTML pages at GoDaddy. The Blog is managed using Blogger, but it publishes HTML files via FTP to GoDaddy, and the rest of the content is HTML files I manage directly.
I wanted to avoid the redundant header/footer/etc. structures in my pages since I was editing them manually. So, I setup my site to parse the HTML files as PHP files, and then used PHP includes:
November 11, 2009
For a recent project I wanted to simulate an 80x24 terminal window in a Flex application. To accomplish this I needed a fixed width (monospace) font and the ability to size the text control for the current font. Here is what I did:
First, I needed a monospace (fixed width) font. You can embed your own fonts in a Flash SWF, but that was overkill for this effort. You could specify a specific font, such as ‘Courier New’ that is monospace. However, there can be issues if the client’s device does not have the specific font face. Device Fonts often serve as a fallback font if the specific font requested does not exist on the user’s device. In this case, I didn’t want to select a specific font, I just wanted the default monospace font. So I used the _typewriter font (the other types are _sans and _serif).
November 3, 2009
This release of iTunes Export marks a milestone and major transition of the development focus. The prior releases, 1.0-1.6 were all build using the Microsoft .Net Framework, which limited deployment to Windows. With this release, iTunes Export now fully support Windows and Mac OS X.
The Graphical User Interface version has been ported to Adobe Flex and is deployed as an AIR desktop application. The Command Line version is an update of the Scala version I developed earlier this year.
iTunes Export exports your iTunes playlists as M3U, WPL, ZPL, and MPL files, allowing you to setup playlists in iTunes and use them with other software or devices.
The primary focus of this release was to enable Mac OS X support. However, in addition to this, the copy files (songs) logic has been revamped. There are now three options:
- FLAT - Copies all the songs into the output directory
- ITUNES - Retains the iTunes structure (Artist/Album)
- PLAYLIST - The ‘original’ copy logic that copies the songs into a directory per playlist.
The new version can be downloaded from the project homepage: http://www.ericdaugherty.com/dev/itunesexport/
As this is a major new release, please keep an eye out for any bugs or issues that may appear. If you find any issues or have questions please email me (eric@ericdaugherty.com). Please include which application and version (GUI or Console, 2.0 etc.) of iTunes Export and which Operating System version.
October 31, 2009
I’m reminded of the Semisonic song Closing Time today, and the quote “Every new beginning comes from some other beginning’s end”.
Today was my last day with my current employer, and I will soon begin not only a new job but also the process of relocating to Colorado. We’re not moving right away, but today is a major milestone.
It has been fun, and I will miss many aspects of my experience here, but my family and I are excited about the future.
But on this day, it is important to keep perspective. This new beginning comes from some other beginning’s end.
October 28, 2009
Google announced plans to release a turn-by-turn GPS Navigation application for the new Motorola Android 2.0 (Droid) phone. This is significant enough, but CNET also reports:
However, Google is working with Apple on bringing it to the iPhone, and it’s not ruling out licensing the software to makers of portable navigation devices used in cars throughout the world, said Gundotra, vice president of engineering at Google for mobile and developers.
This could be a major disruptive force to Tom Tom, Garmin, and the entire mobile navigation industry. There is nothing like a free alternative to a
$99 iPhone Application (US Version) to shake things up, let alone the impact on the automotive manufacturers and their in-dash software needs.
Microsoft and Apple are obviously concerned about Google, but Google’s impact may be greater in less obvious market areas.
October 28, 2009
Adobe AIR is the desktop runtime environment for deploying Flex applications. The main difference between a Flex application and an AIR application is that AIR applications are installed locally and have additional access to local resources, including the local file system, while a Flex application runs in the browser and is ‘sandboxed’.
I’ve been developing an AIR version of my
iTunes Export open source application. The original version was developed in .Net, making it Windows only. The AIR version will work across Windows and OS X, and will replace the existing .Net GUI.
As I prepare to release the first Beta I ran into the question of how to sign my AIR application. All Adobe Air applications must be signed using a digital certificate. There are a few companies that sell certificates that are recognized by Windows and OS X by default, and they charge $300/year and up. That is pocket change for any company selling an application but a pretty significant cost for an open source application that produces no revenue.
You can self-sign a certificate, but you are then presented with this dialog box:
If you want to avoid this dire warning, you must buy a certificate from one of the Root Certificate Authorities.
So what do I do? I’m tempted to release it using a self-signed certificate. The warning is annoying, but I’ve been releasing the .Net version unsigned for years, and it had as much or more ‘destructive capability’. However, the users also were not faced with this warning dialog.
It would be nice if there was an ‘Open Source’ Certificate Authority (CA), that allowed open source projects access to free certificates, but the costs involved in becoming a Root CA and managing the issuance of certificates would require a very generous patron.
If you are looking for step by step instructions on HOWTO sign an AIR application, check out this
tutorial.