It’s 2019 and so much has changed in both my professional and personal life in terms of what I am doing, working on, enjoying, etc. This site feels so dated as to be comical, lack of updates, crufty old CSS and JS libs under this template I made for this thing 8 years ago in 2008. My bio is out of date, my publications, services and community sections are way out of date, and my portfolio hasn’t been updated since 2013! I feel its probably time to archive this and start fresh and modern. One thing I am definitely going to do is bump up the default point size in all my CSS to accommodate the slow downward spiral of my faltering eye-sight! Anybody remember pixel-fonts?

Until the archive and refresh happens, how about a quick update on some basics on my professional life from the past 7 tears as a start? Probably a good place as any to start.

A quick aside – you may be able to tell from going back through old entries on my site/blog – all the way back to the oldest entry from July of 2001 (when I started making entries in a custom system I developed that had a Flash front end) – I used to focus just primarily on tech related to my work and Macromedia/Adobe Flash related tech (which was a huge focus for me – thanks Flash – you paid the bills!) – along with a healthy dose of my personal and professional projects for self-promotion and to help push my career forward and garner work. It’s been nearly 10 years since I updated this site with any real regularity. In that time, I’ve changed, my family and friends have changed, my kids are teenagers, social media has changed, world politics have changed, tech is always changing, the universe is in a constant state of entropy – its the law! All this change, so I think I’ll be switching gears and changing the diversity of my content too. I don’t have the same desire or need for the same level of self promotion now, and I’d rather share more of my broad interests and hobbies. Sounds like a plan – but lets get the employment stuff out of the way to make room for the fun stuff.

Back to 2013, I was with PointRoll (great fun place, cool people) for a few years, PointRoll, sadly, was acquired by Sizmek in November of 2015. I watched a lot of great people get laid off – which was terrible – I stayed on through June of 2016 – which was “REDACTED“. I had been planning on taking some time off, but that was short lived, as a slew of exciting opportunities literally fell into my lap. A couple would have involved insane commutes, or me moving across the country to California or Washington, but I wasn’t ready at the time to uproot my kids and family, for a variety of reasons.

Luckily something perfect came along in my own backyard – an offer to join Scala Inc. a big player in the digital signage space (not the JAVA language variant) located not far from me in Malvern, PA. Scala has an interesting history/timeline – and some of it is documented. They’ve been around for over 30 years, and many of the core developers, including several still with us, came from various teams at Commodore (Amiga OS and others) since the old Commodore headquarters were nearby in West Chester (and where QVC now operates) and the original incarnations of some of Scala’s offerings were for the Amiga platform.

I joined in September of 2016, right as they were being acquired by Stratacache (which has turned out wonderfully) and as a former colleague of mine was taking over as COO of Scala. I jumped at the opportunity and dove in headfirst. I’ve been cranking away there for a little over two and a half years now and I am really enjoying it – time is flying by very quickly. I get to use all my past expertise and experience in interactive software development, design, art, immersive experiences, product development and programming on all kinds of interesting projects. Plus I get to do it all with some of the most awesome people and teams all over the world (including former colleagues and friends we have recruited to also come onboard) under the ever-expanding Stratacache umbrella. In fact I’m heading to Las Vegas tomorrow to help man the Stratacache booth at DSE 2019 – we have a ton going on there. I’ll be speaking in our Emerging Tech Theater and demonstrating some really cool collaborative VR projects we have been working at Scala and Stratacache – including some work I have been heading up in partnership with NVIDIA where we are leveraging their Holodeck Technology for some amazing photorealistic collaborative design in VR. If you are in Vegas stop by!

That is probably enough for now. So much has changed in my personal life too – but that will have to wait for another time and a site wide refresh. 🙂

Comments Off on 2019 – Maybe I’ll Get Around To An Update This Year

Wow – it’s already well into 2016. To say I have been a busy for the past 3 years is an understatement. I’ll keep this entry short and sweet. I expect to archive this aging iteration of the site at some point in the first half of 2016 and move on to the next. So many changes in my life, technology, etc., that have occurred during the past 3 years. I would like the site to reflect as much of those changes as possible. I’ve got a lot of work to do!

