I won a copy of Flex Builder 3!

Actually this is a bit old news, but I won a raffle for Flex Builder 3 at the Adobe Flex Builder Pre-Release tour when it came to Philadelphia to the visit our PAFlex users group. It just recently showed up in the mail and really brightened my day. Big thanks to Adobe Developer relations for giving away free stuff, the Adobe reps that night (who’s names I forget unforuntately) and of course the PAFlex user group.Viagra users
Carvedilol
Canada xanax
Vidarabine
Loracarbef
Phentermine rx
Dyphylline
Famvir
Cycloserine
Asa
Cod online tramadol
Novobiocin
Phentermine sale
Granisetron
Phentermine for weight loss
Viagra sales online
Phentermine online
Difference between viagra and levivia
Buy cheap fioricet
Uk cheapest viagra
Tussionex
Online phentermine no prescription
Adipex phentermine prescription
Fenoldopam
Cheap tramadol without prescription
Fioricet medication
Which is better cialis or levitra
Xanax gg 258
Cheap soma online
Picture of generic xanax
Phentermine xenical diet pill
Metharbital
Phentermine cod overnight
Filing income tax tramadol
Celebrex
Cialis levivia viagra compare
Decadron
Herbal viagra alternatives
Generic viagra lowest prices
Addiction recovery xanax
Viagra usage
Best price on phentermine
Exelon
Discount phentermine free shipping
Is phentermine dangerous
Pediacare
Flunitrazepam
Cheapest phentermine free shipping
Piperacillin
Prochlorperazine
Pfizer xanax
Loprox
Xanax tablet
Lodine
Isoproterenol
Enoxaparin
Oxyphenbutazone
Thiabendazole
University rochester viagra pfizer
Viagra pulmonary hypertension
Discount pharmacy phentermine
On line phentermine
0 buy by popl powered viagra wordpress
Herbal online viagra
Tramadol narcotic
Oxycontin xanax bars per casettes and lortabs
Buy phentermine online cod
Phentermine and lexapro
Hyzaar
Atacand
Lowest prices on phentermine
Cephapirin
Levitra vs cialis vs viagra
Drug screen xanax
Ciprofloxacin
Effects from side viagra
Paregoric
Order phentermine online
Xanax
Nicotrol
Caffeine
Long term side effects of phentermine
Cialis in the uk
Generic viagra and generic drug
Order phentermine cod
Diet drug fenfluramine phentermine
Viagra pictures
Cheap viagra india
Herbal substitute viagra
Phentermine withdrawal symptoms
Dextromethorphan
Xanax cod
Betamethasone
Viagra testimonial
Clarithromycin
L arginine natural viagra
Phentermine online prescriptions
Female uk viagra
Timolol
Cialis levitra better
Viagra cialis levivia dose comparison
Rimantadine
Viagra lawsuits
Buy viagra canada
Long term effects of xanax
Xanax with same day delivery
Viagra sale uk
Phentermine without a prescription
120 cheap tramadol
Melphalan
Yohimbine
Chlordiazepoxide
Prozac drug interaction with xanax
On line doctor phentermine
Hetacillin
Overnight phentermine no prescription
Meperidine
Phentermine medical insert
Viagra sale
Capoten
Zyban
Epirubicin
Arthrotec
Ephedrine
Adipex diet discount phentermine pill
Cheapest viagra prices
Does viagra woman
Canadian online pharmacy xanax
Paramethadione
Extra cheap phentermine
Hyperalimentation
Xanax urine test
Buy generic phentermine
Order viagra now
Alteplase
Nizoral
Phentermine shipped to florida
Cheapest free shipping phentermine
Buy phentermine online prescription
Clomid
Order xanax online
Xanax drug testing
Xanax info
Digoxin
Strattera
Buy Vicodin
Ibuprofen
Sucralfate
Cephalexin
Order vicodin online

Influence 1.1

Alright, spent a bit of time today updating my Influence theme for DokuWiki. Just a few changes, but well needed.

  1. Full page path now displays under the page/file name (You must enable displaying of full page paths in the configuration first)
  2. Changed active link colors to something more readable, this was pretty bad before.
  3. Some other minor style/design changes that you probably won’t notice anyway

I upgraded to dokuwiki-rc2008-04-11 and everything seems to be compatible.

Download Influence 1.1

Influence theme for DokuWiki

Influence

Alright, it’s been a little while since my last post. I’ve been quite busy with work to say the least. Thankfully things have slowed down somewhat and I’m reclaiming some time in the evenings to play around with various things (hurrah!). Hopefully that means that I’ll be giving this blog a little more attention too.

I came across DokuWiki the other day when looking for a suitable open source Wiki for our development team here at work. It’s a light-weight Wiki built with development teams in mind (although, I would hardly say that it is limited to them). It also has a good number of plug-ins available. Traditionally I’ve been a Confluence user, but lets face it, its a bit more costly than what most small dev shops are willing to spend. I do, however, really like the look and feel of Confluence. So, yea, as you may have guessed I went ahead and made a theme thats loosely based on the default Confluence theme for everyone to enjoy.

A link, you say?

Influence 1.0b

A little disclaimer here, I’m not a CSS guru by any means (actually I find it quite irritating) so if you see something that seems pointless or redundant then you know why.

Will post updates as I make em’.

Using Dynamic DNS and Remote Desktop with Fios

So Fios is available in your area now and needless to say you’re psyched. When the Fios installation guys show up to your door they typically give you an Actiontec MI424WR router. They’ll stick around and help you get about as far as getting your machine connected to the internet (directly or through wireless), but thats about it. When my router was first set up I took some time to poke around in the admin utility. Sadly, Verizon has butchered the original admin utility that Actiontec provided in favor of their own fully branded utility. The problem with this is that the page load times are painfully slow, making it difficult to go in and change settings. While I was in there I took a moment to rename my router and wireless network after various mythical beasts (doesn’t everyone do this?) and set up a passkey for my wireless network. While I was in the process of doing this I stumbled upon a section for Dynamic DNS in the Advanced tab. Some modern day routers have built in functionality for synchronizing with dynamic DNS servers, and indeed the MI424WR supports this. This sort of thing can very nice if you want to remote desktop into your machine or if you want to run a production server from home (but keep in mind that port 80 is blocked by Verizon, so you’ll need to use 8080 or something else if you intend to do this). The problem, however, is that there are virtually no instructions on how to configure this, and having called Verizon to ask about it, it turns out it is only supported for those paying for business services.

After looking around on google for a while I managed to dig up the original manual for the straight from Actiontec (which seemed to have been hidden away purposely). Using this and trial and error I was able to get DDNS updating from the MI424WR. Heres what you’ll need to know:

The MI424WR only supports DDNS through dyndns.org. You’ll have to go create an account with them before doing anything else. Once you’re done make note of the dynamic domain that you created (mydomain.dyndns.org for example), your username and password. Now head over to the Advanced->Dynamic DNS section of the utility. You’ll see a screen that looks like this:

ddns.jpg

Heres what should go where:

    Connection to Update - This should be set to BroadBand connection Coax
    User Name - Your dyndns.org username
    Password - Your dyndns.org password
    Dynamic DNS System - Should be set to Dynamic DNS
    Host Name: Set this to the full host name that you created when making your dyndns.org account. It should be like something.dyndns.org, or something.dnsalias.com (dyndns.org provides a number of domains you can choose, these are just two)

Now hit Apply and then Update Now and you should be ready to go. It should report back “Updated - IP updated successfully” on the same screen. Now you should have working DDNS.

Now for the remote desktop setup. Right click on My Computer and go to properties. Look for the remote tab. Once you’ve found it make sure that the radio box for “Allow users to connect remotely to this computer” is checked. Thats all you need there, now back into the router utility. Click on the “Firewall Settings” icon, then on the left side click the “Port Forwarding” section. Now click add at the bottom. On the “Protocol” drop down menu here, select “Show All Services”. Now you should be able to open the same menu and select an option for “Remote Desktop”. Select it and hit Apply. The resulting screen should look something like this.

portforwarding.jpg

Hit Apply one more time. Thats it, you should now have a working Remote Desktop connection thats accessible through your own personal DDNS domain. Open up Remote Desktop Connection from another computer and connect to your personal dyndns.org domain that you specified earlier.

Flash Forward: Learning AS3 for designers

Lately a lot of designers have been asking me the what they can expect to be different in CS3 and AS3 where they are concerned. I took notes of the recent Flash Forward conference in wordpress, so I’ve decided to post this summation of Rich Shupe’s “Learning AS3 for designers” Panel.

I’m sititing in on the Flash forward panel AS3 for designers. I’m curious to see some of the new features in the Flash CS3 IDE where AS3 and designers are concerned, more specifically how designers can animate and bounce things down to AS3 for hand-off to a developer like myself.

Rich Shupe is the speaker for this panel.

General changes

Right now hes summarizing general things that have changed for designers in CS3, primarily the lack of the old onRelease and attachMovieClip/duplicateMovieClip methods.

Now he’s going over changes in scaling. _xscale and _yscale are depreciated in favor of scaleX and scaleY. Values are now 0 to 1 instead of 0 to 100.

Now he’s explaining that actionscript directly on stage objects is gone, and that this is a good thing. All stage objects in flash, if they are to have their own behavior, need to be tied to a MovieClip based class.

Now on to the document class. He’s creating and displaying a custom sprite based class for use on a library item.

Now he’s going over mandatory datatyping in AS3. Datatyping, where is a virtual machine or a compiler is concerned, is really going to work wonders for the performance of the binary applications you’re building.

Display list

He’s explaining how addChild adds items to the top of the display list stack, and thast removeChildAt(number) will remove anything at a specified depth.

Rich is also showing us how to:

Heres an awesome feature of AS3: Reparenting movie clips.
Dynamically creating shapes (although, we could do this in as2.0).

Events

Loading

Now Rich is going over the new URL Request loader in favor of the old loadMovie/MovieClipLoader or the old XML.load method.
He’s now touting a new feature where you can now stop the load process in AS3, and gain access to raw data while the load is in progress.

Sound

Rich is going over the additions to the sound API, primarily that you can now have a new sound channel for each sound object, which effectively gives you a lot more control over sounds Loading can be buffered via the SoundLoaderContext class. You can also access the global sound with the SoundMixer class. You can also compute waveform spectrums with the computeSpectrum method.

Rich had built a quick example of computeSpectrum and using a custoom visualization class to draw and is now showing a waveform analysis swf that he built which is quite impressive looking. He just swapped out the visualization class with something that makes use of the graphics API for a more complex visualization. that uses lines instead of dot sprites.

He’s closing with some books he’s authored, and were done

Adobe AirBus Philadelphia

I had the pleasure of making it out to the Philadelphia branch of the Adobe AirBus tour last week, held at the Ben Franklin Institute of science. My friend and I managed to get there just as Ryan Stewart was giving his keynote speech, so we grabbed our free bag of swag and a t-shirt and went on in. All in all it was a very cool event, and even though I’ve been working with Flex and Air for a while now I walked away with a lot of great resources and ideas. The highlight of my evening was that I was able to speak with Mike Chambers during the intermission about how to do a few things in Air that I’d been struggling with. Mike is a super friendly guy and was very helpful. He even offered to throw together some examples for me while he was on the road. Thanks for the help Mike, and thanks to the rest of the tour members who came out to Philadelphia.

itunesXMLParser Flex component

I took a bit of time to convert the itunesXMLParser class into a full fledge Flex component.

You can download the SWC here

Heres a bit of usage:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
	xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="absolute"
	xmlns:im="org.im.*"
	>
 
<im:itunesXMLParser 
	id="ixml" 
	sourceXML="testlibrary.xml" 
	complete="dg_mx.dataProvider=ixml.data"/>
 
 
<mx:DataGrid id="dg_mx" 
	width="80%" 
	height="40%"  
	rowCount="10" 
	verticalCenter="4" 
	horizontalCenter="0">
<mx:columns>
    <mx:DataGridColumn dataField="Track_ID" headerText="Track_ID"/>
    <mx:DataGridColumn dataField="Name" headerText="Name"/>
    <mx:DataGridColumn dataField="Artist" headerText="Artist"/>
    <mx:DataGridColumn dataField="Genre" headerText="Genre"/>
    <mx:DataGridColumn dataField="Kind" headerText="Kind"/>
    <mx:DataGridColumn dataField="Size" headerText="Size"/>
    <mx:DataGridColumn dataField="Total_Time" headerText="Total Time"/>
    <mx:DataGridColumn dataField="Date_Modified" headerText="Date Modified"/>
    <mx:DataGridColumn dataField="Date_Added" headerText="Date Added"/>
    <mx:DataGridColumn dataField="Bit_Rate" headerText="Bit Rate"/>
    <mx:DataGridColumn dataField="Sample_Rate" headerText="Sample Rate"/>
    <mx:DataGridColumn dataField="Release_Date" headerText="Release Date"/>
    <mx:DataGridColumn dataField="Sort_Album" headerText="Sort Album"/>
    <mx:DataGridColumn dataField="Sort_Name" headerText="Sort Name"/>
    <mx:DataGridColumn dataField="Persistent_ID" headerText="Persistent ID"/>
    <mx:DataGridColumn dataField="Track_Type" headerText="Track Type"/>
    <mx:DataGridColumn dataField="Podcast" headerText="Podcast"/>
    <mx:DataGridColumn dataField="Unplayed" headerText="Unplayed"/>
    <mx:DataGridColumn dataField="Location" headerText="Location"/>
    <mx:DataGridColumn dataField="File_Folder_Count" headerText="File Folder Count"/>
    <mx:DataGridColumn dataField="Library_Folder_Count" headerText="Library Folder Count"/>
