Apple restricts the flow of songs between computer and iPod, in order to protect the integrity of corporate digital rights management agreements with music producers. How is an iPod owner supposed to archive or back up songs?

Donationware/freeware Senuti addresses this problem, and I use it daily to make sure my precious songs are archived onto an external drive that resides in a different location from my iPod.

Shareware author Whitney Young agreed to an email interview with MyMac.com. (With minimal editing, I left his written syntax and formatting as I received it, to preserve the flavor of his energetic prose.) You can learn more about Senuti and Whitney’s other creations at:

http://wbyoung.ambitiouslemon.com.

 

Nemo: What is your history as Mac person and programmer?

Whitney: The first computer I ever worked with was an IBM. This was when I was a really young kid. I don’t really remember much about it. It had word processing capabilities and you could play Jeopardy if you had the 6 1/4 floppy and typed in a good number of commands at the command prompt. It was fun, but didn’t last long. That was my last non-mac computer.

For a few years we had an old mac running OS 7 or something like that (until I was in 5th grade, I think). It wasn’t all that nice of a computer, but it’s probably when I started getting into how computers worked. There were a couple of games on the computer that crashed the computer a lot, and I always wondered why. I tinkered with a lot of stuff on that computer, trying to figure out what that “System Folder” was and what all of the stuff in it did.

I learned some things on this computer, but when my dad got a laptop through work that had internet access, I forced myself to cross over to the dark side of windows for a while, and play around with the internet. That wasn’t all that exciting, though, because I didn’t have that much time on his computer to look around.

Eventually, as the internet grew, the old OS 7 mac was too out of date. My family got a strawberry 233 MHz G3 iMac (remember those?) for me and my sister to share (when I was in 5th grade, I think). This is when I really started getting interested in computers. This computer had internet access!

After getting over the excitement of the internet and surfing, my curiosity started to get to me. How was my computer showing me all of this information? What was it that people did to make that image change when my mouse went over it?

I started to learn HTML and JavaScript via Webmonkey’s online tutorials. It’s actually been by looking at code at different sites that I’ve learned most HTML and JavaScript. I guess you could call this the beginning of my mac programming, because I refused to create any web pages that didn’t work on macs as well as windows machines.

Throughout this time I tried to learn C, but was incredibly unsuccessful. Just as a tip: if you’re ever going to try to learn C, don’t try to learn from online tutorials when the internet still hasn’t gotten into full swing. Oh yea, same thing with guitar. I think both have better tutorials online now, but 7 years ago it wasn’t possible to learn from that stuff. Trust me.

Anyway, I kind of didn’t do much code wise for a while in there. It was probably about 2 years that I didn’t really do much after that. Got a new iMac 500MHz G3 Blueberry (this was around my freshman year of high-school). When OS X rolled along, learning what was going on in that kept my interest for a while.

When I got bored, I set up my own web server on my computer so that I could start learning PHP and CGI. CGI didn’t go well since I still hadn’t learned C, but I learned a lot of PHP. I then borrowed a C++ book from a friend and learned it over a summer, learned objective-C while doing that, too, and a little cocoa. My iColors application is the result of the objective-C I learned that summer. Poorly written, but gets the job done.

I stopped objective-C for a while as I got ready for the C++ class I took my senior year of high school. That got boring quickly, though, since I had already learned the stuff, so I went back to objective-C and learning more about cocoa.

I started Cashbox because I didn’t feel like paying for Quicken and there were no good, cheap alternatives. A few months afterward I was getting ready for my transition from my 20GB HD iMac to my new PowerBook 1.33 GHz G4 (what I’m using now), and realized I didn’t have an easy way to get the music from my iPod (since it wasn’t all on my iMac) to my new laptop. Senuti is the result.

Nemo: Whew! Quite a journey.What are your current course of study and future academic/business goals?

Whitney: I’m enrolled in Northwestern University’s McCormick School of Engineering and Applied Science. I’m technically undecided, but am thinking about majoring in computer science. I just met with my academic advisor a few minutes ago, actually, and he made a few good points to me which have me leaning a little more toward computer
science.