This was probably around the 6th or 7th major iteration of the site to go live since I registered the domain back in the late 90’s (back when you registered domains by faxing a form to InterNIC). I hope to make the next iteration a bit more interesting – stay tuned!

Comments Off on Time for Change – 2016 and Beyond!

After nearly nine years of freelance and working as an independent software developer, tomorrow I start a new chapter in my career. I am joining the Digital Innovation team at Pointroll as a Senior Creative Technologist. pointroll_logo I am super excited about the job, the team I’ll be working with, the new challenges and projects I’ll face, and all the changes to my life that taking this position will entail.

I want to thank all of my fantastic friends and clients who over the years have provided some incredible opportunities and projects to work on. I wouldn’t have been able to support my wife and children for so long and so well, had I not been lucky enough to have such wonderful clients to collaborate with on so many cool projects – thank you all for a such a fantastic streak!

I plan on a follow up post once I settle in, describing more about what I’ll be doing – hang tight 🙂

Comments Off on Big Change: Joining Pointroll

I started a personal project last summer called AVR Remote. It is an Adobe AIR based application that works on iOS/Android and Desktop for Mac and PC. It allows, via WiFi or wired Ethernet full control over the vast array of features of Onkyo and Integra AVR’s (Audio Video Receivers, like you would find in a home theater) from their late 2010 models onwards. You might consider it similar to a Logitech Harmony or really nice remote control, but with a deeper feature set and over WiFi, so no line of site issues. I haven’t had the time to dedicate to it like I had originally wanted to, in order to flesh it out further and add all the various features, but the core communications and basics come together pretty quickly. So, I planned to open source it last fall and was going to release it at Adobe MAX, but I just never got around to cleaning it up and removing some dependencies that would have made it problematic to open source. I finally took a few minutes and got everything straightened out last week and released under the MIT license here on Github: Please feel free to fork it and log issues or contribute. The README in the repo explains a bit more about the background, and current status. I also included in the repo a small video of the iOS version running, as well as a link to a larger video on my site that demonstrates it functioning with my Onkyo AVR and home theater.

The model I happen to have is an Onkyo HT-RC270 and I really like it. I have owned Onkyo receivers and equipment before, and pretty much all their receivers built after middle to late 2010 all have ethernet capabilities built in. There were only some very basic apps out for a while when they first arrived, but quickly third parties put out some great apps, especially for Apple iOS devices. Onkyo put out there own for iOS, the first version wasn’t so great, but the new version 2 available for iOs and Android, is much nicer. My favorite, is a third party app oRemote, the iPad version in particular is really nice. The availability of these apps also put a little damper on my enthusiasm to complete the project, but I got it to a point where it does all the basics I needed. One of my goals was to have something my wife could use that was very simple and just allowed her to switch all the various input sources and volume controls – the basic essentials, something easy enough that even the kids could navigate. Compared to the remote that it comes with, the app is very simple, but accomplished that goal, and is stubbed out to handle all the other features with some further development. I also feel there is value in a dedicated desktop app – all the apps I have seen focus on mobile apps. However, I work from home, and use it all the time, and using it right from my desktop is really handy. Since it’s all done over WiFi and the Onkyo devices support more than one Zone of active speakers, finishing up a desktop version still has some appeal and usefulness.

I started this project just before Adobe released Native Extensions for Adobe AIR and so I had planned to use that for a portion of the project as well. Adobe AIR for mobile does not currently support UDP sockets, nor does it support broadcast addresses over UDP or TCP, on either mobile or desktop. That is unfortunate as those two features would allow for UPnP style device detection automatically. Right now the app requires a manual input of the IP address, but a Native Extension for AIR to handle the UDP sockets and broadcast address functionality would give it the full capabilities to do the UPnP style auto-discovery of the device. I think this would be a valuable Native Extension that could be used for other projects as well. Something I may spend some more time on – and if anyone is interested in collaborating, feel free to drop me a note.

Comments Off on Onkyo and Integra AVR Remote Control App for iOS Android/Desktop via Adobe AIR – Free Source Code

jPlayer Fork with RTMP Support

Image of author: Robert M. Hall

Posted on February 3, 2012 by:
in Flash

