Friday, 29 June 2012

Business habits

Earlier today I received an image from a potential new colleague and the image was so good I had to re post it here so I'd never forget.


I'm dipping my toes into the domain of business process improvement and I'll be using this image for sure. The good thing about this image is that it is so recognizable and therefore the story and image here is good. I bet most people will think at the end, "yep, we're guilty too". Nothing bad about it, but you recognize it is time to improve.


Monday, 4 June 2012

Score your applications

One of the tasks in an Enterprise Application exercise is to get an overview of all applications in the IT landscape. Every application can be described with some basic details like name, description, purpose, product owner, technical contact, nr. of users, vendor, etc. 
Next to these basic details we can gather some indicators like:



  • Application Health: Indicates if the application has a good architecture, well known, good documentation, is well under control in it's development life cycle
  • User efficiency: How good is the application in supporting the users with their tasks (processes) at hand.
Knowing what the good applications are or knowing when the phase out applications is important to keep your IT landscape free of weed. Note that it is never a goal on its own to change the IT landscape, however, when business initiatives arrive you need to know the situation of the application layer. 

1. Application health indicator

The application health is not one particular aspect but rather a combination of different factors. 
Originally I started out with a few factors like Technical complexity, knowledge, etc. I figured this is something more people should have done before me, so I came to a number of approaches. 

I believe there are 2 major factors:
  1. Application design
  2. Development readiness

1.1 Application design

How good is the design of an application? This is something the industry has focussed on before and we recognize the following design factors:
  1. Rigidity: Rigidity is the tendency for software to be difficult to change, even in simple ways. A design is rigid if a single change causes a cascade of subsequent changes in dependent modules. The more modules that must be changed, the more rigid the design.
  2. Fragility: Fragility is the tendency of a program to break in many places when a single change is made.
  3. Immobility: A design is immobile when it contains parts that could be useful in other systems, but the effort and risk involved with separating those parts from the original system are too great.
  4. Viscosity: a viscous project is one in which the design of the software is difficult to preserve. We want to create systems and project environments that make it easy to preserve and improve the design.
  5. Needless complexity:A design smells of needless complexity when it contains elements that aren't currently useful. 
  6. Needless repetition: Cut and paste may be useful text-editing operations, but they can be disastrous code-editing operations. (DRY)
  7. Opacity: Opacity is the tendency of a module to be difficult to understand.

1.2 Development readiness

This factor indicates how easy (or hard) it is to pick up or continue development.We can divide this into a number of sub factors like:
  1. Knowledge: How much knowledge do we have readily available? Both in terms of documentation as in the head of people.
  2. Resource Readiness: How fast/smooth do we get a development team up and running with the proper development tools, (source code) artefacts, etc.

2. User efficiency indicator

We can use the following four factors to determine this indicator:
  1. Conceptual Complexity: How complex are the application concepts
  2. Knowledge: How much knowledge of the application do we have readily available 
  3. User friendliness: How easy is it to use the application 
  4. Learning curve: How long does it take to get people working well with the application
Note that it is somewhat odd to say how efficient an application is, usually one would say "for what purpose?". Applications can do different things for different people who are doing different processes. However, imho, it is possible to take a distance from the people and processes and asses these factors based on a high level point of view. 

3. Scoring

How does one score these indicators? It depends if you have an established Enterprise Architecture body in your organisation or not. Suppose you are at the start of an ambitious project and you want to assess the application landscape in a pragmatic manner. In that case I would use a relative scoring mechanism where every application gets a score relative from each other. 
For example; take one of the factors mentioned above and lay it down on the table. Gather the people who know about that subject ("subject matter experts" in an expensive word). Create 6 boxes or places on the table and ask the people to take every application and place them in one of these boxes where 6 is a good score and 1 is a really bad score. You'll see that people switch an application now and then when they proceed the list, that's what makes it a relative score. 
Is this a correct scoring mechanism? Well yes if it is within the boundaries of that company. It tells you that application x score's better on fragility than application. 
As far as I know there's no industry reference so, outside the company borders the scoring would be incorrect.



Thursday, 22 March 2012

Under the Hood of .NET Memory Management

Under the Hood of .NET Memory ManagementUnder the Hood of .NET Memory Management by Chris Farrell
My rating: 3 of 5 stars

