.dot notation meditation 0

Posted by admin
on Tuesday, April 20

I find this relaxing..

Take a problem space and map it out as a directed graph.

Connect bits (nodes) together, one connection at a time:

Red -> Green; Green -> Blue; Blue -> Red;

connects these colours in a triangle of associations. Other connections are possible.

Last Friday. My day off. My unpaid, day off work.

I was thinking about work…

I was thinking about all the things that go into a platform.

And I ended up thinking that a platform was no more than a series of related decisions

And it all got too weird and wolly.

But before then, I chilled out with this:

digraph g {
node [shape = record,height=.1];
service_stack;
servers -> service_stack;
onsite_servers -> servers;
hosted_servers -> servers;
physical_servers -> onsite_servers;
virtual_servers -> onsite_servers;
virtual_servers -> hosted_servers;
native_operating_systems -> physical_servers;
os_x -> native_operating_systems;
win -> native_operating_systems;
linux -> native_operating_systems;
virtual_operating_systems -> virtual_servers;
linux -> virtual_operating_systems;
java_vm -> os_x;
java_vm -> win;
java_vm -> linux;
community_java_projects -> java_vm;
community_ruby_projects -> jruby;
community_rails_projects -> rails;
java -> java_vm;
jruby ->java_vm;
rails -> jruby;
web -> rails;
mobile -> rails;
android -> mobile;
iphone -> mobile;
mobile_web -> mobile;
connect -> rails;
}

It doesn’t represent something real – just some thoughts. Note the weak spot.

If I can figure out why mephisto aint letting me get to assets then I’ll post the rendered version up. Otherwise, please use graphviz.

JRuby Gem install IO Error on Windows 7 0

Posted by admin
on Tuesday, April 13

Oh, I love being back in Windows land. Trying to get JRuby 1.4 working under Windows 7, I got this error when trying to install gems:

ERROR:  While executing gem ... (IOError)
  Access is denied

Seems that the JRuby installer sets permissions on the installed files that prevents the logged in user from modifying anything.

To get around this I set the permissions on the gems folder to allow the interactive user to make changes, basically giving full read-write access to local users. The location may vary on your box, but on mine it was here:

C:\Program Files\jruby-1.4.0\lib\ruby\gems

Some gems want to create links in the JRuby \bin file (Rails is an example). This requires setting more permissions, in my case here:

C:\Program Files\jruby-1.4.0\bin

And just to be safe I did the same thing for \docs:

C:\Program Files\jruby-1.4.0\docs

Now Rails and other gems install without any hassle. I still want my bash shell back..

Redmine on Linode - Part 1 0

Posted by admin
on Friday, April 09

What a crazy day.. nothing better than coming home from a mad day at the office, slaving over a hot Windows PC, and sitting down comfortably in front of a unix terminal to chill out.

We’re incredibly disorganized around the house – many, many little projects that we just seem to lose track of. Ditto for my business. Setting up a project-management tool as a mean to get things happening seemed like a good idea.. but I never seemed to find the time.. :)

I’ve tried running Rails apps on Dreamhost but they always seem to run like a dog. No offence to DH – the shared hosting is brilliant for static sites and seems to run PHP really well. But Rails always seems a bit tricky. And given that I tend to want to play with more exotic setups for Rails I really wanted something I had more control over. I looked around and at the bottom end of the VPS market most of the offerings seem pretty similar. In a toss-up between Slicehost and Linode I went with the latter purely because of some good press I’d read (and now cannot find.. maybe I dreamt it).

With a freshly-minted Linode server running, I set up a clean install of Ubuntu 8.04 LTS to finally install Redmine on to. I tried setting up Rails using one of Linode’s handy-dandy scripts, but I couldn’t get it to work. Everything seemed to go OK with the script, but it failed to install Ruby (the whole point of me running it). I probably did something wrong, but the whole thing was a bit magical. I’d rather take personal responsibility for screwing up the server.

A quick googling found this excellent article for setting up Ruby on Rails, Nginx, etc. A couple of the links need to be updated, but all-in-all it worked a dream.

As per the instructions from the Inveigled Software dude (or dudess) I got the latest version of Ruby Enterprise from here:

wget http://rubyforge.org/frs/download.php/68719/ruby-enterprise-1.8.7-2010.01.tar.gz

And modified all the references to the Ruby Enterprise source.

The nginx initialization script has escaped " and & tokens all over the place, and these have to be replaced with ” or && respectively.

Went through the rest of the instructions and had an Nginx install working in minutes. So far the whole Linode experience has been a good one. Next step, getting Redmine installed and running..

The Moral Ambiguity of Power Miners 0

Posted by ferrisoxide
on Monday, January 04

The Power Miners sets pit Power Miners against Rock Monsters in a race to collect Power Crystals, a source of food for the Rock Monsters. The Rock Monsters consumption of the crystals has the side-effect of creating catastrophic earthquakes on the surface, hence the Power Miners drive to collect all the crystals before the monsters cause more city-leveling destruction.

It's hard to see who the bad guys are here. Both "sides" are working under their own agenda - trying to survive the world they live in and only brought into conflict because of a limited resource (i.e. the crystals) that both groups want to control.

It's interesting to note that the Power Crystals have no direct value to the miners - they are only valuable through restricting the monsters access to this food source. It doesn't appear that any other avenues have been explored for reducing the damage caused by the Rock Monsters, though arguably the opportunities for negotiation are limited by the Monsters' apparent thuggish stupidity - plus a Lego set where Miners and Monsters sit down to hammer out an agreement over Power Crystal access-rights would have little appeal to series' key demographic.

The problem of which group is in the "right" is problematic on several levels. First off, the Miners are clearly the invaders - entering the domain of the Monsters with the intent of limiting their food supply. Deliberately starving the Monsters raises an awful moral dilemma, trading the lives of the Monsters against the lives of humans unfortunately affected by the Monsters eating habits. If we give no agency to the Monsters then it's no worse an issue than having to deal with aggressive animals - humans simply would not have survived if they tolerated human-killing creatures, and the decision to limit the Monsters' diet (and population) is no different than humans protecting themselves against sharks or lions.

But clearly the Monsters do have some form of agency. They have characteristics that could be defined as human, and they - or at least the Firox - engage in guerrilla-like tactics than indicate a high level of intelligence. This brings into question how aware the Monsters are of the damage they are causing, and potentially how deliberately the earthquakes targeted human cities. Without knowing the true motivations of the Monsters the issue of finding an equilibrium between Monsters and Miners is complex at best.

Similar themes are explored in the Mars Mission sets, where Astronauts and Aliens vie for control over crystals needed by both parties to power their vehicles and other equipment. In these sets the behaviour of humans is more easily characterised as suspect, with the Astronaut capturing and imprisoning Aliens. Yet the very inscrutability of the Aliens, coupled with their willingness to attack human mining outposts, obscures the question of whether the Astronauts' response to the the conflict with the Aliens over crystals is valid self-protection against a hostile foe or one of anthropocentric militancy.

I asked my five-year old who he thought the baddies were in Power Miners. Without hesitation he said "the Monsters". When asked why he seemed a little more troubled, thinking it over for a while before he responded with "because the Miners know something about the Crystals". Completely in keeping with the back-story, yet at no point did he address the long-term effects of the Power Miners activities on the Monster population. Typical five-year old.

One of the new Power Miners sets for 2010 - the "Lavatraz" set - will see the Miners attempt to capture a Lava Monster is a water-cooled trap. If they are successful, and their efforts aren't foiled by a subsequent "Escape from Lavatraz", then perhaps we will see some genuine opportunities for dialogue created - albeit between captive and guard. And if hot-heads on both sides are cooled - both figuratively and literally - then maybe concrete solutions to the rivalry between Monsters and Miners can be found and a real, lasting peace can be created.

We live in hope...

Elizabeth Gilbert on Genius 0

Posted by ferrisoxide
on Sunday, December 06

I’ve never heard of Elizabeth Gilbert before.. but through a happy series of links, including Olga Nunes blog (someone else I’d never heard of before, but find myself so incredibly moved by) I came across this from the last TED talks:

This notion of creativity coming from without, as a “genius” that visits us when we work, isn’t completely irreconcilable to a humanist like myself.

Whether it’s writing, making music or even crafting code; we are all standing on the shoulders of giants. And it doesn’t matter if we call the well-spring of our creativity God, our cultural heritage or the people we connect to, it feels natural and rational to acknowledge an external source – a “genius” living in the walls of our lives.

I’m not religious in any sense – I’m firmly convinced that I just don’t know – but I can accept that I don’t own the ideas and forces that inform my creative life. The transformation of these forces into something new may be peculiar to me, but the source is elsewhere.

Seamus - a little bit of vision 2

Posted by ferrisoxide
on Wednesday, December 02

The objective of the Seamus project is to build a requirements management system in Ruby. Seamus takes a document-centric approach to requirements – treating requirements as “content” to be managed within an Enterprise Content Management (ECM) system.

There are a couple of reasons for doing this and for doing it this way. Firstly I want to improve my Ruby skills – in my day job I work mostly in Rails and want to go a bit deeper into Ruby than website development typically requires. Building an ECM isn’t a trivial exercise – I’m not even confident I can do it, at least not on my own. Going through the process of building this system is going to teach me more about Ruby than I’m used to – as well as give me a chance to flex those architecture and design muscles that have atrophied over the past few years.

