Monday, October 25, 2010

Your Daily Dose of Incredible: Great Paintings in 3D

"A new dimension in TV because the old stuff is rubbish". 'Nuff said.

Will we ever get tired of being amazed by advances in technology? Not any time soon. But really, who foresaw that 3D display technology would bring so much new life to the old masters?

Prepare to be blown away by a bulletstorm of awesomeness.

Hat tip to the ever-incredible Masayuki Kido.

Tuesday, October 19, 2010

Coming To AdobeMAX 2010 in LaLaLand

I will be attending Adobe MAX for the first time, this year. Needless to say, I'm very excited and grateful to my employer for sending me on their dime. I've registered for the most interesting sessions I can though my sense is that I'll be missing more than I'll be taking in. Hopefully they'll be recording all of the sessions so that I can catch up on what I missed later. One thing I won't miss will be the MAX Awards, since Leonard Nemoy (heard of him?) is presenting. The geeks will be swooning in ecstasy, no doubt.

To maximize the amount of information I can jam into my sleep-deprived brain, I intend to squeeze in as many 360Flex and FITC "Un-Conference" sessions as possible. Hopefully the rooms will be close enough together to skip quickly from one session to another so I can miss as little as possible.

Since I'll most likely be on my own most of the time, feel free to drop me a line so we can meet up. I'm getting there near noon on Sunday and will have most of the afternoon free. I'm flying back out on Thursday morning.

Hope to see you there!

Thursday, August 26, 2010

Got Tilde?

Since I've just re-designed my personal blog, I figured that I'd kick it off with a word on the Tilde Console.

I launched the Tilde Console open source Flex project back on June 18th and though I've done my best to spread the word and it's been mentioned on The Flex Show, I have yet to hear from a developer who is using it. I wouldn't say that it's disheartening, since Tilde is immensely useful to me personally, but I do think that people are missing out on an invaluable Flex development tool.

If you program in Flex, you should definitely check it out. Tilde is built primarily from highly-optimized PushButton Games engine code and is packed with powerful debugging tools including (but not limited to):

Developer Console
  • A versatile "tilde-activated" console similar to that found in many 3D games engines (e.g. Unreal, Source, etc.)
  • Provides tab-based command auto-completion, command history and built-in help
  • Powerful ability to register custom call-back commands at run-time. These are treated identically to the built-in commands.
  • Utility functions for serializing object information to the console
  • Integrated "Hi-ReS! Stats" from Mr.doob

Client-Side Trace Logging

  • Statements are logged to both the console and the Flash Player debugging trace.
  • Multiple logging-levels are supported and entries are color-coded by severity in the console. (e.g. DEBUG, INFO, WARN, ERROR)
  • Logging verbosity can be set using a simple console command.
  • Deferred logging: even if log statements are sent before a Logger instance is created, they will be stored until one does exist, allowing log entries to be submitted from the moment the application starts.
  • Explicitly turning off logging causes all logging calls to be disregarded so they don't impede application performance. (All pending deferred log calls are also discarded.)

Click on the image below to launch the demo in a new window. Once you've tried it out, please let me know what you think and check out the source code at the Google code project. I'd love to hear from people who are using it, so don't be shy!

Oh, and let me know what you think of the new blog design. All graphics were done using free tools: Inkscape and PSPad.

I'm Baaaack!

Welcome back to RIA Grande. I've spent a little time re-designing the blog and I hope you like the new look. I'll be back soon to post more meaningful messages, but for now I'd like to invite your opinion on the new design. I have a lot of things to say, so it won't be long before I'm up and writing again.

Thanks for stopping by.

Thursday, January 7, 2010

Cross-Compiling Java/C#/Ruby to iPhone

[Cross-posted at]

Cross-Compiling C/C++ to Actionscript using Alchemy

