Todd Rothe : Web Application Developer

it's pronounced rowth-ee

Refund for FlashBuilder 4 Upgrade

Having multiple versions of FlashBuilder 4 Standard installed on my machine (beta, educational, plug-in, stand alone) I figured that one of them would be eligible for an upgrade to Premium. I found this not to be the case when I purchased an upgrade from the Adobe Store and attempted to use the resulting serial number.

Initially I filed a help ticket through the Support Portal link provided in the ‘receipt’ email. No love.
Ultimately, a refund was issued by a LivePerson chat representative and the whole process took less than 3 minutes.

The link to ‘Chat’ was near the top of the ‘Check out our list of Frequently Asked Questions’ page whose url was provided in the ‘receipt’ email.

Adobe appears to have made a good choice in using LivePerson for their chat support.
If I ever need chat support I will have to consider LivePerson.

 

FlexGarduino

Recently I have been working on Flex / Air apps for Arduino. For those who don’t know “Arduino is an open-source electronics prototyping platform” that lets you start building your circuits instead of having to build a board for your microcontroller before you can build your circuits. This is my favorite “getting started with Flash and Arduino” site.

FlexGarduino is available on GitHub. It consists of a FlashBuilder4 project using the Flex 4 SDK (but Halo components) which interfaces with the Arduino (Duemilanove for me) board. Currently there are 3 input sensors; light, temperature, and moisture content of soil. The readings from these sensors are stored in a database.

The database is your standard AIR generated SQLite db stored on the local file system. I am using Elad Elrom’s SQLiteManager code to encapsulate the db calls/code.
I am using StandardFirmata on the Arduino board and a small breadboard to wire up the sensor circuits.
There is a basic LineChart instantiated in the main app which will display the readings taken by the sensors, providing a display that is much more meaningful than, say, a DataGrid.

 

Robotlegs: Minimalist Keystroke Demo

There are plenty of blog posts out there hailing the virtues of Robotlegs IoC/DI Framework, so I will skip the ‘so cool’ speech and simply say 1) DI goes a long way towards keeping my view components clean and 2) working directly with AS Events, vs. PureMVC Notifications, is a welcome simplification. Dig’n Robotlegs.

After walking through the Robotlegs demo by Joel Hooks I decided to build a simple AS3 demo based on the minimalist PureMVC demo by Chandima Cumaranatunge. This app will track and trace out keystrokes with the support of Robotlegs.

To start-
Download the sample project for use as a guide.
Create an AS project called Keystroke. FYI I am working in Eclipse w/ FlexBuilder plugin
Modify the project properties to include the RobotLegs swc
In the src dir create the following directory structure

demo project directory structure

In the keystroke dir create new AS class called KeystrokeContext which extends Context from org.robotlegs.mvcs.Context
Open Keystroke.as (your main project file) and type the following inside the constructor

var context:KeystrokeContext = new KeystrokeContext();
context.contextView = this;

*make sure the import statement for your context file is included near the top of this file.

Create the View -
Create an AS class in the views dir called StageOverlay.as which extends MovieClip. This will act as our view component but do little more than receive focus and overlay the application.
Add an event listener to the constructor which fires drawStage(event) in response to ADDED_TO_STAGE. Use drawStage() to add a TextField the display list. See the sample file for details.

Return to Keystroke.as and add StageOverlay to the display list

var stageOverLay:StageOverlay = new StageOverlay();
this.addChild(stageOverLay)

Create mediator and listeners -
Create an AS class in the views dir called StageMediator which extends org.robotlegs.mvcs.Mediator.
1. inject StageOverlay and KeyDataModel (above the constructor)
2. create the onRegister() function and inside it map listeners for the native KEY_DOWN event and the custom KEYSTROKE_ADDED event and assign the handlers
3. create a handler that dispatches a StageEvent in response to KEY_DOWN
4. create a handler that updates the text field in the view with data from the model in response to KEYSTROKE_ADDED

Use Context to map mediator to view -
1. Open KeystrokeContext.as and create a startup() function
2. Inside startup() type mediatorMap.mapView( StageOverlay, StageMediator);

Create the model, events, and commands -
1. In the events dir create StageEvent.as extending Event (see sample) which will be dispatched by our StageMediator
2. In the events dir create KeyDataModelEvent.as extending Event (see sample) which will be dispatched by our KeyDataModel upon update

3. In the contollers dir create StoreKeyCommand.as extending Command. This will trigger the addKeystoke() in our model.

4. In the models dir create KeyDataModel.as extending Actor. This will contain a keystrokes:Array to store data, a function addKeystroke() to populate keystrokes, and a function get keystrokeList() to retrieve keystrokes.

Use Context to map model, event and command -
1. Open KeystrokeContext.as
2. inside startup() type injector.mapSingleton(KeyDataModel);
3. inside startup() type commandMap.mapEvent( StageEvent.KEYSTROKE_EVENT, StoreKeyCommand);

Run your new AS app and you should be in business.

more posts at toddrothe.com/blog

 

NBAUG Presentaion Resources

Thanks to all the folks who attended my presentation at the North Bay Adobe User Group. If you are interested in learning Flex then join us on the first Thursday of each month at Nor Cal Flex User Goup for an hour of hands-on coding and an hour of presentation.

Here is the list of resources from my presentation. Please email if I forgot any links.

http://toddrothe.com/blog
http://toddrothe.com/art

Radiskull
JibJab
Elephant Dreams
Open Office
OS google apps

Pattern Park

Flash frameworks
Gaia
Hype
Flixel

Flash Libs
SwfObject
Tweener
Away3D

Flex OS Projects
Flex SDK
FlexLib
Astra
Degrafa

Flex API’s
YouTube
Twitter
Facebook
GoogleMaps
Flickr
SalesForce

 

A FUG is Born!

Nor Cal FUG has officially begun.

Thanks to all 15 attendees of the first Nor Cal FUG in Santa Rosa (really Sebastopol), California. It was a great first meeting.

In response to my posting on Craigslist regarding starting a Flex User Group (FUG) in the north bay I had expected 5 responses. Much to my surprise there were approximately 30 viable responses and a few more trickled in from word-of-mouth.
Finding a space that would not charge me $150/meeting took some time. Fortunately Marsee Henon from O’Reilly returned my call. O’Reilly is headquartered near by and, being the community minded organization that they are, offered to host NCFUG.

For our first training session, led by yours truley, we reviewed a few Flex components (Hbox, VBox, Text, Button, Image, and Script tag). Turned out to be a bit slow for the group. I’ll pick it up the pace next session.

Our first presentation, given by Ed Murphy from Conceptual Math, was on the Google App Engine as a RESTful backend for Flex. Great presentation and we are sure to hear more from Ed throughout the year.

If anyone is interested in presenting on Flex/Flash/Air related topics please send an email to todd@norcalfug.com and include a brief description of your talk.

Congratulations and thanks again to all the attendees for making this a success. Can’t wait til next month!

 

Free VOIP or E-Free Local Phone

This is a follow up to my earlier post Free VOIP or E-Free Home Phone and may not make sense on its own.

Once you have signed up for a voip.ms account, and your voip is working, you may decide that you want a number with a local area code. Consider checking with your neighbors to see what prefix is common to your area. You may be able to match it.

Getting a number with a local area code is this easy;

If you like you can configure your device to use your area code as the default, just as a standard landline does, through one settings change;

  • Open you ATA config, login and switch to advanced view.
  • Select Line 1 and change the value in Dial Plan to (<:1AAA>[2-9]xxxxxx|1[2-9]xx[2-9]xxxxxxS0|[2-9]xx[2-9]xxxxxxS0|*xx|*xx.|[34689]11|822|4443|4747|0|00|[2-9]xxxxxx|1[2-9]xx[2-9]xxxxxxS0|4XXX|xxxxxxxxxxxx.)
  • Next, change characters 5,6 and 7 (currently AAA) to your area code.

Aaaaaaand test. Pick up your phone and dial a local number without the area code. If you have credits in your account the call should go through and you will see the charges on your voip.ms account under CDR and Reports -> Call Detail Records: filter accordingly

Hope this helps.

more posts at www.toddrothe.com/blog

 

Free VOIP or E-Free Home Phone

After reading the Free VOIP article, by Dave Mathews, in Make magazine issue 11, I decided to try installing VOIP in my home. Like most ‘free’ services there are limitations. Here is a short list
You can:

  • receive calls from anyone.
  • make toll free calls (to many countries).
  • call most VOIP numbers.

For other featrures, like calling grandma’s landline, you will need a pay service (more below).

First i ordered a Linksys PAP2 on Ebay for $40 with shipping. This highly configurable device sits between a router and a standard phone. You can think of it as the magic box that turns your broadband into a dial tone.

The Dave Matthews article instructs you to get an account from FWD, a large PBX but FWD is no longer open to the public. Instead I searched for alternatives and settled on voip.ms. Voip.ms handles call termination and origination and provides an optional pay service that will allow you to purchase credits to make calls to grandma’s landline (and other exotic terminations).

The article also points you to IpKall which will give you a free Washington state phone number and let you terminate calls at your SIP account/device.

Using voip.ms allows you to skip PBX and IpKall account creations and instead acquire a number with a local area code for $1/mo (not free but worth it IMHO). My favorite thing about using voip.ms is having one location for configuration details: no confusion over which user name to use in which config settings location. Voip.ms has great instructions on how to configure your device and config settings are spelled out nicely under Support -> Account Information.

You must also configure your router (don’t brick it) to pass VOIP traffic to your ATA.
First give your ATA a static IP in your routers DHCP client list.
Then modify your routers firewall settings (you may have to look for these) to forward traffic from the following ports to the same ports on you ATA.
Port: 5060 Type: UDP/TCP
Port: 5082 Type: UDP/TCP
Port: 16384-16482 Type: UDP
Here is an image of my Router settings.

If you run into issues and are working with an ATA check out the image of my SIP config screen and Line 1 config screen to compare with your own.

Decided you want a local number? See my Free VOIP or E-Free Local Phone post for more info.

One simple way to test origination is to use X-Lite. See my Free VOIP Test Using Softphone post for more info.

more posts at www.toddrothe.com/blog

 

Remove the Thumb From HSlider

I was glad to see the css for the HSlider handled most of my styling needs for HSlider; tickLength, showTrackHighlight, themeColor.

One styling need it does not support is the removing of the thumb element. I’m using the HSlider to control mp3 playback and inform the user of playback progress. After setting showTrackHighlight=true; the thumb seemed unnecessary.

For those in a hurry, here is what worked:

Remove the thumb skin through style sheet. In myAppStyles.css:
HSlider {
thumbSkin: ClassReference( null );
}

For the curious, here are the other things I tried and why they did not work:

1. In mp3Player.mxml set the thumbCount property to “0″:
< mx:HSlider id="msgTimeBar" thumbCount="0"/ > Ideally, setting the thumbCount=”0″ would override the default thumbCount=”1″. It does not. Slider.as is coded so 1 is lowest number of thumbs you can set
Slider.as – ln 1008: numThumbs = value < 1 ? 1 : value;

2. In mp3Player.mxml set the thumbSkin to null via Style tags:
< mx:Style>
thumbSkin: ClassReference(null);
< /mx:Style>

Received this warning in my mxml file in FlexBuilder “-CSS type selectors are not supported in components: ‘HSlider’ “. Note: This warning may not be immediately apparent because it appears at the top of the file next to the root tag. More info on this warning can be found here.

Turns out that the client preferred a vertical bar rather than no thumb at all. Ultimately I created a new class which extended sliderThumbClass and draws a small rectangle.

In mp3Player.mxml set the
< mx:HSlider id="msgTimeBar" sliderThumbClass="com.toddrothe.controls.RectThumb" />

