Archive for July, 2008
Liquid Nitrogen CPU Cooling
If it can stop the T-1000 (at least temporarily), then surely it can assist in the performance of our computers.
These young gentlemen at Tom’s Hardware apparently managed to get a 2.4GHz processor clocked up to 5.1GHz to set a new record.
Flex Spotlight: Streamzy.com
I came across this site the other day and instantly recognized the interface. I also recognized the fact that it had a lot of thought put into the way it was designed. It’s a small, minimalist interface under which you can achieve a lot.
The idea of Streamzy is that you enter search criteria into the box, it returns streaming music in audio OR video form, and you can add and manage playlists (and save these if you choose to register and sign in). And by “return” it’s not simply providing links, it will play the audio and video streams in their respective custom players.
Kudos to the makers of Streamzy, it’s a very easy to use and useful (albeit probably temporary, see: copyrights) tool to search music while hardly lifting a finger.
Footnote: I was impressed by what I thought might have been a custom Accordion control holding the content grids on the page, but it was in fact a WindowShade control courtesy of the flexlib library.
Workaround for Cached URL Images in Flex
Just this past week I had found myself wrestling with a Flex application that can crop images on the fly, and display in two different places and two different sizes, a thumbnail of the new image.
One of the biggest headaches in the process was Flash’s caching of the previous URLs when another one has been added in its place. Clearly this causes an inconsistency in ‘what you see is what you get’ (WYSIWYG). So I had to find a solution.
The Image component in Flex has a cachePolicy property (inherited from UIComponent) that will ensure the component’s bitmap values are not cached, but straight URLs are not affected by this.
However, I found a workaround after a good deal of searching the net, and poking and prodding through the nooks and crannies of Flex.
Initially I was going to generate a bitmap of every image brought into the application, but the overhead would have been outrageous, and the simplicity of the program is the service call to generate the new cropped image and return the URL. But it turns out that by adding a random-numbered query string to the end of the incoming URL, the extra value will force the retrieval of the new image.
It worked like a charm, and the only drawback is that all images, changed or unchanged, are re-retrieved with every refresh of the display (in my case, when a component is set to visible, it makes a service call to populate data).
In my case, the value for the URL is kept in in a value object and in the get accessor for its value, I did the following:
1 2 3 4 | public function get urlValue():String { return _urlValue + "?" + Math.random(); } |
Lessons in Graphical UI Design
Developing an application to administer content on a site or internal web application is relatively basic. You have a set of functional requirements sitting in front of you and the tasks to complete them are often straightforward. In a web-based PHP or ASP.NET application, the possibilities in arrangement of controls and convenience for the user are fairly constrained. They need to fit in a standards compliant way and in a good application, there needs to be as few page loads as possible. In a Rich Internet Application (RIA) using Flex, we can utilize Flash to build an interface in practically any way we want and allow as little or as much to be shown to the user at one time. Understanding the resources to accomplish this may be difficult, however.
A few things need to be considered when developing the user interface for the RIA.
First, finish developing the functional requirements for your application. Don’t start rearranging and skinning components that might lose their usefulness or be removed entirely by the end.
Second, you need to know your audience. The users of your program are the ones that are going to be using it the most and you will need to cater to whether they are skilled computer users, novice, or a mix of all types. This will help determine the complexity of your screens and the “lingo” you might use.
Third, research the “common method” for developing a user interface with the tools that you’re using. In the case of Flex, there are a series of subclasses on the Container class which are used to order and arrange child components in a meaningful manner on the screen. Classes like Accordian and TabNavigator can be crucial in organizing many different components into one area.
And lastly, and most importantly, take the time to actually use the application. I don’t know how many times my perception of a design (or lack thereof) has changed after actually sitting down and going through the motions on the application as if it were my daily routine.
It also really helps to sit down with an end user or a stranger to the design and go through a mini-training session. Within the first 20 minutes of this process you will immediately know what is going to be used the most, and what will be used the least. This can greatly help the manage the appearance of these controls by prioritizing access to them.
Domestic Abuse PSAs: It’s all in the delivery
There are a couple of Canadian Public Service Announcements that were released by an organization called Home Front that use an extreme circumstance to illustrate the fact that physical and emotional abuse is unacceptable against strangers, and therefore the logic is that it is unacceptable against those you love.
Obviously, the message here is very serious; domestic abuse is wholly unacceptable in this day and age and there is no excuse for it.
However, the skits in the videos released by Home Front to illustrate this dramatic message are so completely unpredictable and outrageous that it’s downright hilarious. Here they are, full of comedic shock that would’ve made even George Carlin blush.
A Journey - Part 2: Unit Testing with Cairngorm
In a previous post I gave an introduction into the complete 180 I’ve done in the web development industry and where I’ve found myself now, and it’s a pretty good place. There have been some mighty challenges, but I feel I’m breaking fairly new ground in the department of Cairngorm asynchronous unit testing. At least, that’s what the results in a Google search would have me believe.
So to continue, I’ll elaborate in more detail about how I accomplished my tests:
- In my case, the commands were not separated into service delegates and a delegate is imperative for Cairngorm unit testing
- Follow these steps for modifying the FlexUnit source code to assist in giving your delegates a valid
IResponderto work with - Build a service component (in our case,
/business/Services.mxml) that includes RemoteObjects for your amfphp services - Build a test suite as per the FlexUnit documentation or a great blog entry here from Darron Schall - extremely helpful.
- Create a test model class and use it to store values as a private variable in the test class will be cleared after the
tearDown()function is hit (regardless if you’ve specified any variable cleanup) - Build a function in your test suite to call a service from the delegate.
A few things should be kept in mind at this point, you will want to use the IResponder interface in place of Responder in the Cairngorm documentation. This will assist the unit testing process and in turn simplify your test assertions in the test suite. Therefore, in your test suite (which implements IResponder) you will have a result() function where you can run assertions on the service call you just made.
For instance:
1 2 3 | private function result(event:Object):void { assertTrue("Expected a true result.", testModel.var == true); } |
In the event the variable returns a false, the test runner will display a failure message. Otherwise, it is a passed test.
One suggestion for verifying true data rather than just existing data in the model, is to create an object and force it to have the values the service call should return depending on the parameters sent in, which is something I am likely to implement in the near future.
It sounds like a bit of a hack to hardcode a set of values that you know will exist somewhere, but considering the tools available it appears to be the best course of action. I’ve tried a variation on the FlexUnit package called dpUint but found that it wasn’t much clearer on proper implementation for my exact needs.
If there are any Flex developers that have some experience doing exactly this, feel free to let me in on the big secret. Beer’s on me if you can make my job easier.
Incident Reporting to RIAs: A Journey
Introduction
In February 2007, just a few months after earning my BSc., I was hired by a local custom software development company to assist in the development of several large-scale applications for the international airport, as well as enhancing an internal item-tracking system with ASP.NET. Using ColdFusion, MS SQL, and the Model-View-Controller architecture it was my duty to help build applications that either managed money or managed incidents. It was a massive learning experience that I had thought weathered me to the storm of professional software development. However, when the company closed its doors over a year later due, I became quickly aware of how very little I had scratched the surface.
After several intense and interesting interviews at several different organizations, I pursued one position which preferred me to specialize in PHP.
Having only seen PHP and never utilized it, I was apprehensive about pursuing the choice. However, after two interviews and a telephone conference later, it was clear to me they found more interest in me than just my passing knowledge of PHP, but rather in my experience in Object-Oriented Programming (OOP).
A Whole New Can of Worms
Day one on the job opened up a Pandora’s box of research, troubleshooting, and headaches. I was assigned as an Adobe Flex developer. My requirement was to design, maintain, and enhance an administration tool for a high-profile website in tandem with another developer who was much more experience in the architecture and ActionScript than I was. The most I’d seen of Flash development was at least five years ago and I made a ball roll across the screen. Needless to say, programmatic development in this language was alien to me.
The most challenging part about this new position was a few things:
- The job centered around a single site and proposed future sites
- I had never developed any sort of graphical Flash application or otherwise
- The usefulness of knowledgeable people was sadly stunted by over-inflated egos
Challenges aside, I toughed out the first month and suddenly found myself really getting the idea behind graphical development. Funny enough, learning the language was the easiest part of the transition, it was everything else that was difficult.
Developing a flash-based image cropping tool was probably the biggest mouthful I’d had to digest in my professional career. At my previous job, there was hardly a task I would’ve had to scratch my head over by the time of my departure, and now in the first week of this one I’ve got the biggest head-scratcher a head’s ever seen.
Once the tool was developed it was integrated into the Cairngorm architecture of our Flash application (a relatively simple MVC system which simplifies scalability), and I was onto my next task.
Unit Testing as a Pioneer
Show of hands on who’s developed unit tests for an application? (probably a good number)
Show of hands on who’s developed unit tests in Cairngorm? (probably a much smaller number, but thank God for FlexUnit)
Show of hands on who’s developed unit tests in Cairngorm to test asynchronous service calls via amfphp? (Oh god, am I the only one?)
Needless to say my next task was nearly as trying as the first, but I was determined to make it happen.
For anyone new to Cairngorm and especially to the idea of testing asynchronous calls to a service, it’s important to remember that not everything anyone else says is right for your application. I’ve tried numerous methods in order to get a proper test done and only after about 3 weeks was a half-solution decided upon.
First and foremost, read through every word of Steven Webster’s starter guide to Flex and Cairngorm and familiarize yourself with the setup, and be absolutely certain you’ve followed his guidelines for developing your application. The next step is to grab FlexUnit, a wonderful testing suite written by the good folks at Adobe to help test-driven developers like myself build a better system.
Once FlexUnit’s installed, look at your code and commence the head-scratching.
Look to part 2 of this entry for some actual code and suggestions to assist your testing needs.
PC Game Review: Assassin’s Creed
As an avid user of GameSpot at the very least to read reviews, previews, and watch exclusive trailers for upcoming games, I’ve reviewed a handful of games there as well. The following review is one that I posted there and will cross-post here for the readers of everynerd.
Like many other people prior to the November release of Assassin’s Creed for the major consoles, I was completely caught up in the hype surrounding this game. Not being an owner of any of the consoles, I was forced to watch tech demos and reviews as they spilled out after its release just before Christmas.
I’m patient, however, and after a few disconcerting delays for the official release on computer, the game was unleashed for us PC enthusiasts and those of us with hefty rigs were drooling at the thought of a game like this sink our time into.
The wait was worth it.
Initially when the game takes you through a tutorial, the controls and the explanations seem overwhelming and difficult, but as you get comfortable in this new dynamic it all becomes second nature.
One of the most attractive aspects of the game in trailers and previews was the ability to interact with all environments through climbing, jumping, hanging, and of course the intense interaction with the crowds of people. And the game surely delivers. The ease at which you are able to scale gigantic buildings and leap from rooftop-to-rooftop, beam-to-beam is highly engaging and never gets dull.
The fighting system is also a real treat. Unlike some other actions games, when you find yourself locked into a battle with 2 or 3 enemies, it can be pretty intense. When 4 or 5 more walk by and get drawn in by the chaos, however, it’s usually game over - but not in this game.
There’s a certain sense of confidence and fluidity in the fighting system that makes these battles a massive pleasure to be a part of. And as the game progresses you keep acquiring more and more tools for your arsenal, including new techniques for defense and offense.
As Altair, the main character (or rather the main character’s ancestor — it’s a little complicted, you’ll see), its your mission to utilize all of these abilities to gather information, complete tasks, save civilians from pushy guards, and eventually assassinate your mission’s target. Although it requires only 3 out of 6 investigations to be completed to get to the assassination phase of a mission, it’s more than acceptable to get them all (and obviously a huge amount of fun, as some are very challenging later in the game).
As well, save as many civilians as you can. In return, the more you save, the better your reputation among the citizens will be and in turn rewarded with vigilantes which will block pursuing guards, or groups of monks in which you can blend in to.
Graphically this game allows a sliding scale and can run just fine on a mid-range computer on medium settings, but if you have the horsepower it’s a treat to crank everything up all the way.
The sounds are also wonderful, and change to fit your surroundings either in the marketplace, near the churches or mosques, and even if you are climbing higher up out of range of the streets and into the open air. There are some minor glitches in sound on the PC that might result in lowered conversations between some characters but there are workarounds in the help files.
The keyboard controls for this fit like a glove, the typical wasd and mouse interaction while a little unorthodox at first (key combinations mostly) will become almost involuntary after playing for a while.
Some quick hits on the best parts and the not-so-best parts:
What I love:
- Climbing, you can climb anything as long as there’s a hand/foot hold.
- Fighting system, never gets boring and by the end you will crave even more.
- Voice acting - Altair is the weakest link, but the supporting cast is brilliant, I’ve found myself craving more.
- Graphics/Sound - If your PC can support it, rock this game on the highest settings - you won’t be disappointed.
What could change:
- Explicit ability to skip “cut scenes” - even though the cut scenes are real-time and even a little interactive, replay value grinds to a halt under the realisation that you can’t escape out of monologues or events that you’ve already watched.
- Travel system - after you’ve been to the cities you are given the chance to quick travel to these locations once you hit a certain spot in Masyaf (your home city), either out of the fortress or out of the village. But for the life of me I could not find any other way to trigger this menu, and bombing through the city to try to trigger it again was a little cumbersome.
- Travel system part 2: Once I was able to quick travel, I decided to forgo any other long distance travel - even to get more eagle towers and flags. Even the first time to these places, I pushed the horse to a sprint and gave zero attention to the guards ready to chop me to pieces. A “blended” trot through this much land was far too time-consuming when all the real fun is in the cities and not the outskirts and in betweens.
*** Please note: these criticisms are very low on the “how it affects your gameplay” list, just to put it into perspective. They are merely afterthoughts that prevented a game from achieving perfection.
Overall let me put it this way: It’s been a very long time since a single player game has pulled me in and kept me immersed into a storyline and a game play dynamic such as this, to this degree. I can only pray that there is a sequel to this game as there’s no doubt it’s deserving of one.
Rating: 