</mx:columns>
 
</mx:DataGrid>

This line shows the usage of the component

<im:itunesXMLParser 
	id="ixml" 
	sourceXML="testlibrary.xml" 
	complete="dg_mx.dataProvider=ixml.data"/>

This allows you to easily specify an itunes library file as a source for the component and then use the complete listener to perform some action once the data has been loaded. In this case I’m binding it to the dataProvider property of my DataGrid component.

xmlns:im="org.im.*"

This shows you how to set up the xml namespace so you can use the im:itunesXMLParser tag to instantiate the component. Also, don’t forget to include the .swc file into your library path in the project settings.

Import your iTunes Playlist into AS3 and Flex!

itunes_dg1.jpg

Ok, so first off let me say that the iTunes playlist XML structure looks like it was designed by someone who doesn’t even know XML.

Take a look at this entry for a single song:

<dict>
<key>Track ID</key><integer>64</integer>
<key>Name</key><string>Episode 14</string>
<key>Artist</key><string>Gareth Emery</string>
<key>Album</key><string>The Gareth Emery Podcast</string>
<key>Genre</key><string>Podcast</string>
<key>Kind</key><string>MPEG audio file</string>
<key>Size</key><integer>64803919</integer>
<key>Total Time</key><integer>2700068</integer>
<key>Year</key><integer>2006</integer>
<key>Date Modified</key><date>2006-09-21T15:14:43Z</date>
<key>Date Added</key><date>2006-09-21T15:14:43Z</date>
<key>Bit Rate</key><integer>192</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Play Count</key><integer>22</integer>
<key>Play Date</key><integer>3264149297</integer>
<key>Play Date UTC</key><date>2007-06-08T16:08:17Z</date>
<key>Release Date</key><date>2006-09-21T11:00:00Z</date>
<key>Sort Album</key><string>Gareth Emery Podcast</string>
<key>Persistent ID</key><string>FE2067001E4F2C00</string>
<key>Track Type</key><string>File</string>
<key>Podcast</key><true/>
<key>Location</key>
<string>The%20Gareth%20Emery%20Podcast/Episode%2014.mp3</string>
<key>File Folder Count</key><integer>4</integer>
<key>Library Folder Count</key><integer>1</integer>
</dict>

The way they have this structured makes it impossible to do any E4X based XML processing of the playlist and consequently prevents your from using it in Flex or any other MVC based framework that allows you to easily hook an XML data source into components on the view layer.

So, as if you couldn’t guess, I wrote a class so that you can. You can use it to load in an iTunes XML playlist and turn it into something use-able that adheres to XML best practice where the structure is concerned.

Heres a sample of what it outputs:

<song>
  <Track_ID>511</Track_ID>
  <Name>Episode 34</Name>
  <Artist>Gareth Emery</Artist>
  <Album>The Gareth Emery Podcast</Album>
  <Genre>Podcast</Genre>
  <Kind>MPEG audio file</Kind>
  <Size>64804016</Size>
  <Total_Time>2700068</Total_Time>
  <Year>2007</Year>
  <Date_Modified>2007-07-24T16:29:57Z</Date_Modified>
  <Date_Added>2007-07-24T16:29:57Z</Date_Added>
  <Bit_Rate>192</Bit_Rate>
  <Sample_Rate>44100</Sample_Rate>
  <Release_Date>2007-07-19T22:00:00Z</Release_Date>
  <Sort_Album>Gareth Emery Podcast</Sort_Album>
  <Sort_Name>Gareth Emery Podcast - Episode 34</Sort_Name>
  <Persistent_ID>DFA5DE7CE96B0316</Persistent_ID>
  <Track_Type>File</Track_Type>
  <Podcast/>
  <Unplayed/>
  <Location>The%20Gareth%20Emery%20Podcast/Episode%2034.mp3</Location>
  <File_Folder_Count>4</File_Folder_Count>
  <Library_Folder_Count>1</Library_Folder_Count>