Nemo: What are your personal areas of computer activity?

I guess I’m involved in the open source movement since all of my software is open source. My feelings about open source are explained below in an e-mail I wrote earlier this week. Most of what I do is mac based. I’ve never actually created an application for any other OS, though I’ve had frequent requests for Senuti on PC. Anyone can take a look at the source code, though, and port it themselves as long as they keep it open source.

Nemo: What code engineering methods did you use when “reversing” iTunes to create Senuti?

Whitney: As I said above, there was a reason for creating Senuti: for me to get my music to a new computer. Actually, it was more just for the pleasure of parsing the iTunesDB file, which was in fact a lot of fun. There’s a little bit of documentation on the internet and some example code that helped me get started, but a lot of the information is out of date because people published it, then didn’t update it when they found out new stuff.

Anyway, I took all of that information and thought about it for a long time. I’d never parsed a file before. I copied the iTunesDB file to my computer and started to code after I thought I knew what was going on. It took me about a week to get an incredibly simplistic application to go through the file and spit out information to the console about the information on the iPod.

After I got all of the information, though, making the first version of Senuti took me a day. Everything from there is history. Actually, that’s not true. I wasn’t happy with the way Senuti parsed the file, so I completely rewrote it about a month ago so that it does it recursively. I still don’t know the proper way to parse a file or if there is one, but the new implementation is a very little bit faster (because it skips worthless information better). On my machine, the file is read by Senuti just as fast as iTunes reads it.

Nemo: How committed are you to the open source movement?

Whitney: Here’s an email I wrote earlier this week about open source software:

There definitely are reasons that make your idea of charging for my software good, but there are multiple reasons that will never happen. First, I use a lot of open-source software that is provided to me for free and more that are based off of open source projects. To name a few: OpenOffice.org, Adium, Gaim (via Adium), Limewire (via Acquisition), Gimp, Growl, HandBreak (an application for which the author won’t even accept donations).

I regret to say that I have never contributed to any of these projects, so in a sense, providing freeware is my way of giving back. I actually contacted one developer asking him a question, and he wrote me back thanking me for a piece of my software that he had discovered earlier that day. On top of that, I’ve used Adium almost since the beginning of its development.

I’ve watched it progress through time, and other instant messaging apps like Proteus develop through time, too. What’s the difference? The fact that Adam Iser has 10 other people working on his project with him on top of the thousands of people who can actually go through and search for bugs in his code.

What’s this mean? Far faster bug fixes. I’ve only had one person send me code so far to fix a bug in any of my applications, which is impressive considering my small user base and the fact that the applications aren’t all that complex and don’t contain too many bugs. In the case of Adium, also, it means that if Adam ever drops the project, the project will continue because there are 10 other people working on it. I right now am working alone, but that could change in the future depending on how big any of my projects become.

My last, and most prominent reason for keeping my code open source is because everything that I’ve learned has been through other people’s code. Well, not everything. I did read a C++ book to learn object-oriented programing, but other than that, my entire knowledge base is pretty much revolving around the fact that there are a lot of open-source projects these days.

I hope that maybe someone will learn something from my code. I know that at least one person so far has, because he wrote me and let me know. I also think to some extent that it’s unfair to the world to hide source code to any and everything. Development time can be much increased by using other people’s code. You can figure things out a lot faster if you have multiple examples, and the whole of computer science will evolve faster if the smartest people in the field don’t hide what they’re doing.

Don’t worry about continued development, and thank you for the idea. It’s just not my path of choice. I’ll still be motivated to work on everything. I have fun doing it. I just don’t have the time right now to continue at the same pace I was working over the summer.

Nemo: Thanks for Senuti and for supporting the worldwide community of iPod/iTunes users and open-source shareware developers, Whitney. We wish you all the best in your academic career. We’ll be keeping our eyes on you and your apps.

Tagged with:  

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!