Your Browser Isn't The Only Place HTML5 Is Replacing Flash
You can't swing a dead cat these days without hitting an article about how HTML5 is replacing Flash. First it was just web video, but now HTML5 is taking over document viewing and crappy browser games. What isn't getting as much attention is how HTML5 is displacing Flash OUTSIDE your browser. Let's take a look.
Cameras
The camera Flash has been around for over 700 hundred years. The original Flash used gun powder and had a 36% chance of killing the photographer on any single picture. Fortunately we evolved to using high powered LEDs, which dropped the photographer death rate to less than 10%. The success of sites like Flickr is directly related to this advancement.
Seriously you should have seen Flickr 700 years ago - there's wasn't a photostream with more then 8 pics. You'd find a user with some awesome pics and be like "man, I can't wait to see what they put up next. Oh wait - that last shot looks like his head covered with flaming gun powder. Impressive he was still able to get the shot while burning to death."
Whether Flash likes it or not it's use in cameras is coming to an end. Just last week Canon sent me a prototype of it's latest DSLR camera with HTML5. I gotta say this thing is pretty amazing. The quality of the daylight shots is unlike anything you've ever seen. Night shots using HTML5 instead of Flash are less impressive. Here's a sample:

As you can see there's still a little way to go here.
Flashers
When you think of Flashers you picture crusty fat dudes in trench coats approaching you on dark streets. They would open their coat and expose themselves. You'd run away while pretending not to be sneaking peaks. I decided to compare how traditional Flashers match up with the new HTML5ers. I ran a simple A/B test over a one week period and got some surprising results.
| Flashers | HTML5ers | |
|---|---|---|
| Expose Views | 1249* | 298 |
| Avg. Time of Expose | 5 secs | 47 secs |
| Bounce Rate | 98% | 75% |
| % New Exposes | 99% | 68% |
* This would actually have been higher, but I lost a night due to incarceration.
As you can see traditional Flashing clearing wins if you're just counting exposes. Once you factor in analytics that really matter HTML5ing is the better option. If you care about user engagement or repeat exposes then HTML5ing is the only way to go.
Updating BIOS/Firmware
Since the early days of computing anytime you'd want to update your BIOS or firmware the only option has been to Flash it. Newer devices such as the iPad and iPhone are not supporting Flash, which means the only way to update is to HTML5 a new firmware. This is great news to anyone whose ever bricked a device when a firmware update has gone wrong. If the update crashes while your HTML5ing your BIOS a simple refresh will restore it to it's previous state.
Study Habits
I think we all remember using Flash cards at some point in our academic careers. While they did a decent job at helping students learn there were some obvious issues. Take a look at the sample Flash card below:

Pretty standard. The question is on one side, but where is the answer? That's right - it's on the other side LOCKED BEHIND A PAYWALL. The big media conglomerates use this technique to squeeze every last penny from poor students. HTML5 cards fix this by putting the answer on the same side of the card. I think we can all agree this a much more open system.
Super Heroes
DC Comics super hero The Flash has been around since the 1940s and has been featured on TV as well as comics. He is best known for his iconic red jumpsuit, untimely crashes and excessive CPU usage. I'm happy to break this piece of news: In June 2010 DC Comics will replace The Flash with a new comic titled "The HTML5". The series will open while The HTML5 is still in high school. The plot will center around The HTML5's inability to pick a girlfriend, stuck in a tug of war between the lovely but restrictive Helen Twosixty the 4th (no kissing with tongue or touching below the cloths) and Oggla Vorbistein, whose a bit older (37 and still in high school) but open for anything.
The Future
I think it's clear that Flash is on it's way out in every aspect. In addition to the areas mentioned above keep an eye our for the remake of the movie Flashdance called HTML5dance. I hear HTML5 looks incredible in knee high leggings and stretched out collar sweatshirts.
CakePHP Digest #25 All Hail 1.3 Stable
Sponsor
For the first time the CakePHP Digest series has a sponsor - and it's me. I need some work. Not a lot, just a few hours a week. What, you thought I did these out of the goodness of my heart? Ha! I've just been waiting for the chance to exploit these digests for my own personal gain. Apparently making it rain (link NSFW...unless you work in a strip club) from rolls of nickels at the dance clubs just isn't a good idea. Paper money is the way to go and I need some to cover all the medical bills those nickels caused.
News
Cake 1.3 Stable
There have been roughly 15 CakePHP 1.3 releases since the last digest, but the only one that matters is 1.3 Stable. Awesome. If you've been waiting for 1.3 to go stable before switching and complaining about bugs (because it's not fun to complain about bugs in RCs) then now's your chance. I made the switchover around RC3 and feel like a moron for waiting so long. It was so damn easy. Almost like they want you to switch. Might have to file a bug about that.
Docs and API for 1.3 are also available.
Congratulations to the entire Cake team and everyone who contributed to 1.3.
Cake 1.2.7 Release
There is also an update to the 1.2 branch, which fixes a "security concern" that only affects sites running with debug enabled. Hahaha! Who runs their sites with debug on. Oh...uh...yea all those dev/testing sites. Hey everyone look over there. *quickly runs and upgrades dev sites*
CakeFest 2010
No info at the moment, just a teaser page. Consider me sufficiently teased.
Croogo 1.3
The CakePHP powered CMS Croogo made the jump to CakePHP 1.3. There isn't an upgrade guide and if you drop the new version over your old Croogo it kicks off the install. The easiest way to handle this is run through the install with a blank database, then once you're done switch the database back to your old one. The schema is pretty much the same - just two new columns in the users table.
Themes and plugins will also need to be updated, which mostly consists of making a yml (ugh) config file.
CakePackages
CakePackages, which helps you find code for your projects, is now tracking upwards of 548 projects by 284 devs. I think between myself and @savant we're responsible for 547 of the projects and the other 283 devs are responsible for the other 1.
In The Wild
Tripeo
Tripeo is a UGC site for Canadian travel. There is a short write-up on it in The Bakery.
PopGames4u.com
Another Bakery article promoting the games directory: PopGames4u.com. I think "pop" is short for popular, but it could be short for Pop Tarts. Hmmm...Pop Tart Games 4 me.
In The Blogs
Why You Should Upgrade to 1.3
If me telling you to upgrade to 1.3 isn't enough here's a post from Mark Beukers with "logic" and "reason".
Screencast - Building a FAQ in 5 Minutes
Deon Heunis has a screencast showing a simple FAQ. It's pretty much a screencast showing how to get Cake setup and use bake. Unfortunately there isn't any audio, so it might be tough for newbs to keep up.
WordPress + CakePHP
The topic of how to link up WordPress and CakePHP seems to come up a lot. Tim Trice has a detailed post showing how to build a Cake app onto WordPress database.
MongoDb with CakePHP
Mark Story has a post about how to use the MongoDB dataousce (from Yasushi Ichikaway) with CakePHP. Am I the only one who wishes the MongoDB logo somehow incorporated an 80s Chicago Bears jacket? Uh, yeah, ok I guess I am the only one.
CakePHP Alias
Nick Baker has a post on the under-appreciated model attribute alias.
Controller::setAction()
Yet another secret function, Controller::setAction(), is detailed by Miles Johnson.
CakePHP and Nginx
Kevin van Zonneveld has a post showing how to setup Nginx (my favorite web server) to host Cake apps.
Deployinh CakePHP apps with Capistrano
By Jean Philippe Doyle, in The Bakery, an article on deploying CakePHP apps with Capistrano.
Code
From CakeDC
CakeDC has been busy releasing plugins, so I'm just going to list them all there:
Sanction Plugin
The Sanction Plugin from Jose Diaz-Gonzalez is an easy way to control permissions within your app.
Oauth Extension
Neil Crooks unveiled his Oauth Extension which looks awesome and it is a much smarter implementation then what I did for my Twitter client, 20Couch. Speaking of Twitter, did you know their shutting off basic auth access on June 30th? If you have a Cake/Twitter app now is the time to switch.
bit.ly Datasource
With short urls being all the craze (I prefer to call them stubby), this bit.ly datasouce from Jonathan Bradley will probably be useful to some of you.
Referee Plugin
Joe Beeson unleashed (hard to come up w/ different ways of saying released) his Referee Plugin, which tracks issues and errors in your app. This almost makes me wish I made errors.
Asset Compress
An already crowded area for CakePHP code gets another addition - Asset Compress from Mark Story. You may also want to check out my Asset Packer. If you didn't see that link coming then you haven't been paying attention. I now know how a rooster trainer feels when his prize cock gets pecked to death by the new champ.
Copyable Behavior
Jamie Nay unshackled his Copyable Behavior, which helps copy DB records including those in associated models. Also from Jamie: Cipher Behavior - which aids in two way encryption if you're willing to infect your app with a Zend component.
I'm Out!
And on that note don't forget to subscribe to my feed or follow me on twitter. As always if you think I missed something leave a comment. Or if you do something interesting and want it included in the next digest, send me an email.
Why HTML5 Video Won't Replace Flash
I work for a company that makes its money sticking ads in online videos. In the past we've always done this with Flash, integrating our ad system with our custom Flash player or 3rd party Flash players. Now that the iPad is out, and it's more clear then ever that Apple will never support Flash, I've been tasked with building a proof of concept HTML5 player.
Everyone Loves HTML5 Video...Well Almost Everyone...
As a user I love HTML5 video. As a developer I love HTML5 video. You know who doesn't love HTML5 video? Premium content providers. That's a fancy way of saying ABC, NBC, Hulu, Netflix...basically all the people who make and distribute video in a class above "guy getting hit in crouch". You know why?

That's the menu that pops up when you right click on an HTML5 video in Chrome. You see the option "Save video as..."? Two clicks and the original video is downloaded. Firefox has a similar option. As my mentor D. Vader would say: "All too easy".
That's Not What I Get When I Right Click In YouTube
YouTube tries to prevent this by overlaying a div over the video element with the class "video-blocker". When you right click you get the normal browser context menu instead of the HTML5 video context menu. This is like sites that try to block an image from being saved. It's stupid and easy to overcome.
This is also the reason that the YouTube html5 pages states:
This is an opt-in experiment for HTML5 support on YouTube. If you are using a supported browser, you can choose to use the HTML5 player instead of the Flash player for most videos.
The premium videos on YouTube - Flash only. It's just too easy to download the content directly with HTML5. This is why you will NEVER EVER see a Hulu HTML5 player or a Netflix HTML5 player (I know Netflix is Silverlight, but for the purposes of this post it's in the same league as Flash).
This isn't even bringing up how you can't truly disable the scrubber (the progress bar), which makes skipping commercials a breeze. Oh "27 seconds until my show resumes"? Thanks, now I know how far to drag forward.
Why HTML5 Video is Bad for the Internet
Where this really sucks is when companies don't include Flash support because they believe everything will be HTML5 in a few years. Yes, I'm talking about Apple and no I don't actually believe this is why they don't have Flash support, but I've seen enough posts that claim Apple is so forward thinking they wouldn't waste time with a dinosaur like Flash.
More likely Steve Jobs and Joe Adobe were at a bar in the '70s and Joe Adobe picked up some chick over Jobs and he's been bitter ever since. Actually if Apple ever announced this was the real reason for not supporting Flash I think we would all understand and side with Apple.
Apple Is A Big Fucking Deal
Apple is a big fucking deal, so they can say "suck it Flash" and get away with it. The premium content providers will jump through the hoops of making custom players (apps) in the programming languages they're told to use and distribute them only though the all mighty iTunes birth canal. Who get's screwed in this arrangement? Content providers not big enough to build their own apps and content providers who can't get the keys to the iTunes chastity belt. The latter is referring to the porn industry. And frankly Jobs I would stop antagonizing the porn industry. They will wreck you.
We're Screwed Here Too
Who else is screwed (even though they don't know it)? The user (that's you). Now every time you want to watch a video that isn't a sneezing panda you have to download and install an app. In a strange way this is actually a feature, since iPad/iPhone users love their apps. "Look at me. My iPad is 75 apps long". Hell Apple even rolled a whole ad campaign around this. Want to watch an ABC video? There's an app for that. Want to watch a movie on Netflix? There's an app for that. Unfortunately that app isn't "browser".
This also works because there are like 3 premium content providers people give a shit about (Hulu, Netflix, ABC). But now imagine if the video hosting sites get gun shy for HTML5 because of how easy it is to grab the videos. This isn't a stretch - look at the bullshit YouTube is pulling. There are like a million of these sites. Now everytime you want to watch a homemade instructional video on how to wield a lightsaber you have to install another propietary app. Is this really better then Flash? At least you already have that installed.
Really the best case scenario for an HTML5 world is:
| Desktop | Mobile/Tablet | |
| Crotch Slam Videos | HTML5 | HTML5 |
| Quality TV/Movies/Porn | Flash | Proprietary app - if you're lucky |
I don't know about you, but I'm not really excited about that world. What about a world where HTML5 video doesn't exist? Maybe Apple (seers of all that is to come) realize that they have to support Flash and we end up like this:
| Desktop | Mobile/Tablet | |
| Crotch Slam Videos | Flash | Flash |
| Quality TV/Movies/Porn | Flash | Flash (ok, I don't even believe that). Proprietary App. |
I hate Flash banners, Flash landing pages, Flash widgets, Flash photo galleries and all the rest. Flash Video though, yeah, it has issues, but it also kinda works. HTML5 is better, but it's just not gonna kill off flash. HTML5 > Flash > Proprietary App. I wish it was the last one we were killing off, but instead it's growing.
How A Small Change To The Buy Now Button Increased Sales One Gazillion Percent
I Lied
Okay, I lied a little in the title of this post. It took a little bit more then the small change to increase sales so much, but I'll get to that detail in a moment. Before I explain the change I want to assure you I did thorough A/B testing on this and the results were other worldly.
The Change
First off I want to show you the 20Couch (a self-hosted PHP Twitter client) buy now button when the site launched earlier in the month.

Pretty basic right? Now check out the new version which converts at an unbelievable rate.

Now I know what you're thinking. How can threatening physical harm to your potential customers actually improve conversions? Truthfully it didn't...at first. The key? Follow through!
The Terrorizing
You can't make a threat like that and then just let it go. You need to follow through on the promise otherwise people will just think it's some weird joke and move along. It isn't practical to terrorize everyone that doesn't buy, but once you visit a few word tends to get around.
How To Terrorize Effectively
I tracked every visitor's IP address and would select a few at random each week. After geo locating their residence I would go to their house and wait for them to be fast asleep. When the time was perfect I would crash through their bedroom window wielding a 7-foot chainsaw (I nicknamed it Mr. Cutty). Standing over them in bed I would yell something like "BUY 20COUCH!" Then I'd shove the chainsaw between their legs and cut a big ass whole in their mattress.
I clipped a guy's leg once by mistake. It was a mess. You wouldn't think it would be so hard to clean chunks of human flesh out of a comically large chainsaw. But I'll tell you there wasn't one person in his neighborhood who didn't place an order the next day.
Small Technicalities
We all know that it isn't easy to map an IP address to a physical address. Often times I would end up at the wrong house. I felt a bit bad about this, but crazy enough it still worked. I guess what my Gramps used to say is true: "Close - good enough for horseshoes, hand grenades and intercourse."
Mixing It Up
I know this is going to sound insane, but storming a random person's house and swinging a massive chainsaw over their head can get kinda boring after the first 2-3 hundred times. To keep things fresh I like to mix it up. Sometimes I go for the subtle approach: slide into bed next to the customer and gently whisper "buy 20Couch" in their ear until they wake up. Then I ride the chainsaw around the room like it's a pretend horse. I always make doubly sure to leave it off.
Gratitude
I've found people actually like this approach once they get over the initial shock. Check out this email I got last week.
Dear Matt, Thank you for storming my house and scaring me into buying 20Couch. It's really made my Twitter experience more enjoyable. I consider it my fault that you had to cut a hole in my wall and destroy my mattress to convince me.
Thanks,
Bob
PS - Do you know what happened to my dog? The morning after you visited he was gone and there were drag marks and blood stains in the backyard. Could just be a coincidence.
Don't Forget
Traveling the country and keeping a 7-foot chainsaw in good condition can get expensive quickly. Remember that these are all business expenses, so you can deduct them on your taxes. I count these visits as sales calls.
One Last Thing
I hate to do this to you guys, but I'm going to need you to go buy a 20Couch license now. Don't make me bring Mr. Cutty to:
Introducing 20Couch - The Bastard Child of Twitter and Google Reader
20Couch is a self-hosted PHP/MySQL Twitter client. The interface is very similar to Google Reader. I won't say they stole UI, but the similarities are a little too much to be a coincidence. Do no evil? Really Google? Anyway, what better way to announce a new app then a fake interview? Off we go!
Let's get right to it. You're charging $30 for a Twitter client? Where you born crazy or was it something that developed after numerous head traumas?
I went back and forth on trying to sell this or just tossing it on Github about 50 times. I don't have a strong reason for my eventual decision to sell it other then the need to feed my ferocious heroin addiction. As for the selling price of $30? It just felt right and it seemed to be the going rate for self-hosted web apps. There is also a free option - you just need to agree to write a review. This offer is pretty much open to anyone with a blog (except for TechCruch - they suck). There aren't any restrictions on what your write. To quote myself: "You can say it sucks if you want. I'll probably tear up a bit and drive by your house like a hundred times, but I won't try to stop you."
Why another Twitter client?
I figured I had to do either a Twitter client or a PHP framework or lose my developer cred. I had been using the Echofon Firefox add-on, but was annoyed that the first thing I would do is scroll down until I found some tweets that were familiar. Then I'd read up to catch up. This was pain since I jumped computer a lot (personal laptop, work laptop, family computer) and it just seemed like such a hassle to keep them in sync and have to install the client everywhere I went. A web app made so much more sense.
Seems like that means a lot of work just to setup a Twitter client?
It's really no different then setting up WordPress or any other PHP app. I tried to make the installer as simple as possible. There is also an online demo (username: 20couch, password: isawesome) that you can play with to see what it's all about before taking the leap.
What about the hosted Twitter clients like Seesmic and HootSuite?
I'm sure those guys are awesome and to be honest I haven't tried either. I was already knee deep in 20Couch when those two started taking users. Those clients are probably great for people who can put up with ads (or ad block) and don't mind having yet another company tracking their activity while keeping all your records in their DB.
What does 20Couch bring to the table?
The complete feature list is here. My favorite things (in addition to not having to sync) are the search, reply reminders and following searches. And tweets are sorted oldest to newest. Unless you're the guy from Memento it makes no sense to read from newest to oldest.
Why is the iPhone/Mobile layout in beta?
I don't have a smart phone. If there was a mobile phone Special Olympics my phone would get like 10 medals. Not because it won them, but because everyone gets a medal. So, I do the best I can with emulators and shrinking my browser, but it isn't the same as actually using it day to day. Soon I'll be upgrading and the mobile support will get much better.
What features are coming up?
There is a lighthouse project for new features and bugs. The two big ones I want to do are plugin support and support for other networks such as identi.ca/StatusNet and Facebook.
Anyone you need to thank?
The app is written on CakePHP and makes heavy use of jQuery, so huge thanks to those two teams. I'd also like to thank everyone who beta tested and provided feedback, especially @gcarreno and @rickguyer who made a ton of awesome suggestions and not only found bugs, but took the time to really dig into them. Way above and beyond anything I expected.
Anything else?
The site is 20couch.com and also on Twitter at @20couch. If I missed a question go ahead and leave it in the comments of this post and I'd be happy to answer.
