Flash penetration statistics updated, and some context

Adobe has finally updated their Flash Player Version Penetration statistics page with details for December 2008, and things are looking good. Just how good? Well, basically, Flash 10 has enjoyed the fastest adoption rate of Flash since it has been introduced, having now a 55.9% penetration on mature markets roughly two months after it has been released.

Flash adoption rate, December 2008

I’m actually quite surprised that my own prediction of 90% penetration in 6 months for Flash 10 – previously it would take one year for Flash to reach that mark – seems more realistic now. That, coupled with other recently announced numbers like 100 million Adobe AIR installations and a reported 80% market share on online videos, make the future look pretty bright for the Flash platform.

And let’s not forget the fact that, even with current penetration numbers aside, the adoption rate of a certain competing technology is vastly inferior to Flash’s (click on “Line” to see how each different version of each platform has been performing, then compare Flash 10 and SilverLight 2); while SilverLight is obviously gaining some penetration, it seems sponsoring certain exclusive online video offerings isn’t doing as much to the platform as one would think it would.

Finally, strangely enough, Flash Player 9.0.115 (the first to include h.264 video support and some other features like hardware scaling of fullscreen content) is not featured on the official penetration statistics anymore, and even the old numbers have been removed from the tables. I guess that’ll become irrelevant pretty fast – it already was at 90% on september – but historically, it’d make sense to still list them there.

Notes: the above graphic was created with data gathered from past updates of the Flash penetration statistics pages. You can access the full data set here (or click the image) – it also includes a chronological graphic. Some version lines start with a penetration rate higher than 0% at month 0 because it has been released the same month the statistical data was gathered. Due to this, consider some error margin translation of around 15 days (left or right) for each line.

FlashTerm, a Telnet client in ActionScript

FlashTerm, Peter Nitsch’s ActionScript Telnet client, has just gone live. It works with a sample BBS, and it’s a great example of what’s possible with AS3ANSI, his AS3-based ANSI parsing library. Read Peter’s blog for more information.

Attending Campus Party

This week I’ll be working from Campus Party, so for the curious, I’ll be doing small twitter updates (mostly in Brazilian Portuguese) from there. I won’t do any kind of live coverage or public reporting or anything, since I’ll be there mostly to see friends (in the Games area) though, but if anyone else is also attending: see you there.

The end of the end

When I went back to college, 4 years ago, most of my peers thought the decision was commendable but kind of crazy – I had already been working for 11 years in the interface development field, and people who hired me couldn’t care less if I had a degree or not; not that it wouldn’t be a good thing to have, but that my experience with the technologies used more than made up for it. When I told people I was going to college, their response wasn’t “Nice!” or “Congratulations!”, but “Why?”.

At this point it may sound like I’m going to say “they thought wrong!”. Not really. They were right, it was a bit crazy to do it.

Still, going to college and successfully getting a degree was something I’ve always wanted to do, and I guess that desire was heightened by the fact that I never had the resources – both money and time – to do it, and when I finally managed to save enough money and make a flexible schedule possible for me, I embraced it and went to get a bachelor in Digital Interface Design.

I started without a lot of expectations; maybe gathering some theoretical knowledge, getting a diploma at the end, and having the confidence that I could stand something for a long time if I focused myself on it (I had started college before, but stopped halfway through it).

What I ended up with was so much more, however.

What was interesting, I guess, is having different lines of thought, or different situations, to put yourself into. My work is highly technical, and I like to believe I do my work well, but once I was in college, I had to put myself into tasks that weren’t really the tasks I was used to, like research and analysis of knowledge not directly related to my work. I went there sort of expecting to know it all, but was taken aback by the amount of interesting new stuff I had to deal with – even if they weren’t exactly new.

That also included technologies that aren’t, again, directly related to my work – if I hadn’t gone to college, I probably wouldn’t have yet learned of Max/MSP/Jitter and vvvv, and wouldn’t be hypnotized by the easiness with which their visual programming approach allows anyone to create rich interactive graphics. It’s no surprise I was so inspired by those programs that I even built a similar environment for my thesis project, and that alone would be reason enough to say that going to college was worth it.

