netTunes
What’s taking so long? Thursday, July 06, 2006
It’s been difficult, these last few months, to find the time necessary to work on netTunes and launchTunes while working on/supporting SuperDuper! and navigating the waters of decline with Ketzl.
netTunes was pretty much done back in April, save for some online store issues—I want to support PayPal, and that means moving to the new “Embedded Web Store” (which is also required for Universal apps). Doing that involves doing some new graphics/layout for the custom pages.
launchTunes, though, was harder—ironic, since it’s a much simpler program. The big problem was that launchTunes hadn’t yet been converted to a drag-and-drop install, and I’d done some work extending its capabilities that hadn’t been completed.
Plus, I’d learned more about Cocoa in the few years since its original release (it’s never been updated)… so, it was time to throw out the old and rewrite the whole thing. Which, given the time constraints, took longer in calendar time than anticipated.
I’m happy to say that I managed to finish up the main launchTunes application, with its auto-install capabilities, while flying back from Chicago the other day. Everything tested out great, so now I’m working on the two apps’ graphics and online store stuff.
Once that’s done, the Universal versions of netTunes and launchTunes will finally get into your hands. Sorry it’s taken so long!
Hoarse-ing around Thursday, May 04, 2006
Despite being down and mostly out with a cold/flu, I’ll be appearing on The Tech Night Owl LIVE tonight, May 4th, talking about SuperDuper!, netTunes, launchTunes, and desperately trying to not cough up a chunk of lung.
You can tune into the broadcast from 6:00 to 8:00 PM Pacific, 9:00 to 11:00 PM Eastern, at http://www.techbroadcasting.com. An archive of the show will be available for downloading and listening within four hours after the original broadcast.
You can also access the show’s Podcast feed, available at: http://www.techbroadcasting.com/nightowl.xml.
Amusing myself Sunday, April 23, 2006
Today, I spent some time testing out the soon to be released update to netTunes along with Salling Clicker’s “Clicker Network”. My setup here is different that most, no doubt, but here’s what was involved:
- Music server running iTunes
- Various AirPorts running a WDS network bridging all over the house
- My main PowerMac, which I’m logged into, running the netTunes client, controlling my Mac mini, which is connected to my stereo
- iChat, set to show my current track
- My phone, running the Clicker Client, connected via Bluetooth to the PowerMac, but bridged over Clicker network to the Mac mini
- The Mac mini, which has no local music, using shared playlists to connect back to the music server
- Two Intel Macs connecting to the Mac mini’s netTunes server
- And, finally, the netTunes server, running on the Mac mini
OK, so—sitting in front of my PowerMac, I could see what I was playing on the Mac mini, because netTunes was showing me the iTunes running over there. And I could control it from that or the two Intel Macs also viewing the same thing.
Clicker—even though it was connected to my PowerMac, was showing me what was playing on the Mac mini, since it was using Clicker Network… and it updated properly when I made changes with netTunes.
My iChat status was showing the track I was playing on the mini, even though I was on the PowerMac, because netTunes is smart enough to act like iTunes and send out the proper notifications to make that happen.
And—no matter what I used to interact with the music—Clicker, netTunes, whatever—everything just worked exactly the way you’d expect.
I’m telling you, my smug sense of self-satisfaction was probably detectable from space.
Going Universal Wednesday, February 01, 2006
Our “production” iMac hit the Shirt Pocket loading dock (aka my front step) yesterday, and I’ve been busily working on updates to netTunes and launchTunes while Bruce works on completing the next update to SuperDuper!, which looks like it will be Universal as well.†
It’s been nice to get back to Xcode after some time off (my design/marketing/documentation/support/etc duties keep me away from it more than I’d like), and it didn’t take more than a few hours to do the netTunes conversion—it’s up and running as I type, and works great.
The big challenge with netTunes was the screen “scraping”—the code has some byte-order dependencies because of pixels, and I wasn’t looking forward to re-writing the “inner loop” to handle all the various cases with Thousands and Millions of colors using both MMX and Altivec. Blegh.
Fortunately, there was an elegant solution. Since the Intel Mac is Tiger-only, I was able to make use of some the new Accelerate framework APIs to eliminate byte order dependencies and—at least under Tiger—about two pages of nasty code. Since the Intel Macs can’t run Panther, I didn’t have to change the already-working parts. The result? Both the Intel and PPC versions benefit, at least under 10.4.
It’s always a good feeling when you can delete code and leave the hardware-specific optimization up to the guys who live and breathe vector processing units, let me tell you.
Anyway, we’re working hard to get the Universal binaries out the door. Obviously, it’s important to do extensive testing using real, production hardware—and we’re doing just that.
† - Updated for the exclamation point haters. You know who you are.
Let’s talk, for a moment, about acquiring music.
As you might guess from netTunes, I’m a bit of a music fanatic. I’ve bought a lot of music in my day, and expect to buy a lot more. But, I rarely listen to “music radio”, and rely on friends, happenstance, and sometimes NPR to point me to new stuff.
But it’s not always easy to tell from brief exposure whether a new album is worth buying. Sometimes you need ten, fifteen, twenty plays to decide whether it’s something to add to the “owned” pile. 30 second snippets just won’t do it.
Now, sure, I could follow The Path of the Torrent, but I really don’t like doing that, regardless of whether or not I agree with the RIAA and their positions. And I hate shelling out $15 for something that I end up never playing.
So, what to do?
What I do is pretty simple: I use Rhapsody. Yes, it costs me $10 a month, and is extremely tied to the computer. (And I do want to own the music I love, and do whatever I want with it, especially with regard to device shifting.) But that doesn’t matter, because I use it to sample things. If I find it’s music I want to keep, I buy the CD and pop it into the library. And, if not, it saved me more than the cost of the CD, and the storage for the physical media, too. So I’m finding more music I like, and buying less music I don’t.
And now they’ve got a version for the Mac that—while not full featured—works well for exactly this purpose. You might want to check it out—I’m glad I did.
Another gem! Thursday, August 11, 2005
Once again, I’m really happy to announce that a Shirt Pocket product has gone all gemilicious!
netTunes was just reviewed by Dan Frakes of Macworld Magazine, in the Mac Gems section.
netTunes 2.2 was awarded 4 mice—and also mentioned, in another recent MacGems column, as “the best solution, by far”!
Not too bad for my first Macintosh product… not too bad!
Thanks, Dan!
It’d been a few months since I’d left Compuware and set out, once again, on my own. Shirt Pocket was initially formed to create products for PDAs, a market segment that I’ve always found interesting… hence the name.
I was still working on a PC—an IBM ThinkPad T23—and while I had some good ideas, I was having a lot of trouble getting going. The design part was relatively easy—I knew what I wanted to achieve—but transitioning to coding was going poorly.
Our dog Ketzl needed TPLO (Tibial Plateau Leveling Osteotomy, pretty radical stuff) surgery to recover from a torn anterior cruciate ligament (Skier’s Knee for Dogs—who knew?), and that required an extended rest-and-recovery period: a time where she required near constant nursing. Since I work at home, I got to be the “dog nurse” as well.
Ketzl needed attention fairly often—a constant interruption. I’m usually pretty good with that kind of thing, but I was finding it difficult to keep focused on the task at hand: coding the new product.
Just. Wasn’t. Happening.
I put the whole thing to the side for a while and focused on Ketzl. And read. And listened to music. And got frustrated with my CDs. It was just too hard to find the music I wanted to listen to.
While I’d spent a little time ripping some CDs to my computer, it was clear that the PC-based music players just didn’t have what it took to be usable. I tried all of them, even wacky and obscure ones like B&O’s BeoPlayer (stylish, but absolutely horrific usability): they just weren’t working for me. It was too difficult to find music, even with a modest amount encoded, and I’m not of the type to shuffle everything… I know what I want to hear, and that means I need to find it.
Years ago, we’d used the Macintosh at UnderWare to do our in-house email and various other things that Macs were good at, but after Zabeth had a horrific experience with a 6300CD (from the Dark Days), we stopped buying Macs here (and tossed that one off the roof, which was strangely satisfying). And when the Newton was discontinued, I stopped following what Apple was doing very closely. While there was a lot to admire in Mac OS, it seemed to be maturing poorly, and OS9 just didn’t do it for me.
The introduction of OSX, though, piqued my interest. I’d had a NeXT cube back in the day, and did a lot of Track Record’s design—and nearly all its internal documentation—on it. Although its screen eventually became too dim to use and the whole thing was sent to the Computer Museum (aka the basement), it served me well for years: it was even UnderWare’s mail server back when we were “uw.com”. And now, it was back—sort of—on the Mac. And, when I went to take a look at it, I saw one other thing, too: the Mac had iTunes.
One quick look at iTunes made it clear that it was an excellent application. It organized things well, presented a simple and logical UI, and excelled at searching. Clearly great stuff. OSX looked good too: it felt less polished than iTunes—less well thought out—but had potential.
So, I made my very first computer decision as a user, as opposed to as a business owner. I bought an iBook. And, while taking care of Ketzl, I started ripping my CDs.
I outgrew the iBook really quickly: it was almost disturbingly obsolete, for my use, in days. Sold it and bought a PowerMac G4, then a Powerbook… an obsession had well and truly started. And OSX was better than I’d hoped. It was terrific. I was enjoying using my computer again. It’s good to be a user!
As the time taking care of Ketzl went on, I’d managed to rip about 2000 CDs (don’t ask—I’ve been collecting music for a long time), and had begun to realize one big problem with digital music: sure, I could use it on the computer, and on an iPod (or whatever), but it didn’t connect very well to my “real” stereo. And here I have a whole-house system that was crying out for that connection.
That wasn’t so easy! The main receiver was in a totally different part of the house. Running an audio cable was out of the question… but I could network up there, and attach another Macintosh, and share the disk that has the music library…
So, that done, another problem reared its ugly head: the computer playing the music was far away from where I was listening, and heading over there every time I wanted to find music was no fun at all. I tried using Apple Remote Desktop and VNC, but they were awkward (at best)—I didn’t want to take over the whole computer, I just wanted iTunes.
And that’s when I came up with netTunes. I just wanted iTunes, remotely. Exactly iTunes. So, that day, I became a full time Macintosh developer: learned Cocoa, designed and wrote netTunes, released it… and haven’t stopped—or developed for the PC—since. (More about the design process in a future post.)
Not where I expected to be when I set out again in this business. But I’m awfully happy I’m here!
Wow, yesterday was a hectic day.
I’d had a new release of netTunes in process for some time, and had completed the final testing a few weeks ago. Since the main focus was Tiger compatibility, it seemed appropriate to release closer to Tiger’s release (and I didn’t want to leak any Tiger information by accident), and yesterday (Thursday) was the day I picked to put it out there.
Well, actually, I picked Wednesday, but Wednesday somehow got filled with other stuff, and it just didn’t happen. So, Thursday.
The release process is always kind of the same: I’ve already packaged up the software itself, but that’s only the engineering side. Then, the marketing side has to take over, and you have to:
- Write and send out a press release. Press releases are weird—they always have that amusing part where there’s a quote from someone in the company—typically the CEO—saying something like “I think this is the best work we’ve ever done.” Usually, Marketing just makes something up, runs it by the CEO (or whoever) and gets their OK along with a few tweaks. (Disillusioning, I know, but there it is.)
Of course, in a small company like mine, I’m writing the press release. And, I’m quoting myself. In the 3rd person.
Weird stuff. But this is the best netTunes release we’ve ever done.
(Big apologies to all of you in the press who have to read my lousy press releases.)
- Get the Shirt Pocket web site updated and ready to go.
- Get the various VersionTracker and MacUpdate updates ready to post.
- Update Apple’s software site
- Various other things, email, etc.
Well, maybe that doesn’t sound like a lot. But it feels like it when it’s going on. And then you post the thing, and hope for the best!
Anyway, I’ve done this (and variations thereof) a lot of times over the past 22 years, and it’s always a bit nerve wracking: you just never get over the “release jitters”.
I was talking to Jonas Salling about this the other day, as he was releasing his own update (and, the three of you who haven’t gone out and bought the beautifully done Salling Clicker, please do so now), and he has the same nervousness—no matter how well prepared we are, it always seems like there’s a disaster waiting just around the corner.
Yesterday was especially nerve wracking for me because, immediately after posting the netTunes update, I had to do a whole bunch of errands out of the office. Which meant if something went wrong there was no way to fix it quickly—I nervously checked my email on my phone all day, waiting for the disaster to strike.
It never did. It went fine. It pretty much always does. So why are we always so nervous?
Maybe it’s because, as a small developer, you always feel like you’re one step away from the mistake that’ll kill your company. There’s not a lot of “wiggle room” for the small developer: we can’t absorb a Windows ME or Microsoft Bob or “iTunes Update that deletes your whole drive”.
Basically, we pretty much have to execute perfectly all the time. One mistake and we’ll look foolish and unprofessional: something the vast majority of us are not, but once that impression gets out there, the battle’s lost…