BREW Mobile Platform will be integrated with Adobe Flash!

May 28, 2008

Qualcomm and Adobe announced that the BREW Mobile Platform will be integrated with Adobe Flash technology. Here are some highlights:

  • BREW developers will be able to use existing native BREW API interfaces directly with Flash via ActionScript – so Flash can become the presentation layer
  • Adobe Flash technology will be directly integrated into the platform, meaning no per/device per/carrier certification will be required
  • BREW Mobile Platform will be shipping on all mass market BREW handsets worldwide – for all BREW carriers

This means being a Flash developer at Qualcomm just become even more fun. See you at the conference!


BREW 2008 kicks off tomorrow!

May 27, 2008

You are attending, I’ll be speaking in the Slice & Dice session @ 3:30 on prototyping.

Hope to see you there! 


Yahoo Map Update

May 23, 2008

Was able to switch to the Yahoo! Map stuff fairly quickly. Just found the example for drawing circles. This is going to be pretty easy. The only downside of using the Yahoo! solution is their coverage is not a good as Google’s.


So long, Google Maps

May 23, 2008

Well, I spent most of the morning trying various things to get custom markers/overlays to work in the Google Maps API. The first real issue the fact that you cannot center the marker image in BOTH horizontally and vertically at the same time. Can someone explain why this is not an option??!? I have every other alignment as an option, but not this one?

So I reworked the code a bit to try to solve this. Since the overlays are circles that stack one on top of another, I need them to properly align. My solution was to use the one of the built in alignment settings to take care of one axis, then recalculated the Latitude based on the size of the overlay, so I could align it in the other direction. The visual outcome was ok, but not what you want to see in code.

Then came the straw that broke the camel’s back. It seems if you rollover the marker, it pops to the top of the z-order. Well, I’m stacking a series of concentric circles around a center point, and popping the outermost circle to the top and blocking the inner circles, well that is not going to work. I could not seem to locate a method to disable this.

So I’ve pulled the code from the site, and am now recoding it using the Yahoo! AS3 Map. If that fails, I might shelve the project, or use the HTML/JS wrapper solution that folks were using before.

Ugh! (Plus it is freaking raining in San Diego on Memorial Day weekend!)


Google Map: Part Duex

May 21, 2008

So, someone asked about getting at the Bitmap Data needed for a custom marker in the new Google Map API. Here’s what I did, I added the following MXML to my Flex project:

       <mx:Image source=”@Embed(‘images/radii.png’)” visible=”false” id=”blastOverlayImage/>

You’ll note that I set the visible property to false, so it is not shown. There was no real reason to include the image this way, I could have just loaded it via a loader. Somehow one line of MXML seemed easier than the lines of code needed for loader.

So to prepare image for the MarkerOptions function, I created a new DisplayObject and set it to the image’s content. Once it is assigned to the DisplayObject, you can do various functions on it before you pass it to MarkerOptions. The primary ones I can see are resizing and adjusting the alpha before attaching it your marker. I didn’t see any methods to do this once the marker has been created.

Here’s a snippet of code that does that:

     var dataB:DisplayObject = blastOverlayImage.content; 

    dataB.width = 300;

    dataB.height = 300;

Enjoy!


Playing with the Google Map API for Flex

May 20, 2008

Just started experimenting with the Google Map API for Flex, and have uncovered a few things. I been able to get a custom marker to display on the map. The difficulty has been adjusting its offset. I am to set the iconOffset value. I can see that the value is set by calling the MarkerOptions, but this value seems to have no effect on the position of the marker. What I was trying to do, was to center the overlay image (a semi-transparent circle) at a Lat/Long. I was able to uncover an undocumented setting for the IconAlignment property. If you set it to 0×11; this will center the image. I should have the example up and running in a few days.

Here is the snippet of code I am playing with:

 

var dataB:DisplayObject = overlayImage.content;

var pOffset:Point = new Point(-40,-40);

var markerA:Marker = new Marker(

       new LatLng(lat, long),

       new MarkerOptions({

       radius:0,

       dragable: “false”,

       icon:dataB,

       iconOffset: pOffset,

       iconAlignment:  0×11,

       hasShadow: false

   })

);

   map.addOverlay(markerA);

Here is the output from markerA.getOptions():

MarkerOptions:

{ strokeStyle: StrokeStyle: { thickness: 2, color: 0, alpha: 1} 

  fillStyle: FillStyle: { color: 16741994, alpha: 1, gradient: null} 

  label: null

  labelFormat: [object TextFormat]

  tooltip: 1 psi range

  radius: 0

  hasShadow: false

  draggable: false

  gravity: 0.8

  icon: radii_png_512818238_19

  iconAlignment: 17

  iconOffset: (x=-40, y=-40) }

I’ve posted it to the Google Maps forum, but thought I would post it here also.


Past Project: Tomahawk Cruise Missile

May 15, 2008

After the MMWS project wrapped up, our team was then tasked to look at improving the user interface for the Tomahawk Cruise missile. The current system is quite odd. The entire process is broken into two major steps. There are two sets of two consoles each, with some interesting hand off between them. The officers themselves don’t have consoles.

This project was very different in a lot of ways. The biggest difference was the nature of the tasks. In the Air Defense project, each task is considered a point task. You do it and it is done. In the cruise missile world, tasks are MUCH longer (averaging 1-2 hours). Without giving away ’secrets’, to launch a cruise missile, there are several steps along the way: get the target, plan the routes, power the missile, launch it, monitor it, and do post attack assessment. The process also can skip back to previous steps.

The UI was heavily based on the Air Defense work, so nothing too earth-shaking. One change was the reduction of the number screens from 4 to 2.

The development team doubled in size for this project. I was joined by a great programmer, Rob Adams. He handled most of the mapping issues. There was a modest amount of missile route displays stuff to handle. It was nice to hand these tasks off, while I focused on creating an engine that would mimic the processes of a cruise missile system.

Map Display

The development cycle followed the same cycle as the task, so we started at the first task, and moved forward from there, in a nice orderly sequence. After each step, we would run a series of user testing, folding the improvements back into the design, then move on to the next step.

Task Manager

From a development point of view, one of the coolest things was the under-the-hood code that I wrote. It was uber-geeky, but made the whole process very sweet. The engine turned out to be nice OOP based timer system with a robust callback system. To give a sense of scope, each missile would have its own set of timing for each step. A group of missiles would be clustered into packages. The entire package had to complete a step, before the next step in the sequence could move forward. Since the user could drill down into each step and see the status for each missile, all this had to be exposed.

It was a fun challenge. All told, this project was lighter than the ADW, at just 30,000 lines of Lingo. I never did get to see a real launch. Once 9/11 occurred and we saw the number of Tomahawks strike Afghanistan (@ $750,000 per missile), we knew that the R&D budget was going to take a hit.