5 out of 5 stars
Album Review: Ladyhawk - “Shots”
As a first-time reviewer I felt it was important to pick something fresh and new to me, and Ladyhawk’s Shots is the perfect case of that.
I was introduced to the band during a camping trip for the Canada Day long weekend, as a good friend of mine who collects hordes of independent artists, mainly from Canada, was playing them along with Okkerville River and immediately became enamored in both.
After spending about a week delving into as much Okkerville River as possible, my attention was soon taken away when picking up Vancouver band Ladyhawk’s Shots.
The first song instantly grabs the listener’s attention, it takes a few seconds to get going but once it does, it’s a spirited anthem of crashing and banging. However, high above it all screams what I imagine is a keyboard singing an almost eerie melody, which subsides until the next chorus.
Duffy Driediger, lead singer and guitarist, has a great voice that hits the middle range of tones and matches perfectly with the rough and tumble style of guitar and rhythm. It’s one thing to have a powerful rock sound, but it’s another thing to have a singer that beautifully compliments it and adds even more passion to the already voltaic energy being exuded.
The album takes a break from the intensity of rock and roll for a couple of slow songs starting with I’ll Be Your Ashtray followed by the serenely melodic Faces of Death. Afterward, the listener is treated to a love song of sorts called Night You’re Beautiful where the singer professes his love for nighttime.
A rock album just wouldn’t be the same without a 10 minute epic and Ladyhawk serves up a good one with Ghost Blues which comes in at 10:37 in length. Don’t be fooled though, it’s not ten minutes of the same song, it shifts gears about two-thirds of the way through and grooves us all the way out.
The albums ends how it started, with an high-tempo signature song called Different Beginnings which features during the chorus another eerie melody performed by the keyboard, and there’s no doubt by the end of this song the listener is left wanting more.
Their previous self-titled album is something I have yet to pick up, as Shots was the album I was introduced to and immediately fell right into it. Expect a full review of their debut album as soon as I can find a copy of it.
Ladyhawk’s Shots is a monument of Canadian independent rock and this is an album that no one should miss.
Let Me Be Fictional: A Documentary about Ladyhawk
Jon Lajoie’s Latest: Show Me Your Genitals
For anyone new to Jon’s work, this might be a good place to start. His music talent is surprisingly good considering he’s leveraging it solely for the purpose of comedy.
The new video, Show Me Your Genitals, looks to parody that goofy era of rap in the early ninties where graffiti meant there were bad dudes nearby and the bright, silly colors represented … poor clothing choices.
Check out the video below, and also give his crude Flash website a gander too. Not to criticize though, as I believe it was intentional.


