bingshui.org

the Life of Zim

11th February
2011
written by dzimney

So recently I’ve switched from using Songbird to Rhythmbox for my music player. Not sure if the switch is permanent to Rhythmbox, but with Songbird development being dropped for Linux I sure won’t be using Songbird any more. Maybe Nightingale when that has a stable release.

Anyway, with my switch to Rhythmbox, I lost all of my music ratings. Having spent a reasonable amount time getting those in, I didn’t want to give them up and start from scratch. So. I built this little Flash App to merge an xml file exported by the Rating File Plugin for Songbird with the rhythmdb.xml file for Rhythmbox (found at ~/.local/share/rhythmbox/rhythmdb.xml on Ubuntu 10.10). The Songbird plugin will export as a .srf file or something like that, but it’s actually just an xml file, so just change the extension or save it as an xml file when prompted by the plugin.

Be sure to back up your rhythmdb.xml before you go messin’ with it. Not sure what happens if you remove it all together.

If you’re wondering what exactly the app does, it goes through your exported Songbird rating xml supplied by the plugin and grabs each song with a rating, matches it by song title, artist and album to your rhythmdb.xml and adds in the rating. When it does this, if there is already a rating in your rhythmdb.xml for the song, it will be overwritten. Note that if an album has two songs with the same name and artist (which happens more often than you’d think), I’ve simply omitted them from the rating transfer. So neither song receives the rating. Once the files have been parsed, the app prompts you to download the update rhythmdb.xml file.

I know that this isn’t the most robust way for this to work. I mad it like this for simplicity. Not looking to make anything amazing, just wanted to get what I needed done and thought I’d share.

So here it is. Just click on the labels or textfields to select your files and click the Run Script button and let it run. Easy money. Oh, and sorry for the crudeness of the App. Just wanted something that got the job done.

Please comment if you have any trouble.

[EDIT]

…hmm. I just testing the app and wasn’t prompted to save the file when it finished. Might need to look into that. If you can figure out how to download the swf, it should run locally. Here’s the swf file in case you’re not savy enough to pull it from the HTML.

30th April
2010
written by dzimney

Yesterday, Steve Jobs made a post on Apple’s website regarding his Thoughts on Flash. The article lists six reasons why Adobe’s Flash is not and will not be made available on the iPhone/iPad platform. His reasons are misleading. His logic is murky at best. To a common iPhone or iPad user they may seem, well reasonable. However, to someone with a deeper knowledge of the technologies he addresses, most of what he says is simply false.

“Frist, there’s ‘Open’.”

Jobs claims, “by almost any definition, Flash is a closed system” because Flash is only available from Adobe. This is to say that in order to create a Flash application, one needs to own a copy of Flash. This is simply untrue. Through the use of technologies such as MTASC it is entirely possible to develop full Flash applications without owning the proprietary Flash software. Adobe has never done anything to deter such technologies. It’s also important to note that Flash development can be shared with anyone at no cost to the developer. A developer can create a Flash, Flex or Air application and distribute it however they see fit.

Now let’s take a moment and look at the development process for Apple’s App Store. The iPhone SDK is written in Objective C which is developed by Apple and the equivalent to ActionScript being developed by Adobe. No surprises there. However, in order “to develop iPhone applications, you use Xcode”. Xcode, although free, is, wait for it, wait for it, proprietary. Xcode is used to digitally sign an application with the developer’s digital certificate before it can be submitted to the App Store. This digital certificate costs the developer $99 which is paid to Apple. The best part? If the developer does all of this, it doesn’t necessarily mean their application will see the light of day. This is because Apple individually approves all apps before they are made available in the App Store. A process that can take up to two years.

Jobs goes on to explain that Apple has a firm belief that, “all standards pertaining to the web should be open”. Jobs writes, “rather than use Flash, Apple has adopted HTML5, CSS and JavaScript – all open standards.” So let me see if I’ve got this straight, Steve. Apple, while not open itself, supports open standards, but only for the web. And since, in the opinion of Steve Jobs, Flash is not “open”, Apple’s closed system in going to exclude Flash? Maybe a fair point, but also maybe a little hypocritical. Of course this assumes the opinion that, “Flash is a closed system,” is accurate.

“Second, there’s the ‘full web’.”

Ah, yes. The “full web”. Jobs starts his “full web” experience with video. Adobe claims that 75% of all video on the web is delivered using Flash. Jobs rebutes saying that YouTube makes up 40% and the iPhone and iPad are bundled with a YouTube app. Problem solved. Using the YouTube application, you’ll have access to 40% of all video that is available on the web. Of course you won’t be able to view that video in a web browser or see any video that is embedded with Flash within a webpage. But I guess you’re right, Steve. 40% of all video made available through a separate application is practically the “full web”. Lets just forget about any Flash dedicated websites and round that figure up to 100% for “full web”. Done and done.

Jobs continues to brag that the App Store contains more games than God, much less Flash. I understand the point here. Apple and it’s App Store provide a suitable replacement for Flash and therefore Flash is obsolete. That’s all fine and good, but it doesn’t fill the gap between the “full web” and the web as it is on the iPhone and iPad. Furthermore, reason #2 is certainly not, “based on technology issues,” as Jobs claims his reasons are.

“Third, there’s reliability, security and performance.”

Here Jobs actually has a good point. If this was the extent of his article, I wouldn’t be writing mine.

“Fourth, there’s battery life.”

Jobs’ fourth reason is for battery life, but more specifically the way battery life is effected by video as delivered using Flash. He starts here and basically turns his point into a pitch for H.264 video. Battery life has been one of Jobs’ goto reasons for not providing Flash on the iPhone. Jobs writes, “H.264 videos play for up to 10 hours,” while video provided from Flash will, “play for less than 5 hours before the battery is fully drained”. I’m curious. How would Flash video compare to talking on the phone or simply surfing the web? According to the specs on Apple’s website, the iPhone’s battery life will only provide up to 5 hours of internet use or talk time while on a 3G network. Considering Flash video content would presumably require internet use, it’s no surprise that battery life would dip to under 5 hours.

“Fifth, there’s Touch.” (note: Touch is capitalized… amazing he didn’t add the ®)

Here Jobs whines that, “many Flash websites rely on ‘rollovers'” and that in touch-based devices a rollover simply doesn’t exist. He then concludes that as a solution, developers should, “use modern technologies like HTML5, CSS and JavaScript.” This, to be blunt, is just stupid. First, let’s establish one thing right off the bat. JavaScript, one of Jobs’ modern technologies, is just as capable of being dependent on “rollovers” as Flash. Second, to suggest that it makes more sense for developers to fully abandon Flash and completely rebuild Flash content as HTML5, CSS and JavaScript rather than reworking them in order to avoid “rollover” dependency is absolutely ludicrous.

Jobs goes on to claim that, “most Flash websites need to be rewritten to support touch-based devices.” A claim that is equally true for “most” JavaScript driven websites. Here, Jobs is making a claim that he simply can’t support.

“Six, the most important reason.”

Jobs’ final and most important reason, “why [Apple] does not allow Flash on iPhones, iPods and iPads” has nothing to do with running Flash as an application or in a browser on the iPhone, iPod or iPad. Instead he goes to explain why, Apple’s new developer agreement mandates that developers use Apple’s API and only Apple’s API to develop applications for the iPhone. This blocked the most substantial new feature of Adobe’s recently released CS5 Suite, which would have allowed developers to generate iPhone applications through the Flash IDE.

Before I get started, to say that not allowing this feature in Flash is in line with keeping Flash off of Apple’s mobile devices is simply inaccurate. The new feature provided by Adobe would have published applications as native iPhone apps. There would have been no emulation. We’re not talking about a Flash app disguised as an iPhone app. Flash would have compiled ActionScript code into an actual iPhone application.

Apparently, Jobs is concerned that the ability to develop iPhone apps through Flash would create a bottleneck of Apple’s technologies. Jobs says, “we cannot accept an outcome where developers are blocked from using our innovations and enhancements because they are not available on our competitor’s platforms.” That’s like not selling a computer to someone unless they have internet access because they won’t be able to use it to its full capability. If developers want to develop with the lastest innovations and enhancements, they’ll learn to develop in whatever platform is needed. The ability to develop applications in Flash in no way effects the ability to develop applications using Apple’s SDK.

Is Apple within its rights to mandate how the applications in the App Store are developed? Yes. Is doing so a proprietary move? Absolutely.

“Conclusions.”

Flash is a widely accepted multimedia tool that has yet to reach the mobile realm. Soon it will reach that realm and with it, it will bring the single most cross platform development tool that exists. It is already able to generate desktop applications on both PCs and Macs with Adobe Air and is widely used throughout the web.

Apple iPhones, iPods and iPads are a closed box system. They are not multiplatform. They are proprietary. And in that respect Flash has the potential to be one of their biggest competitors. It is in Apple’s best interest to keep Flash from reaching that potential. That’s what Reason #6 is all about.

I understand why Steve Jobs and Apple don’t want Flash running on their devices. I think that concerns for performance are very legitimate. Those concerns are exactly why Flash has yet to be made widely available on any mobile platform.

What I don’t appreciate is reading a misleading statement from Apple’s CEO that attempts to smear Flash. This is either a personal grudge between Jobs and Adobe or Apple attempting to muscle Flash out of the mobile market. Regardless, it is being done at the expense of both Apple and Adobe’s user base.

Daniel Zimney
April, 2010

25th November
2008
written by dzimney

Check it, yo!

No, I didn’t make it.

Tags: ,