So you want to use the funky XYZ framework?

31 01 2008

If you work in software development trends come and go, and we are constantly inundated with new frameworks to learn. Whenever someone says to me “what do you think of this” I almost feel like they are saying if you can’t come up with something really negative we are going to throw it in - but because I like to keep things simple I usually go through this list in my head:

  • Does it make it more complex than it needs to be?
  • Does it really add any value beyond allowing me to +1 the font size on the “A” on my “Architect” t-shirt?
  • Who is going to support it?
  • Will it impact performance?
  • Does it solve a problem that actually exists?
  • Could I solve that problem easier with 10 lines of C# code?

… the list goes on. Essentially I fear complexity for the sake of it, software has so many inherent complexities that you can’t avoid that adding more just seems insane.

Now what one person calls complex, and what another calls a simplification really where the debate happens …




C# Dynamic Lookup - a suggestion.

29 01 2008

Paul Stovell passed around a link to this blog post by Charlie Calvert and Mads Torgersen about the dynamic lookup feature in a future version of C#. Personally I like the feature and I can see myself using it in a few specific circumstances.

Reading through it, I’ve got two suggestions. We need to ability to use a string variable or literal to name the member that we are interacting with. This would be incredibly helpful for things like dynamic sorting scenarios in web applications.

The second suggestion is turning the dynamic lookup into a kind of duck typing facility where-by you can continue to use the object outside the dynamic scope provided you only access the members that you had accessed inside the dynamic scope - although I am not sure if that is terribly useful, just a thought.




Waiting for "The Ashes of Worlds"

28 01 2008

Yesterday whilst on a plane to Sydney I finally finished Metal Swarm by Kevin J. Anderson. Metal Swarm is book six in a series called “The Saga of the Seven Suns” which tells the story of humanity, elemental beings and a few alien races and other sentient life forms.

If you are into space opera then I strongly encourage you to pick up this series. Each book continues the overall story but has a number of self contained sub plots. This last book was quite hard to get through because I felt that after book five we were well past the climax but it finally pulled itself up and I am keen to get onto the next book “The Ashes of Worlds“. Unfortunately the seventh and final book in the series hasn’t been published yet so I am going to have to wait, just like I am waiting for The Temporal Void which will add to the Commonwealth Universe created by Peter F. Hamilton.

Today I went to the book shop and picked up “The New Space Opera” which I believe is a collection of short stories by a number of authors. Should make for some good bite size reading. I’d love to get into writing short stories in the sci-fi genre - maybe one day inspiration will take me.




Windows Feature Request: Pausable File Copying

28 01 2008

I’ve thought about this one a few times but have never blogged it. When you get your machine doing a lot of things, sometimes a file copy can take up a few resources (I/O resources in-particular) so I think it would be nice to be able to pause a long running file copy operation.

PauseCopy




How To: Create a UI mock-up with ArtRage

27 01 2008

Earlier today Darren Neimke posted up about the various mock-up techniques he has seen out there in the wild and used one of my crayon-style drawings as one example. The mock-up he used was a simple screen that a user would visit after receiving a URL in an e-mail which allows them to add meta-data to tag to help add structure to the tag cloud.

Since I thought folks might be interested, I thought I would write up a follow-up to Darrren’s post which explained a little bit about the process I used to come up with those mock-ups. It isn’t rocket science so this should be a fairly short post :)

The Tools

The first thing to consider is the tools that I use. I’m lucky enough to be a Tablet PC user which means that I can use free hand drawing tools to quickly sketch something out. In fact, being about to sketch things out like I would on a Napkin was one of the big drivers for me getting a Tablet PC - I wanted that experience specifically.

Other than having a Tablet PC I would remiss not to mention the awesome software from AmbientDesign, ArtRage (I am using ArtRage 2.5 Full Edition). ArtRage is specifically designed for use with digitisers and absolutely comes into its own with a Tablet PC. It provides a textured drawing surface with a tools with adjustable attributes (such as wetness, pressure etc).

ArtRage0

Obviously when using the pen you don’t get the same feel as a brush would give you on paper but the way the tool tracks the stroke and renders the line makes it seem like the least computerish computer stroke I’ve ever seen. You can actually see the texture of the stroke on the screen, and then scrape the extra paint loaded on the surface away - leaving a mark. Very realistic effect.

The Process