And in the sense of doing different stuff, going to college also gave me the chance to go and teach some classes (Flash, Flash Lite, and Processing), something I was quite sure I would never do in my life. As all the rest, it was an amazing learning experience and something I’ll hopefully repeat in the feature.

And there were the people.

Now,  I don’t consider myself a recluse in any way. I like to believe I work well with groups of people, both in the workplace or otherwise. But going back to college was a kind of a surreal experience. My colleagues were on average 10 years younger than me, something that may not sound like a lot but that makes a huge difference when you’re talking about people still on their teenage years, so we had some differences to work with; I had to refrain myself from not saying “in my time…” too often, as some of the differences were enormous – no Internet when I was a kid! Phone lines were a lot more expensive! No cellphones or digital cameras! – but still, dealing with them, and watching them grow as people, was nothing short of extraordinary. I’ve seen people complaining that young people nowadays have everything at their feet but still are lazy as fuck, and I’ve done my share of bitching, but in all honesty, comparing some of my fellow students with the mindset I had when I was their age, they’re far ahead and bound for a bright future. Working with them was nothing short of a lesson about people and even about myself; I believe I’m a much person now than I was 4 years ago. I miss them already.

Truth is, going back to college so late for me was a bless in disguise. Going there with a lot of practical knowledge, even if with a lot more still left to learn, gave me the ability to understand so much better what teachers had to say. It was often that I would leave class with the perception that I had realized something extremely important about the world, or something that I had to read a lot more about; and yet, not all of my colleagues shared the same feeling. Not because they were stupid in any way, but because many times they lacked the contextual knowledge needed to properly understand what was being said.

I’ve always been of the opinion that going to college isn’t something of ultimate importance (that’s a sort of a big discussion around here) and, in some ways, I’m still like that; you can learn a lot, specially gather a lot more practical skills, doing real work instead of sitting somewhere with someone babbling over your ears, and I certainly would never have a problem hiring someone without a college degree. However, going to college at some point in time is something I now see as extremely positive, and something I strongly recommend to anyone – but only if you allow yourself to bask in its mind-shifting soup. It’s too easy to just go there and get a grade that’s good enough to carry you on to the next semester, I suppose, but then you’ll be going there just for a diploma.

With that stage bittersweetly out of the way, I can finally move on. That’s not to say I’ll be allowed to slack so soon – as I mentioned earlier, I’m working for Firstborn, and now that college obligations are over, I’ll be moving to NY to work with them. This means I have to spend holidays writing documents for the visa process – which is cool, though, as they’ve always been specially patient with me, and I’m really glad of the work I’ve done for them for the past year or so. So, thanks Francis, Dan, Michael, Luba, Avery, Wes, Will, Izaías, Joon, Jennifer, Maria, Ryan, Eric, Lauren, Takahashi, and Max, and everybody else, Firstborners and former Firstborners; it’s over now, and I’ll hopefully see you guys soon.

Also, while I’m at it, many thanks to the fine people at Grafikonstruct and Gringo, as this college plan wouldn’t have been possible (or would have been a lot more difficult) without their partnership and support.

Gringo.nu is also looking for senior Flash developers

Looking for a change of pace, living in one the craziest cities in the world with some extremely creative people who drink a lot and like to swear like drunk scotsmen? Or maybe you already fit into that description and you’re just waiting for the authorization to enter the building? Here’s your chance, Gringo is now looking for a senior Flash/Actionscript developer and they mention relocation is OK. Find more information about the ideal candidate here.

Gringo.nu is looking for a SilverLight developer

Top-level Brazilian agency Gringo is looking for a SilverLight developer. Gringo is located in São Paulo, Brazil, and this is for an on-site role. Details follow (in Brazilian Portuguese).

