August 2010
3 posts
4 tags
Builder pattern is so easy in Robotlegs
The Builder Pattern is a breeze in Robotlegs
public class ConcreteWidgetBuilder implements IWidgetBuilder {
[Inject]
public var injector:IInjector;
public function buildPart(parameterised:IThing):IWidget {
var widget:IWidget = injector.getInstance(IWidget);
widget.param = parameterised;
return widget;
}
}
Parameterized builder
If you want to control what gets instanced...
5 tags
Visfleet's Radiator (v 0.0.1)
I started a project not too long ago to implement an information radiator here at Visfleet. The first milestone has been reached: Show the status of important Hudson builds
And here it is:
The source is on github
I started out with the intention of using Flex 4 skinning to make a super-modern, slick looking radiator like Panic’s. But somewhere along the way I ended up with a two...
2 tags
Best practice for Ruby's require
Ruby’s require method gives you more than enough rope to hang yourself. Having now implemented too many projects with too many different approaches to using require, we thought it was worth writing down the conclusions we’ve come to.
We’ve gleaned most of our knowledge from these two articles, here, and here. So a big thank you to their authors.
How to require
Do use...
July 2010
3 posts
Another performance tool for AS3 →
Elad's performance monitoring tool for flash →
2 tags
Mediating ItemRenderers, Again.
I’ve posted about this before.
I still have no shame about mediating ItemRenderers and to my happy suprise, Flex 4 makes it simpler with the spark.ItemRenderer and its dataChange event.
Here’s my base prescription in sample form:
Now you and I both know it can be a lot simpler to achieve the same, namely:
Why mediate, it’s so simple? Well the reason is simple too. Things...
June 2010
2 posts
Postgres routine (and not so routine) maintenance
Postgres is our DB of choice. We run all our vTrack and vWork systems on it.
We have lately been developing data archiving and culling strategies to manage data growth and disk consumption.
I’ve found a few hints that are best shared.
Culling Old Data to Recover Disk Space
The initial thought is to perform a quick delete of the old data, a-la:
DELETE FROM table1 where date < [some...
3 tags
Useful Rules and Guidelines
In our complex lives, rules and guidelines help us avoid rethinking everything that crosses our paths. Rules are the outcomes of pattern recognition.
We recognise repeating or similar stimulus in the world, and our ‘understanding’ of these stimuli is a “rule”.
I’m not quoting anyone here, and I may be oversimplifying the case, but I think this is a reasonable...
May 2010
3 posts
6 tags
Ascending the Ivory Tower is good for everyone.
I attended the Flash And The City conference last week. It was an amazing experience and I met some of my personal Heroes. People who make the effort to popularise good software, good design, good tools, and good practices.
Sometimes I don’t see eye to eye with them, but I still respect anyone who puts themselves out there to be criticised so willingly :)
Funnily, a term started...
4 tags
RSpec Style Unit Testing with FlexUnit4
We’re still early into our TDD for Flex program, and I am trying to learn “how” to write useful tests while not getting bogged down in any extremes, at least not until I understand it better.
I asked our CTO who is an accomplished ruby developer to guide and mentor me a little. He prefers to use RSpec for Ruby development. RSpec is designed for “Behaviour Driven...
4 tags
April 2010
1 post
2 tags
IntelliJ my Love
An un-poetic ode to IntelliJ. Will be amended continuously.
Auto-completion in comments
Iteration Live Templates
You type ‘iter’ and you get a live template:
for each (var object:Object in myColl) {
}
And a caret over ‘myColl’ letting you pick from accessable itterable types.
Nice!
Color swatches when it “sees” web color strings
Take a look at this...
March 2010
7 posts
3 tags
Robotlegs Plugin for IntelliJ
So I started a little plugin a few days ago. I’m writing it for IntelliJ and it’s designed to make your life a little simpler, letting you navigate between classes with known ‘Up’ and ‘Down’ relationships in Robotlegs MVCS. Eg, The view is “Up” from the mediator and the service is “Down” from a command.
IntelliJ is really cool.
Apart...
Mount VBox shared dir as normal user in Linux...
Rash wanted to mount a shared folder between his Windows desktop and a Linux guest running inside Virtual Box on said desktop.
He also wanted to be able to own and write to the mounted shared folder as himself, ( aka non-root user).
The syntax to put into /etc/fstab is:
[shared folder name] [mount path] vboxsf uid=[uid],gid=[gid],dmode=0755,fmode=0755 0 0
In Rash’s case this...
Flash Platform Users Group
VisFleet sponsored the Flash Platform Users Group lastnight. Thanks to the guys and girls of the group for a good night and interesting talks.
And here’s some pics:
Rash taming Flash code into crafted code
Vinnie wowing the audience with 3D in the browser
Flash Platform User Group - Thursday @ 6PM at...
VisFleet are sponsoring the next Flash Platform User Group meeting this Thursday @ 6PM at VisFleet’s offices. Our own Rasheed is giving a talk on the popular new Flex framework (RobotLegs).
To register, RSVP here:
http://aucknzfpug.eventbrite.com/
All welcome. Pizza and beer will be provided. Should be a good night.
Talks:
Rasheed Abdul-aziz. Rasheed will be wowing us with the...
List Model-Service Architecture with Robotlegs
EDIT: Stupid post. I don’t know how I got it into my head that VO’s needed an abstract factory for testing. They’re Value Objects! Without the Abs-Fac we don’t need ‘IVO’ and we can implement multiple interfaces because the concrete interface is all that our system needs. Sorry if I wasted your time with this drivel.
I’m currently looking at our...
7 tags
On Robotlegs UI Architectures
There are now Caveats to all my posts.
I am considering everything in this post from the point of view of a N-Tier RIA developer’s point of view.
The Robotlegs MVCS presents a myriad of ways you can work with your tiers, without adding one line of extra framework code or departing from the Best Practices. Then there are the few presentation model mods I’ve seen around, such as Elad...
4 tags
Verbose is a dirty word
I’m not saying verbose should be a dirty word, just that it does have a pejorative meaning. If you’ve used *nix command line tools often enough, you’ll know that -v is often used as a flag for “verbose”. This usually ends up in some useful information coming out of the log or stdout. -vvv usually means “very verbose” and too much information pours out to...
February 2010
2 posts
Install pg gem via Bundler on OSX Snow Leopard
I encountered three problems installing the Postgres ruby gem (pg) when using Bundler to install all the gems for a project on my OSX Snow Leopard 10.6 machine.
Firstly, the gem fails to build on Snow Leopard when you use the binary version of Postgres that is distributed by Enterprise DB. To work around this, the Postgres binaires need to be installed using Mac Ports.
Secondly, the pg gem...
4 tags
Mediating ItemRenderers
ListBase, what it is and is not.
The ListBase classes are containers. In their simplest form, they mimic a typical OS list. In this capacity they work fairly well, and I see very little reason to mediate ItemRenderers. But they can be used for things far outside the scope of a typical list. This other use, I will refer to as the “Optimised Continuum Container”. Cool name eh?...
January 2010
3 posts
Debian Squeeze Kernel for Ubuntu 9.04 XenServer...
Squeeze, the testing version of Debian ships with a more recent kernel which works well on a XenServer 5.5 guest. The version is 2.6.30-2-686-bigmem.
I am evaluating whether this is a stable kernel for use under Ubuntu Jaunty 9.04. Up till now the best kernel has been 2.6.26-2-xen-686 from Debian Lenny. However, this older kernel has known issues which I am keen to avoid.
The newer Squeeze...
Citrix XenServer: Debian APT Repo Public Key
Citrix have a APT repository which provides a para-virtual kernel and some guest tools for linux guests on XenServer.
The repo looks like this in /etc/apt/sources.list:
deb http://updates.vmd.citrix.com/XenServer/5.5.0/debian/ lenny main
deb-src http://updates.vmd.citrix.com/XenServer/5.5.0/debian/ lenny main
On a default deploy, the public key for the repo is obviously not added...
Ubuntu 9.04 + PSP + Firmware Updates on HP DL380...
PSP Install
We prefer to use Ubuntu on our production servers for all kinds of reasons. With this choice however usually comes a lack of vendor support (because how can a Linux distro be enterprise if you don’t pay money for it?).
The ProLiant Support Pack (PSP) provides a whole bunch of great software which helps with server management. I especially needed to update the firmware on our...
November 2009
1 post
3 tags
Robotlegs. What I'm falling in love with.
Background
I just thought I’d comment on my latest endeavor at Visfleet. I’ve been a little worried about my cobbled together framework for our Flex codebase. It was designed and added too from the day we started with Flex 2 and hasn’t had a proper review since. It works, and we have workable code, but I find that the developers here have the same trouble using it over and over...
October 2009
2 posts
3 tags
Flex State Machine Release 0.1
http://github.com/visfleet/FlexStateMachine
I’ll call this the first release :)
Flex state machine is my attempt at getting a domain specific language (DSL) for state machines into Flex.
It’s missing a vital ingredient (to my mind), which is the ability to mix events and ‘cans’ (State events, not the Flex observer pattern) into another class instance.
The kludgy:
...
Someone else trying to build IPhone apps with... →
Looks like Mike Nachbaur has gone a fair way further than I have. I’ll still complete my article series when we get to the app store steps, but I might be borrowing plenty from Mike’s article :)
August 2009
3 posts
Flex Third Party Libraries in Multiple Projects
I don’t know the answer to this. I need to though. This is what I need to do.
An existing project structure.
We start with:
LibProjA is a Flex Library Project
AppA is a Flex Application Project [LibProjA]
[ dependencies in square brackets]
In reality we have a lot more LibProjs and a few Apps.
Along comes a great library that we must have.
I’ll use a real example:...
4 tags
Add Hoc IPhone Distribution and CI (pt 2)
Here I propose the final process for our team to add a device to the ad hoc provisioning profile and getting it into our CI system (Hudson, still rocking). This process is not what I would like it to be, just the best I can hope for.
Locate the device UUID.
As you only get 100 changes to the distribution profile per year, it’s not a good idea to get the UUID wrong. So rather than manually...
5 tags
Ad Hoc IPhone Distribution and CI (pt 1)
What I need to do
Build our IPhone App
Build it using Continuous Integration (Hudson Rocks)
Follow Agile, deploy often to customers to get feedback and to keep them as up to date as possible.
Our customers don’t typically use a portal (like app store) to find us, we use ‘traditional’ sales.
Which deployment?
App Store?
We’ll need the app store, at some point.
...