Starting with a blank canvas can be pretty scary so I’ve actually got a technique that gets me into the mood and allows me a few moments of think time. Basically I’ll grab a sharpie, choose a colour and just build a textured background. While I’m doing this I’m really just loading all the basic requirements for the page I need into my head.

1

2

One of the nice side effects of this is that if I can’t think what the page should look like in a few strokes of the brush, then I am probably trying to get it to do too much (the notable exception to this would be portal pages I suppose). Once I know where I am going I frame the page.

3

4

And this is really where I get into fleshing out the page. Actually here I really need to give credit to the 37signals guys that got me going down this path. They pulled together a book called Getting Real which captured their design/development process and talked about a concept called “epicenter design“.

You might think I’ve ignored their advice about framing the page, but if you look carefully all the work I’ve done up until now isn’t about colour or style (the back of the page isn’t going to be orange - that was just to get my creative juices flowing), and the frame I drew wasn’t the border of some inner div on the page, it is actually the edge of the browser.

So epicenter design then, for me, is about designing that critical functionality into the page. Usually I’ll just do a bit of a skeleton using a pencil tool, maybe with different gray scales just to add a bit of contrast for the different types of UI elements.

In this case I am designing a simple little application where our guys can basically vote on various aspects of their working day. I’ll leave out why we might want to do this, but just accept for now that it is something that I think we need as a bit of a real-time business intelligence tool.

5

Once I am happy with the general function of the page I *might* add a bit of colour. This is usually more to do with ensuring the consumer of the mock-up doesn’t have to squint so much and can understand the intent of the various UI elements. In this case adding red and green to the buttons really helps convey a positive and negative feel.

6

If I’m happy with the function of the page I might add a little bit more polish just to compartmentalise the page a little bit but I would expect most HTML gurus to do this anyway whilst they are tweaking the layout a bit.

7

And there we have the finished product, well, a suggestion of what the finished product should look like. There isn’t much to it, and I think that there are plenty of places where I could improve my technique.

  • Remembering to use layers so I can “fix” things; in this case I wanted to add more of a gradient to the section behind the centre of the page, but I forgot to put in layers so I couldn’t, that is why I’ve got the diagonal lines to add some texture there.
  • Capturing movement in the page; when [+1] or [-1] is pressed I want some kind of fade-in/fade-out popup to acknowledge their input.

Anyway - that is how I do it, like Darren I am interested in seeing what others do.




Beautiful machines.

27 01 2008

Fujitsu T4220, it’ll look exactly the same as my current Tablet (shame, because the R400 looks nicer), but it will back an awesome developer sized punch.

Knowing my luck, as soon as I buy it something as powerful, yet more stylish will come out :)




Conspiracy Theory: Google is training a neural network.

27 01 2008

image…and that is the ability to quickly perform a search. However, when I simply type http://www.google.com into my browser, I get this sorry page with a Captcha down the bottom. It is starting to become annoying, I haven’t even searched for anything yet - I’m just hitting their homepage.

Actually I think that there is something behind this, because what they are doing is so bone headed that there must be an ulterior motive. I think that they are training a neural net.

OK, so before you label me as a conspiracy theorist lets look at it. Google probably gets more hits than any other site on the web. Now, if they start getting their users to start solving captchas then they basically have one half of a feedback mechanism required for training a neural net. Eventually they’ll come up with a network that can solve captchas and allow the Google search-bot to bypass those simple “are you a human” checks that people have all over the place.

In fact, given the speed with which people will be hitting the Google site they may not even need the neural network because they could just serve up replicas of the captchas that their search-bot is coming across and get a search user to solve it real-time. The Sorry screen is just an interface that Google is using to harness the human brain.

We already know Google is interested in this space, and this is just a way of ramping up their computational capability.




Enterprise Technology & Strategy Games

22 01 2008

“There is absolutely no way that my infantry can withstand being battered by afar with artillery and then overrun with heavy cavalry. I should have invested more in research of military units rather than building a church, maybe then I would have a chance of survival.”

That is usually what goes my head when the computer is about to trounce me in Age of Empires III. While it would be easy to dismiss my failure as poor resource management generally, it would be more accurate to say that I failed to invest resources in small projects like turning out cavalry and guns and instead fed it into a larger project like building a church.

By the time the enemy arrived I barely had any defences and the church wasn’t complete and couldn’t deliver on its promise.

Company at War

It might seem like a stretch, but I believe the development of enterprise technology infrastructure is a lot like playing a strategy game. You have a finite set of resources and you need to structure your acquisition of technology so that it delivers the most benefit so that you can cope with the oncoming assault.

