- We design and build extraordinary applications for companies looking to make the next great idea a reality.
- learn more
Flash Player on iPhone gossip
First thing that came to my mind when I initially heard about the iPhone was the multi-touch possibilities that would start changing the way we create Flash/Flex interfaces (hopefully through SDK extension supporting multi-touch on Adobe's side triggered by iPhone release).
It looked very promising and natural to me in the beginning that this will be the route. Flash is a great part of the Internet experience and iPhone is a great mobile device for, among other things, Internet access.
Topics: Flash, flash player, Flex, iPhone
Symphony of Ruby on Rails and Flex through RubyAMF

In a project that I am currently a part of, we inherited Ruby on Rails from our client's system and project front-end was designated to be developed in Flex. RubyAMF came naturally.
I have been working with two other AMF frameworks prior to this: AMFPHP and WebOrb. My experience with both was that they are fairly hard to set up and once you go through that minefield, everything works excellent. No need to say that I am a great advocate of AMF in general. RubyAMF brings the same good old AMF but with a stunning ease and speed of development!
My colleague working on the Ruby side, Justin Ficke, introduced me to code and architecture of Ruby on Rails and I was impressed to see with what ease, precision and speed can one develop it.
Justin and I put a little test together of this architecture and here is a screen cast of it.
All the lovely custom typed objects and speed of data transfer are there. Beauty of it, appart from obvious benefits from AMF, is that the development process couldn't have been better and faster.
Topics: amf, AS3, Flex, Ruby on Rails, rubyamf
“Build half a product, not a half-assed product” - tips on clarity and focus from Jason Fried of 37Signals
Jason Fried from 37Signals spoke yesterday at the ITA "Speaking of Success" event, about the history of 37Signals, their philosophy and culture, and the critical business decisions they've made to get them where they are today.
The software biz is fundamentally broken. Too many products fail because of the obsession of adding more and more, and trying to do too much.
Jason went on to say that the approach of adding more and more only works for companies that have lots of money and lots of time, but that for the average company the main goal should be to build something that is "good enough," get it out to the users, and improve the design based on their feedback. The challenge of which features to include, and which to say "No" to, is covered well in the "The Innovator's Dilemma," which he said "everyone in this room should have read." The book resonates the core philosophy of 37Signals, which is evident from their blogs, their book "Getting Real," and the design of the Rails framework. As an example of the "Good Enough" philosophy, Jason used his laptop and its basic webcam to stream the Q&A session out over justin.tv and send out a text to the 37signals Twitter group. "The quality probably isn't that great, but its good enough," and with that quick setup he had now broadened the audience by 1,000 users or so. (I searched for the video archive at justin.tv, but didn't find it yet.)
Mouse wheel (scroll) Event in Flash Player running on a Mac
One of the great advantages of Flash technology is cross-browser and cross-platform compatibility. That is almost entirely true but a few things did slip Adobe.
A big issue that was overlooked is support for mouse wheel event on Mac OSX. A pretty basic functionality you would think. If your interface is heavily relying on mouse scrolling, your audience on Mac's will probably have a "so how does this work" blank stare.
Topics: externalinterface, Flash, Flex, Mac, mouse scroll, mouse wheel, osx
Flash/Flex physics engines and examples
Flash technology has gone a long way from simple vector animations. Today it has support for video and audio, 3d rendering and interaction, all kinds of advanced data visualization libraries, great components of all shapes, sizes and purposes.
What caught my eye lately is that there is a lot of 2D and 3D Physics engines being added to the list.
Continue reading »
Topics: 2d physics, 3D physics, AS3, Flash, Flex, physics, physics engines
Data visualization and the art of conveying information
As a coder, I go over tremendous amount of information on daily basis. My case is no different than anybody's else living in the world today. Regardless of where we live and how we spend our time we are saturated with all kinds of information, a lot of it that we don't care about and a lot of it that we wish we had fast access to, if at all.
Ironically, computer technology adds to the problem more often than not. All that computational power is often just creating more data that we will never experience because there's just too much of it everywhere and all the time. Traditional techniques of consuming information are becoming too slow and narrow to handle this kind of pace.
We have all heard that a "picture speaks a thousand words". Doesn't that sound like an efficient way to consume information? Now, there are pictures and there are pictures.
There are pictures that strike a cord with you and there are pictures that leave you bland. Which one are you more likely to remember and allot the time of your mind?
Here are some libraries for data visualization in Flex/Flash as well as some artful experiments that I found to be good tools/examples of data visualization.
Continue reading »
Topics: code art, data visualization, Flash, Flex
Custom Flex 3 Lightweight Preloader with source code
Here we have a demonstration to an age old problem in Flash (inherited in Flex) - the Preloader. I think that the Flex community has long ago grown bored with the default preloader, which I am very thankful to Adobe engineers for providing us in the first place. It's just that we keep seeing it over and over and over...
Topics: Flex, lightweight, preloader
Ruby on Rails with Windows - How I made it work
I have been developing with Ruby on Rails over the last few weeks. Coming from the ASP .NET/C#/VB world, I am a total stranger to a programming language like Ruby. Any new programming language is fun to learn! Ruby was even more exciting cause it was a new kinda language to me. Though I think Ruby is not as user-friendly as C# or Java, it is as powerful and flexible if not better. Combined with Rails, Ruby becomes a platform that facilitates quick and efficient development of database-driven web applications.
Papervision3D 2.0 (Great White) in Flex 3 (Part II & III combined) with source code
The purpose of this demonstration is to use Yahoo Map and Papervision3D as a base for creating/importing 3D Objects with reference to actual locations on planet Earth using the Adobe Flex framework.
In this post I will be covering how to integrate Yahoo Maps AS3 API as an Interactive Material in PV3D 2.0 and solutions to the following problems:
- Security sandbox violation when using Yahoo Map as MovieMaterial (i.e. BitmapData.draw problem)
- Mapping Longitude and Latitude values to X and Y coordinates of a PV3D material
- Dragging Yahoo Map in PV3D (avoiding the map panning collision with PV3D)
- Simple gauge component from the ground up using basic trigonometry
- Simple tilt component again using basic trigonometry
- Making a visual component using Degrafa
Demonstrations of these solutions are packed in this air application for which you can also see and download fully functioning source code.
LINQ to My Domain
I've begun my foray into the world of LINQ, and in my investigation I've seen a lot of work based on the LINQ to SQL "design surface" available in Visual Studio 2008. It's a neat tool. I point it to my database, drag some tables over, and it infers my domain structure and relationships from the databases fields and keys. That's all well and good for a simple domain model that is directly related to the database schema. I could see using this for a quick prototype, or a really small application. I see three files created by the designer:
MyClasses.dbml - This looks like any ORM frameworks mapping file. It associates classes with tables, maps fields to object properties, and defines relationships.
<Table Name="dbo.Balloons" Member="Balloons"> <Type Name="Balloon"> <Column Name="BalloonId" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" /> <Column Name="Color" Type="System.String" DbType="NChar(20)" CanBeNull="true" /> <Association Name="Balloon_Kid" Member="Kid" OtherKey="KidId" Type="Kid" /> </Type> </Table>
MyClasses.dbml.layout - This looks to be specific to the layout of the design surface and appears to serve no purpose outside of this design.
MyClasses.designer.cs - This is the beast that I'm looking to replace. It contains the class definitions and attribute based mappings to bring my database schema into my application, and ready it for use by LINQ.
So this leaves me with a couple questions. One, why are attributes used to specify mappings? Can this be done strictly via XML? More importantly two, can I use my own domain model, and if so how do I map it to the database?
My goal would be to design a layered system, separating the underlying data store from the repositories required to push and pull my domain objects from these data stores. This would allow in memory implementations of the data store, and would make unit testing (and developing) a whole lot easier. I will be digging into this in the coming days and will report back soon. Stay tuned!
ADO.NET Entity Framework
ADO.NET Entity Framework is an object relationship mapping (ORM) tool. It was designed to provide a layer of abstraction between the logical schema and concept schema of an application, and to decrease the amount code need for a data centric application.
Some benefits of the Entity framework:
- Data storage engine and schema independence: Due to the layer of abstraction between the logical and conceptual schema of your application, you no-longer need to know and hard cord the application to a specific data storage engine or schema.
- More expressive conceptual model: Entity types can inherit from other entity types and allows the creation of more complex types in addition to the standard scalar types support by the database.
- Access to multiple database system: Because the application is free from hard code data storage dependencies, the developer has the ability to access data from multiple storages using a consistent application object model
- LINQ: Language Integrated query support that offers compile time syntax checking for queries against the conceptual model.
The Entity Framework works by allow the developers to hand code or use code generation tools to create the XML metadata for the conceptual entity data model, a storage entity model, and a mapping specification between the two. The XML file created for the conceptual entity data model is then stored in the conceptual schema definition file (.csdl), the storage entity model is stored in the storage schema definition file (.ssdl), and mapping between the two in the mapping specification language file (.msl). These XML file are then loaded into the metadata workspace of the entity framework, and a set of classes are generated to allow the developer to work directly with the conceptual model and indirectly with the logical model.

Figure: ADO.NET Entity Framework Architecture
So with these benefits design and built directly into the the framework and the logical approach used by framework to interact with various data providers, some experts in entity-based applications and software architectures on the .NET platform still feel that the framework has some pretty large deficiencies.
They are concerned that the framework is...
- Inordinate focus on the data aspect of entities leads to degraded entity architectures
- Excess code needed to deal with lack of lazy loading
- Share, canonical model contradicts software best practices
- Lack of persistence ignorance causes business logic to be harder to read, write, and modify, causing development and maintenance costs to increase at an exaggerated rate.
- Excessive merge conflicts with source control in team environments.
Are these claim valid concerns to consider?
Sure, only if the framework is mature with several versions under its belt and its prohibits the productivity, maintainability and scalability of the application.
Isn't the right approach to software development to deliver a subset of the full feature set right the first time than try to deliver everything at once with massive issues that prevent the usability of the tool?
You decide...
Below are some useful references to get you going with Entity Framework.
Achieve Flexible Data Modeling With the Entity Framework
ADO.NET Entity Framework Pre-release documents
Microsoft ADO.NET Entity Framework Overview
ADO.NET Entity Framework Taking Some Heat
Programming Against the ADO.NET Entity Framework
ADO .NET Entity Framework Vote of No Confidence
Multiple Column Sorting with Drag and Drop using Scriptaculous
The other day I wanted to do drag and drop between multiple columns using scriptaculous. Allowing this behavior is extremely simple, but out of the box the interaction feels clunky. Here, we'll be going through an example of how to do multi-column drag and drop with scriptaculous.
Enabling multi-column drag and drop just involves setting a single option, but without setting a few other options the dragging will feel jittery and won't allow us to drop on empty areas. Also, interaction with the server will require a small bit of consideration to support persistence of any changes.
Topics: Javascript, Ruby on Rails, Scriptaculous
Flash 10 - FileReference Runtime Access
This is what I was waiting for - FileReference Runtime Access! To quote the original blog post:
"This greatly lowers the bar to using Flash as a photo editor, document manager, customized application experiences, marking up content and saving locally, all without the need for server side script."
And then: "It is only beta (Flash 10) but there are great market opportunities to prepare for when this launches."
Flash is just getting better.
Also, do check out the other great posts from http://drawlogic.com
Topics: FileReference, Flash, flash player 10
Papervision3d 2.0 (Great White) in Flex 3 (Part I)
I'm developing a prototype that loads GPS coordinates/time of flights from an external file into Flash player in a browser and renders them at runtime using PV3D over an interactive Yahoo Maps API.
This prototype is in part being used to test performance of Flash Player running the excellent PV3D. So far it holds pretty good.
Topics: 3d, Flash, Flex, papervision3d
Where is Flash at?
For some time now, I've been using the same site to see how much has Flash content advanced - www.thefwa.com
Topics: Flash, flash awards, User Experience
About Pathfinder
Recent
- Bullseye Diagram
- Roles Testing For Security
- Blackbird takes the pain out of JavaScript logging
- Making GWT JSON not Quite so Painful
- IDEA - preconference workshop 06 Oct 08
- HTML5, Ajax history management, and The Ajax Experience 2008 Boston
- A Look Back At Past Posts
- Flash Player on iPhone gossip
- Microsoft to Jump on Board EC2
- TAE Boston 2008: The Unsexy Presentations
Archives
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- July 2006
- June 2006
- May 2006
- April 2006
- March 2006









