Grant Skinner

The "g" in gskinner. Also the "skinner".

@gskinner

Androideroids

There’s a lot of buzz around multi-screen experiences lately, where an application or game is available to you on multiple devices (ex. web, PC, mobile, TV, etc). Recently I’ve been fascinated by the idea of using these “multiple screens” together to create a single experience.

The first result was my Nexus One Gas Pedal which I posted last week. Following that, I wanted to do something that was more accessible, and allowed for more players, which led to the concept for Androideroids.

Androideroids is a prototype multiplayer asteroids game in which each player uses an Android phone as their game controller. Player’s can see a top down view of the game on the main screen (which could be a PC, TV, or projected in a public space), and a first person view with their health and score on their phone. The top down view is great for navigating, and first person view comes in handy for aiming during dogfights. Player specific sounds are played on the phone, whereas general sounds are played on the host.

This has lead to the development of what I feel is a strong framework for creating public installations and experiences that will allow smart phone users (on multiple platforms) to connect in an adhoc fashion.

When players launch the generic LANPad application on their phone, it finds and connects to the game host. The host sends the client a “surface” SWF which defines how the game will look and act on the phone.

The surface SWF sends messages to the host indicating UI input, the host interprets these, runs game logic, and sends back a message updating the game state on the phone.

Here’s a rough video on the project:

Continue reading →

My Thoughts on the Future of Flash

Since the iPad’s release, it’s been nearly impossible to avoid debates (and more often, flame-wars) about Flash, its flaws, and its future (or lack thereof).

Honestly, I’m pretty sick of the discussion. Early on, I wrote up a huge article dealing with the most common themes, misconceptions, and outright lies that were circulating, but refrained from posting it. Since then people have asked me to share my thoughts, and I’ve decided that for the sake of those just getting started with Flash I’d talk about it a little.

Let me start by saying that I completely lack empathy for people who get so emotional about technology. I don’t care if it’s Mac vs. PC, XBox vs. PS3, or Flash vs. HTML 5, I say use whatever works for you. If you want to get into a mature discussion about it’s pros and cons, that’s cool, but spouting vitriol on a public forum just makes you look like an ass. Period.

If you hate Flash so much, turn it off or install a blocking plugin. It won’t bother me in the least. If enough people do it, it will start to show up in the plugin stats, and the industry will move away from it. But please, avoid spouting crass, ignorant FUD trying to justify your choice.

Sure, I make my living off of Flash, but I consider myself an interactive developer, not a Flash developer. I love working with Flash, and think it has a long life ahead of it, but even if it went the way of VRML tomorrow, working with it has given me an understanding of rich interactive content development that’s difficult or impossible to gain in any other technology.

This skill set is applicable to so many things: WPF on Windows, Cocoa development on Mac / iPhone (ex. Core Animation), Silverlight, mobile development, and of course the emerging HTML 5 standard. Languages are easy to learn – mental models, process, and the experience gained from years of working with rich interactive are a whole lot harder.

I’ve been working with Flash for over 10 years. I do it because I love it. It’s far from perfect, but there’s no other technology that offers access to such a broad range of interesting projects with such a low barrier to entry. I’ve worked on rich applications, experimental “art”, marketing sites, games, mobile projects, installations, computer vision, and even a couple of banner ads. I love what Flash allows me to do, but I’m not married to it. I have no problem recommending, or using another technology if I think it’s a better fit for a project.

Considered rationally, the absolute worst case scenario for Flash player is that its core feature set is replaced by HTML5 (canvas, video, etc.) over the course of the next 3-5 years. Even if things go miraculously well, these standards are not going to be implemented consistently across major browsers and devices, then adopted by the general public faster than that.

In this worst case scenario, there will be a slow decline in work available to Flash developers over the course of a decade or so, offering plenty of time to apply your skills to another technology.

In the more likely scenario, HTML5 will slowly overcome the obstacles facing its adoption (ex. Codecs, IE), and begin providing an alternative to Flash for many scenarios. For example:

  • A fair amount of video will eventually be delivered with the video tag, though the lack of advanced features (content protection, variable streaming, etc) means it will won’t replace Flash completely. This in itself will keep the plugin fairly ubiquitous. Example.
  • You’ll see some very impressive apps created with HTML5, though they will require significantly more effort to build because of the less robust tools and language. Example.
  • You’ll see some interesting games and interactive experiences built with it, but it will remain much easier to design and code these experiences with Flash. Also, people will start to realize that along with the capabilities of Flash, you also get some of the drawbacks, like high CPU usage and occasional crashes. Example 1. Example 2.

Flash will continue to evolve, optimize, and add new capabilities. With some exceptions (namely anything beginning with an “i”), it will continue to provide a more consistent environment for deploying rich experiences to multiple platforms.

In short, I’m not worried about the future of Flash. I can’t predict what it will be in 5 years, but nobody can. If the naysayers are right, and it becomes obsolete, that’s fine, I’ll move on to something else. In that case, maybe Adobe will even rejig their tools to output to HTML/canvas instead of SWF. After all, they make their money selling those tools. The Flash player is an expensive loss leader.

If they’re wrong, I’ll likely still be cranking out cool stuff with Flash. However, as a smart developer and responsible business owner, I will continue playing with HTML5 and watching its evolution, just as I’ve done with AJAX, iPhone development, and Silverlight. Eventually we’ll probably offer HTML5 development in addition to our current services.

Finally, I want to address all of the hate and insults that have been directed at the Adobe engineers. Yes, Flash player crashes. Yes, its performance could be better. But the Flash player engineers are some of the smartest, most passionate and dedicated professionals I’ve had the pleasure of working with.

Try building a player that runs a huge range of dynamic content written on a variety of tools (some of which you don’t control) by developers with massively varying skill levels. Now try making it compatible, consistent, and performant across dozens of OSes, browsers, platforms, and devices. And maintain backwards compatibility with the last 9 versions even while your target platforms change. And keep it under 5MB. And maintain it in parity with an OSS effort (Tamarin). And try to keep up with the demands of one of the most active and vocal developer communities.

Trust me, it’s harder than it sounds (and it sounds pretty damn hard to me). These guys deserve our respect and appreciation. Complain about the player – hell, I want it to run faster, never crash, use less memory, and play video better on Mac – but don’t insult the people working on it.

I have so much more to say, but I’d largely just be repeating things that have been repeated ad nauseam, so I’ll end here.

I happily welcome your thoughts and comments, however I refuse to let things degenerate into the name-calling, ignorance spouting, poo-flinging mess that it has on other sites. As such, contrary to my usual policy, I will aggressively delete posts that are not respectful and on-point.

Great Pumpkin Showdown ’09 Results

After a week of voting, we’re ready to crown the winners of the 2009 gskinner.com Great Pumpkin Showdown. It was a much closer contest than last year, with the spread between the winners and losers being only about 2:1, but ultimately one pumpkin reigned supreme.

Despite a concerted campaign by certain unnamed third parties to prevent me winning (you know who you are, BWC), my wife Bobi and I took the lead with our pumpkin “Misutaa Supaakoru!” (aka Mr. Sparkle). Go team Skinner!

Thanks to everyone who voted! Here’s a shot of all the pumpkins from this year:

GTween and Tweenlite Unite?

I have always had a lot of respect for Jack Doyle. Before creating gTween, his TweenLite library was my tweening library of choice – I’m even a member of Club Greensock. We have stayed in touch since I released gTween, and I’m happy to announce that we are currently evaluating ways to integrate the two tweening libraries to create something better than either of them.

Jack will bring years of experience building tweening engines, boundless energy and enthusiasm, and a dedication that I simply can’t match to the new library. I will hopefully be able to contribute a lot in terms of new ideas, formal architecture, code cleanliness, and hopefully even the odd optimization

here and there.

We’re hoping we can bring the best of both projects into a combined library, and would love to hear what you’d like the end product to be. For example, if you’re a gTween user, what made you choose it over TweenLite? Or vice versa. Feel free to give us feedback in the comments below or on the Greensock forums.

There’s no guarantee that this collaboration will bear fruit, but we’re both committed to trying. One phenomenal tween engine would be preferable to two great ones.

I will release at least one more version of gTween, fixing a bunch of issues and adding a few minor features. I realize that people are using this library actively, and have no intention of simply dropping support and leaving them at the mercy of existing bugs.

You can get additional information on Jack’s blog entry. We’re both very excited to move forward with this, and hope our respective users are too!

Eneloop = Best Batteries Ever?

I don’t usually blog about things that are unrelated to the Flash platform, but once in a while something comes up that I think is impressive, lacks the exposure it deserves, and might be useful to other geeks. Eneloop batteries met that set of criteria, and they’re good for the environment, which is always a bonus.

I heard about Eneloop about a year ago, but I never found them in stores, and thought maybe the technology was vapour-ware. I wasn’t surprised, because they sounded too good to be true: They are rechargeable batteries that outperform alkalines, retain a charge for over a year (so you can charge them, stick them in a drawer, and forget about them until you need them), charge fast, and are quite cheap (only slightly more than brand name alkalines, and nearly half the price of the Panasonic rechargeables I had been using).

Then about 4 months ago I found some in a local computer store, and figured I’d give them a shot. I was impressed enough by the first pack that I’ve replaced all of my batteries with them, which only cost about $100 for 35 batteries and a charger (they also charge fine with my old charger). So far I’m really happy with them. They last a long time (about 2 months of use in my XBox360 controller, versus about a month with fully charged Panasonics), and hold a charge well so far (the ones I’ve put in my tv remotes are still going strong). The only thing I noticed is that unlike the AAs, the AAAs did not come precharged. I’m guessing they discharge more quickly in storage than the AAs due to their smaller size.

I have a bit of a conspiracy theory about these batteries, which is part of the reason I wanted to give them some exposure. These are theoretically “batteries for life” – if you charge them every 2 weeks, and they last the stated 1000 charges, they will work for over 40 years. Obviously this isn’t going to happen, but it seems like they should last a good while. Sanyo is the largest rechargeable battery manufacturer in the world, but as far as I know they have never marketed them directly. I can imagine a scenario where Sanyo approached the companies that were rebranding their batteries with this new technology, and were shot down because it has the potential to dramatically reduce the demand for batteries (because you don’t need to replace them). Likewise, you can’t find these batteries at stores like Best Buy, possibly for the same reasons – batteries are a high margin business, with a good replacement cycle. It’s just a guess, but it sounds possible to me.

I tracked mine down at a local computer shop, and then later at Costco. And no, I’m not getting paid by Sanyo to promote these, I just think they’re a smart product, and they aren’t getting any attention. And yes, they have a really crappy “skip intro” type thing on the Eneloop website. Good batteries, bad Flash. 🙂

gTween beta 3: AS3 Code Tweening Library

I’ve just wrapped up beta 3 of gTween. It’s been a busy few weeks, and is just getting busier with the Korean Game Developer’s Conference, and Adobe MAX around the corner, so it’s not quite as well tested as I’d like, but it seems to be working without problem.

The main feature additions are support for 3D rotation with smartRotation (always rotates in the shortest direction), a rewrite of custom progress points to make them more robust and reliable, the addition of a global defaultEase property, and the ability to globally control what properties will be rounded.

Continue reading →

Coolest Video I’ve Seen In a Long Time

Holy crap this is cool! Ultra slow motion video of a lightning strike. It’s amazing to watch the traces (not sure what to call them) following the path of lowest resistance, trailing paths of ionized air, until one touches the ground and WHAM the surge of electricity blasts down through the path.

It looks a lot like the lightning experiments I did awhile ago, but the logic is a bit different. I’m definitely revisiting this to make it mirror the “business logic” you can see in this video.

Man, I love nature (and slow-mo cameras)!

Here’s the lightning video.

Here’s my old lightning experiment.