There has been a lot of change in the interactive landscape the last couple of years. Like many of my colleagues and developers in general, I have been branching out further, working with a lot of other technologies, tools and frameworks on my own and for client work. This past year I’ve done quite a bit more JavaScript and jQuery related projects. Many of them involving augmentation and integration of Flash for HTML5 related fallback, during what has proved to be a real transitional period for Flash and HTML5 delivered media. In late 2011, I helped out one of my clients, by customizing and forking the popular jPlayer project:  jPlayer is a popular JavaScript library used to deliver audio and video with a focus on HTML5 delivery and fallback to Flash, or vice versa. It leverages jQuery extensively, hence the name. Pandora’s recent relaunch of their site, is one high profile example of its usage, and there are many more in the Google Groups Discussion List for jPlayer.  According to BuiltWith, there are currently at least 3,740 sites using the library actively and it it ranks as one of the more popular libraries for the top million sites as well.

It’s is really rather useful, and very approachable even for someone unfamiliar with jQuery or just basic knowledge of JavaScript. One of the nicer aspects of it, is that even when using Flash for delivery, the entire UI and controls are all still done in HTML and CSS and controlled via JavaScript and communicate with Flash via ExternalInterface. This makes it very flexible in terms of layout, skinning and branding. This happened to match perfectly with what my client was trying to do, so it was a great fit. Unfortunately it only supported HTTP progressive delivery of content in Flash and there was no support for Adobe’s RTMP for for streaming audio and video sources. So that is what my fork encompasses, adding support for RTMP audio and video sources. The fork I put together can be found here:  and includes some of the more expected things from RTMP, such as multi port/protocol negotiation, re-use of connections, and some other standard stuff. No multi-bitrate support or advanced QoS metrics, but that is on the drawing board/Todo list. I actually got word just the other day, that at some point soon my additions and changes will be incorporated into the main repository. That will nice as others may poke and prod at it to improve it beyond what I have done. If you are interested in learning more, read the README and RTMP_NOTES files located in my fork. I also welcome any improvements, suggestions, etc. – feel free to open any issues and make note right in the github repo.

If you would like to see the end results of the changes in action for my client, check out Daytrotter –

I’ve been working with several other audio and video frameworks the past few months, and plan to write up some of my experiences about them all and possibly do a bit of comparison of each. With the current state of HTML5 support for audio and video being still fairly fragmented across browsers, and so many different libraries and approaches for tacking this, I’ve found that depending on the needs of the project, some libraries and approaches have real benefits over others. I’ve also been working on some custom/hybris solutions and hope to be able to share some of that work here soon also.

Comments Off on jPlayer Fork with RTMP Support

Adobe MAX 2011 kicks off in Los Angeles in just under 2 weeks. There are sure to be plenty of additional interesting, exciting and cool announcements coming from Adobe at MAX, but we already have quite a number of things happening and being announced now. Here is a quick roundup of some recent announcements:

More to come, especially once MAX is fully underway. Also, we will be having a local Philly MAX recap meeting in the week or two after MAX, more info here: Adobe MAX 2011 and Local Recap Meeting in October

Comments Off on You Know Adobe MAX 2011 is Near – Goodies Start to Arrive

If you have done any work with Flash, AIR and compiling for iOS devices (iPhone, iPad, etc) then you know that due to the AOT (Ahead Of Time) compilation, it can take a minute or more just to compile your application to an .ipa file. This can take up a lot of time during development. Adobe has been working on improving the workflow for mobile and with the introduction of AIR 2.7, they added a new -target option for ADT via the command line called “ipa-test-interpreter” mode. This produces a special .ipa file that instead of leveraging LLVM to do the AOT compilation, it simply packages up your .SWF as is, and the .ipa includes a runtime interpreter instead. This is much more like the way the AIR works on Android or on the desktop. In this case, its designed to reduce compilation time for development and testing only, its not for producing ad-hoc builds you would want to distribute to others, or your final deployment build. It is a bit slower in performance, but for testing and development, the time saved in compiling is totally worth it. It drops the compilation time down to almost zero, as it is compiling your .SWF as normal, and then marrying it up into a templated .IPA with the interpreter, as opposed to all the overhead of the normal AOT process. From the AIR documentation on this feature:

“ipa-test-interpreter — functionally equivalent to a test package, but compiles more quickly. However, the ActionScript bytecode is interpreted and not translated to machine code. As a result, code execution is slower in an interpreter package.”

Now you may be thinking great that is awesome, I’m going to start using it, where is it. Well the rub is that currently, it can only be used when invoking adt.jar from the command line to compile your .SWF file to an AIR based .ipa. There is no GUI option for it in Flash CS 5.5 yet. This is not a problem for a lot of folks using ANT, or Flash Builder, or those comfortable with the command line. However, if you are using Flash Professional CS 5.5, then given the lack of any GUI based control over this, you would have to publish your .swf file, switch to a terminal prompt or run some other script in order to invoke adt.jar with the proper -target option. If you’ve ever done development for iOS and know how many clicks are already involved in getting a new .ipa onto a device even when using Xcode or the iPhone Configuration Utility instead of iTunes to take some shortcuts, its still a lot of manual operations, add in switching out of Flash and invoking adt.jar manually, and it is way too much repetitive, annoying operations. A lazy developer is the best developer – be a lazy developer and make a tool to help you be even lazier.

I hate all that extra clicking around as much as the next guy, being a lazy developer, I decided there has to be a way to make this easier. Surely at some point Adobe will enhance Flash CS 5.5 to leverage this new feature directly in the IDE, but I wanted it now. So last night I put together a custom solution that replaces the AIR adt.jar with a shim adt.jar based on a teeny-tiny java class I hacked together, that accepts the arguments from Flash CS 5.5, adjusts the -target option to ipa-test-interpreter, and along with a custom Automator Workflow (containing some shell script, and Applescript) – decouples the process and allows you to publish your .ipa with this new fast interpreted mode. It even includes some nice Growl based notifications, opens the folder where the .ipa is compiled and opens the iPhone Configuration Utility for you automatically so you can just drag and drop your .ipa and get on with testing. Not only solved the problem, but added some bonus functionality. Sweet huh?

A nice side effect is that you can easily retain the log of your adt.jar compilation arguments to use them to create template scripts of common adt.jar scripts you might re-use later. Granted this is a hack, albeit a nice one, but it does have a dependency on Apples Automator, so its currently Mac OS X only. For you Windows folks, you might look into possibly using a classloader to invoke the real adt.jar Main Class entry directly from mine to allow it to work on Windows (that a whole other can of worms) and avoid the dependency on Automator. This wouldn’t allow the other bells and whistles, but it might be workable.

You can see a video of the workflow in action here where I am publishing an app I am working on with this method/code.

Download the source code and binaries for everything (at your own peril, it is provided “as-is”), along with detailed instructions and notes here:

If anyone makes any nice improvements or additions, please drop me a note or post a comment here. Good luck and happy compiling!


Adobe AIR logoAdobe released Adobe AIR 2.7 this afternoon. It includes huge performance improvements for iOS devices, I’ve been working with it on several client applications recently, and it has allowed me to do things I simply wouldn’t have even tried with some previous versions of AIR for iOS, Adobe is really doing a great job improving the AIR runtime especially for mobile devices. In fact here is a link to an AIR 2.7 app I worked on as a contractor that just went live. The pending iOS release wouldn’t be possible without AIR 2.7.