Whilst it is not likely that your corporate head office is going to be besieged by artillery (unless you really pissed off your customers), there are other challenges that you will need to overcome.

At Readify one of the challenges that we need to deal with is growth. We don’t want to stop growth, but there are some side effects of growth that are not necessarily desirable. For example as the ranks of the billable services organisation grows there tends to be a corresponding growth in the number of support staff required. How do we maximise the impact of those support staff?

Humble Beginnings

A little while ago Readify went through its first round of growing pains where managing the timesheet reconciliation and invoicing process became too much for one person (the CEO) to handle. At this point in time we hired some support staff to execute the process - but this effectively just moved the problem. Eventually we recognised an opportunity to tackle this problem with technology and we built our own timesheeting system on top of CRM which allowed us to pre-fill timesheets and turn the process for the services organisation into a simple tick and flick. This reduced the time it took to get timesheets into the system and usually resulted in more accurate data.

We learned a lot about the value of small systems development in that one exercise and since then have been making incremental improvements to the system - if we tried to build the system as it exists today from scratch we would probably fail because we wouldn’t have been driven by real requirements and would have been distracted by allure of building a church.

Fast forward to present day and our internal development team has released a system which works in a fashion similar to our timesheeting system which allows us to capture knowledge and distribute it throughout the organisation. For a long time we have wanted a “knowledge framework”, but to be honest I don’t think we could have come up with the solution we did unless we learnt the lessons from building the timesheet system.

The Technology Map Emerges

Where this starts to look like a strategy game is that in addition to actually getting a functional system at the end of a development cycle, we get a set of new technologies that we can then combine to build a new system. The following diagram is a hypothetical technology map for Readify including some existing and future systems, and technologies.

Technology Map

Just taking a moment to explain the current state of play. Both the Timesheeting and Knowledge Framework systems exist today and are systems we wanted. Other systems presented in green are also systems that we will probably want as we grow as a company.

The Tag Relationship Mapper is also a system, but is presented in blue to symbolise the fact that its not necessarily a system that we could justify building in its own right except that it enables a number of technologies (Crowd Voting/Structured Tag Cloud) which could lead to us building a better skills matrix and improve the search of our Knowledge Framework by adding scoping to the already expanding tag cloud - and ultimately some of these technologies could lead to computer assisted resource management which is essential if the company doubles its size.

Investment in Internal Systems

Sometimes investment in internal systems is an obvious thing to do, other times its less obvious and you have to look not just at the function of the system but the scenarios in the future that it will enable, but in order to get to that stage you need think ahead and understand what your technology map so that when the challenges actually arrive, you are ready and have time to respond.




Consulting Anxiety

22 01 2008

Occasionally when I am working out in the field flicking between short term engagements I can develop a bit of Consulting Anxiety. Technical folk are often introverts, and before I came to consulting I would have definitely put myself in that category.

Things that helped me overcome it were forming, and regularly presenting at a user group, presenting at larger technical conferences like Tech.Ed and generally getting out and socialising more. However - every now and then I can see myself reverting back.

For example, from the end of November I had a good block of off-site development work and a good chunk of annual leave. When I got back from leave I went into a consulting engagement feeling a little bit uncertain, then, once again when I had a different client that week - and this week I had the same sensation.

On one hand it is refreshing because that added stress possibly gives me a bit of an edge, but on the other it can be quite debilitating as you debate with yourself the merit of keeping doing this kind of front-line technical work (if severe cases).

I once attended a consulting workshop by Graeme Simsion and he described the “accidental consultant” phenomenon. The gist of it is that consulting is something that _happens to you_. In my case I seemed to do a reasonable job at developing software, reasonable enough for others to start asking me my opinion about the software that they are developing - and hey presto I am a consultant.

When I find myself a bit anxious about a consulting engagement I usually talk myself off the ledge by reminding myself that I have around eight years experience with .NET (yep, I started using in 2000) and that I could probably just let go and let the benefit of that experience flow a bit.

No need to be anxious.




Downloading Visual Studio 2008 from MSDN, quickly.

21 01 2008

FastVS2008Download After the recent turmoil surrounding downloads from MSDN of Visual Studio 2008 I’m a bit nervous about kicking one off myself, but I find myself in Sydney, without my MSDN kit and my RC0 install of Visual Studio 2008 about to timebomb.

Let’s hope this quick download actually reaches 100% :)