LiquidText example

February 11th, 2008 . by polyGeek

I’m about to rewrite my LiquidText class in AS3 but first I thought I’d apply some of the code optimizations to the AS2 version and add some API calls to adjust settings just in case someone wants to use it.

Here’s an example of it in action below [ download FLV | download LiquidText.as ]

Essentially, what LiquidText does is it takes the text that you give it and breaks it down into an array of the individual words. It then finds a place where it can put the first word within the area that you specify without hitting any of the shapes that it wraps around. Then it places the following words until it runs out of space on that line. Then it wraps to the next line and starts the process over again.


Taking my cars for a spin with Actionscript 3.0

August 12th, 2007 . by polyGeek

These cars were design in the Forza2 racing game for the XBox360. First off let me give credit where credit is due. I did not do the designs on the polyGeek car or the Seahawks car. That was done by Lee Nicholls the Global Solutions Director for Getronics, World domination hobbyist, woo-er of beautiful women, driver of outrageously fast cars, and Forza2 designer extraordinar.

You can view the source code here. ( The download zip is a little over a meg because I left in the images of the Adobe Fararri for you to play with.) I’ve commented the code pretty thoroughly so I don’t think there’s much point in going into details. I’ll just give a quick overview of how this works.

First off, there are XML files that describe a series of images. The code goes through and loads each image and places them one on top of the other.

As soon as all the images are loaded it runs through the series of images to display them each in turn giving the illusion of the car, or whatever you have photos of, rotating. That’s serves the purpose of letting the user know that they can rotate through the images. Just displaying a mouse-hand probably isn’t enough of an indication.

The mouse wheel also works to scroll through the images.

The images are loaded one after the other instead of all the requests going out at once. I found that there were some odd errors with making a request for 40 images all in one shot. Sometimes they would load and sometimes they wouldn’t. Loading in sequence solved all that.

As your drag your mouse across the image space it uses the width of the image and the number of images in the stack to calculate how much you need to drag your mouse before the next image displays. That way if you start from one side of the image space and drag all the way across it will rotate through all of the images. No matter how many there are.

Modulo to the resuce

There are few occasions to use modulo in Actionscript. That’s the mathematical operation using the “%” sign. Modulo gives you just the remainder after division. Example: 34 % 10 = 4 because 10 goes into 34 three times with 4 left over.

Modulo was very handy for solving an otherwise messy problem. References to each image are stored in an array. As you drag your mouse across the image space the code figures out which image needs to be visible at that point.

So what happens if the user is dragging through the last few images in the array and then needs to start back at the beginning of the array? You can imagine lots of messy if() statements to handle all that or, I can just take the modulo of the image I think they need to see with the length of the array and they will always see the correct image.

Example: suppose there are 30 images in the array ( 0-29). The user is dragging across the image space and displaying the last few images, 27, 28, 29, 30 . . . But there is no image 30. But if when I go to display an image I use the calculated image number modulo 30 ( length of the array ) then I’ll always be in the range of the image array.

So when I try to display image 30 I’ll get 0, and for 31 I’ll get 1 and so forth. Problem solved and no messing if() statements.


XanaduWest.com

December 6th, 2006 . by polyGeek

XanaduWest.comXanaduWest.com is my personal photography site. I did all of the design and coding, and of course all the photography.

XanaduWest has quite a few features that are very rare for a Flash RMA.

Firstly, it is bookmarkable. As you browse through the photos the Actionscript is communicating with the browser via Javascript to make updates to the location bar - window.location.hash. If you are looking at a particular photo and bookmark the page or copy the URL and email it to someone then they will come to the very same photo. As the page loads it looks for any arguments added onto the URL. If they are there then the data there is used to load the corresponding photo. Otherwise it randomly picks a category/subcategory to display.

There is an email feature here that uses the same URL code so that you can email a group of photos to someone. When they click on one of those photos it will bring them straight to the one they are looking at.

The navigation and all photo data are contained in an XML file. So if I want to add a photo to a gallery or create a whole new gallery then I don’t need to make any changes at all to the Flash file. All I need to do is add a few lines to the XML, upload it and the photos to the server and I’m done.

To make things even easier on myself I used the DrawingAPI in Flash to make all the frames around the photos. That saves a lot of work later on Photoshop. So that frame with the beveled edges is all just lines drawn programmatically in Flash.

Lastly, I have used LocalObjects to store data about the current state of the RMA. If you change the volume level of the music it will be remembered when you return. It also checks to see which photos have been stored to be emailed. If you leave and return those same selected photos will be there ready for you to email to yourself or a friend. This functionality can easily be extended to become a shopping cart if I ever decide to sell prints again.

And please, stay long enough to see the sunset. People say that it’s beautiful.


Xbox Hardware

December 6th, 2006 . by polyGeek

Xbox Hardware : Jump InI didn’t design the Xbox Hardware presentation. I didn’t build it. Nor did I did I sit in on any of the meetings to discuss how it should work.

Brian Pember and Jason Gold did the design together while Brian did the work of putting it all together in Flash. I was just there to help Brian enable some of the more dynamic aspects, such as using XML for the data, helping with the navigation, and the internationalization of the dynamic text fields.