Enfim, a Gringo precisa de um profissional SilverLight pra se juntar à sua equipe supercompetente de desenvolvedores. O candidato ideal irá trampar a princípio de agora até março na Gringo, desenvolvendo um projeto bem bacana. Valores são negociáveis, e é imprescindível que o profissional cumpra prazos e toque o projeto sem maiores surpresas.

Quem estiver interessado, favor contactar Mylena Mandolesi no email mylena (arroba) gringo.nu.

Acho que não preciso nem falar nisso, mas a Gringo é uma agência que mais do que recomendo a qualquer um. Pra quem curte SilverLight, esta é uma puta oportunidade de trabalhar com uma equipe extremamente criativa e competente.

Upcoming talk: The work of ActionScript Developers in Brazil

For what’s it worth: I’ll be giving an (online) talk about ActionScript development in Brazil December 18 (next thursday), at 22hs local time, courtesy of the Adobe User Group for Rio Grande do Sul (AUGRS). This talk will be in Brazilian Portuguese only, and it’s aimed at people who want to know more about the Actionscript development field; I’ll be talking about my experience in the area, as well as how I see it working for other people. It’s not overly technical, but I’ll be talking a bit about the tools developers have available; it’s not overly personal, but I’ll be showing some of my work to illustrate my points and talking a bit about my experience to put things into context. Find more information about the event (including link to the presentation room) here.

The presentation will also be recorded and available later, as well as all material involved.

Update: the starting time has changed, and it’s now set as 22hs instead of 21hs. Sorry for that.

Update (2): the talk was recorded and is now available online. It lasts for around 1 hour for the main presentation, and another 45 minutes for questions. Thanks to everybody who attended! The turnout and the result was better than I expected.

Google Analytics does better Flash tracking

This is news to me: Google Analytics is updating their tracking features and adding better support for Flash tracking – it was possible before, but it’s just getting more native, as Google is even providing an AS3-based framework for that. Below’s the email that I’ve received through my Google Analytics admin account.

We are happy to let you know that the Event Tracking feature is now available in all profiles for the following Google Analytics Account ID: XXXXXX. Please note that you are receiving this email update because you are an ‘Admin’ or designated contact for the account listed above.

When you log in to these profiles, you will see a new set of reports called “Event Tracking” under the Content section. As posted on our blog, this is a limited release currently available only to select profiles.

Event Tracking allows you to track interactions with Web 2.0 style content such as Flash, AJAX, Silverlight, social networking apps, etc. We recently made tracking Adobe Flash even easier with the release of a new Flash Tracking client library. It allows for much simpler tracking of Flash content with drag and drop functionality and an open source framework.

To use Event Tracking, you will need to upgrade your site to use the new ga.js javascript. Detailed instructions on how to set up Event Tracking on your site are available on our CodeSite.

To find your ga.js code snippet, edit the settings for your profile and click the “Check Status” link on the upper right corner of the page. You can now track interactions beyond just pageviews.

Check the links above – it looks pretty awesome.

Ideas for Adobe Alchemy ports

As everybody knows by now, Adobe has made Alchemy – their C/C++ compiler for AVM2 (AS3-ish) SWF bytecode – available for download. We’ve seen highly visual demos, like Doom, and the old Quake 1 video where we got the first glimpse of what would become Alchemy. They’re very cool to show, and there’s some additional example libraries, but I guess Alchemy is ready for actual production uses of the technology; there’s not many such libraries shared yet.

Unfortunately I don’t have a long beard and I’ve never learned to be a proper C++ programmer, so the task of porting anything must fall on better hands. So, I’ll allow myself to post suggestions of a few libraries that I believe would make nice Alchemy ports in the hopes that someone more capable takes pity in our high-level, memory-managed struggle.

  • OpenCV is the standard free library used in Computer Vision projects – this means face, gesture, and motion recognition, as well as a lot more crazy skynet-like features. It’s normally used in platforms like Processing and vvvv. Having that available for Flash projects would be a real step forward.
  • Box2D is an open source 2D physics engine, largely responsible for the proliferation of physics-driven gameplay in amateur games. While we have Box2DFlashAS3 and other physics engines in Flash, having a straight port with better performance would revolutionize physics in Flash games.
  • ARToolKit is a library used for augmented reality – overlaying digital images into real world images. There’s also FLARToolKit now, but as with Box2D, a straight (if adapted) port would probably be nicer in terms of features and speed.