Here is a recap of the top new features, and then a list of other good links discussing AIR 2.7 I’ve consolidated.


  • Enhanced rendering for iOS: AIR apps for iOS render up to 4x faster in CPU mode. This change will improve the performance of many AIR for iOS apps, including those built with the Flex framework. Watch the performance improvements
  • Video: Adobe AIR 2.7: Faster App Performance on iOS (Renaun Erickson, Adobe Flash Platform Evangelist, demonstrates faster AIR 2.7 app performance on iPad)
  • Faster development time for iOS applications: Developers can now debug and build iOS applications faster than with previous versions using a new mode available within the AIR Developer Tool (ADT). During the development of an application, developers can now choose to use “interpreter mode” to streamline the testing and debugging development cycle.
  • AIR installation on SD cards for Android devices: This feature allows end users to install or move the AIR runtime onto the SD cards within their Android devices so they can free up storage space on the phone.


  • Integrated support for Media Measurement: The Adobe AIR 2.7 runtime now includes the same built-in support for media measurement as Adobe Flash Player 10.3, allowing companies to simplify the collection of real-time, aggregated reporting data for how content is distributed and viewed by users. With direct support for Adobe SiteCatalyst, powered by Omniture, developers can implement video analytics for existing or legacy video players with as little as two lines of code. For additional information, see the article on measuring video consumption in Flash.
  • Acoustic echo cancellation: With integrated support for acoustic echo cancellation, developers can now add real-time VoIP capabilities to games, enterprise, and other types of applications without requiring users to wear a noise-canceling headset. Users can now chat using the speaker built into their desktop or laptop computer. This new capability is also available in Flash Player 10.3.
  • Navigation Improvements for HTML Content: Enables seamless weblink-style navigation within desktop apps such as magazine viewers and ebook readers. Developers can now respond to a new event to be notified when content within the HTMLLoader control attempts to change the location of a page. This enhancement provides developers with a better way to implement intra-application navigation.

For additional feature and release details please read the AIR 2.7 developer release notes.

Collected Links about AIR 2.7:

Get the AIR 2.7 Runtime
AIR 2.7 developer release notes
Get the AIR 2.7 SDK
Paul Trani covers the new features of AIR 2.7
Flash Player Runtime Blog discusses AIR 2.7
Flash Player Team announces AIR 2.7
Lee Brimelow covers AIR 2.7

UPDATE: 06/16 – More info and the future of AIR for Linux:

I’ve had a couple commenters ask about support for AIR 2.7 for Flash Builder and its been noted by many that, this month, Flash Builder 4.5 will get an update to enable support for AIR 2.7 and PlayBook will receive an update OTA of AIR 2.7 by the end of June. Also the 2.7 SDK is easy to install for Flash Professional CS 5.5 – its as simple as unzipping the SDK, and drop the folder into the Flash Professional CS 5.5 application folder and rename it “AIR2.6”. There are actually a few more steps to fully install – for the full list of steps visit this link.

I’ve added some thoughts, and links about the future of AIR for Linux that didn’t get as much coverage originally. Including a good read from Oliver Goldman that provides a broader view of what the teams have been doing with AIR and mobile the last few years and some good info from Dave McAllister on the logic behind some of their decision making. I’ve already seen plenty of articles and developers (both for and against AIR) publicly and privately crying foul about Linux as a second class citizen, and a loss of trust with Adobe now, lack of insight to their roadmap – the whole gamut of concerns about the decisions around AIR on Linux. I don’t see it as black and white as many other do. In fact, I think it will be a good thing, which I’ll explain in a moment. First though, I hate to see that important information about the decisions are not being highlighted in many of the articles I am seeing, like this article on fails to point out one of the biggest take aways from Dave’s article and Adobes FAQ on AIR on Linux, is that its not been 100% sidelined but that instead they have shifted their resources to providing OSP Partners (OSP is Adobe’s Open Screen Project), like Google, Intel, RIM, Nvidia, ARM, Nokia, HTC, Comcast, LG, Mips, Motorola, Cisco, etc. (full list here) a Linux porting kit for AIR (including source code), so that if they choose to do so, they can implement their own vetted and approved versions of AIR for PC’s, mobile devices, TV’s and TV-connected devices like set top boxes and other consumer devices. More info on the porting kit and announcement about the strategy can be found here.