That is one of the things that I like most about my position with Xbox. When it comes to Flash and Actionscript if something doesn’t work or someone doesn’t know how best to tackle a problem they call me. We talk it over, work it out and make it happen. I think they call that teamwork.

Data Recovery - proprietary software and hardware solution to recover data even from storage devices with mechanical hard drive failure or physical damage.


Pentominoes

December 6th, 2006 . by polyGeek
pentominoes
click to play

This is a little something I did many years ago. How long? It was done when Flash was in version 5. That was in the last millennium, right?

Originally I built this as a prototype. I wanted to explore the UX of the rotating and flipping of the pieces.

When I have time I plan to recreate this with papervision3D. I have some new ideas for the UX and I’d like to enable storing solutions in a database. Now, all I need is the time to do it.

Read more about pentominoes at Wikipedia


Resume

December 2nd, 2006 . by polyGeek

updated: April 4th, 2008

Dan Florio
Crestline, California

Currently working as a freelance developer.

Primary Skills

  • Adobe Flash Actionscript development (OOP)
  • User eXperience and graphic design
  • Flex 2.0/3.0
  • Flash video conversion and interface coding

Languages:

  • Object Oriented Programming (OOP) in ActionScript 2/3
  • HTML (Dreamweaver or text editor)
  • CSS/CSS-P
  • Javascript

Work Experience

SmileBox.com ( Flash Developer, Designer, UX ) ( September 2007 - present)
Create SmileBox designs - photo greeting cards. Create templates for other designers to improve team workflow and add features to the framework to impove user experience.

Microsoft XBox/EXG (Entertainment EXperience Group) (February 2006 - September 2007)
Lead developer for all RIA pieces on Xbox.com and Zune.net. Using Flash AS2, OOP, XML.

Lead developer for Zune hardware/services demo. Responsible for integration and coding of the Zune demo which was shown to CEOs of MTV, FOX, WarnerBrothers, Bill Gates.

Developed a framework for rapidly creating 360 Dashboard prototypes based on Flash and XML.

Freelance work
1999 - present Freelance Flash Actionscript developer/Designer,
Web Designer/Programmer

  • Catalysis Marketing, Seattle, WA (1/2006-2-2006
    • User Interface/Programmer and Designer.
  • XanaduWest.com (10/2005 - 12/2005)
    • XML driven site. New photos, (sub)categories all managed via XML.
    • Supports deep linking and bookmarking within the site.
    • Email photo functionality.
  • BillForFirstLady.com (7/2005)
    • Code for custom designed video interface.
    • Converted QuickTime videos into FLVs for progressive download.
  • HeyRadioGuy.com (3/2005 - 1/2006)
    • Modified existing Flash template to client specifications.
    • Converted static text to dynamic text updated via XML.
    • Added functionality to suit clients specific content needs such as custom built accordian component, audio, and video controls.
  • College of Engineering Technology (8/2004-11/2004)
    • Enhanced attractiveness to potential students creating a sleek modern design.
    • Created Flash media player for photos and audio interviews of students.
    • Provided common design interface for all departments within the college and organized each department’s navigation consistently.

United States Space Academy Kennedy Space Center (Summers 1987 / 1990)
Kennedy Space Center, Florida / MSFC, Huntsville Alabama,
Lecturer: orbital mechanics, solar and planetary science, Space Shuttle operations, and others.
Mission Director: prepaired trainees for Mission Control Operations and Space Shuttle piloting.

Education

Philosophy and History double major (Spring 1996 - Spring 1999)
Northern Arizona University Flagstaff, Arizona

Study Abroad Program (September 1998 - May 1999)
University of Swansea, Wales


Availability

December 2nd, 2006 . by polyGeek

I’m always looking for the ideal situation: that would be a great job in a great location. Example: if the Jet Propulsion Laboratory has a Flash Dev position or maybe if Google wanted to start using Flex/Apollo, that sort of thing.

Specifically I’m looking for freelance work for the months of March, April, and May of 2007. Anything on-site will have to be in the Seattle or San Diego area unless there are temporary housing options.

My wife and I are interested in relocating starting in January 2008. We would be interested in locations in Europe, Asia, Australia, or locations along the Pacific coast of America.

If you have a job opportunity in a state that voted for George Bush in 2004 then don’t bother contacting me.


Open Cover Letter

December 2nd, 2006 . by polyGeek

Dan Florio
Updated: 1/2/2007

I am an expert-level Actionscript developer looking for a web application team to do object oriented programming (OOP) with Adobe Flash, Flex, and soon Apollo. It would be an added bonus if your team also needs someone to assist with user experience (UX) and graphic design. It is important to me to work in an environment where I am pushed to expand my skills, both technically and creatively.

In my current role as the Senior Actionscript Developer for the Xbox team at Microsoft I have the opportunity to work with some of the finest UX (User eXperience) program managers in the business. I played a meaningful part in developing the recent Xbox Dashboard and Zune UX products.

For some of the projects at Xbox I am the sole designer and developer. In those instances I do all of the analysis, design and implementation. Other projects are a team effort in which case I manage the unification of the assets and code in addition to assisting the other developers with their work as needed.

About the skills I can offer your team:

  • I like to work on projects that push the boundaries of what can be done with Flash. I know that not every project can be bleeding edge but a few per year is nice. Along those lines I have done three things that many Flash developers would have said was impossible.
    • LiquidText (polygeek.com/liquid-text/) The Senior Support Engineer for the Flash player at Adobe said it couldn’t be done. Three days later, working between sessions at FlashForward, I showed him that it could be.
    • video.Maru (polygeek.com/videomaru/) if you asked someone to create a custom video interface, from scratch, and code in the functionality for playhead seeking, volume controls, and play/pause button they would probably tell you it would take a few days. I’ll only need two minutes.
    • DeviceFade: the Flash documentation plainly says that you cannot mask or _alpha fade device fonts. The Flash documentation is wrong.
  • I don’t know everything about Flash. For instance I’ve never worked with the Socket class - it just never came up. However, given 8 hours I’ll be comfortable doing anything you need to do with sockets, or whatever.
  • Aside from continually improving my knowledge of Actionscript I am currently working into ColdFusion and SQL.

Thank you for your consideration. I hope we can chat about how I may help your team achieve its goals for 2007 and beyond.

Sincerely,
Dan Florio


Zune Demo

November 26th, 2006 . by polyGeek

I would have a hard time picking an answer If I were asked, “Of all the work that you’ve done for the EXG team (Entertainment eXperience Group) what are you the most proud of?”

The Lenzer RIA is, dare I say, perfect. It took a lot of work to get it polished just right but I don’t see any flaws with it. It works as well as what MTV has but my version is dynamic and navigable.

The Rapter360 is just plain brilliant work if I may say so myself. I did a pretty good job of using the MVC (Model View Controller) design pattern for this and it has really paid off.

And then there’s the Zune Demo. This is the demo that was used to show off the concepts behind the Zune MP3/video player before it had a name. It started out simple enough as a small part of a PowerPoint presentation and then grew more and more into the centerpiece of the presentation. It was shown off to MTV executives, WarnerBrothers, FOX, and countless others. It was even presented to Bill Gates - he liked it.

This was also the project that required the most teamwork. There were constant requests for additions and modifications coming from all corners of Microsoft. Those requests were filtered by the EXG team manager, Russ Glaser, and then handed to the project manager Jeremy Hutton. Then myself and three graphic artists took on the job of meeting those requests. All the while I was at the center of it making sure everything worked together.

Zune DemoEssentially the presentation is a main page (shown here) that is a gateway to various interactive presentations of the Zune devise and it’s family of hardware and software.

Here is a sample of some of the issues that had to be solved.

  • It had to run full screen. The background would stretch to fill the screen which is easy enough. Then comes the issue of centering the presentation on the desktop. Again, not a problem. It just required a little math. But it had to run smoothly at resolutions from 800×600 up to 2500×1600. That took some work. To accomplish something like that we had 4 versions of the interface at various resolutions. The appropriate version was dynamically picked based on the size of the desktop by creating a screenResize listener. It worked flawlessly which was very important because this would be presented in rooms where we had no idea what the hardware would be capable of.
  • Some of the presentations were fairly simple timeline based animations. But, they had to run backwards and forwards in case the presenter wanted to back up. You know, Flash doesn’t really run timelines backwards but I found a way to do it and made it simple enough that the other artists working on the project could use it without supervision, freeing me up to work on other things.
  • The one presentation that I was responsible for - aside from the integration of everything - was of the the Zune devise itself. The hardest part of this is that it began as something fairly simple but had features added on so many times that it grew into something with dynamic navigation and content. Looking back on it I’m amazed that I was able to extend the simple original demo to serve all those requests and not break down. It was almost a daily activity of looking at some new request and thinking, “How am I going to get this to work with everything else?” I always came up with something.

On more than one occasion someone from the marketing team would drop by and tell me that they received compliments on the demo itself from some executive and they wondered if they could get the name of the company that did it. I’m sure they were surprised to discover that it was done in-house.

In the end I’d have to say that while it wasn’t my favorite project to work on it is what I’m most proud of because there was a lot riding on it and I managed to incorporate every single request that got to me, on time. And it worked flawlessly which is what you want when you’re showing off a demo in front of Bill Gates.


Zune.net : Captain and Social RMIs

November 26th, 2006 . by polyGeek

Zune.net homepage heroThe Captain is the Zune.net homepage hero that rotates between 3 adds. It uses the same basic approach as all the other RMIs I’ve done for Xbox.com and Zune.net. That would be using my XO class to load and parse the XML, the main class that manages the loading/positioning of all the external files and the user interactions with the app.

The only real difference between the Social RMI and the Captain is that the Social doesn’t use an OOP approach. That’s because one of my co-workers is entering the world of Actionscript so I helped him create it with the tools that he understands.Zune.net Social hero We still used my XO class for the loading and parsing of the XML. After that he wrote functions on a frame to do the work necessary work of managing the positioning and interactions of the external files. He had never before created an RMI type application so this was a good introduction to a Flash app that doesn’t rely the on timeline.


« Previous Entries