Secondly I want to build a requirements management tool that is useful to a broad set of stake holders. Most tools or systems I’ve seen for managing requirements tend to support the needs of one group of users over another – e.g. satisfy a business’s legal needs but fall short of guiding the day-to-day efforts of developers, or vice versa. The ECM will provide multiple representations of the same underlying content – allowing the same set of requirements to be used by different groups of people working on the same project.

There’s a third ancillary reason: to learn more about the process of requirements management. And a fourth “nice to have” – that building a specific-purpose ECM will lead to a system that can be repurposed for the management of other types of content. Neither of these are driving reasons for the project, but will be kept in mind as we go.

I’m in a bit of quandary over how to jump-start the project. In an earlier post I said I wasn’t going to start until I had a full set of requirements. I’m being guided by Karl Wiegers excellent More About Software Requirements, in which Karl suggests defining a baseline set of requirements and then engaging in a iterative process for further refining the needs of the project (he’s clearly not adverse to agile methodologies). Given I already have part of the problem domain laid out for me – in the structure of the CMIS data model – I’m inclined to lay down a very brief set of requirements and then use the model to explore how these requirements can be mapped into the ECM domain.

I plan on documenting what I do as much as possible, so I have a record of what mistakes I make – both in terms of technical choices and also the actual approach. I have to say, as a developer I’m just keen to start cutting some code.

Exit Rails-as-CMS, enter "Seamus" 0

Posted by ferrisoxide
on Wednesday, December 02

Adios Rails-as-CMS

The vast majority of traffic that comes to this website is generated by interest in the Rails-as-CMS post made over a year ago. While the attention is appreciated, it feels like this particular meme has run its course – at least for me.

Gaspard Bucher’s post Is Rails a CMS? puts paid to the Rails-as-CMS argument for most CMS implementations. I don’t buy his argument completely – for instance, you lose as much if not more flexibility by adopting the constraints of Gaspard’s Xena, Radiant or any of the other Rails-based CMSs out there. But I get where he is coming from – in general you are probably going to be better off embracing an existing package and extending it to meet your own needs.

The Rails-as-CMS idea still holds some interest for me – and probably for a few other Rubyists – because it allows for experimenting outside of the general case. My own need for a suitable vehicle for publishing some of my writing online is very different to what most people are looking for in a CMS. I accept that, and I’ve probably going a bit further by dropping Rails altogether for This Purple World and moving to Sintra. The results at the moment are pretty uninspiring, but once I get a moment to clean it up and post a more recent version on Github you can probably expect to see a new “Sinatra-as-CMS” argument start to brew. :)

Hola Seamus

With Rails-as-CMS out of the way – or at least on hold – I’d like to focus my energies back on a project I began a long time ago. Seamus started out as an implementation of the Content Mangement Interoperability Services (CMIS) specification. CMIS is about as far away from CMS as you can possibly imagine, despite the common “C for content” in their respective acronyms. CMIS belongs to the world of Enterprise Content Management systems – an evolution of the document- and record-management systems of yore. There are plenty of players in this market, from IBM and Microsoft with their proprietary offerings across to open source providers like Nuxeo and Alfresco. Most of the big players – including Nuxeo and Alfresco – have signed up to support CMIS in their products.

With the original incarnation of Seamus I managed to get a very basic implementation of CMIS version 0.5 going but was stymied by (a) spending way too much time trying to get my head around the way CMIS uses the Atom Publishing Protocol and REST and (b) having nothing real to wrap the system around.

I’m avoiding the hitting the same problems with Atom PP this time around by effectively ignoring the CMIS service model – instead using its domain model as inspiration and assuming that exposing the the system via a Atom/REST or SOAP interface should be relatively trivial, providing I stay close to the specification’s domain model.

The new implementation of Seamus will attempt to stay “real” by concentrating on a single problem domain – specifically the area of requirements management. Requirements are documents like any other – they have workflows associated with them, need to be maintained, versioned, distributed and so forth in a controlled manner. I’m imagining bootstrapping Seamus by using it to maintain its own requirements, thereby proving the system and creating a useful document set at the same time. And if Seamus can be used to satisfactorily manage requirements it may very well be extended to handle other types of documents.

I won’t be writing a single line of code until I have a clear baseline set of requirements ready. I know – a very “enterprisey” approach, but one I hope will pay off. I don’t have any high hopes for Seamus, other than what I expect to learn along the way. But it’s going to be an interesting journey, I hope.