Real time data streams + a bit of Windows vs Mac

I’m a self-taught desktop music production hobbyist and over the last year and a half I’ve built up a lot of knowledge that in every day computing isn’t really a concern…or is it?

Windows is not a real-time operating system

The first thing I learnt was the consequence of Windows not being a real-time operating system. I’ll keep the reason how I discovered this short. I have a semi pro piece of music production hardware, it basically allows you to record mics, guitars and virtual instruments at very high quality but I was experiencing intermittent pops and clicks that seem to cut all processing of sound for a split second.

To achieve the high quality element, all data from the device to my PC is processed via fire wire. Now, this is where Windows not being a real-time operating system becomes a problem. Putting tech jargon to one side (he says), this happens in Windows because hardware device requests are handled sequentially according to the first in, first out nature – this in turn creates the concept of a queuing system and if you don’t have the perfect hardware and more importantly solid drivers for all said hardware in your PC, you will get what is knows as is the trade, drop-outs. Drop outs are basically noticeable audible gaps, that sound like a click or very quick gap of silence.

How to check if your Windows system is going to experience drop-outs

There is a very handy and free tool called DPC Latency Checker – you can get it here – Simply run it and watch out for yellow or red spikes – a nice stable green is what you’re looking for,

What’s being done to improve this in Windows?

To be fair to Microsoft,  a Windows Device Driver Kit (DDK) and documentation has been publicly available for some time. The problem is, vendors have a lot on their plate when producing new hardware and sometimes a few corners are cut. The device will work as promised but the driver may not be optimized and the more and more components like this you have n your system the worse it will be at processing real-time data, like audio and video. For those of you that are thinking about data processing in general, yes this will affect operations in the data centre too!

Quick conclusion

If the conditions are right, you can have a pleasurable PC based music production experience but you will need to do you home work on how to optimize your rig. Alternatively, you can save up for a few more months…or years! and get a Mac (ideally one with the word Pro in it 🙂

I have chosen the iPad

A netbook or lightweight laptop were close contenders but when I really thought about it, I realised that I wanted to sync up my digital world as well as experience it with hardware that is a pleasure to use. I have a high end PC, high end work laptop and mobile, hot swappable and NAS storage. So it wasn’t important to me to find a good all-round computing device that can do everything, anywhere at breakneck speed.

My laptop bag is heavy! 50% of the time I am preparing project plans, spread sheets, presentations and or researching using online resources. The other 50% is spent on client site and or remotely connecting to high end server platforms. The weight of my laptop comes from 3 key items, the laptop itself, power supply and notepad. So for me, 50% of the time, the iPad can serve an excellent purpose in my life by giving me the tools I need for the equivalent size and weight as my notepad, pens and inevitable overflow of paper work that one crams into their notepad.

There are mixed reviews of the iPad – and it’s probably worth mentioning that I am yet to actual use it, hence the title ‘I have chosen the iPad’
So, detailed review to follow.

Heat map software for projects and bids

I’m a big fan of heat maps, they help me get across a huge amount of information to clients and my team in a single picture.

I use heat maps for projects and bid management. The software I prefer to use comes direct from Microsoft Research called Treemapper available to download here http://bit.ly/asGNWH – it includes an Excel plugin to make building your heat maps quick and easy.

Microsoft’s Global Product Development Europe have released a Silverlight version available here http://bit.ly/azNGmZ – I remember suggesting developing this to a colleague a while back now, my idea was to develop it as an internal bid management tool to improve the balance of a sales persons quote and the reality of effort and complexity. I also envisaged it as a Microsoft Surface app.

Microsoft’s Treemapper software doesn’t produce the most visually stimulating picture of your heat map so if you have access to creative designers and are working on a bid, it’s always a good idea to ask them nicely to make a pretty version of your heat map.

Enterprise Architecture books

I’ve had an Enterprise Architecture week this week and found myself flicking through chapters of two great books I’m reading at the moment, Patterns of Enterprise Architecture http://bit.ly/bbz6zB and Microsoft.NET: Architecting Applications for the Enterprise http://bit.ly/aAmXQi

It could be that what I’ve been doing is just another web application design but since picking up both of the fore mentioned books I feel like I have a new perspective on things and a more generic and common understanding – back to that ubiquitous language again.

It feels cleaner to describe things to a client that fits in with industry terms or in my case what’s reference-able in a published book.

As per the Wikipedia description http://en.wikipedia.org/wiki/Enterprise_architecture Enterprise Architecture (EA) describes the structure of an enterprise, its decomposition into subsystems, the relationships between the subsystems, the relationships with the external environment, the terminology to use, and the guiding principles for the design and evolution of an enterprise.

Being able to whiteboard and or sketch EA designs out quickly and in a low fidelity way is my style. Burning a whole day in Visio, reformatting, sizing, colouring etc isn’t the best use of time when you’re kicking off the design phase. But, to have those polished and reusable templates ready is key for when you reach the proposal stage.

Winning business with BDD – Behaviour Driven Development

I attended a great talk on Behaviour Driven Development (BDD) by Howard van Rooijen last week at the Agile South Cost group meeting http://bit.ly/dkfahW

BDD is used in Agile software development and essentially gets both technical and non technical people collaborating by using a natural language and as the title suggests describes how something should behave rather than the ins and outs of a particular function.

I have two specific interests around software development projects, one is how to sell them (from a pre sales point of view) and one is how to get the team up and running to deliver them. Understanding more about BDD will help me in both.

Firstly, don’t get me wrong, there are many aspects to winning a clients confidence when it comes to software development projects but BDD is one that you could throw into the pot to create that ‘common language’ from the start. By describing how a clients project will be run and delivered helps your client appreciate the value you will bring.

Simply speaking, there are 3 steps:

Step 1

Describe the concept of a product backlog item (PBI) – for example, as an online retailer; we want to be able to run ‘buy one, get the cheapest item free’ promotions for specific lines and products when a customer buys two or more items.

Step 2

Describe the concept of a sprint backlog item (SBI) – for example; define pricing engine to calculate cheapest item free when the ‘buy one, get the cheapest item free’ is activated against any given product or line.

Step 3

Describe the concept of writing a specification for said SBI but written as behaviour, for example:

  • When a user adds 4 items to their basket
    • the cheapest item should be identified by the pricing engine
    • the price for the cheaper item should be zeroed.
  • When the order has been successfully submitted
    • the order management system should be reconciled correctly
    • the customer’s credit or debit card is charged the correct amount for the order total.

The key word that makes this a behaviour written specification is ‘should’. This approach can then be used right the way through from development to testing. The same behaviour written specification can be interrupted by the test team and client because it’s been described in a ubiquitous language.

To me, it’s logical and from a work load point of view prevents doubling up e.g. the business analyst or project manager on your team doesn’t need to re-interrupt the specification because it’s written in a command language.