ARAX

Personally I think this is ludicrous. And I say that as someone who loves developing in Ruby. In short the proposal is that rather than use JavaScript as the client side scripting language in a browser that Ruby is used via the wonder that is Flash, cough, Silverlight (which I am fed up of being offered the chance to beta every time I go to a MS site).

John Lam on this:

According to Lam, the scenario is that people agree that HTML and CSS (Cascading Style Sheets) are standard. “It’s a known thing and people understand this technology,” Lam said. “The part that [is important], at least as far as Rails programmers are concerned with, is they would like to be able to do some Ruby on the client. JavaScript is no longer the ugly stepchild that it used to be, but it’s quirky in certain ways. That’s not to say that Ruby isn’t, but Ruby has more ‘oohs and ahs’ about it than JavaScript does.”

Sure it’s a nice idea but I’m sorry Mr. Lam you’ve clearly been smoking the Microsoft hash pipe. JavaScript is as much a standard, by convention, support and weight of numbers, as HTML and CSS.

I had high hopes for the IronRuby project but this fills me with concerns about the direction Microsoft see it heading in.

Oddball Sharepoint Error

I’ve been involved in designing and setting up a large SharePoint deployment recently and today a colleague and I were focussing on deploying the SharePoint solution that holds our companies web parts onto the servers - something we’ve both done many times before on live and development environments.

At the end of the installation, which appeared to be successful, we found that every page with one or more of our web parts on was giving us the “Unable to import web part” error message. Nothing more in the event logs or SharePoint logs even with full logging enabled.

After much checking of permissions, server settings, files in the right places and gnashing of teeth we went lower level - suspecting some kind of assembly load error. To verify this we broke out the Assembly Binding Log Viewer (Fuslogvw.exe - it ships with the .net SDK).

Much to our surprise we found a number of binding errors, one in particular looked rather worrying as it concerned “Microsoft.SharePoint.XmlSerializer” - basically it couldn’t be loaded into the web process. Comparing this to a working server we found that this was the difference between Fusion log traces on each machine.

We scrubbed the virtual machine and started back at the Server 2003 base and reinstalled SharePoint following, as far as we can tell, the same process (that recommended as best practice by Microsoft). This time success - no binding errors, web parts as we’d expect.

We’ve never had a problem before with following the Microsoft best practice doc’s to the letter but this isn’t the first time I’ve seen SharePoint and related technologies fail silently or inexplicably during installation (Team Foundation Server anyone?). Given the amount of infrastructure SharePoint sits on top of I guess it’s no surprise it’s a little “sensitive”.

Moral of the story - just because SharePoint looks like it’s installed correctly doesn’t mean it has.

Snow Leopard

Rumours abound that a new Mac OS X is going to be announced at WWDC next week focussing on speed, security and stability rather than new features. The new OS is apparently codenamed “Snow Leopard” and presumably is version 10.6.

This seems like a really good move on Apple’s part - there’s been a lot of change to Mac OS X over the last few years and, while I can only speak for myself, is a decent OS from both user and developer points of view then consolidation can only be a good thing. Certainly better than inventing swirly feature number 5 just for the sake of a release.

Demanding Customers

While I’m a big believer in the philosophy of building software for which you yourself are a customer this isn’t always possible, particularly in larger development shops focussed on vertical markets. I was recently reminded of the importance of a demanding customer in such an environment.

I don’t see a demanding customer as being the same as a loud customer. Of course some are both - but to my mind a demanding customer is a customer who is a current or prospective user of your software who wants it to make their lives as easy as possible.

Of course the trick is to figure out which suggestions will give the most bang for buck to your whole user base but a demanding customer can make you re-evaluate your feature set and consider approaches that you’d simply not considered or dismissed as being too expensive or simply not possible.

In my recent case I really didn’t see how a feature that a customer wanted could be implemented but they were insistent and able to convincingly articulate how useful the change they had in mind could be to both themselves and others. It resulted in me going back to the OS reference books, scratching my head for a while and ultimately figuring out how to do it.