As you may well know, Adobe Labs has developed an exciting tool called Alchemy that leverages the LLVM open source project to cross-compile C/C++ code to a common run-time byte code. This byte-code is then cross-compiled to Actionscript code which is then compiled to Actionscript byte code (ABC). The earliest and most striking example of what can be accomplished with Alchemy was the port of Doom to Flash that Dave released on Newgrounds within a week of Alchemy's launch. He has now released the Doom Triple Pack which includes the bad boys Doom, Heretic and Hexen.

The good people of Automata Studios helped Adobe develop one of the first projects for demonstrating how Alchemy works. Here is their write-up on the subject.

Cross-Compiling to Objective-C (and more!) Using XML-VM

Another development that has come down the pipe is some research done by Arno Puder and his colleagues at San Fancisco State University. Their work involves using open-source tools to transform code from one language (e.g. Java, C#) to an intermediate XML format which can then be transformed to another language (in this example, Objective-C). The project is called XMLVM.

Prof. Puder presented how all of this works at the Google offices and the video of this presentation is available on YouTube. It is a very cool idea and demonstrates once again (as all software does, really) the potential aggregate power of using many small, simple constructs. Byte code statements are converted to an XML format which can then be transformed to Objective-C. While the final code might not be as optimal as the original, it will do the same thing. My guess is that the toughest part would probably be handling language elements that don't exist in both the source and target languages (i.e. garbage collection, loose typing/auto-boxing, annotations). Perhaps you'd have to do away with overly "native" parts of a language language when writing the "from" code. The good professor covers part of this challenge in his presentation.

While the target language discussed is Objective-C, as you can see from the diagram above, the XMLVM project allows you to cross-compile to and from a number of different languages.Enjoy the video. (Hat tip to DiamondTears for bringing this to my attention.)

Compiling Flash Apps to Native iPhone Apps in Flash CS5 (in Windows!)

At AdobeMAX 2009, new functionality for the Flash Professional CS5 was demoed showing that this upcoming version will allow Flash (and Flex) applications to be compiled directly to an iPhone application (i.e. an IPA). In fact, some apps developed using this functionality are already available in the AppStore. Info, video and more can be found here.

From what I've been told, this functionality is implemented using cross-compilation and therefore necessarily leads to somewhat bloated/un-optimal apps. Frankly, I think that should be expected. With time this can surely be improved, but for now, I think we'll take what we can get.

I'm sure I'm not the only person who has thought to themselves: Will I finally be able to develop for iPhone/iPod Touch without having to shell out for a Mac!?!

Adobe plans to launch a public Beta of Flash CS5 later this year. Once I get to try it out, I'll let you know what I think.

Final Thoughts

One thing's for sure: watching these videos and reading the documentation gives me flashbacks of the more interesting classes from studying Computer Science in university. The beauty of working in this field is that even the coolest, most complex technology is not only within your grasp to use and understand, but also to implement.

As a developer, I have discussed with my brother what platform is most attractive: iPhone or Android? I own an iPod Touch already, but am unable to develop native apps since I don't have a couple grand to put down on a Mac (much higher priorities: student loan, big screen HDTV, next gen console). Android will support Java and (from what I've been told) Flash, but I don't want or need a cell phone. The jury's still out but it will be fun either way.

As always, I invite you to post any comments you might have on this subject.

Friday, December 18, 2009

Obscurity is not Security: Insurgents Hack U.S. Drones

A word of caution to my fellow developers: if you think your software is secure because it's obscure enough that nobody would bother to hack it, then you might be in for an unhappy surprise.

Case In Point

According to the Wall Street Journal, Department of Defense officials have admitted that video feeds from Predator surveillance drones were routinely intercepted by insurgents/terrorists/disgruntled public servants in Iraq.

Perhaps it would all make for a better story if I could tell you that it involved a vast conspiracy with ex-KGB agents using supercomputers hidden in bunkers under the Urals to crack the video's NSA-level COSMIC Top Secret encryption while George Clooney ran interference with the press... but unfortunately, real life is slightly less dramatic. The UAVs streamed the video in unencrypted form which required a farcical level of effort/skill to steal (think grade 6 computer class).

From the WSJ article:

The potential drone vulnerability lies in an unencrypted downlink between the unmanned craft and ground control. The U.S. government has known about the flaw since the U.S. campaign in Bosnia in the 1990s, current and former officials said. But the Pentagon assumed local adversaries wouldn't know how to exploit it, the officials said. (emphasis added)

This amateurish blunder made it possible for a rag-tag assemblage of battle-weary Islamists to intercept the feeds using a "commercial off the shelf" (COTS) satellite video capture tool, SkyGrabber (MSRP: $25 US) and laptops. The minimal effort it took probably didn't even distract them from their day job manufacturing IEDs and blowing up innocents.

The military remained unaware of the practice up until a laptop was captured and Military Intelligence discovered intercepted video on the hard drive. (I'm frankly surprised it didn't show up on YouTube.)

The Lesson: Obscurity is not Security

I'm making a little light of this since it is unlikely that the video was of much use to the jihadists, but it really isn't a laughing matter. If you're ever tasked with developing software for a $3+ million unmanned aerial vehicle (AUV), please pay attention to details because somebody very dangerous surely is. When that happens, people usually die.

Here's hoping some heads will roll because "incompetence" isn't strong enough a word.

Further reading

(P.S. Am I the only one thinking that the ChiComms are laughing their butts off over this?)

Tuesday, November 24, 2009

VacuumTube: The YouTube downloader

A couple of months ago, I was given an iPod Touch. It is, quite simply, an amazing device (posts on that surely to follow). Part of the coolness of an iDevice is that it allows you to stream YouTube video in h.264 format (and not the usual FLV/FlashVideo format that other browsers see). Unfortunately, if you don't want to run up your iPhone data plan costs or, like me, ride the bus a lot, then being able to download YouTube vids while on WiFi for viewing later would be a godsend.

Enter VacuumTube

Well, I saw a need and filled it. Here is VacuumTube, a YouTube browser/downloader written in Flex and run in AIR, the Adobe Integrated Runtime.

The main part of this exercise was to allow me to watch videos on my long and tedious bus treks, the other was to demonstrate just how quickly I could create an Internets-aware application in AIR that provides a usable (if simple) interface. It took me, all told, around 5 hours to make, including subsequent bug fixes.

Be forewarned

Using this tool will contravene YouTube's "Terms of Service" agreement, which states that you may access User Submissions solely for Streaming.

I wrote this as an experiment more than anything, so please don't abuse it. In fact, I debated whether or not to even post it to the public for this very reason. I provide no warranty, express or implied that VacuumTube will still be working by the time you download it. YouTube already changed their code once on me, making VacuumTube useless (a fix was ready after maybe an hour of coding).

How Was it Done?

AIR provides UI components that leverage the open source WebKit for rendering HTML and handling JavaScript (see here). I basically leveraged that provided foundation to create a custom browser that provides special functionality that invokes the existing YouTube scripting.

For those who are paying attention/care, vanilla Flex provides a means of interacting with the HTML document that wraps around the Flash plug-in in which the executable SWF is running. AIR, on the other hand, provides a means of rendering HTML inside the actual application (there is no wrapper for AIR, it is a desktop app, after all).

What does it prove?

That Flex/AIR are indeed incredibly well suited for developing networked RIAs with rich UIs in very little time (like I said previously: around 5 hours total). Also, that they interact well with Javascript outside (Flex) or inside (AIR) the application.

Enjoy the app and please leave a comment with your impressions.

Download VacuumTube. Right-click and select "Save Link As" or equivalent. When I have time, I'll create an AIR installer badge to make this simpler and prettier...

Wednesday, November 18, 2009

First things first...

Well, after much procrastination, here is my personal blog. It's been a long tine coming, so it's a relief getting it out of the way. What's fun is that I can post to this using my iPod, which exponentially increases the probability of pointless posts and other brain spam.

At minimum, I know that my sister Alison and mom will be proud.

So please stay tuned, there'll surely be more to come.

- Posted using my iPod Touch