I posted a comment to that effect in a few places, like at that Electronista article pointing out that info, as it seems like they left out a critical take away that would have made for a much more informative and complete article instead of what, when seeing that bit left out, makes the authors of the articles at the least, less informed and not very thorough in their reporting and merely regurgitating without any critical thought, to at the worst jumping on the bandwagon of Flash bashers simply for the sake of driving page counts. I especially feel it is an important take away and to paraphrase Dave McAllister and Mark Hopper, by shifting Adobes focus to the porting kit and support of partner implementations, Adobe expects to provide broader support for AIR across Linux-based PCs and devices, whereas their own desktop Linux releases have accounted for less than 0.5% of lifetime AIR downloads. A good look at what RIM and Adobe have done for the Blackberry Playbook and it support of Flash in the browser on the device and as one of its options for native applications (albeit for QNX and not Linux proper) should serve as a good idea for what kind of fruit this shift in focus could bear. Its also worth pointing out that back in the Macromedia days, this was a similar model to how Flash Lite and custom variants of Flash for whole device UI’s worked – OEMs would license the source and work with Macromedia and a some select partners to make their own custom implementations. Palm, Sony, Nokia, Samsung, Kodak and others come to mind. I feel that the big push we have seen and performance improvements in AIR for iOS, Android and the Playbook, combined with this shift we will actually see more Flash/AIR on Linux in the future as opposed to if Adobe has been the sole driver/enabler/maintainer going forward. This is just my opinion, but I’ve been watching Flash evolve for almost 15 years now, and I’ve seen things that have floundered and flopped, and directions that didn’t work, but I feel the decisions behind this one are sound, and that it will be for the best long term.

Here are some additional links about AIR and Linux:


The entire Adobe Creative Suite 5 family of applications was officially announced today. I am proud to say that I did my part to make sure that Flash Professional CS5 is a solid release. Congratulations to all the teams at Adobe, especially the Flash IDE, Flash Player, Flex Framework and Flash Builder teams. I can’t wait for everyone out there to get a chance to start using Flash Professional CS5 and Flash Player 10.1.


A quick preface to this entries core message about getting involved to help improve the quality of the next releases of the Adobe Flash Player 10.1 and AIR 2.0:

Adobe’s Flash Player has been getting a lot of press lately. Mainly in regards to HTML5, the Apple iPad (and its closed garden), performance on the Mac OS X platform, the changing face of mobile and other related discussions. The crux being Flash’s relevance and importance now and in the future. Posts and comments around the web have covered the entire spectrum, with everything from loquacious pontificating, to lugubriously laconic, to outrageously uninformed. They have all been quite polarizing in one direction or another. The biggest take away for me after absorbing everything for a week or two, has been the fact that the right people are listening and hear us and are also speaking up or acting. There have been several posts that I felt were especially well said and or align well with my own personal thoughts, so I wanted to highlight a few of them:

There are quite a number of other great posts around, and even more that I felt were just way off base or totally wrong – but for me again the biggest take away is that people are listening and acknowledging things that can be improved and putting their money where their mouth is and committing to certain actions and more transparency. Kevin’s promise to have the Flash Player teams publish some performance metrics for the various platforms, the transparency and insight that Emmy Huang Flash Player Product Manager blogged about and some plans to improve bug reporting process’s around the Flash Player – these are really great things that exemplify the level of commitment and care that Adobe places on its products and the community of developers and designers that use them.

So how can you get involved to improve things and shape the future and stability of Flash Player 10.1 and AIR 2.0? Get involved and install the latest betas and test them!

Download and install Flash Player 10.1 Beta 2 and AIR 2.0 Beta 2

Then test against your existing content and applications, surf the web and check out existing content and most important of all: Report any bugs or problems you find at – This is the critical step as engineering teams use bug reports to reproduce errors, and improve the overall quality and stability of the releases. You can also browse through existing bugs and ECR’s (requests for enhancements/new features) and vote for ones you determine to be important.

Flash Player 10.1 and AIR 2.0 are both at public beta 2 and available through with beta 3 releases a few weeks away and final candidates expected within 60 days. Now is the time to get involved and test and report any issues bugs you find.

There are public discussion forums you may also leverage: Flash Player 10.1 and Adobe AIR 2.0

Ted Patrick has a great post summarizing this effort, and another way you can help is to spread the word by tweeting directly about this: Improve Flash 10.1 & AIR 2.0 via Beta 2 READ & RT #Flash #AIR #QUALITY

Finally, its also worth noting that you can sign up to be considered for Adobe’s Prerelease teams to get further involved in beta testing their products via this link:

Comments Off on Help Improve Flash 10.1 and AIR 2.0 – Get Involved

This site is available for historical purposes, but is no longer actively updated.
Please visit in Q3 of 2024 for all the latest and greatest!