Honestly I have no idea of the portability for these projects; all I know is that they’re based on C/C++. However, they’re straight data processing libraries (maybe except for the rendering part of ARToolKit), so I think they wouldn’t be too limited by the player’s external capabilities and would make nice libraries to have available.

Why I love the ActionScript development community

I’m not very much of a radical, I believe, but I tend to judge development communities by the amount of negative or positive energy they seem to spread around. This is hard to put in objective terms, but as a positive example, I’d point to the PHP website – you have a fairly straightforward website and visiting the reference for each command will likely present you with hundreds of examples added by the community on how to use that command for all ranges of tasks. I’m not a professional PHP developer, but implementing features in PHP has always been super easy simply because of the community – the way they’re unattached to knowledge and unafraid to share it.

For me, the other side of the spectrum would be developing with Microsoft technologies. There are amazing exceptions like the XNA framework (which may be due to the nonexistence of a commercial exploration model until very recently), but overall finding answers or additional (free) libraries for certain problems using MS technologies has always been pretty difficult – for some reason, I always end up on forums and websites that require payment for solutions. There’s MSDN which is thankfully public, but I can’t forget how you had to actually buy the references in CD until some years ago, and I think that sort of approach influences how the community at large behaves.

So here I am, rushing to add Sound support to Fnk – the final version of the software for my thesis is due tomorrow. I manage to get FileReference (using the new Flash 10 capabilities which are now old hat in the whole project) to successfully load the data from a Sound file. Now I just want to play that. Simple, eh?

Not so fast. You can’t just feed Sound data to a Sound object – actually you can’t do that with any kind of “native” file that the player loads (to read a Bitmap, for example, I have to actually load the data as if it’s a Loader and .draw() it to a BitmapData).

But back to the point. I want to play sound from loaded sound data. A quick search on Google turns out this page, in which a guy talks about the very same issue and makes AS3 libraries for MP3 parsing freely available for download. Wonderful, I think. I mean, I’d love to implement it myself, or initiate an Adobe Make Some Byte Parsing campaign for a more native way to do it, but I’m in a hurry. So I quickly adapt it to my needs and 5 minutes later, Fnk is happily loading and playing MP3 data.

Then I compile an AIR 1.5 version of the app and it doesn’t work. Apparently it thinks I’m trying to load executable data and prevents the MP3 parsing classes from loading at all, throwing a security exception when the library tries to parse it.

It turns out a quick search on Google gives me this page where someone else tell what’s it all about and how to solve it. Bam, I patch my version of the libraries and I have it working 100% on both the Plugin and the AIR version of my software.

The ActionScript community may not have a central point of community knowledge like the PHP community does. But it’s amazing the amount of helpful folks and blog posts we can find when doing a Google search. This issue I had isn’t even something old and established – it relates to a very recent issue of a very recent feature. That there were people on it so fast and posting the solutions online amazes me to no end. Flash development may be something frowned upon by some of the most fervent free software advocates, but for some reason the community has managed to retain the ethos of a group where knowledge must be free and shared among everybody. I don’t know why that is, but it’s awesome.

Keith Peters said something similar (via Mike Chambers) a while ago and it got me thinking. It’s something I hadn’t realized at first, maybe because I already take that for granted. But the above experience I had just now was a wonderful realization of the impact of that all. I was thinking I’d need to implement my own MP3 parser, something that would probably be fun but take a while, or wait for Adobe to implement the data loading capabilities to this and maybe a dozen other classes… either way, I wouldn’t have that ready for my thesis. I read all kinds of ActionScript feeds daily, and I had seen no mention of that issue until then, so I really thought I was out of luck and ready to shove the standalone version aside and worry about it later; solving something so specific in less than half an hour was the kind of glad surprise I don’t always get.

So, thanks.