Flash Issues

Over all the flash-must-die debates and if DHTML5 can replace Flash, I’m missing some pragmatism. What are the actual issues with Flash? Can those be solved?

Here are the day-to-day issues that I’m experiencing as a user of Flash components:

Captured keyboard input

My biggest issue: When a Flash movie has focus, it swallows most keyboard events. I use Ctrl+Tab and Ctrl+n (1 for mail, 2 for RSS reader and so on) all the time, but for that to work on a Tab with an active Flash movie, I have to click outside the movie so that keyboard focus is back where it belongs. Completely unnecessary and annoying as hell.

Full screen video slow or hanging

My Lenovo laptop has trouble playing full screen HD video in Flash. It actually runs fine most of the time, it just hangs half second every few seconds. Worse, sometimes video completely hangs in fullscreen mode, while audio continues to play, so depending on the video, I don’t even notice the problem until 10 seconds later. I have to press Escape to go back to normal mode, then go to fullscreen again. Happens way too often.

Crashes browser

For years I thought only the Java browser plugin was able to reliably crash my Firefox browser. Today Firefox crashed when trying to play a full screen video. I got worse as Tabmix Plus was unable to restore my open Tabs (about a dozen), and loosing any user input is among the biggest sin software can commit. I wouldn’t care for the plugin to crash and require a browser restart, but crashing the browser isn’t acceptable. I’d disable Flash by default if that would happen regularly.

Stability, performance, thats likely to be important for Adobe to be working on. The keyboard event capturing? I hope so.

Sidenote on the “open mobile web”

If someone argues that you don’t need Flash on the iPhone as Apple embraces the open web and DHTML5 and everything: Try to play a background sound on Mobile Safari. As that isn’t possible for whatever reason, the only way to port Flash games to the iPhone is via Apple’s closed App Store. Even if they add support for playing back a simple MP3 file, I doubt we get anywhere near stuff like this (click on Launch App to see the Flash stuff) anytime soon.

Yoda Shirt

Auf 3dsupply.de werden derzeit Blogger mit einem kostenlosen T-Shirt bestochen, das man sich auch noch selbst aussuchen kann, wenn man den auf deren Seite verlinkt. Da ich den Shop mag und da schon öfter bestellt hab, mach ich da auch mal mit. Frei nach Frank Zappa: I’m only in it for the money! Not.

Zum Titel: Ich erhoffe mir dieses super Yoda Shirt.

Tarantino Mashups

Tarantino movies are great, the music in them is great, and mashing all the movies together is even better. Eclectic Method did that:

Eclectic Method’s The Tarantino Mixtape on Vimeo (HD available only on their site)

Their Tarantino Mixtape is not quite new, but has to be mentioned when looking at this Tarantino plus Cohen Brothers mashup. The beginning is actually very similar, which probably isn’t a coincidance. Mixing in Cohen movies is certainly a good move, though the music mixing isn’t quite as good overall – the transitions are rather weak. Though mixing Samuel L. Jacksons’ bible quote with Don’t Let Me Be Misunderstood from Kill Bill I, climaxing into wild shooting scenes is awesome.

Tarantino vs Coen Brothers on YouTube

Harvey Keitel’s “Bam. Bam. Bam.” from Reservoir Dogs is in both, and if you’ve watched The Tarantino Mixtape first, you’ll certainly like the appearance on the second mix. I do. And now I also want to watch Kill Bill I and II again. I probably should give up on waiting for the Kill Bill Director’s Cut – both movies as one, as originally intended – and just watch them as-is. Still have the shrink-wrapped DVD lying around here… And I want to watch all of the movies in here that I haven’t seen, yet. And watch Inglorious Basterds again. Oh my…

PS: If you like the Eclectic Method mashup, be sure to check Lock up your Videos. There are a few goodies on their vimeo channel, too, but its rather random and not nearly on the level as the Tarantino Mixtape or LUYV.

Branching with Git

Now that jQuery UI is on Github, I need to learn how to branch and merge with Git – and not just local branches, but also pushing branches to Git so that others can work on them.

The chapter on branching from Pro Git is a good start for learning branching in Git. And the next step, remote branches, has its own chapter as well.

In order to be able to repeat the necessary steps, I’ll describe here how to create a local branch, commit some changes, and then push that branch to your Github repository.

The following command creates a new branch and switches to that:

git checkout -b "newbranch"

To see the local branches and which one is the active one, use:

git branch

That should now display a list like

* newbranch

Where the asterix marks the new active branch. With that, you can modify stuff in the branch. Then, to add all modified files to a commit, along with a message:

git commit -a -m "Message along with modifications"

Now comes the interesting part, pushing the branch back to the remote repository, Github in my case:

git push origin tooltip

Git knows that “origin” refers to [email protected]:jquery/jquery-ui.git, so it’s enough to add the name of the branch.

This works so far, but isn’t optimal yet: To push from the tooltip branch, I need to use “git push origin tooltip” again. I’ve found two ways to fix this, both way to complicated for such a simple requirement.

Either manually edit your .git/config file and add the branch, you should then end up with something like this:

[branch "master"]
	remote = origin
	merge = refs/heads/master
[branch "tooltip"]
	remote = origin
	merge = refs/heads/tooltip

For my “tooltip” branch, I added the entry below the entry for “master”, and just replaced “master” with “tooltip”.

To avoid editing that config file, I found this to work:

git branch -D tooltip
git checkout --track origin/tooltip

With branch -D I forced a deletion of the local branch, then used checkout with the –track option to check it out again and have Git set up the config entries for “tracking”. There should be an easier way to do that.

Update: Apparently you can configure Git to automatically setup the tracking via:

git config --global branch.autosetupmerge true

You can leave out “–global” to apply it only to the current project. Seems to be more useful as a global setting…