Thursday, October 06, 2011

Adobe MAX and AIR: Disappointed and Confused

Dear Adobe,

You keep telling me that you can build an AIR app and deploy it to multiple devices. So when I sat down to watch the keynotes, I expected to see an app running across multiple devices. Instead, you showed me the following:

  • Touch apps that are running on a single Android tablet and “coming soon” for iPad

  • Angry Birds (and others) running on the desktop, but not on a tablet or a phone

No matter how impressive your AIR app is, I only want to see your app if it’s running on multiple devices. You’re shooting yourself in the foot when you say “coming soon to other devices”. I guess next time I approach a client I’ll say, “Thanks to AIR, I can deliver this Android app and then also deliver an iPad app a few months later.”

Your Angry Birds and Unreal demos were impressive, but didn’t they belong in the “sneaks” section? Am I supposed to send my mom a link to the MAX keynote and say, “Look Mom! Angry Birds running in Flash!” She doesn’t want to watch a video of a mobile game in a browser and she doesn’t care what Flash is, she just wants to play Angry Birds on every device she has today.

I love the the vision of Flash (deploying high performance apps across multiple devices), but unfortunately the reality is very upsetting. You have no tooling for 3D, GPU is not working across desktop and mobile devices, and your “build once, deploy everywhere” message is falling flat on its face. If you would have shown me released tools for building games (physics, level editors, sprite management, etc) and Angry Birds running across desktop, Android, and iOS, that we could all take home and play, I would have given you a standing ovation. Unfortunately, MAX felt more like a message of, “Just hang on a little while longer, we’ll get there, we promise!”

All I want to see is mind-blowing demos of AIR running across multiple devices and the tools you used to make them, but instead I saw an awkward message of buying PhoneGap to support HTML apps and Flash become the new browser "console".

Fix your story. Clear your message. Deliver on your promises.

I'm still waiting...

John Lindquist

Friday, September 16, 2011

My Thoughts on Windows 8

100+ Retweets

I tweeted this picture yesterday and it turned out to be popular enough to hit the front page of twitter (tweetdeck instantly erupted with that annoying retweet chirping noise).

If you think hard enough, you can pretty much read whatever you want into the picture: “Win 8 does real work while an iPad belongs on the shelves of Toys R’ Us’“, “Win 8 is the most expensive iPad charger you can buy”, or “Win 8 runs iTunes better than an iPad”.  The picture just begs for a caption contest. Also, many people thought I was showing how a Windows 8 tablet can charge an iPad (you really just get that same "not charging" message you get whenever you plug an iPad into anything).

I was simply thinking this:
A Windows 8 tablet is a full-blown portable PC. An iPad is a portable consumption device.

You can already picture the next “I’m a Mac” parody that compares an iPad against a Windows 8 tablet... It's like comparing apples and oranges (or Apple and Microsoft).

Metro vs. Classic

A Windows 8 tablet is a tablet with no restrictions. Sure, the Metro start screen has restrictive requirements to maximize the portable experience, but you can always switch to classic Windows and do anything you want.

Is switching between “metro” and “classic” a jarring experience? Yes. Is relaxing on the couch then sitting up to go to work a jarring experience? You betcha. I would love for Microsoft, Apple, Google, or whoever to show me a smooth transition between a finger-friendly portable experience and a tool-heavy business experience.  Granted, Microsoft’s approach is far from perfect, but it feels good enough (for now).

Fast and Fluid

The presenters used the terms “fast and fluid” quite a bit. They made a major point of how all metro apps will be hardware accelerated, heavily governed for battery usage, and work within their gesture paradigms. This is what a tablet experience has to be. Apple nailed “fast and fliud” with the iPad/Phone the first time around, but Microsoft being able to put a fast and fluid experience as a layer on top of a full blown OS feels like a significant achievement.

Contracts and Charms

From a developer standpoint, this contracts and charms are darn cool. The general idea is this: You declare your app as a “share source”, so you pull up the “share charm” and Windows 8 will automatically share whatever your sharing (images, text, audio, etc) with any other app that declared “target share” interface (this should make any experienced developer a little warm and fuzzy on the inside). For example, if you build a photo app and you want to share photo on twitter, your photo app says, “I have a photo I want to share” then the user can pick twitter as the “target” and twitter does the rest of the work for you.

Taking the idea a step further, the “device” charms allows you to make a contract between your Windows 8 machine and any other piece of hardware (share charm = software contracts, device charm = hardware contracts). For example, if your app play audio, you pick the “device charm” and the device simply plays back the audio. The same connections work for any other output/input your apps would handle (printing, game controllers, htpc, etc).

The major downside is that this puts a burden on the user to “connect the dots” by understanding charms. The major upside is the incredible amount of flexibility this would allow. While Apple’s best interests are looking everything in the Apple ecosystem, Microsoft has to support has many vendors as possible. The burden is now on the vendors to make hardware more desirable than Apple’s current systems to have any chance of winning people who chose Apple for their latest machines (Good luck with that!).

“All In” and Promises

The presenters at Build were obviously coached to try to reassure developers that Windows 8 will be a platform where developers can make money. I kept hearing, “I promise this”, and “we’re ‘all in’ on that” throughout the sessions. For example, Windows 8 is “all in” on DirectX. What “all in” really means is that Microsoft is providing the necessary APIs through the WinRT (Windows Runtime) to allow you to make the smoothest apps possible and in return helping with the user experience. Another example, Windows is “all in” with h.264/.mp4. Again, that Windows is providing the best apis for .mp4 and it’s up to you to use them to keep that experience pristine.

Personally, I’m perfectly happy to code against Microsoft’s standard apis and leverage all the performance boosts they can give me. Microsoft seems happy to do all the heavy lifting so I can focus on the buttery-smooth user experience.


Finally, Microsoft pitched the new Metro apps and the “Store” as an incredible developer opportunity. I have to agree with them.

Hundreds of millions of people have installed Windows 7. Any desktop, netbook, laptop, tablet, etc with Windows 7 can update to Windows 8. Many more sleek, sexy touch tablets will be coming out when Windows 8 launches. Regardless of whether or not they have touchscreens, they will have the “Store” installed on the homescreen when they first boot up and there’s a pretty decent chance that an user will click on app called “Store” and start browsing for a cheeky little app to spend their 99 cents on. I'll let you do the math...

Monday, September 12, 2011

Intro to the QuickJump plugin

I'm proud to announce the release of my newest plugin: QuickJump! This should work with any JetBrains product (Intellij, WebStorm, PhpStorm, etc).

Hope you like it :)

Thursday, August 18, 2011

Lua: Metatable Tutorial

This tutorial is a video introduction on how to use metatables in Lua.

Monday, August 08, 2011

Launch Corona Simulator from IntelliJ

Watch this video to learn how to launch that script from IntelliJ using a keyboard shortcut.

Download this script and save it anywhere (I saved mine as "CoronaLauncher.vbs"). You'll reference it from the external tools in IntelliJ.

Mac: (If you get this working, please post in the comments if there's any tricks you need to do)
Link to the AppleScript code used in the TextMate bundle:

Here's a screenshot of the External Tools setup:

Wednesday, May 18, 2011

PatternCraft - Builder Pattern

This PatternCraft tutorial explores the Builder Pattern in the context of building out maps in Starcraft: