My second major product at Amazon was the MP3 Uploader, which later became the Music Importer. This started off really fast as we needed a quick solution to launch with the the Amazon Cloud Player, web version (CPWeb). I actually had to interview and pick a crew of contractors to do this with me at the start because we didn’t have the head count at the time to use Amazon engineers.
The basic product would be built in Adobe Air – you have to install that when you install the Uploader. A couple other engineers had made this decision before I took over the project. That decision definitely enabled us to get started quickly, but had a number of drawbacks including the supporting debug tools were useless for us and many people just hate Adobe Air/Flash – especially Mac users. The main use case for the product is scanning of a user’s computer for music files that can be uploaded, and most important in that process is recursive file scanning, which is why we couldn’t just do it in the browser.
This was tough because we needed to move quickly to not delay the CPWeb launch. Thankfully, I’d learned a lot from doing CPWeb, and made a few improvements to the Uploader framework based on that experience. I didn’t have time to play around and test ideas like I did with CPWeb, so I had to choose those improvements carefully so that I was sure there’d be a positive improvement. I’d like to post some pictures of the Uploader, but it’s already been replaced by the Importer, so I don’t have access to it anymore.
The next goal after launching was actually to work on the replacement product since v1 was partly only intended to support the launch of CPWeb and not live long after that. Knowing the challenges and good parts of CPWeb and the Uploader, I was playing with new ideas for a better, larger product which eventually got wrapped into the Cloud Player Desktop product, but that took a couple years to actually come to fruition. Thankfully, the Uploader product was solid enough to go through a couple major enhancements including the major refactoring to the Importer version.
By the time the Importer was on the schedule, thankfully, we hired Brandon Skeen to the team. Brandon was a life saver frankly, and a tremendous help in everything. Till I left Amazon, he stayed one the first people I’d go to for bouncing ideas off of, and he was great at improving an idea or showing me a better alternative.
The main addition to the Importer product was allowing ‘instant importing’ of music discovered on the user’s computer. The product would still upload if the file wasn’t importable, and the UI was much improved. A major piece that users might not remember, but was a lot of work were device registration (device limitation) flows. We also internationalized the product at this point, although, it didn’t go international with import launch as that came a little later. By then, though, the product had been handed to another team to support while Brandon and I (and others we added to the team) worked on the Cloud Player for Desktop product full time finally (more on this in the next post).
Import was a major pain actually and required a lot of service development in connection with client side changes from the Uploader to the Importer with a very challenging deadline on top of it. I’d actually say 2 of possibly the worst experiences of my work career happened at the end of this process and leading into the start of the Cloud Player Desktop work (we’ll see if I ever post about those experiences, but definitely not now). CPDesktop is probably my biggest engineering achievement to date, though, so from major lows to major highs.
In the end, the Importer effort was a success for all the struggling, and had a lot of learning experiences to draw from for the next (and final) product. I’d been working for a while before Import, though, developing ideas and prototyping, and then also on and off during Import (and Brandon was helping lot in this too), so I was rev’ed to get cranking on what I was sure would be the best product and codebase possible. I saw the Desktop product as a possible high water mark for my career, and I think it is – although, I hope to crush it at Jut 🙂
To close, some remaining screenshots of the Importer product: