You are currently browsing the archives for the News category


jQuery Mobile 1.0 Released

, the jQuery Mobile Team announced the official release of jQuery Mobile 1.0.

Having worked with jQuery Mobile since Alpha 1, in the time since, the framework has certainly evolved into a mature, premier platform on which Mobile Web Applications can be built.

On a personal note, as I am currently in the process of working towards the release of a multi form-factor Mobile Web Application built on jQuery Mobile, the 1.0 release couldn’t have come at a better time.

Be sure to check out the updated API Docs, especially the new Data Attributes section.

jQuery Mobile 1.0 represents a significant milestone in the Mobile Web Space. I am certainly excited to see what is on the roadmap next.

Map Remote in Charles

Of the many Network Debuggers available, for years I have, and continue to find, Charles to be a choice Web Debugging Proxy by all standards. This is largely due to its capabilities and many useful features, some of which are a bit less obvious than others.

One such example is the Map Remote feature which allows for the mapping of local URLs to remote URLs. This can be extremely useful as it allows for testing against many different environments without the need to change URLs or Endpoints in code.

Map Remote

As the name implies, Map Remote allows for mapping requests made to a local resource to be forwarded (transparently) to a Remote resource. So, for example, a local service at http://localhost:8080/some-app/some-service could be mapped to a remote service at http://dev.somedomain/some-app/some-service via a simple configuration using Map Remote. Moreover, Map Remote can be configured to map an individual resource (such as the previous example), all resources within a sub directory, all resources in a domain, all resources in a local subdirectory to a completely different remote subdirectory or all resources for a given suffix.

To configure the mapping of a local resource to a remote resource, in Charles, from the Main Menu select:

  • Tools
  • Map Remote
  • Click “Enable Map Remote” from the Map Remote Dialog
  • Paste the Local resource URL in the top “Map From” section (Charles will parse and auto-fill the protocol, port etc. from the host value provided)
  • Paste the Remote resource URL in the bottom “Map To” section

Once completed you will see the mapping in the resulting dialog and the mappings will be made when using Charles until they are removed or the “Enable Map Remote” setting is turned off. Additional Mappings can be added following the same steps and existing mappings can be removed or edited by double clicking on them. The only improvement I would like to see added is the ability to “clone” an existing mapping so as to quickly configure a slightly different mapping without the need to start from scratch.

There is also a Map Local Feature in Charles which is essentially the inverse operation of Map Remote and can be quite useful as well.

If you regularly test against different environments and use Charles then I highly suggest trying Map Remote. For more information, check out the Charles Documentation.

A Step Backwards In Usability?

I recently read a preview of a column which is to be published in the next addition of ACM CHI magazine, Interactions. This particular article is a rather interesting read in that it touches upon what the authors argue are the many short-comings in current Gestural Interfaces; stating that they pose a huge step backwards in terms of Usability.

This may not have raised many eyebrows if it were not for the expertise of the articles authors, Donald A. Norman and Jakob Nielsen; both of whom know quite a bit about HCI.

Experimentation in new technology and the process of learning what works and what does not can be challenging. This article raises some important, yet mostly overlooked, concerns surrounding new technologies which are built upon Gestural Interfaces; i.e. current touch screen devices such as iOS and Android. Certainly a good read for anyone interested in Touch Screen development. Gestural Interfaces: A Step Backwards In Usability

Put your Best People on Mobile

So first the biggest number – 5.2. That is in billions with a B. There are 1.2 billion personal computers in use worldwide including desktops, laptops and tablet PCs like the iPad. There are 1.1 billion fixed landline phones. There are 1.0 billion automobiles registered and in use. There are 1.6 billion television sets, 1.7 billion credit card users, 2.0 billion internet users, 2.2 billion people with a banking account, and 3.9 billion radio receivers in use worldwide. Mobile utterly dwarfs them all – with 5.2 billion currently active, ie fully paid mobile phone subscriptions. Active mobile phone accounts. 5.2 billion. yes, 4.5 times more mobile phone subscriptions than personal computers or landline phones. 2.5x more mobile accounts than all internet users. 3 times more mobile subscribers than the total number of television sets. Mobile is huge. – Tomi Ahonen

These numbers are simply staggering.

For sometime now Myself and pretty much everyone else for that matter have been speaking quite a bit about the significance of Mobile. And while it may seem quite obvious that Mobile is huge, understanding the sheer magnitude of Mobile is truly put into perspective when some real world comparisons are made.

To get an idea of just how big mobile is, consider the recent article published by Tomi Ahonen, (which I found thru Brian O’Connor) in which some rather astounding numbers are provided in his aptly titled post: All the Numbers, All the Facts on Mobile the Trillion-Dollar Industry. Why is Google saying: Put your Best People on Mobile?. Certainly a must read for anyone interested in Mobile Development.

Technological Innovations and the Arts

Successful innovators in sciences and technology are artistic people. Stimulate the arts and you stimulate innovation.

I have always maintained that any skill or talent acquired can be attributed in part to an innate creative impulse; be it to learn something new or build something new. I am sure many of you can relate to this: that never ending fascination and driving force which compels one to create. Ultimately, creativity is the driving force on which all software is based and, one could argue, on which everything is based.

Recently, I came across a rather interesting article on scienceblogs titled “The Art of Scientific and Technological Innovations”. The article describes numerous scientific and technological breakthroughs which are based on artistic concepts. These include breakthroughs in such fields as engineering, medicine, biology and more.

Certainly a good read for any UI Engineer. Also, for those who find the link between creativity and programming interesting, I highly recommend Pragmatic Thinking and Learning by Andy Hunt.