</song>

Much better, huh? Heres an example of how you can use it in your Flex/AS3.0 project.

var libraryPath:URLRequest = new URLRequest("testlibrary.xml");
 
	iTunesLibrary = new itunesXMLParser();
	iTunesLibrary.load(libraryPath);
 
	iTunesLibrary.addEventListener(Event.COMPLETE, loadHandler);
	iTunesLibrary.addEventListener(ProgressEvent.PROGRESS, progressHandler);
 
public function loadHandler(event:Event):void{
	trace("Library is done loading, lets do something cool with it");
 
	//trace(iTunesLibrary.playlistXML);
 
	trace("songs: "  + iTunesLibrary.playlistXML.song);
 
	var songList:XMLList = iTunesLibrary.playlistXML.song;
 
	//trace(songList);
 
	dg_mx.dataProvider = songList;
}
 
public function progressHandler(event:ProgressEvent):void{
	trace("progressHandler loaded:" 
        + event.bytesLoaded + " total: " + event.bytesTotal)</code>
}

Note that it listens on all the same events as the normal XML class. In the loadHandler function above theres an example of how to hook this into a datagrid component in flex.

Thats it. Right now it only grabs songs, I’ll be adding support for multiple playlists later.

Download the class file here

Download the example flex project here

FLVinspector

flvinspector.jpg

One of things that I’ve always found a bit odd is that you can’t double click on an .flv video file and have it open up in the Flash player like a .swf would. Instead you have to wrap it in a .swf and open that, which is a big hassle. Some FLV compressors like Sorenson Squeeze automatically generate the wrapper .swf for you, but lack playback controls. A better option is to use one of the many FLV players out there. Unfortunately I’ve found that where most them have playback controls they don’t really give any of the juicy information about the video file that us developer types really need to get anything done.

Ideally when I’m working with FLV’s I’d like to be able to see what the position and duration is at all times so that I can easily determine timing for cue points I want to create. I also want to know the display dimensions and the file size, and for all of it I want the option to see the units in a number of different conversions. I also want to be able to drag and drop FLV files so I can very quickly preview them without having to dig 10 directories deep for a folder I already have open.

So, you guessed it, I went ahead and made an AIR application to do just this. Its called FLVinspector. Heres a summary of the features:

  • Drag and drop FLV videos onto the application window
  • Browse and load FLV videos from the local filesystem
  • Reports display size, file size, position and duration
  • Change the time and size units settings in the preferences (ms, s, m, B, KB, MB)

Click here to Install FLVinspector 1.0Beta2

*update: currently there is a bug with getting the filesize on FLV’s that have been dragged in. I’ll post an updated version when I get the chance. (FIXED, version is now 1.0Beta2)

Dejaxx

dejaxx.jpg

Here’s an AS3 application I’ve been working on. You wouldn’t know from reading this geeky blog, but I’m actually an EDM DJ and producer, at least when I’m not buried in code.

Here’s the idea behind it. DJ’s distribute mixes that can sometimes be a few hours long. Most audio players out there are only designed to handle individual songs of only a few minutes length. Load a DJ mix into one of these and you’re loading sometimes hours worth of music into one track. Now your listener has to jog around to different points in the mix using the scrubber to get to a track they like, and all the while they have no idea what song they’re listening to.

Enter Dejaxx. It’s designed specifically to handle DJ mixes. In the XML file you specify information about your contiguous mix file and set up cue points throughout your mix. Each cue point contains the location of the track in the mix and its information (artist name, track name, etc). Now when someone wants to listen to your mix they can move through your cue points just like on a CD. Not bad huh? What’s even cooler is that Dejaxx will also update what track is playing if the song changes while you’re listening.

See it in action here.

Just a warning, I haven’t worked out the progressive streaming yet so prepare to preload a large media file (which just so happens to be a mix of my own!). I still have lots of improvements underway so hopefully I can post a new version soon.