I recently had an opportunity to give a talk at 360|Flex along with Randy Troppmann. Slides and code examples are posted below. Video of the session will come sometime in the unforeseen future as they have many hours of other sessions to post-process before getting to mine.
I’m slated to speak at 360|Flex San Jose on March 7-10 on the topic of GPS data and doing neat things with it in Flex/AIR. I’ll be co-presenting along with Randy Troppmann. Randy had been doing work for quite awhile in the GPS space with his work on runningmap.com. Runningmap.com is a website that allows runners/walkers/joggers/movers to track and catalog their accomplishments. They’ve also developed an iPhone application that can record your gps track as you run. It’s quite an honor to be able to present with such an accomplished developer.
I’ve been holding off on doing a blog post about 360|Flex until I could give you a sneak peak of the new prototypes of Swift GPS. Swift GPS is a wearable hardware device that will allow you to record GPX files to a USB thumbdrive that tracks your current position and movement. During my part of this session, we’ll go into how to take this GPX data and do neat things with it in Flex like overlay the data onto a 3D map. Other highlights will be doing a bit of heat-mapping using the GPS data.
This conference WILL SELL OUT, so don’t be one of the hundreds of chumps posting regrets to your twitter account after the conference starts and you didn’t get in. Click on my 360|Flex badge on the right-side of the blog to sign up today. If I win the speaker suite for the most signups through my blog badge, I’ll give away a prototype device to one of the people who helped put me over the top. Don’t wait. Sign up today.
I was at 360|Flex Indy in the session on the Axiis Data Visualization Framework presented by Tom Gonzales and Michael VanDaniker. Axiis is a framework built on top of degrafa that allows you to develop new and unique data visualizations that can go way beyond the simple column, bar, and pie charts available in the standard Adobe Flex charting libraries.
One of Tom’s first slides showed a Smith Chart. Tom mentioned jokingly that Axiis didn’t yet do something this complicated. For me sitting in the room, I was a bit taken aback. In my WCAP project, I have an open enhancement ticket from a customer asking for a smith chart visualization for transmission lines. They want to be able to click on a transmission line and view the directionality of the data on a smith chart. My original plan for accomplishing this ticket was to simply use an image for the smith chart background and draw my data on top of it. I must admit, I took Tom’s admission that Axiis couldn’t do a Smith chart as a throwing down of the gauntlet of sorts. I talked to him afterward to let him know I wanted to take on the challenge.
To date, I’ve only been working in Degrafa to get the basics of everything down. I’ll need to solicit Tom and Michael’s help in porting the work I’ve done over to Axiis and open-sourcing the code once I get a little further with it. So far, the most difficult part was calculating the arc angles and radii for each line on the smith chart based on the smith chart coordinates where the arc started and stopped. I still have a way to go in adding the various text labels along the curves as well as porting my work into a more reusable Axiis container.
The image above is the from-impedance(red) and to-impedance(blue) data across a 50 ohm transmission line with a sweep from 0.98mHz to 1.02mHz using a data point every 0.001mHz.
Hopefully, this little endeavor will benefit my WCAP customers as well as the open-source Flex community at the same time.
In the consulting work I’ve been doing for Simplified Logic, they’ve had me working on a new Encryption-only version of Nitro-LM for Flex and AIR. In the past year, they’ve had a number of customers who say something like, “The licensing and everything is really cool, but I’ve already coded my own simple username/password system and I really would just like to encrypt my application.”
For the past few months, I’ve been working on a solution for this. Instead of being username/password based for authentication like Nitro-LM is, I’ve stripped down the API to a 52kb SWC file that uses key-based authentication. If you request a decryption key from the server, as long as you encrypt that request using your application’s public key (embedded in your swf), then you’re good to go.
Having a solution for this brings about some interesting potential problems for Nitro-LM. First off, applications using this encryption-only solution will likely have a MUCH larger install base than a licensed application. For example, games, websites, and other small things where licensing isn’t really needed could be a candidate for the encryption-only solution. These types of applications also have a higher potential for going viral and slamming the Nitro-LM servers with tons of traffic.
To prepare for this potential onslaught of traffic, I did a couple of things. First, the encryption-only client SWC will cache the decryption key in a secure format for 30 days without hitting the server again. The other thing was to push out a trimmed down server instance to the SLI cloud. The encryption-only solution will push the traffic through the cloud first so it can take the brunt of the load.
To test this high-volume scenario, I setup a worst-case scenario test script through BrowserMob. They’re a great company that allows you to define and schedule load tests over the Internet. Patrick from BrowserMob was very responsive to my needs and even added a special API call that would allow me to do binary data POSTs from the service. I wanted to really stress our cloud to see what would happen if someone using our encryption service went totally viral. At the high-side, I was pushing through around 400 transactions-per-second before the cloud provider shut off my application. My guess is that it appeared like a denial-of-service attack since I was sending many identical transactions from the BrowserMob servers.
In any case, I believe the test was very successful. The new Nitro-LM service should be able to handle over 700 million transactions per month as a conservative estimate based on this testing (300 tx/sec over 30 days). I hope to be able to show some of this new Encryption-only stuff in my 360|Flex presentation. Register soon for 360|Flex, I’ve heard they’re filling up quickly.
I’ve been accepted as a speaker for 360|Flex Indy. Make sure to get your tickets early to get a better price. The longer you wait, the higher the ticket price goes. It’s exciting that this conference is going to be in my backyard this time. Should be a good time.
Here is a link to the schedule. My session is Monday at 4:00 in Olive color.
It’s become part of the nomenclature to call Flex coders “Development RockStars”. At the Simplified Logic booth this year, we decided to just go with it and hand out RockStar sunglasses for swag.
The 360|Flex event in San Jose was a success in my book. I manned the Simplified Logic booth most of the time, but I did find some time to go to some great sessions. I learned many tips and tricks that I could apply to my own development efforts.
My session on Encrypting Flex was fairly well attended. There were lots of good questions from the audience. I probably could have done a better job preparing for my talk, but I’ll wait until the comments come back from the surveys to flagellate myself over that too much.
Without further ado, here are the materials from my presentation. The audio will have to wait until my presentation gets uploaded to the Adobe Media Player RSS Feed.
I finished up my 360 presentation on Encrypting Flex, Protecting Revenue, and Making Cash yesterday. I’m quite pleased with it. It’s fairly slide-light and demo-heavy which is what I enjoy when going to 360 sessions.
I’m going to be showing a number of different encryption techniques, looking at several obfuscators, and showing what an cairngorm modular app looks like (in development) when each module is encrypted and protected from decompilers. I’ll also go over a couple of techniques to protect your revenue stream from an application, and also a couple of ways you/your company can make additional cash or save time and money (which is pretty much the same as making cash).
If you weren’t quick enough to get tickets, too bad, so sad…All sold out! I believe they’re at least going to have screencam and audio from my talk. If I get ahold of it, I’ll post it here afterward along with my code examples. See you at eBay.
I work as a contractor for Simplified Logic, one of the sponsors of the 360 Flex San Jose event. I’m going to be speaking along with David Bigelow in the presentation entitled Making Money with Flex. At SLI, they use their nitro-lm (license management) product to track and control usage and licensing of an application. It also has notification features so you can get an e-mail when one of your customers maxes out licenses, isn’t using your software for some reason, or any number of other significant events. Another aspect of the software is to protect your code from decompilers using a public/private key encryption algorithm.
Given that there is only limited time to present, what areas do you think we should focus on? The business case stuff, license management and tracking, or a deep-dive into encrypting flex applications?
I’m working on some new types of SWF file encryption to demonstrate at 360 Flex San Jose. If you’ve read my Inside RIA articles, you know that the main technique used by NitroLM to encrypt swf files is to create a wrapper application and load/decrypt the real application using a SWFLoader. The problem with this technique is that it’s a little bit kludgy and adds deployment complexity. It also has some difficulty in AIR in that if you wrap an <mx:Application> inside an AIR app, you won’t be able use some of the Native AIR functionality.
I’ve been dilligently working on a new technique for encrypting modular applications. Basically, you’ll write your flex or AIR app as you normally would and break up functionality into modules loaded by <mx:ModuleLoader>. You could also put pretty much all of your code in a single module if you wanted to. Then, when you’re ready to deploy, just comment out the <mx:ModuleLoader> tags and replace them with <nitrolm:EncryptedModuleLoader> tags.
There’s a few other steps including encrypting the module SWFs with an AIR application called AssetEncrypter, but the process is much more straightforward than the wrapper technique. It’s also much easier for the developer to code because they don’t have to deal with the keys and decryption themselves. All of the complex functionality has been done for you in the <nitrolm:EncryptedModuleLoader>