Ernest Micklei's Blog

things I create and problems I solve, to remember and share

Amazon Web Services Test Drive Needed

Designing and implementing applications that make use of Amazon Web Services such as S3, SQS and SimpleDB, require extensive testing to ensure a robust integration. In addition to scenarios for the “happy flows”, test scenarios should be created to handle the critical exceptional situations. How does my application respond to failures in communication, checksum errors, service unavailability, never ending transactions and extremely frequent or heavy traffic? In the spirit of test driven development, I see a need for writing up such scenarios and simulate the unexpected behavior of AWS just to verify the correct handling of each exceptional event.

Flex Project version and buildnumber

I wanted to associate version and build information with every compilation of a Flex project. Such information is useful when deploying to different staging environments (e.g. are you sure you uploaded the correct SWF ?) and helps tracking feedback (e.g. bugs) from users using a particular build. First, I added a simple resource version.xml to store version and build info: <?xml version='1.0' encoding='UTF-8'?/> <version name='0.1' build='124'/> Then I defined a component Version.

Deploying Flex using Capistrano

Capistrano is a deployment tool initially created to support the remote installation of Rails applications. One of the assumptions Capistrano makes is that the application (source) can be pulled out of a source code management system such as Subversion. In case of Adobe Flex applications, compiled sources (SWF,HTML,…) need to be deployed to the Web server. So instead of pulling sources from a repository, I needed to push compiled code to the server.

QuickSilver and Current Application

On a Mac, accessing the current application from QuickSilver provides interesting new possibilities as can been on an episode of the Merlin Show. If you agree that this is something you wanted all along, then follow these instructions to set it up. (Thanks to BOONE). In QS prefs, make sure “Enable advanced features” is checked In QS Plug-ins, enable the User Interface plugin In MacOSX System Preferences–>Universal Access, check “Enable access for assitive devices” In QS prefs–>Catalog–>Quicksilver, check and reload “Proxy Objects”

Flex Bindable Hash

For the Dunelox library, I needed a simplified Flex version of the Spring ApplicationContext which is a generic Hash object containing model objects accessed by a key (String). Visual components that are wired to these models objects need to be updated automatically using the standard event mechanism in Flex. So, I had a look at the standard ArrayCollection to find out how it notifies components that are wired to elements by index.

s3browse.com

For some time now, Amazon S3 Web Services are available to the developer community. Since its inception, several client solutions made their way to the public. S3Browse.com provides both a simple Web Interface and a Java Web Start based client to your S3 accounts. The web client is typically used to create and browse your bucket contents. The Java client is used to upload large files or a large amount of files.

Helper classes considered bad OO

Too often developers put logic in so-called Helper classes. This practice of SPOD (Single Point of Definition) results in a higher level of reusability, so it seems. But in fact introducing these procedural structured behavioral methods impose a rigid structure. First of all, (other) developers need to be aware that such Helpers exist to work on their objects. Secondly, because behavior that should have been defined in the class of the object, is now defined elsewhere.

Application Diagnoses Itself

How can I provide programs with self diagnostic behavior? How can I implement this in a way that has low impact on the way I write programs (or Java classes to be more specific). If programs could run such a self diagnose then perhaps it takes less time to find the cause of an observed problem. These thoughts are sprung when I found an error in an application that went into production just a few days earlier.

Don'ts

Another example of how negative publicity can have a big learning effect (if understood). From a new entry @ slashdot about Multi-links, I surfed to WebsitesThatSuck. The authors are committed to show the worst designs that live on the web. With respect to Software Design, my dialy work, a similar initiative has been around for a few years. In response to the popular Design Patterns book written by the Gang of Four, others introduced the Anti-Patterns as a means to teach designers about the dont’s in the design of systems using Object Technology.

about

Who am i Software Artist that loves programming, cloud, music and graphics.