RectThumb.as:
package com.toddrothe.controls
{
import mx.controls.sliderClasses.SliderThumb;

public class RectThumb extends SliderThumb
{
public function RectThumb()
{
super();
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth,unscaledHeight);
this.graphics.beginFill(0xFFFFFF,1);
this.graphics.drawRect(5,8,4,8);
this.graphics.endFill();
}
}
}

 

Debugging Tips and Tricks – Exporting Breakpoints

One tip/trick/habit that I have found worth its weight in anti-matter is exporting your breakpoints.
Working in a large code base can yield long debug sessions, I’m talking days, and many crucial breakpoints. Here is a painful scenario I used to run into :
Spend 3 days debugging a diabolical mystery
Take pride in becoming the resident guru on the subject/use case/code
Weeks later receive a new task involving that same code (cuz your the master) only to realize you’re not as bad ass as you thought cuz you can’t remember where all that code is.

2 weeks can seem like months in a fast paced environment with a large code base and you can easily spend hours rediscovering that tiny snippet that was the crux of a previous issue and the key to resolving a new one.

By exporting your breakpoints you can easily reload and leverage the knowledge and work you put into the previous task.

1. Do your rockstar debug session amassing crucial breakpoints
2. In your debug perspective select your Breakpoints panel, right-click -> Export Breakpoints
3. In the resulting dialog box click Select All ( or select the breakpoints you want to save )
4. Click Browse to select the location you would like to save the .bkpt file and name your file well – i like to include the date, issue description or jira number ( 5-26-09_newTerminalRingStatus.bkpt )
5. Make sure to uncheck Overwrite existing file without warning
6. Click Finish


export breakpoints panel


Later, when you need a particular set of breakponts, right-click in your Breakpoints panel and select Import Breakpoints, Browse to and select your file, Finish.


import breakpoints panel


more posts at www.toddrothe.com/blog

 

Show Error on Form Field / Text Input or Show Me Where It Hurts

I have extended a flexlib component to immediately display an error message next to a TextInput. With this component the user is no longer required to mouse over the text field or TextInput in order to see an error message. Seriously, how annoying was that…

Image Of Sample App

This component is based on a popular request from clients (“Please show the user wtf is going on”) and some code from an Aral Balkin post.
My component includes an adjustErrorXPosition and adjustErrorYPosition to allow the developer to adjust the location of the error display since nesting this component can effect the x and y. If your textInput is the child of a draggable element then use repositionError(event:*) to reposition the error when the parent is dragged.
Also, there is an eventListener in the constructor which calls hideError() that hides the error when the TextInput component receives focus.

Check out the sample app and right click on it to view all the sourcey goodness (and grab the code for the component).
You can read the code comments for a better understanding of how to use the component but the important bit is – set errorText = “error message to display” when you want to display an error and errorText = ” ” when you want the error to disappear.

* note: during testing i noticed that loading the TextInput outside a container (ie. as a direct child of Application) resulted in a 500px difference between the x position of the error in FireFox and the x position in Safari.

more posts at www.toddrothe.com/blog

     
 
  • unico air duct parts
  • house moves to monday
  • oakbrook spartanburg
  • laserjet reset menu
  • hand crafted ideas
  • wendy whiteman fire
  • typhoon lagoon logo
  • mileage
  • savers
  • maximo
  • fillmore herald
  • grafton ma horse riding
  • umax webcam drivers
  • cheer laundry detergent history
  • 1928 detroit michigan
  • marksman
  • oster clipper blade sharpening
  • nas and kelis dicvorce
  • sanford ayers mission
  • dalles definition
  • genealogy fulton kentucky
  • bubbly colbie callie
  • mama
  • freeware no watermark nero
  • math easier now
  • alterations tailors elmhurst il
  • proforma newburyport massachusetts
  • sarty st ignatius bedford
  • geforce 6100 chipset troubleshooting
  • gemstone offering bottle
  • huisarts gent krevitz
  • coyotes in lambing
  • harlequin romances 1960s
  • malice mizer piano music
  • stiller
  • rihanna cry remix
  • breda hirsute
  • groves texas phone directry
  • clan
  • calvary temple irving tx
  • firewall
  • tim tebow orange jersey
  • boudreaux hearing preacher joke
  • retreat
  • izmir and ferroni francesco
  • maryanne thorpe killeen tx
  • cutest animal colorado
  • bed wetting resources
  • overcoming students at-risk
  • watch amityville horror online
  • beaumont
  • mcalester oklahoma call girls
  • chelsey queen bedroom set
  • hispanic st jude statue
  • fully mechanical submarine
  • mail moves america
  • 1995 ingersoll 3014 pictures
  • flowers ftd saskatoon saskatchewan
  • mike garret illinois attorney
  • poodles pictures
  • vetrans presentation korean uk
  • watcher
  • candian credit repair
  • provision for taxes
  • judith moilanen
  • iowa governer branstad
  • zombie rmx cranberries mp3
  • norwegian libraries
  • rare ebooks resell rights
  • takes
  • rick derringer bass tab
  • haarp giza pyramid
  • channel 10 stockton news
  • dora mink blanket
  • fraction notes
  • timken aerospace az
  • veteran job cite
  • nextar gps maps
  • flamingo beach hote l
  • girl takes many cocks
  • malaysia commisioner of oaths
  • hong kong dawn
  • pubic area pains
  • breeder octodon degus
  • traverse city oldest houses
  • majestic carriages fortville in
  • alimony
  • 24112 nearby attractions
  • webster
  • apple resellers uk
  • pex tubing weil mclain
  • fixed elevator
  • vinny v tikko
  • ordered from cabinetry direct
  • arnold roy architect llc
  • mountains and basins landforms
  • separating mixture
  • ge hotpoint stove parts
  • stove
  • venice florida visitor guide
  • el caballero blanco
  • gimp glass letters
  • hunt
  • harness
  • classmates dot records
  • starrett
  • weichert realty woodbury nj
  • yahtzee wild game
  • horoscope
  • fortuna shotgun from suhl
  • wishing sugarland tabs
  • demon hunter thorns lyrics
  • vickers part number 771-096
  • ballistic chronograph sensor
  • detectors
  • suvs
  • niece is brother's daughter
  • clad cookware discount
  • belgique
  • yukon
  • vignette qualitative resesarch
  • trojan explorer crashes
  • flashpoint movie actor
  • parsippany
  • calling mumbai india
  • name margret krenz
  • proximity
  • theology of psalms 1
  • medicinal uses of cloves
  • centry
  • drank purple drink
  • cowan zellers
  • remus powerizer
  • hellenic rug imports masters
  • hillary hawke saxophone
  • flags
  • giclee
  • nunavut hpv vaccine program
  • ganz shoe
  • trimmer
  • hottest cathyscraving rare
  • p90x success videos
  • encore
  • polypropylene door mat
  • strongest bike lock
  • pints
  • debut
  • kaspersky cnet
  • pili ceramica quartu
  • organ
  • biscotti with figs
  • toucan imformation
  • dominique
  • dana
  • creater of the telephone
  • kind off magic
  • killian v j
  • wenn rss feed
  • neil hammersmith 2008 artwork
  • petty
  • patent
  • wild mustangs being cot
  • sunland village mesa az
  • william shakespear julius caesar
  • override
  • wesley snipes scar
  • essence
  • standard measurements for weight
  • spiritual warfare ravi
  • vodoo desde 2002
  • mass selective detector system
  • wheelchair accident in charlottesville
  • nsu libraries technical services
  • mite bites human
  • peek
  • alberta grid datum 2.2
  • bloomfield
  • pumkin
  • biotic baking brigade
  • edwards
  • merino thermal
  • pc anywhere and router
  • fauna
  • weak hip muscles
  • jeweled heart fur clip
  • constant itchy fingers
  • calvary
  • great plaines manufacturing
  • fleming
  • antiques the statesville line
  • guzzi
  • seabrook texas hotels
  • wings unlimited models
  • don wasserman international
  • trunk
  • property in buckingham iowa
  • wholesale spool thread
  • rouge the bat sites