The Blog of Maxim Porges

Archive for March, 2009

  • Converting Virtual PC .vhd Images To VMWare .vmdk Images

    We use Microsoft Dynamics CRM to track our customers and related software feature requests and opportunities. Chris (our Sales Engineering manager) has been customizing the system for our needs, and we’ve been looking in to integrating with it further through the web service API.

    Since we don’t want to develop web services against the production instance, Chris suggested I download the demo version which is available as VirtualPC image. Of course, being on a Mac, I can’t run VirtualPC, but I do run VMWare Fusion.

    After I downloaded the VirtualPC image, I downloaded a free tool from VMWare that you can use to convert multiple types of images to VMWare disk images. The file I got from Microsoft was a .vhd file, but when I tried to convert it the VMWare converter told me that it couldn’t deal with .vhd files.

    However, it was able to convert .vmc files, which are the virtual machine files that go with the .vhd (which is essentially a virtual hard disk). So, I downloaded VirtualPC and installed it in to VMWare, and used it to create a VirtualPC virtual machine .vmc file using the .vhd file as the hard drive. After I created this, I shut down VirtualPC, fired up the VMWare converter in Fusion, and converted the 11 GB image by pointing it to the .vmc file. Problem solved.

    I was quite surprised at how fast the conversion was: it converted the 11 GB file in about 45 minutes, with VMWare Fusion both reading and writing over the local network connection to the host Mac OS. After the conversion, I was able to open the VMWare image files produced by the converter and install VMWare tools as usual within the virtual machine.

    2009.03.25 / no responses / Category: Uncategorized

  • Bluetooth Connectivity/Pairing Problems on Late 2008 MacBook Pro

    I’ve noticed that my late 2008 MacBook Pro seems to have trouble pairing with my Apple Bluetooth keyboard and Mighty Mouse occasionally.

    At home, I have a 22″ flat panel connected with two video inputs: an HDMI input from my old QuickSilver G4 tower, and a DVI cable that I attach to either my work or personal laptops (the work laptop is an early 2008 MacBook Pro, while the personal one is a late 2008). As I switch between laptops, I get semi-wireless KVM since the Bluetooth simply re-pairs with whichever laptop is turned on, and I manually re-plug the DVI cable.

    I never seem to have issues reconnecting the work laptop, but my personal one has been having issues recently. Anecdotally, this started happening after I installed Vista on Boot Camp, during which time I had a hell of a time getting Vista to connect to the Bluetooth devices (it would say it was paired but then never be able to connect). After uninstalling/reinstalling the Boot Camp drivers that came on the installation disk for my MacBook Pro, the Bluetooth on Vista started working again. I don’t know if the Vista issues spawned the issues in OS X, but there it is as the only thing related to Bluetooth that has changed.

    Anyway… I noticed I was getting these messages in Console.

    3/20/09 10:42:25 PM Bluetooth Setup Assistant[1753] connection went invalid while waiting for a reply 3/20/09 10:44:31 PM Bluetooth Setup Assistant[1771] 3:Pairing failed with 'Mighty Mouse': error 0xe00002bc 3/20/09 10:45:54 PM Bluetooth Setup Assistant[1771] 3:Pairing failed with 'Mighty Mouse': error 0xe00002bc 3/20/09 10:51:04 PM kernel IOBluetoothBNEPDriver: Ethernet address 00:23:6c:a2:5e:56 

    I went ahead and reset the PRAM and everything started working again – in fact, the laptop paired to the devices before the login screen loaded, and I was able to type in my password from my Bluetooth keyboard. Woot.

    This is the second time I have had to reset the PRAM on my personal laptop since I got it in December 2008, the last issue being related toExpressCard hardware. I’m hoping the issue was just related to me Boot Camp Bluetooth woes, but who knows.

    2009.03.20 / no responses / Category: Uncategorized

  • Farewell, Battlestar Galactica

    I just got finished watching Monday night’s special on the cast, crew, and making of BSG. The final episode of the series airs tomorrow.

    I was admittedly leery of the series when it came out. The main reason was that it was being produced by the SciFi Channel, which I have always associated with horrible campy science fiction shows with no-name actors, thin plots, and terrible writing. The other main reason was that I had watched reruns of the original BSG series as an adult, which thoroughly shattered my rose-tinted memories of watching the show during my childhood (Dirk Benedict, for Christ’s sake… awful).

    And yet, like so many others I gave the pilot a shot, and was rewarded with a totally new take on the series and a gem of a show in the making. The Cylons-as-humans thing was a little hard to swallow at first (and smacked more of keeping the budget on CG for the Toasters in check than anything else), but as the series has evolved they’ve justified the choice. After all, BSG is more about the characters in the story than the robots, spaceships, and special effects surrounding them.

    And what characters they are: gritty, dark, and all with secret (and not-so-secret) flaws that drive them through their individual story threads to be challenged, tested, broken, and saved countless times over. We were talking at work the other day about how we’d happily watch an entire series about Gaius Baltar living out his daily life; he’s been such a delightfully selfish and complicated bastard through the whole series. It’s been mentioned many times before, but I have to heap some hefty praise on to the show’s writers for keeping it real all the way through and not being afraid to send a TV series (and a sci fi one at that) in to morally questionable territory that would send even the most battle-hardened TV executives running for cover.

    In a time when 8 out of 10 TV shows on the air these days either seem to be about 10 spoiled brats living in an $8 million house and yelling at each other, or are centered around the pursuit of an aimless goal with trite elimination ceremony after trite elimination ceremony, BSG has provided some actual entertainment by people who have proven themselves to be masters of their craft. As a result, it’s just that much more tragic when a show of this calibre has to go off the air.

    Even so, while I will miss seeing new episodes pop up on the DVR, I must thank the management at SciFi for letting the show end gracefully; it was certainly time. All the major story arcs have played out, the characters are clearly tiring out following the ordeals of their journey, and the impending conclusion has been well-primed by the writers for a solid end to the series. There’s nothing worse than seeing a good show die a slow painful death by ratings. The powers over BSG are doing a great job of avoiding this and letting the show go out at the top of its game.

    It is with anticipation that I look forward to tomorrow’s closing chapter. My final request to the makers of the show will be that they release the entire series on Blu-Ray in a magnificent box set with loads of special features. After that, I’ll just have Breaking Bad (another fabulously dark show) to keep me amused until something else half-decent hits the airwaves.

    2009.03.19 / 2 responses / Category: Uncategorized

  • Ergotron LX in the Hizouse

    I got a few toys at the end of last year for my home office/studio (namely a Virus TI and a 22″ monitor), but they had the unfortunate side effect of cluttering up my desk.

    The monitor doubles as a USB hub and has three video inputs, so it created a whole bunch of spaghetti behind it. And as much as I love my Virus TI, it’s so deep that I have to push my monitor back to accommodate it, making small text too hard to read when the TI is on the desk. This means that when I work from home I have to unplug the TI and take it off the desk so I can move the monitor closer, which is a pain in the ass.

    I looked at a few monitor mounts, but they were either ridiculously expensive, wall-mounted (I wanted a desk-mount device), or looked crappy. We have a few flat panel TVs in the house, and the only arm-based mount I had bought was a $25 job from BJs, which was too flimsy to hold the little 15″ TV in the exercise room. After my bad experience with that floppy piece of crap, I was concerned about getting an arm-based system again, but they seemed to be the only solution to my cable and monitor-distance dilemma.

    Then I found the Ergotron LX Dual, which got rave reviews on Amazon. Dell had the silver for $199.00 with shipping, so I ordered it last week and it arrived today.

    This thing rocks the house, and just screams build quality. It came out of the box with two monitor mounts and a laptop mount; I have just the Dell monitor and either my work or personal MacBook Pros to worry about, so I went with the monitor/laptop configuration. The mount got great reviews from the Amazon crowd for being sturdy, and they weren’t kidding – the tension mounts are all fully adjustable to a very fine degree. I’ve got my setup to the point where I can move the monitor and laptop to any position and they just stay there – no wobbling or sagging. I’ve got a pretty deep desk (I think it’s about 30″-36″ deep by 72″ wide), but the 24″ of extension the Ergotron LX gives me easily brings my monitor in to viewing range with the post mounted to the back of my desk. There are integrated cable tidies, so I’ve got all the cables running through the arms and floating above the desk too, which gives me all my desktop space back again. Although I don’t typically work this way, you can also swivel the monitor to portrait mode if you like without having to pull any levers or make any adjustments.

    The mount is mostly held together by gravity, so if for example I wanted to switch my monitor to the right and my laptop to the left, I can just lift the arms off the top of the support pole and switch them around without breaking out the tools. Tension is adjusted through Allen keys and a Phillips head screwdriver, and the tension points are very easy to get to.

    Installation was a breeze with the well-diagrammed instructions, and they give you all the tools you need to get going. The only item I was concerned about during installation is that my desk is glass, just under 1/2″ thick, so I was concerned about the leverage imposed by the 20-odd pounds of weight that my laptop and monitor would put on it (especially since I was using the clamp mount). To spread the weight out a bit, I cut a 2×4 about twice the width of the clamp mount and put it on the underside of the desk. You can’t see it unless you look for it, and it is doing a nice job of distributing the load. If you decide to pick one of these up, note that the grommet mount can hold twice the weight of the clamp mount. You get installation hardware for both mounting styles in the box.

    I snapped a few photos, so check them out.

    2009.03.16 / no responses / Category: Uncategorized

  • The Twitter/Facebook/MySpace Meme-To-Mainstreamfest

    I saw Rob Gonda post a comment to LinkedIn about this article called OMG! Shut Up About Twitter Already; I couldn’t agree more. For 99% of you on Twitter, your life is just not that interesting for me to follow it ten seconds at a time.

    I also personally consider it a jump-the-shark moment for a service (or anything else) when the mainstream media gets ahold of it and makes it the “hot new thing” several years after it surfaces in niche form. It happened to drum n’ bass when it escaped from the clubs and started showing up in car commercials in the UK. It happened to Crocs when they suddenly appeared on the feet of every child in the United States. And it happened to Twitter, MySpace, and Facebook as soon as Fox News and CNN decided to get in on the action (followed by my step-mom signing up for accounts on all three in the last month or so :) ).

    Sure, the extra publicity will be great for these services for a while, but as soon as they cross over from meme to mainstream, they lose their cachet. All the Cool Kids™ (I’m looking at you, Roop :) ) will want to join the next wonderful service that pops up, download the iPhone app, and be one of the Awesome Few® in the know. This usually means that it’s only a matter of time for the other services to start losing their user base to the new service and become relegated to a merely sustainable has-been status.

    Of course, I’m old now, so I don’t really care to be at the forefront of the hottest new trends. I dodged Rails, didn’t buy Crocs, and have avoided Facebook and Twitter. I regret to inform you that I did sign up for a MySpace account to catch up with old friends from the past, but I think about deleting it every day. If I get another useless animated GIF from somebody who hasn’t sent me a meaningful communication in over five years, I think I’ll kill myself.

    Yours truly,

    Maxim “Old Geezer” Porges

    2009.03.09 / no responses / Category: Uncategorized

  • Flex Camp Miami: Mate Flex Framework (Laura Arguello)

    Laura Arguello gave a really thorough overview of the Mate framework for Flex and AIR applications. I was present for Laura’s original presentation at the launch of Mate at cf.objective(), so I was interested to see how she presented it two years after.

    Not only were Laura’s slides easy to follow and beautifully drawn (as always), but she had added some detail on alternative approaches and how Mate solves the problems associated with these approaches. Laura stepped through a full example of a movie browsing application built with Mate, showing the way the event bubbling and routing mechanism worked. I was particularly impressed with Laura;’s use of animations to get the point across, including an innovative “production line” slides that shows how Mate decorates events as they are routed through the framework, and gets them to the right place.

    I’ve always liked the principle behind Mate because it is supported by an event-driven message bus. Message bus architecture really fits nicely in to a Flex app since Flash is event-driven and has native support for asynchronous event management, bubbling, and routing. The only part of Mate that I find less desirable is the MXML-based routing and mapping; there is nothing wrong with this per se, but it reminds me of ColdFusion and Fusebox tags quite a bit, which is probably the root of my opinion since I have moved far away from that technology and framework. I’m personally a fan of being able to annotate my classes with metadata and have frameworks introspect them in order to figure out what to do, and the work that Russell Centanni has done with Chris Scott to get better support for the [Mediate] annotation in Swiz has really made me a fan of that framework.

    Of course, putting metadata in your classes is something of an invasive approach, so while it makes configuration more transparent, it leaves framework remnants in your code and requires a recompile to remove them; this is in direct contrast to Mate which is configured completely independently of your code. At the end of the day, you have to pick your poison. Since both Mate and Swiz exemplify the same best-practice approaches of making your code easy to test and loosely coupled, you can’t really say that one is better than the other – it all comes down to personal preference at the end of the day. I am, however, perfectly comfortable saying that both of these frameworks are far better in my opinion that Cairngorm, which is possibly the most invasive framework I have ever worked with. The Universal Mind extensions for Cairngorm certainly make it less of a bear, but it still smacks of the sort of nonsense we had to deal with in EJB 2.1 for Java. Naturally, we had to start somewhere, so matter how much I may bash Cairngorm today, we wouldn’t have gotten to Mate and Swiz without it kicking off the evolutionary process for us. In other words, “yay” for progress.

    Laura is going to be presenting Mate again at the upcoming 360|Flex conference in Indianapolis, IN on May 18th 2009, so if you are interested in learning more about Mate this would be a great way to do so.

    All Flex Camp Miami Roundup Posts
    Welcome and Keynote (Greg Wilson, Adobe)
    Working with Data in AIR (David Tucker, Universal Mind)
    In Search of AOP for AS3 (Maxim Porges, Highwinds)
    Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)
    The Art of Storytelling (Christian Saylor, Universal Mind)
    Continuous Integration and Flex (Brian LeGros, Highwinds)
    Spring & BlazeDS Integration (Jeremy Grelle, SpringSource)
    Mate Flex Framework (Laura Arguello, ASFusion)

    2009.03.07 / no responses / Category: Uncategorized

  • Flex Camp Miami: Spring & BlazeDS Integration (Jeremy Grelle)

    Jeremy’s presentation went over the reasons for using Spring with a Flex/AIR application, and described how the recent partnership between SpringSource (Jeremy’s employer) and Adobe has put proper support for collaboration between the two technologies on the fast track.

    All of Jeremy’s presentation was interesting, but the most exciting parts for me personally were the upcoming syntax for integrating Flex and the hooks in to Spring Security.

    Originally, the first releases of Spring/Flex integration required quite a bit of code an an invasive hook in to the Spring beans file, but the new support does all the configuration for you with one tag using sensible defaults (a la just about everything in Spring). Basically, Spring just exports the services to Flex the same way that it does for exporting hooks to Spring web services or any other presentation technology. There is the ability to provide a nice separation here between your Spring configuration for your libraries and specific use cases where those libraries are made available to BlazeDS, allowing you to unit and/or integration test appropriately at each tier.

    As far as Spring security, the configuration has become much simpler. You can now simply state the security role required to access each BlazeDS remote destination endpoint, and your security configuration is all ready to go. The only thing that remains is the standard set of hooks that you need to put in Spring to tell it where your authority store is (i.e. LDAP, a USER database table, a flat file, etc.), which you would have to do if you rolled your own solution too so no extra work is really taking place here.

    Some of the questions that arose included whether or not Spring was going to figure out how to get around some issues with the deep traversal that the AMF gateway performs when marshaling objects across the wire, and the havoc this can wreak with lazy loading in frameworks like Hibernate. Jeremy said that this was really an issue that Adobe was going to have to solve in the AMF gateway, and was obviously not related to the Spring integration by itself.

    The last final interesting tidbit we learned was that the Spring web team is based in Melbourne, FL. Apparently one of the founders of SpringSource lives in Melbourne, and was an ex-Harris employee who started a branch in his home town. Once again, we find a surprising little spoke of the larger hub of the tech community nestled away in an innocuous part of Florida!

    You can follow the evolution of the Spring/Flex integration project at the project home page. The new M2 release is out if you want to be one of the cool kids.

    All Flex Camp Miami Roundup Posts
    Welcome and Keynote (Greg Wilson, Adobe)
    Working with Data in AIR (David Tucker, Universal Mind)
    In Search of AOP for AS3 (Maxim Porges, Highwinds)
    Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)
    The Art of Storytelling (Christian Saylor, Universal Mind)
    Continuous Integration and Flex (Brian LeGros, Highwinds)
    Spring & BlazeDS Integration (Jeremy Grelle, SpringSource)
    Mate Flex Framework (Laura Arguello, ASFusion)

    2009.03.07 / no responses / Category: Uncategorized

  • Flex Camp Miami: Continuous Integration and Flex (Brian LeGros)

    Brian LeGros took to the stage with a staggering gait, giving indication that he was clearly three sheets to the wind. After accidentally plugging the monitor output in to his power cord and blowing out the projector, he began presenting his topic to a potted plant adjacent to the stage. After realizing that the plant preferred cowboy coding and had no interest in setting up a continuous integration workflow, Brian screamed something that would make a sailor blush, stumbled back to his seat, and proceeded to pass out – crushing a conference table during his fall.

    Just kidding… I’ve seen this presentation of Brian’s several times before in extended form, and his delivery gets consistently better with each iteration. Brian has a passion for organizing software development processes, and it’s clearly evident as he goes through the iterative process for getting a continuous integration process in to place. Brian has a low-key approach to the topic, which I think makes the seemingly daunting task of setting up CI far more approachable.

    Brian start off talking about what is involved in CI and why you would want to create a repeatable software process, drawing from real-world situations that developers are likely to face. He then covered some sample workflows for build process, source control, and delivery, and gave a detailed overview of scripts he has created in Ant to support automated builds and testing for Flex and AIR applications. Brian also touched on his work on the Fluint project to produce mock stubs for HTTPService and RemoteObject components, which allow easier regression testing when interacting with remote services. Finally, there was a run-through of how to set up a sample Hudson application.

    Brian is offering his build scripts from his blog, and I encourage anybody interested in setting up CI for Flex to make use of them. Brian spent a great deal of time smoothing out all the kinks in our build process at Highwinds, and he really did not impress upon the audience how much work he is giving away for free here. After determining that Fluint did not provide full support for Surefire builds, Brian took it upon himself to change the code base, and produced so much useful stuff that he was accepted in to the project as a committer. That’s just one example of what he’s done for the community, but I can assure you that there were numerous other hurdles that had to be traversed for Flex and CI to co-operate.

    We’ve just recently got the appropriate sysadmin support to get our Hudson server purring along at Highwinds, and we’ve already started to reap the rewards. I checked in some work on custom aspects we’ve written for the server tier of the next major release of StrikeTracker, and tests that worked perfectly in my development sandbox began failing when Hudson was running them. It turned out that while Hudson was generating our API documentation, an inconsistency in the latest version of the Cobertura code coverage plugin was causing the build to fail. Since I was only running the test cycle in my local sandbox and not generating all the documentation, I didn’t come across this inconsistency in my own testing. Thanks to Hudson finding this issue for us early, I was able to spend an hour diagnosing and fixing the issue now, instead of at the eleventh hour when QA is waiting on a build from us at some point in the future.

    We’ve also been able to see our test coverage and pass/fail progression, since Hudson is tracking our software quality as part of the build process. My boss has been really interested in seeing these statistics, so I’m glad we’ve finally set up to be able to make them available to him and use them as a barometer for the quality of our apps.

    If you are interested in learning more, I suggest you check out the recording of Brian’s February 2009 Adogo presentation on Continuous Integration. This is the extended version of his talk at Flex Camp Miami and contains all the same juicy details.

    All Flex Camp Miami Roundup Posts
    Welcome and Keynote (Greg Wilson, Adobe)
    Working with Data in AIR (David Tucker, Universal Mind)
    In Search of AOP for AS3 (Maxim Porges, Highwinds)
    Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)
    The Art of Storytelling (Christian Saylor, Universal Mind)
    Continuous Integration and Flex (Brian LeGros, Highwinds)
    Spring & BlazeDS Integration (Jeremy Grelle, SpringSource)
    Mate Flex Framework (Laura Arguello, ASFusion)

    2009.03.07 / no responses / Category: Uncategorized

  • Flex Camp Miami: The Art Of Storytelling (Christian Saylor)

    Christian gave an impassioned and compelling presentation about how to deliver immersive user experiences in rich applications.

    Drawing examples from iconic flicks of the past and present and using movie story/character development as a basis, Christian described how Universal Mind uses storytelling to create personas to understand the motivations and conflicts of an application’s users. Once you understand these key elements, you can build an application that helps users reach their goals. Christian clarified the fact that ultimately, great software is all about the people who use it, and we have to keep the user front-and-center at all times in order to create the right solution for their needs.

    Christian also pressed the issue that in order to make applications fully realizing the capabilities of a rich platform, designers and developers must work together to find that perfect intersection of art and science. Thankfully, based upon Greg Wilson’s earlier presentation of Flash Catalyst, it seems that Adobe is doing everything they can to make this collaborative worflow as smooth as possible

    Universal Mind has a highly distributed development team, so making sure that the entire team understands the story behind the users helps them to make independent decisions about how an app should flow, and what the best interests of the user will be. Having recently been taken through UM’s portfolio, I can attest to the stellar quality of the applications they have been able to produce by following this approach. You can get a taste of what UM has to offer by looking at their demos.

    I couldn’t agree more with Christian’s stance on driving application design through user stories. In my career, I’ve seen the negative effects of feature-driven approaches veer so far off the path of the user’s motivations that the software usability has practically hit zero. Case in point, I’ve seen an application with processes that should have taken 3 minutes dragged out to almost a half hour, requiring the user to take copious notes on paper and use a calculator during the process (which kind of defeats the purpose of having a computer system in the first place). In the most extreme example, I had a user break down in tears while describing how hard it was for her to do her job on a legacy software system we were working with her to modernize.

    Following these experiences, I’ve committed myself fully to applying user-driven approaches, and using the motivations of the user as the barometer for feature inclusion/depth and user interface design. We’re applying these principles to the next major release of StrikeTracker, and have already had very positive feedback from the Sales team at Highwinds based upon the wireframes alone.

    Coming back to Christian’s presentation, he mentioned the work of Allen Cooper in interaction design. I intend to pick up a copy of About Face 3: The Essentials of Interaction Design at my next opportunity.

    All Flex Camp Miami Roundup Posts
    Welcome and Keynote (Greg Wilson, Adobe)
    Working with Data in AIR (David Tucker, Universal Mind)
    In Search of AOP for AS3 (Maxim Porges, Highwinds)
    Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)
    The Art of Storytelling (Christian Saylor, Universal Mind)
    Continuous Integration and Flex (Brian LeGros, Highwinds)
    Spring & BlazeDS Integration (Jeremy Grelle, SpringSource)
    Mate Flex Framework (Laura Arguello, ASFusion)

    2009.03.07 / no responses / Category: Uncategorized

  • Flex Camp Miami: Merapi or How to Blow Your Mind with AIR (Andrew Powell)

    Andrew Powell delivered his ever-popular presentation on using Merapi to extend AIR applications by adding hooks in to Java, and thus everything the underlying OS has to offer you.

    Personally, I have been following the progression of Merapi from back in the Artemis days before AIR was even released. Being a Java programmer at heart and also loving Flex and AIR, the integration between these technologies on the desktop had always seemed like a perfect marriage to me (especially since Swing is such a train wreck). I had signed up for the Merapi alpha ages ago with the intention of hooking in through the Java-Cocoa bridge to capture MIDI events from one of my keyboards and do something (anything?) with them in an AIR app, but had never got around to kicking the tires, so I was really interested in Andy’s presentation.

    As it turns out, Merapi was made possible through the open-sourcing of the BlazeDS libraries for performing asynchronous messaging and AMF serialization. When a Merapi app is launched, it basically just fires up a listener on a local socket, and launches an AIR app which connects to this socket. Once connectivity is established, AIR and Java can send objects back and forth through the same AMF gateway code that makes BlazeDS and LiveCycle Data Services do their thing – just in a much slimmer environment than you’d get by running either BlazeDS or LCDS locally on the desktop. This is (in two words): pure awesome.

    Andy’s slide deck was only 10 deep, so we quickly got to the good stuff: hooking AIR apps in to hardware. Andy had brought along a number of toys to demo. First off, we got to see a set of RFID chips and a USB-based reader purchased from phidgets.com. Andy had set up the AIR app to scan the RFIDs via the USB bridge and show if a specific ID key had been found. Since phidgets.com supplies a Java library with their devices, this was a pretty simple setup, but you can imagine how cool it would be to build an AIR app for managing an inventory of products with RFIDs. Andy had three volunteers come up from the audience to scan books and see the tools in action, after which the volunteers (myself included) were allowed to keep the books (sweet!).

    Next, we got to see the star of the show, which was a Mindstorms NXT kit hooked up once again through a Java API (I believe the API in question is LeJOS – Andy said he never even touched the APIs that came with the kit). Andy had a simple control panel with forward/backwards and steering controls in AIR, which responded to mouse clicks and pressing of the arrow keys. Hitting the controls resulted in commands going across Merapi to the Java API, and ultimately connecting wirelessly to the Mindstorms robot (in this case a cool little Lego car) via Bluetooth. The entire sum of attendees crowded up to the front to see the robot in action.

    During the Q&A, Andy touched on some interesting notes. Firstly, since connectivity between AIR and Java through Merapi is socket-based, you can have an AIR app on one machine remotely control one or more Java apps running on remote machines. Second, message channels can be differentiated by message type, or you can have multiple socket listeners from different apps and establish channel separation that way. The final note I found useful was that there is currently no encryption on the socket channel, but this is planned for a future release.

    Hopefully Merapi will get the creative juices flowing for all of you AIR/Java programmers out there. While the library is still in alpha state, it clearly works great, and since it’s outside of the realm of Adobe you can use it at your own risk without having to wait for Adobe to incorporate similar capabilities in to AIR.

    All Flex Camp Miami Roundup Posts
    Welcome and Keynote (Greg Wilson, Adobe)
    Working with Data in AIR (David Tucker, Universal Mind)
    In Search of AOP for AS3 (Maxim Porges, Highwinds)
    Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)
    The Art of Storytelling (Christian Saylor, Universal Mind)
    Continuous Integration and Flex (Brian LeGros, Highwinds)
    Spring & BlazeDS Integration (Jeremy Grelle, SpringSource)
    Mate Flex Framework (Laura Arguello, ASFusion)

    2009.03.07 / no responses / Category: Uncategorized