Awesome!

Geek Humour

Shockingly this made me laugh out loud:

Two atoms bump into each other. One says ‘I think I lost an electron!’. The other asks, ‘Are you sure?’, to which the first replies, ‘I’m positive.’

I think I need to get out more.

A Fleeting Advantage

For a blog focussed on humour and satire it’s amazing how often Fake Steve Jobs talks sense:

Bottom line is this: the only innovations worth making are the ones involving product ideas and product design. I mean, Duh. Right? It’s pretty obvious. What’s amazing to me is how few companies actually seem to realize it. To sustain an edge in any market you must make better products than your competitors, consistently, over and over and over again. Just making the same products as everyone else but taking a little friction out of the system can give you an advantage, but only a temporary one.

Such a Good Feeling

I don’t often post examples of my photography on here but it’s so rare to feel truly happy with a shot that I can’t help but share this. Daft as it may sound but I had trouble sleeping last night - I was brimming over with excitement at having taken a photo I really liked.

Bromham Rocks

I started “serious” photography about two years ago and one of the things I love about it is how, much like software development, there are always techniques to improve and something new to learn. Every time I go out with my camera I learn something and to me that is one of life’s most rewarding experiences.

Game Framework Update

So though I said blogging would be light I’ve still been plugging away during my lunch breaks and sofa time on the Rules of Engagement remake and the accompanying game and GUI framework.

I’ve got some interesting things going on in the GUI framework that, I hope, will make visual state transitions very straightforward to implement.

When you define a control for the framework, for example a push button, you do so as below:


class PushButton < Control
  @@default_renderer = nil
  property :image => nil
  property :image_valign => :middle
  property :image_halign => :left

  ...
end

This results in the property definitions and defaults that the theming system and DSL I referred to a few posts back. What I’ve since added to this is the concept of property sets. Take the push button example again - generally you want some kind of visual indicator to let the user know that they are hovering over the button with the mouse cursor or if the button is clicked you want to show that it’s depressed. Property sets relieve the need for lots of event handling code. For example the mouse enter and leave functionality when implemented with property sets looks like this:


class PushButton < Control
  @@default_renderer = nil
  property :image => nil
  property :image_valign => :middle
  property :image_halign => :left

  property_set :mouseover => {
    :back_color => Color.new(1.0, 1.0, 0.0, 1.0)
  }

  def mouse_enter
    push_property_set(:mouseover)
  end

  def mouse_leave
    pop_property_set
  end
end

Alternatively the same functionality can be implemented outside of the control definition itself using the DSL:


HorizontalFlowLayout.new({ :width => 1024, :theme => GameThemes.buttonbar_height }, [
      PushButton.new({ :theme => GameThemes.buttonbar_button,
                       :image => Image.new("/Users/james/projects/rules/images/navigation.png"),
                       :click => lambda { |ctrl| ctrl.delegate.navigation_clicked },
                       :mouse_enter_event => lambda { |ctrl| ctrl.push_property_set(GameThemes.button_mouse_over) },
                       :mouse_leave_event => lambda { |ctrl| ctrl.pop_property_set })
])

Fairly neat, though I doubt new!

All Quiet

Technical blogging wise at least.

My development work (outside of the day job) tends to slacken off over over summer as the nice weather encourages me to head outside with my camera (I’m a keen photographer). We’re starting to get some nice weather in the UK now so expect blogging to be lighter than usual.

Windmill

It’s All Change

I’ve gone for a new theme - the old theme was a fixed width theme and a narrow fixed width at that. Not exactly ideal for a blog that frequently shows code, hence the change.

And here’s the screenshot from Rules of Engagement that I promised yesterday:

navigation.jpg

Lovely colors huh? For the time being I’m sticking with the color and general layout while I work on the framework code. I’m planning more a homage than a straight remake so there will be a few changes before I’m done. For comparison you can see the output of the GUI code I showed off yesterday:

tn_homage.jpg