About Kevin Newman

I'm the lead developer at adcSTUDIO located in Kingston NY (in Livingston Manor NY before that). I do all kinds of things there, from robust server side work to the much more enjoyable client side development in HTML/JavaScript/Flash (RIAs, HTML5, etc.) and all the other tech-buzz-phrases of the moment. My brother came up with the idea for unFocus.com which was originally meant be a place to discuss and blog about whatever topics we both found interesting, from politics to technology, to art and design. Time was scarce, and I need a place to host History Keeper, and unFocus Projects - a sub focus of unfocus.com was born, and eventually migrated to the font page. Oh, and I'm on Twitter (@Touvan) and Google+.

unFocus.History Keeper 2.0 (and SwfHTML) Beta 4 – Out Now!

A brand spanking new Beta 4 of unFocus.History Keeper is out, and ready for download! Download it from Google Code. (If you are wondering what happened to Beta 3 – I actually rolled that update about half way, and had it sitting in SVN for a while, but I never made the archive, or release notification.)

Sloppy change log:

- Fixed Flash Player 10 PlugIn detection.
- Changed license to MIT
- Quick and dirty temp IE8 support (makes IE8 use the timer method).
- removed ObjectPatentMagic
- added Packed library files for Beta 4 (says RC1 in SVN, but I changed my mind, there’s more I’d like to add).
- Added svn:keywords to most files.
- Updated tests for EventManager, FlashPlayerInfo, HistoryKeeper, SwfHTML and SwfShim.
- removed WebTV code, since the entire FlashPlayerInfo script doesn’t work in WebTV anyway.
- Fixed Issue 5. Added methods for major, minor and bugfix versions, to reflect changes to the convention in Flash Player 10 – Also cleaned up issues releated to the changes in IE.
- Added getUpdateVersion for the special case Flash Player 9 updates.
- Quick fix for shimMode on SwfShim.
- Fixes IE support.
- Adds shimMode property (it’s off by default).
- Fixed typo in call to get initial hash value (deep link), which broke it.
- Updates to the HistoryKeeper Actionscript 3.0 files. These changes are generally significant.
- Added asdocs comments (to AS3 files).
- Added support for Opera’s history.navigationMode.
- Made IE8 Hack detection more robust, and IE detectin simpler.
- Initial commit of Actionscript HistoryKeeper and AS3->JS communication framework (really just an easier replacement for fscommand). All of this is pretty rough – vomit draft material.
- Some smaller code comment and formatting cleanups.
- removed problematic _createAnchor functionality. (Issue 6)
- updated IE version detect to be compatible with multi-digit versions.
- Reworked Error messages so that they make sense in FireBug and other Javascript consoles. Fixes Issue #3
- Added direct and gpu WMode values.
- Made value checking case insensitive.
- Added SVN keywords Revision and Date, and added text/javascript mime-type.
- Fixed SwfShim.

Enjoy! :-)

Fork me on GitHub

unFocus.Games – Tetris clone

I made a promise on someone else’s blog to post the code for the Tetris clone I made a while back, probably in fatigue induced delirium, a little bit ago, so here it is in a new Google Code project called unFocus.Games. The post on bit-101 post was about game architecture. While developing the code for the clone, I did play with concepts around architecture quite a bit. I also played with learning about Flash 10 features – adding PixelBender filters, and even having an Ogg Vorbis based soundtrack for a while (tried both the HaXe decoder, and the Alchemy decoder). I took them both out for now though, as well as some of the more unorthodox uses of Actionscript 3.0 I had in there – I was experimenting, and besides, Flash CS4′s compiler is a bit more finicky than Flash CS3′s was. One of these days I’ll get around to blogging about some of that stuff.