I like the writers and how the cleary explain the more complex topics. However the book is sometimes poorly edited; there are for example pages of intro jammed in the index. In section 2, you also read similar parts as in section 1 although from a slight different angle (my guess is that it is written by the other author there).

Still, considering the first edition, I like the book and it brings clarity which very few people have done before.

Thursday, 8 March 2012

HTML Kickstart Orchard Theme

I really like Orchard as a CMS and HTML Kickstart as an HTML/CSS framework, so I figured that I merge the two and contribute this back to the community. You can find the theme here.

The HTML kickstart files and structure are almost intact, the only changes I structurally made are renaming of the folders "css" and "js" to "Style" and "Script" respectively. Orchard "knows" by default the later folders hence the correction.

Template wise there's the additional View folder containing the different views for the page, header, footer etc.

Site wireframe
I stayed with the same structure as the example theme "TheThemeMachine" from Orchard so you get the wireframe as shown here.

This wireframe contains a column based design for the Aside bars and the Triple and Quad sections below. These columns are based on the HML Kickstart grid system. I needed to add some calculation logic as these columns are not always used and therefore the space has to be released.

For example, if no content is provided in the TripleThird zone, then we don't need to render this zone. However, in that case, we'll divide the space not by three using "col_4" classes but rather by two using "col_6" classes.

Kickstart Features
The kickstart framework has a lot of features like tab page and slideshow components. The easiest way for a admin/designer of the Orchard CMS is to get a nice module and UI where files can be selected for the slideshow for example. I haven't done this yet, but that would be an area to make it more user friendly.
Note that you can use all features of HTML Kickstart, you just have to work a bit more in HTML and CSS coding than a nice UI that hides that.

Credits
Just want to mention that credits goes to the open source Orchard CMS team and Joshua Gatcke. My contribution was just to the mash them up :)

Thursday, 1 March 2012

DateTimeRange Field for Orchard CMS

I've spent a couple of weeks now on Orchard in the spare time I could find here and there.

To learn the system I decided to dive into some coding again and create myself a module. The module on itself is quite simple and adds a field to Orchard that can be used to enhance your content types.

The field adds two text boxes where you can provide a start and end moment either by date, time or both.

It is build for Orchard CMS 1.4, that was just release earlier. As this is my first module I expect some issues here or there but we'll see how it goes.

The module is hosted on codeplex: http://orcharddatetimerange.codeplex.com/
And available through the public Orchard Gallery: https://gallery.orchardproject.net/List/Modules/Orchard.Module.Line20.DateTimeRangeField/0.7


Wednesday, 29 February 2012

Rent Intelligence in the future?

I'm taking an online course at the University of California, Berkeley via coursera.org. Just started with the first video series of the SaaS course and already it got me thinking.

In the course they were describing the SaaS infrastructure like Amazon and how you can rent huge computing powers for little money. You can actually rent a lot of power for $ 200/hour which is equal to the bill you get from a lawyer or consultant. So, if we're smart enough to package domain specific intelligence which you can then rent for whatever time you need it, it would change the world substantially.

I remember in my first startup when I needed a NDA document, I went to a lawyer to help me out. Well, in the future I would go to an online Intelligence Service and build up the NDA together with this all knowing AI system, using nothing but my tablet and a credit card. Looing at Watson, the big computer system from IBM that won Jeopardy, the technology is there.

Thinking about it, I wonder if my youngest daugher (4 now) will ever create here own homework...

Wednesday, 15 February 2012

Catch up on todays web design and development

When baking pancakes for the carnival festive at my daughter's school I had sufficient time to catch up on  my online news.

Basically you create the dough and let it rest for a bit. You heat the pan and poor some pancake mixture and wait for 30 seconds or so, turn it and another 15 seconds.

In between you have a lot of seconds spare so I took a chair and my iPad and started browsing the web news.

One site struck my attention which is designshack.net. Although I'm not a designer, I found some very good articles on that site, especially    these ones:


All credits goes ofc to writers of DesignShack and the original authors, developers. 
 
If you are into web design, development or alike take a couple of minutes to read these articles and you'll be amazed and fresh of new ideas and appetite (although that could also come from the pancakes ofc :D)