Fixed Comments Bug

It was recently brought to my attention that users have been unable to leave comments on my Blog for quite some time now. Exactly how long and the extent of which the issue has impacted users remains unknown.

The problem appears to have been directly related to an overzealous spam plugin which I have since disable. I have tested the fix and all appears to be back to normal; however, in the event you would like to leave a comment and find yourself unable to do so, please send an email to eric at ericfeminella.com and I will be sure to get back to you.

Special thanks to Jeff Guthrie for informing me of the issue.

5 Years…

This month marks the 5th anniversary of this Blog. A lot has changed in the time since and I am happy to say the future is looking brighter and more exciting than ever before.

My original and admittedly brief post was published back in January 2006, back when ActionScript 3.0 and Flex 2.0 were still in early Beta. In thinking of where the Flash Platform is now in comparison to where it was back then, I must say It really is quite amazing how far everything has come in these past five years, in every area.

While the content and subjects may have varied over the past five years, the goal of this site has remained the same, and that is to simply share ideas and experiences with other developers and, in doing so, hopefully make a positive difference somehow in some way.

So if you have found any of my posts useful in the past, then I am quite fortunate as I have accomplished my goal, and I hope to continue to do so in the future as well.

Domain Models and Value Objects

The other day a friend asked me what the difference between a VO and a Domain Model was, and when I would suggest using one over the other? Since I actually get asked this very same question quite often, I thought it would be useful to provide a brief definition in the context of the Flex idiom which could serve as a point of reference for others moving forward.

In general, it is much easier to understand what a VO is not by first understanding what a Domain Model is; therefore, I will begin by providing a general definition of a Domain Model.

Domain Models

A Domain Model is anything of significance which represents a specific business concept within a problem domain. Domain Models are simply classes which represents such concepts by defining all of the state, behavior, constraints and relationships to other Domain Models needed to do so. Essentially, a Domain Model models a domain concept, such as a Product, a User, or anything which could be defined within the problem domain outside the context of code. Domain Models promote reuse and eliminate redundancy by defining specific classes which encapsulate business logic, state and relationships. As the domain concepts change, so to do the implementations of the Domain Models.

Value Objects (VOs)

As the name implies, a Value Object, more commonly referred to as a VO, is an object which simply provides values. VOs are entirely immutable; that is, all properties of a VO are read-only and assignments to those properties are specified only during object construction; after which, the properties of the VO can not be modified and, by design, should not require changes.

VOs are typically used to provide an aggregation of conceptually related properties whose values describe the state of the object when instantiated and do not require any real concept of identity or uniqueness. While there are some edge cases (such as validation), more commonly than not, VOs do not implement any specific behavior. Conceptually, think of a VO as being nothing more than an object which holds a value or series of related values which describe something about the object when created. A typical example of a VO could be a UserLogin object which simply holds the values of the specified username and password when created. It is important to make the distinction between a VO and a Domain Model as, a VO is not a Model, but rather, a VO is nothing more than an object which holds values and could be used to describe any context.

And that’s it

Hopefully the above descriptions of both Domain Models and Value Objects will clear up any confusion surrounding the two concepts; ideally, making it easier to understand when to use each.

The point to keep in mind is that Domain Models simply model the domain, while VOs simply describe a contextual state.

Advanced Flex 4

This morning I received a copy of the new Book Advanced Flex 4, written by my friend Elad Elrom and Shashank Tiwari, with contributions by Charlie Schulze.

Upon opening the package and browsing the first few pages, I was quite flattered to read:

“I would also like to thank Eric Feminella who has inspired me, mentored me and helped me to become a better Flex Architect. I had the pleasure of working with Eric at Weight Watchers three years ago and I have found that Eric is one of the smartest, yet extremely humble, people I have ever met. He has a deep understanding in OOP, Architecting Flex apps, as well as RIA in general. Check his blog here: http://www.ericfeminella.com/blog/ and follow him on Twitter: @ericfeminella”

It is always nice to receive recognition for something; however, the real reward is in knowing you have had a positive impact on someone; especially when it results in helping to push the Flash Platform Forward – and Elad has certainly been doing just that.

The book covers an awful lot of ground – everything from Mobile Applications, AIR 2.0, Flash Catalyst, Data Service Integration, consuming Web 2.0 APIs, Flex Mashups, Audio, Video, 3D and more. I especially like the the Chapter on Flash Player Security. The book also appears to follow the theme of traditional software development best practices, that is, the first chapter is on Test Driven Development – test first. I highly recommend reading this book.

Advanced Flex 4

AIR for Android

As you may be aware, Adobe currently has a private beta of AIR for the Android Operating System.

Although still in it’s early stages, the core platform is quite stable and support from the AIR engineering team has been very good while the pre-release forums have also been quite active with lots of useful information being shared daily. In just a little under an hour I was able to have two POCs demonstrating the Accelerometer and MultiTouch Gesture capabilities running flawlessly on my Droid. Additionally, I was also able to develop a very basic Geolocation prototype in next to no time at all which accurately conveyed latitude / longitude, altitude and even speed. In the time since I have been focusing on real world applications and the results have been excellent for such early stages of the platform.

Some notable features I have been working with are: GPS, Accelerometer, Multitouch / Gestures, SMS/TEL URI Schemes, IME, S/W Keyboard, Screen Orientation, Screen Dimming, Menu/Back keys and more.

As the pre-release and my applications built on AIR for Android progress I will share my findings as well as provide open source APIs, code examples, videos and / or screen shots of the apps I am working on, so stay tuned for more information.