The Tetris game has an event driven engine under the graphics. I wanted it to feel close to the old NES and GameBoy version of the game I remember as a kid, and didn’t want the animation stuff to get in the way of that. The text version of the game in the demo I posted is almost a raw dump of the engine data. The field is a 2D array of 1s and 0s (looking to learn bit shifting and similar concepts at some point, by converting that to a ByteArray of ints). I also did the pieces (tetrads) as 2D array representations of bitmaps at one point, but didn’t feel like working out the rotation math, so I ported a pre-calculated coordinate version of the tetrads from an old Actionscript 1.0 version of a basic tetris game I once wrote.

Quick note about the code – I used TweenLite to do some of the quick animations, but I did not include that in the repository. You’ll need to grab a copy of that yourself, and add it to your class path to compile the source code as it is. At some point I plan to remove that either entirely or replace it with Tweener (because of the licensing).

In regards to game architecture, I don’t know if it follows any particular pattern (MVC seems to be quite popular these days – can’t talk about software design without hearing of that). Anyway, the code is probably far from efficient, as that hasn’t necessarily been a goal as I wrote it, and it’s far from finished, but there are some fun bits in there. Feel free to take a look, and share any thoughts. :-)

unFocus.FlashPlayerInfo update for Player 10

Adobe has updated their versioning system for Flash Player. This welcome change, creates a few backward compatibility problems with FlashPlayerInfo though, since the terms I applied to each version decimal place, do not match Adobe’s new terms (they are off by one place-ish, sorta).

To address these changes I added a new set of methods to check for the new “major”, “minor” and “bugfix” version numbers, for Flash Player 10+. The old methods will return the same data it does now (Version.MajorRevision.MinorRevision.BetaVersion). The new methods will not work for older Player versions of Flash Player (or at least won’t make sense), returning the data from the new format instead (MajorVersion.MinorVersion.BugfixVersion.build). In older players, getBugfixVersion would refer to “r” or third decimal place version number, which is what you used to look for when trying to detect something like r115. For older players you should continue to use the older getMinorRevision method. There should be no need to update your current detection routines, unless you need to target this new information. One change worth noting, will hopefully not be noticed – getVersion now returns both of MajorVersion and MinorVersion as a JavaScript Number, so that you can check against dot releases (getVersion() > 10.1). This should not affect backward compatibility.

In addition, for Flash Player 9, Adobe released 3 feature or compatibility breaking security updates with strange version names (update 3 was r115 for example, and was significant, adding H.264 and AAC support to the player). So for the special case of Player 9, I added getUpdateVersion. Since Player 9 was the only version to get the odd update versions, this really only applies to that version.

These changes also means that some of the old properties are probably useless in Player version 10+, such as the beta flags and beta version numbers, and getReleaseCode in IE. I used to infer that information from the 4th decimal place, which used to always be 0 except in beta and pre-release builds (based on my observation). In the new version number convention that 4th place is just a build number.

Here are the new methods:

unFocus.FlashPlayerInfo.getMajorVersion();
unFocus.FlashPlayerInfo.getMinorVersion();
unFocus.FlashPlayerInfo.getBugfixVersion();
unFocus.FlashPlayerInfo.getBuildNumber();

The updated script is in SVN, and will be in the next release.

SwfHTML will probably get a similar update as well.

AS3 unFocus.HistoryKeeper in SVN trunk

I added an initial round of AS3 files to the SVN trunk to make HistoryKeeper more accessible from Actionscript 3.0. If you are feeling adventurous, feel free to check it out of the trunk, and give it a try.

There is also a small resurrected Actionscript to Javascript communicator (eh, it’s totally new actually, but I got to use old knowledge!). The theory is that if you use fscommand to send simple strings to Javascript, you save on Flash setting up a lock to wait for a Javascript call to return a value or finish executing, which should conceivably avoid a short hiccup in the Flash Player. I’m not sure if there’s a real world benefit or not yet – one day I might get around to testing to make sure. At the very least, this framework will make it easier to setup fscommand, since it takes care of creating the javascript snippet for you. After that, it will simply eval whatever you put in the command argument (unless it’s a simple function on window, then it’ll just execute that).

Any comments are welcome. Please note, these classes may change quite a bit, they’re not to be considered stable (though the API probably is, there’s not much there really).