Thursday, December 13, 2012

How to use CTE's

What is a CTE?

Basically a common table expression is a table that gets created and only lasts for the duration of that query. Once the query is executed, the table doesn't exist anymore. It can be self referenced and can be referenced multiple times in the same query.

Copy and paste programming

Copy and paste programming by Boipelo Rathebe

A couple a of weeks ago I had a very interesting chat with a java software developer friend of mine, who had just recently started the job and us just having a friendly chat around how he’s finding it, and to my surprise, or not, because  I am quite convinced that we all have found ourselves doing “it”. He tells me it is very hectic and this as a result has taken his friendship with google to a whole new level, so basically when he gets stuck he’ll just do an internet search on what he’s struggling with and hopefully get a suitable solution.

Database vs Data Warehouse

What is a data warehouse?

A data warehouse is a repository of an organization's electronically stored data. Data warehouses are designed to facilitate reporting and analysis. Often designed as OLAP (On-Line Analytical Processing) systems, these databases contain read-only data that can be queried and analysed far more efficiently as compared to your regular OLTP (On-Line Transaction Processing) application databases. In this sense an OLAP system is designed to be read-optimized.

Zoom Zoom...

Here is an awesome little JQuery hack if you ever come across the problem of displaying multiple images on a single page without having to make them all thumbnail sized and ruining the entire visual experience of the page.

Keeping Regular with Regex

Keeping Regular with Regex

The first time I encountered Regex (Regular Expressions), I just shrugged it off as some overly complicated way of doing easy tasks such as simple control content validation. I did not fully understand the powerful capabilities, or what it could enable me to do.

Skills do the Job but Attitude gets the Job

Skills do the Job but Attitude gets the Job

You may have the best technical skills in the world, solve problems in seconds , be a “Master Dev”, have the highest technical certifications and have brains as big as the size of a planet with high IQ but if you have a negative Attitude, you are up for disappointment as a consultant. YOU’LL NEVER TAKE OFF….

Now that's life!

As employees in an IT company, some of us are involved with development, some with networks and others with just the people. But who are we? We are the innovative custodians of our field. We are responsible for the world moving forward. 

As technically gifted individuals we are sometimes mocked and called names. Comments are always made about us or we are questioned. How good is the life we're living? The money we make? The cars we drive or even the types of people we are? This is because in our own way we are uniquely different from everyone else.
If you think about it, every single one of us forms a part of this unbelievably well oiled machine. No matter how small your particular function is.  

Wednesday, December 12, 2012

the InTern ninja wears SQL

Episode 1-Pilot 

Sitting here thinking what to blog about…man this is not easy

Episode 2 - The Pressure of Life

Still thinking what I should write about...

We are always in so much pressure to perform. Does Technology make it easier or more difficult for us? I sat in front of this computer for weeks trying to think of an appropriate topic to blog but nothing. I am under so much pressure now and…wait! That’s it! 

Technology has made it possible for us to deal with life better. So much information is available at our disposal that one can literally sit the night before and start a research project and get it done. At least that's what I did with some of my projects. The library has become something of an extra and not as essential as before.

So I might write about dynamic SQL or how the latest BI projects have improved the business processes, and the ability of an organization to collect, maintain, and organize knowledge. 

Well truly thinking of I am not entirely sure how to implement either of the two, so instead read about the dynamics of SQL and gaze into space thinking about what I read (like Sheldon Cooper’s girl friend in 'The Big Bang Theory'). Or alternatively tried having a tête-à-tête to try and prove to myself that I understood what I just read about.

Episode 3 - The Ninja Intern (Intern in IT)

For the past few months I’ve working around dangerous minds, i.e. (really intelligent) minds.

One would assume when you are an intern all you do is make coffee, file personal documents or take the boss’ car to be washed.  Honestly, I would say we only see those events transpire in movies. In the real world it’s all hard work and learning things I thought I already knew.  I  now know what is meant when they say: “What you have learned in college is literally the foundation that keeps one steady and geared up for the knowledge that is bound to be learned.” Keeping in mind that only those that are ready and are willing to learn are the ones that really grow once the internship ends.

Episode 4 - Really! 

Here I am trying to make sense of a procedure that is used to Setup Email Notifications On Disabled Queues (Service Broker) To this day I still try to figure out how some developers read code and make sense of it like they're reading "Dare Me" by Megan Abbott  One would assume that trying to find your feet in the IT industry is fairly easy, all you do is try and prove that you can write code and the BIG guys will be impressed. Well news flash!  Writing code may be easy but writing code that actually works is something else.

I am the ninja intern and for the past few months that I have been an intern I have learned my responsibilities and challenges that come with wanting to play with the big guns.

From the ninja intern, peace out!




Sexy html! Thank you JQuery! Gray hairs be gone!

Anyone who has worked with JQuery cannot deny the absolute simplicity it brings to the table in terms of animation. (This is definitely not the only thing JQuery is great at but what I am focusing on today)

Tuesday, December 11, 2012

Dynamic Systems Development Method

   Dynamic Systems Development Method (DSDM) an agile software development for projects which are on a tight deadline. DSDM delivers projects on time in a need and robust form. Its priority is based on the must have requirements of a system. It achieves the immediate needs of a project and allow for additional functionality later on. It is based on nine principles and all nine principles need to be applied to start implementing a project. Ignoring one of the principles puts a project at risk.

Unleash your Phones True Potential!

Phones and Tablets have become part of life. Almost everyone in our modern day society owns some form of mobile device and with the constant daily improvements even your entry level phones are now considered to be Smartphones. Tablets are also becoming more and more popular. The one with problem these devices is that the manufacturers often limit them which means most of these devices don’t work to their full potential out of the box.  This is so the consumer doesn’t fiddle around, tweak things they aren’t supposed to be touched or worse, break something (which the manufacturer may be liable for). The biggest players in the mobile smartphone market are Android, Apple iOS and Windows 8 mobile. What if I told you there was a way to unlock your device to use it to its fullest potential. Let me introduce to the world of Jailbreaking/ Rooting.

Monday, December 10, 2012

Getting more out of IIS

Need some of you own custom code to run in IIS?

Behind every webpage is ‘Private’ HTML

Having your own intellectual property out there for the world to see could be seen as an open invitation for some people to have a look at your code and make it their own.
Behind every good webpage is even better HTML. This HTML should be protected in more ways than one, but just how private is your HTML code when users are able to view the source code with just two clicks?

MS SQL Server 2008 "Side-By-Side Configuration" Error

With only three days left before deploying to TEST, my SQL Server database went CRAZY on me!

An error to this effect kept showing up each time I tried to run MS SQL SERVER 2008 R2:

“The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail.”

After hunting around for 2 days I found this awesome post by a MS blogger (Cesardl) - 

I have taken his post and simplified it  below:

Step 1:
Find the Ssms.exe.config file on your machine.
It is found here:
i) C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE - 64 bit Windows 7.
ii) C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE - 32 bit Windows 7.

Step 2:
Rename the exiting Ssms.exe.config file to Ssms.exe.configxxx.

Step 3:
Use notepad.exe (Press Start and type "notepad.exe" + press enter) to create a new  Ssms.exe.config file.

Save it here:
i) C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE - 64 bit Windows 7.
ii) C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE - 32 bit Windows 7.

Yes, you are just saving an empty file, stay with me. :)

Step 4:
Copy the XML code below and paste it into your new Ssms.exe.config file.  Save.
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <assemblyIdentity name="Microsoft.WindowsAzure.StorageClient"
                           culture="neutral" />
         <bindingRedirect oldVersion=""
         <assemblyIdentity name="Microsoft.WindowsAzure.StorageClient"
                           culture="neutral" />
          <publisherPolicy apply="no" />


Step 5:
Open SQL Server 2008 R2 as "Administrator" of your computer. This allows the programs to re-register certain components.

You should be good to go!

Thursday, December 6, 2012

Heaps Of Trouble

I recently came across a situation at a client which I thought I would share with you. I came across this while doing some routine maintenance and noticed a small table consuming a lot of memory. I mean this table, which is a smallish lookup table, was consuming almost 430 MB of buffer space. The thing about lookup tables and the way they are used is that the entire table is usually read into memory. This is by design but the problem here is that there should be no way that this table needs 430 MB.

The tricky swamps of database versioning

If any developer have to draw a picture of most solutions, he/she usually draw the cylinder that represents the database first. Unfortunately when you start to apply version control to the solution, you start versioning the code first and more often than not completely omit the database from this process. One can ascribe this to the fact that database versioning can become relatively tricky, but also because few people understand exactly how to version a database.

How long has it been?

Time flies when you don't know what you're doing.

When I wrote my first blog, it was basically me, writing what should have been in a diary, on a very public location. Even though it’s not something that will come back and haunt my kids, it was probably a bit too personal for the public domain.

But maybe that is the point to all this blog business. Leave it to a bunch of computer geeks to share their feelings in the public. On one condition: Get us to do it with a keyboard and mouse. Score!

In the end though, we are the makers of our own destiny. Not that that stops any of us from purposefully making fools of ourselves by writing just about anything on the public domain. Cater for trolls, and guess who’s coming to dinner. Even though this might not make too much sense to most readers, some of you might actually figure out what the meaning of this post is, but to ease the pain I’ll throw in some extra facts:
  • Nineteen out of twenty of you will probably be reading this and think what a colossal waste of time this is.
  • Nine percent might actually get what it is about.
  • Seven different cryptography solutions were used during the world war, but this is not a fact, and you should not believe everything you read on the web.

PS: If you haven’t figured it out yet, there is a hidden message in the text above. My only question is: How long has it been?

Wednesday, December 5, 2012

Demystifying Entity Framework and Linq

In this blog, I want to share some knowledge of above subjects with you! Somewhere in the blog, there is a deliberate error in the facts! If you can spot it, do not keep your silence and report it, so that we can all benefit on the discussion!

Get Your Game on! App Awards 2013!

The game is on, and it’s all about showing off your app development skills!

Build an app for Windows 8 and you could win a spot on stage at TechEd 2013 to showcase in front of 1000’s of your peers in the local technical community. Also stand a chance for your app to be highlighted on Microsoft’s online properties.

Plus the top apps will be selected every month from now until February to win fantastic prizes such as an Xbox; Slate PCs or cool Microsoft SideWinder keyboards, SideWinder mouse and many more prizes to recognise YOU for your apps. Cool apps that achieve more than 5000 downloads and more than 3 ratings for 4 stars or higher will stand better chances of winning.

So keep an eye out for more info to come or get started right here:

For more info click here.

Follow us on Twitter click here.

Follow us on Facebook click here.

Are you ready to get your game on? That’s the spirit; c’mon get your game on!

We look forward to welcoming you.

**Blog reposted from Microsoft.

Monday, December 3, 2012

Music to code to...

What are you listening?

If you’re a developer in some regard, chances are you've got a pair of headphones and chances are you use them...daily. One of the unwritten clauses when you fill the position of a dev is that you spend most of your time with your ears filled with something that is sent through the above mentioned ‘phones’ (preferably music).

Tuesday, November 27, 2012

MasterDev C3: Prepare to be Blogged

The third installment of MasterDev (known as C3) is all about sharing your knowledge via an unique article,  formulated with the right words that draws the most attention/interest.

This challenge is an individual challenge, you will be responsible for your own destiny… Prepare to be Blogged!

Monday, November 19, 2012

Having a look beneath the Surface...

It has long been awaited... It felt about as long as some of us waited (and some are still waiting) for the fourth installment of The Matrix. Unlike The Matrix fans we all finally heard the deafening drum-roll as Microsoft finally released the long awaited Surface... However if you listened closely, you would have noticed that our fearless drummer held back a bit, because the true prodigy is yet to come...

Hey That's (not so) Private - Introduction to Internet Privacy

As of the year 2011, an estimated 65% of the world’s population are internet users. And although people are becoming more aware of internet security, how do you know that someone isn’t watching your browsing patterns? Can you be certain that your internet session is not being monitored by others on the net? Are you sure that your personal information is safe? Although, it may be argued that your browsing patterns and data aren’t worth much, this article will discuss some of the techniques people use to view your internet usage and what they may be able to do with that information. Then we will mention some ways to control your privacy on the net.

Thursday, November 8, 2012

Did Someone Say SQL Can Do Mathematics?!

Did Someone Say SQL Can Do Mathematics?!

I thought it was strange at first, the idea of needing mathematics in database queries. I mean are we not just fetching and storing data? However, clearly there is a place and time to use special data manipulating functions. For this reason I am going to explain a few of them and give some examples so all the noobs out there (like me) have idea of what can be done.

Wednesday, October 17, 2012

MasterDev Challenge: 1

It has finally started, the competition you've all been waiting for: MasterDev! The first challenge was a huge success judging from the great feedback received. I'm truly excited for the others in the pipe-line. I've decided to write about the results for the first challenge.

Friday, September 21, 2012

SQL Index Fragmentation

SQL Indexing

Indexes are applied to tables to better performance in query execution, instead of the database engine searching through each and every row for the queried data, indexing provides an indexed subset of data that can be queried to get the required rows.

Wednesday, September 19, 2012

Customized setup and deploy Package’s with the Orca Database Editor

As DBA, I find comfort in the fact that almost everything in life is based on a relation model, so I decided to blog about using the Orca Database editor to design customized GUI’s for setup and deploy packages in Microsoft Visual Studio. Beware trying out this, could break the standard templates given by Microsoft and could make unwanted install’s , if you created unwanted installs try Microsoft FixIt  (find it on google).

Friday, September 14, 2012

SQL Server 2012 Features

So what’s new with SQL Server 2012? Well, there are a lot of enhanced and new features in the SQL Server 2012 editions. But generally speaking, the following features make the 2012 edition a whole lot better than the previous versions.

Thursday, September 13, 2012

Wondering about ALM: Go listen to the expert - Brian Keller

Hi All, I've received this exciting note from Suliman Noor Mahomed, the Audience Marketing Manager at Microsoft South Africa:

The ALM guy, Brian Keller is in Johannesburg next week. He is here for just 2 days before he flies off, so this is your opportunity to come listen to him talk about application lifecycle management with TFS and Visual Studio. Below is the full details

Application Lifecycle Management with Visual Studio and Team Foundation Server 2012 presented by Brian Keller

Date: 19 September 2012
Time: 15:00 – 17:30, Check in: 14:30
Audience: Architects, Developers, Decision Makers, Testers, Developer Managers
Price: Free
Place: Microsoft Campus, Johannesburg
Level: 200-250
To register: click here

Friday, September 7, 2012

Honey I have restored the database

A few weeks ago I published the blog Honey I Shrunk the Database, and I mentioned a way of shrinking your database.
The method to be discussed during this blog was inspired by - PaulRandal – “Why You Should NotShrink Your Data Files”

Thursday, August 30, 2012

SQL Server 2012: Restore Fails With Deadlock

We had an interesting situtation at a client where we could not restore a SQL Server 2008 R2 backup onto SQL Server 2012. The restore would fail at 100% with a deadlock.

Logging made simple

This may be old news for most, but for those of you who have not used log4net, this could be quite beneficial…

Monday, August 27, 2012

Isolation Levels

As a follow up to my NOLOCK blog I thought it would be a good idea to discuss the five different isolation levels in SQL Server. These are as follows:

Wednesday, August 22, 2012

Blogging Guidelines For Dummies

As I have come to learn in the past few months, the hardest part of a Blog is finding a topic that inspires not only yourself, but will also draw in readers from a variety of backgrounds in the related area of the Blog... For instance, if your area of Blogging is based on a Rugby crowd the biggest mistake you can make is to Blog about The Beautiful Game (Soccer).

Tuesday, August 21, 2012


How The FOS team has changed in the past few months- Using agile

I would like to share my experience that I have had on the FOS team in the past couple of years, and how things changed in the past few months when we adapted to agile mythology.

In April 2011 was a very stressfull month for our team, we were all stressed out, under pressure and working long hours. Each member of the team were busy in their own “world” ; trying to get their tasks completed in time, which lead to poor quality development and where most of the time work to be re-done and at time not even tested by our tester before it was release to the client,  because of all the rush and deadlines. This all happening, making the client frustrated in the process.

Now if I compare what the team is today and what we were last year April, we have changed as a TEAM – we have grown as a team and adapted well with Agile.

I believe Agile has helped us in the following ways:

1.)    Communication
-          Between the team and the client
-          Stand Ups (Being aware of what our team mates are busy with)
2.)    Weekly Release
-          This is a great opportunity for the client to see progress and change     requirement if necessary in time and not when task is fully completed where it requires the developer to re-do his/her work.
3.)    More awareness/ Visibility
4.)    Transparency to client and team
5.)    Planning  & Organizing

Monday, August 20, 2012

Laying it out: Onion Architecture

It's a fact, there is no Single Silver Bullet for every solution, but we can come damn close. Having the right architecture sets a solid foundation for any solution. When I say "architecture", I mean structuring the solution in a specific strategic way; with the aim to have the components (or layers) loosely coupled and tightly cohesive to the maximum extent possible keeping in mind the feasibility of the trade-off.

Project Management??

From a young age we all had big dreams of what we want to be when we grown up, some wanted to be firemen, police men, game rangers and some ladies wanted to be models - or the best one: Marry a rich man and spend his money.

Friday, August 17, 2012


RAID Types Explained

Below is a description of the different types of RAID that most commonly used in SAN storage arrays.

Thursday, August 16, 2012



I see many developers writing SQL code and using NOLOCK as a "performance tool". I see NOLOCK spread liberally through scripts, applied to every single table as far as the eye can see. This technique is dangerous and I would like to share why.

Tuesday, August 7, 2012

Great or Successful: Lessons from the Olympic Games

This week's achievement of Michael Phelps at the 2012 London Olympic Games to surpass Larisa Latynina's record of a total of 18 medals in a Olympic career has made me think about how we determine success of information systems development (ISD)  projects.

Monday, August 6, 2012

Ghost Buster


A few months ago a client asked me to have a look at some of their scheduled tasks because they were running for more than 24 hours, and they should be running for less than 1 minute. We stop and restarted these tasks but they just kept on running. The SP_WHO2 procedure revealed that the tasks we BLOCKED by another task but this was a system task, “TASK MANAGER” that was accessing the “MSDB” system database. We’ve tried everything, from rebooting the server, trying to KILL the task etc. but were unsuccessful. The CPU usage was 100% all the time (even after restarting the server).

Friday, August 3, 2012

Modular JavaScript with RequireJs

"RequireJS is a JavaScript file and module loader"

While looking at some of the familiar namespacing patterns for JavaScript, I stumbled upon RequireJs.
Namespacing is essential in JavaScript to provide scope to your code in order to prevent conflicts with other variables, objects or functions with the same name that could have been loaded into the global namespace or scope.
There are no official namespaces in JavaScript but this can be achieved using objects and closures.

Tuesday, July 31, 2012

Basic Principles of Design

Even if you're creating a basic, Windows Forms based software solution for a financial institute's back office - even those poor users definitely deserve a well rounded user experience. Here are some basic design principles to get you thinking about why some screens look great and others don't.

Try and incorporate at least the last three - Layout, Composition, and Communication in your next screen design.

Design Principles - What you need to know

Till next time - Ciao

Wednesday, July 25, 2012

Tests with a Twist

Test Driven Development (TDD) plays a big part in our modern day development life-cycle as it allows us to write stabler code more efficiently. The idea behind it is to create an automated testing environment for the optimal continuous integration process.

"Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: first the developer writes a failing automated test case that defines a desired improvement or new function, then produces code to pass that test and finally refactors the new code to acceptable standards. Kent Beck, who is credited with having developed or 'rediscovered' the technique, stated in 2003 that TDD encourages simple designs and inspires confidence." - Beck, K. Test-Driven Development by Example

The concept of  'Test-first then Code' keeps us developing code in-line with the required use-case, having the code solve the test and the test (when passed)  guarantees a rock solid solution for it.

Monday, July 23, 2012

Tools of the trade

So after spending the entire week cursing not so softly to myself about having to make a blog contribution and not really having a clue what I should blog about, it dawned on me.  For most of this week the entire point of this blog has alluded me. It’s only after reading Anél Marais blog contribution that I realized that this is a great way for us to share lessons that we have learnt out in the field with our peers.

So with that in mind I would like to expand on Anél's blog contribution on sp_who2 with another tool that I use myself for monitoring called sp_WhoIsActive

Generally when one is confronted with a question that goes along the lines of “Why is the server slow???” the first port of call generally is the system stored procedure sp_who2. 

Anyone that has ever used sp_who2 will be well aware of its limitations, such as having to sift through a bunch of irrelevant processes to find what you are looking for or  having to issue another command just to find the query text for a given spid.

Thursday, July 19, 2012

More or Less

Ever wish you could do more with css by writing less repetitive styles?

Introducing less: “The dynamic stylesheet language.”

In summary, by using less you can focus on writing styles in one place and reusing them where needed, even conditional styles which ultimately just compile back to native css.

Fun, Games & Physics


Have you ever wondered how to write a computer game and how does one handle the complex physics behind a game.

Well, Farseer Physics Engine makes game development simple.

Farseer Physics Engine

Farseer Physics Engine is a collision detection and Physics engine written for Windows Platforms which gives you realistic physics responses.

Farseer allows you to write realistic physics games in C# for Silverlight, XNA, Windows Phones, WPF ect.

Thursday, July 5, 2012

Honey I Shrunk The Database

As a developer or a dba you may in your life have to shrink the log file of a database or you will have to shrink the database, because the server that the database is on is running low on space.
The syntax for a shrink statement is:

( database_name | database_id | 0
     [ , target_percent ]  *
[ WITH NO_INFOMSGS ]              

*For more information about how the target_percent or any of the relevant areas of the shrink database query works, reference the following link:

Tuesday, July 3, 2012

Thou shalt comment thine code

One the most difficult things to do as a developer or DBA is to attempt to understand someone else’s code no matter what programming language or database is being employed. As a former developer myself, I must admit outright that commenting my code used to be one of the last things on my mind when producing a functional module. Commenting code is like eating a healthy balanced diet, you know you should do it, but who needs the hassle? What I’ve discovered though is very often I would attempt to look at code I myself wrote long ago and the logic would be difficult even for me to follow. Most of the time I’d be asking myself “Why did I not comment this?”.  To this end I began employing a methodology for ensuring I included comments in my code, instead of viewing comments as a last step or a nice-to-have I’ve attempted to make it as part of the process I use when coding.

Thursday, June 28, 2012

MSSql Alerts - More than just notifications

Monitoring MSSQL server environments can be a tedious and demanding task especially when you are dealing with various versions across multiple servers. It is impossible to dedicate resources to manually monitor each instance however MSSQL does include out of box functionality to assist called MSSQL Alerts which is also available even in older versions of MSSQL such as MSSQL server 2000. MSSQL alerts can significantly assist in letting you know when a failure is imminent or has just occurred. That is just the start though, various other event driven functionality that you would like to implement can also be achieved by the different responses available in MSSQL Alerts. Alerts can also be manipulated to run when and how you would like them to run and furthermore the data that they provide can actually be collected and used for reporting.

How The A-Team solves real world use cases

Shortly after the launch of our official blog, we made a point of blogging at least twice a week about interesting facts and ideas in the world of IT. So, to flavor it up a bit, I've decided to dedicate this week's post to my fellow team members.

Thursday, June 21, 2012

Automation made easy

Ever found the need to automate certain functionality other than for integration requirements using architectures such as Biztalk server or SSIS packages. Then you would realize how cumbersome it can be setting up triggers and working with different threads.

Introducing Quartz.NET:

 “Quartz.NET is a full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems”

New trends in technology

While surfing the Internet and taking a look at what is new in the world of IT, I came upon an interesting new concept.

Because the information about the concept is limited, this post is going to be short. However,  these videos will give you a clear understanding about it!
Nokia released a proto-type device called the Nokia Kinetic.

Tuesday, June 19, 2012

Getting to the CORE of the problem

Recently I completed a migration of a SQL Server (2008 R2) onto some new hardware for a client, the SAN storage was retained as is, while the actual server was upgraded to a blade holding 64Gigs of memory and 4 of AMD`s Opteron 6276  CPU`s.  Upon logging on to the server I noticed 64 processors available to the OS and SQL – 64!

Thursday, June 14, 2012

SQL Aggregation "OVER()"

Over the years I have written many stored procedures in which we had to do some sort of aggregation.

The traditional way would be to sum the value and put in a group by clause at the end of the sql statement.

I found that I landed up building monster queries in order to do something simple.

Then a couple years back I came accross the OVER clause.

Wednesday, June 13, 2012

We want YOU as the next M.D.

For the past few months we've been working on a concept to enrich & develop our fellow Ninja's in the most fun way possible. Introducing... (drum roll)... The Master Dev concept!

Friday, June 8, 2012

The easiest Turn you will ever make...

The developers dream is to ensure that every user always has an equal and acceptable experience when working with their creations. And one of the areas that are usually neglected is post development user manual creation. Not only is it neglected but sometimes it gets written off completely due to the extra time and resources it consumes... Well not any more....

The javascript utility on the menu today is one of the least used packages around Turn.js, it's a really small compact library which allows a developer to turn images into brilliant, cross browser compatible turning magazine pages.... Let's begin on an example...

SQL Joins Explained

For some reason I can’t remember the different types of joins or rather what exactly the differences are, I always confuse them (I’m hoping I’m not the only one).  I’ve noticed that a graphical ilustration usually helps, so I’ve added Venn diagrams to aid in the explanation.

Spicy Windows PowerShell

In today’s business world it is important to get as much done in as little time as possible. People are finding ways to automate every repetitive task for which they’re responsible. Consistency is important when automating tasks so that every administrator on the team is equally capable of stepping in to help other team members when necessary. For more information on the background and overview of PowerShell visit

Thursday, May 31, 2012

One library every MVC project should not be without

One tool that I’ve found particularly useful in an MVC project is AutoMapper.

“A convention-based object-object mapper. 100% organic and gluten-free. Takes out all of the fuss of mapping one object to another.” AutoMapper

In my experience, in almost every get action method, a view model representation of the domain object needs to be constructed to be displayed in the view. With AutoMapper this is done automatically for you.

Thursday, May 24, 2012

Jazz up your web with JQuery


JQuery focuses on retrieving elements from HTML pages and performing operations upon them. Very similarly to CSS, the power of selectors that describe groups of elements by their type, attributes or placement within a document, JQuery is able to use this knowledge and degree of power to vastly simplify Javascript.

JQuery places a high priority on ensuring code works consistently across all major browsers. JQuery has a simple but powerful built-in method for extending its functionality via plugins.

Microsoft’s HomeOS

Microsoft is looking to unify electrical appliances within the home and establish itself in the upcoming “smart home” market with the development of HomeOS. Essentially a lightweight “smart home” operating system that aims to make it easy for users to manage their home networks and ease the creation of applications by third party developers, HomeOS is designed to provide a central hub through which various household devices can be controlled.

Rock out with Razor

The first glimpse we had at the Razor view engine was seen in the release of MVC 3 and the first thing anyone will notice is how easy programming becomes on a simple HTML page or rather CSHTML which is the Razor view extension.

Wednesday, May 23, 2012

JavaScript unit testing with QUnit

All developers will agree that web development goes hand in hand with client side coding to be able to provide a rich user interface to their users which is prettier, more responsive and impressive. Having that said it should be equally important that we not only unit test our server side code but also client side as well. 

ITIL: Monitoring and organising available Services in a Working environment

ITIL consists of 5 books that make up the lifecycle management.
The 5 books go hand-in-hand with each other and they support each other through the life cycle.
The ITIL lifecycle is a recursive circle for each process and even for each system until the system has been retired.

KnockedUp: Customizing the use of KnockoutJs

I blogged previously about a nifty little library called KnockoutJs.

To bring you up to speed, here is a typical example on the original usage of KnockoutJs:

Note that you have to specify all your bindings for an element in the data-bind attribute.

This got me thinking...

Doing all these bindings in one attribute may become untidy and unreadable. On the HTML, I wanted a way to explicitly define my bindings as attributes on a specific element.

...then KnockedUp was born

I created a library (dependent on JQuery & KnockoutJs) that gives you the same result as KnockoutJs and called it KnockedUp :) .

KnockedUp allows you to specify your data-bindings explicitly as normal attributes and not as in line values of the "data-bind" attribute. What this library does, is converting the KnockedUp syntax to proper KnockoutJs syntax.

These attribute-based bindings must start with an identifier, in my case "ko-". You can then have your HTML as:

Choose a ticket class:
<select ko-options="tickets"
<button ko-enable="chosenTicket"

<p ko-with="chosenTicket">
You have chosen
<b ko-text = "name"></b>
($ <span ko-text = "price"></span>)

KnockedUp will scan the body for elements that contain attributes starting with "ko-" and add these attributes as values to the applicable data-bind attribute of the applicable element, then KnockoutJs will kick in and perform its magic.


Simply add the reference to KnockedUp and just before calling the "ko.applyBindings(...)" function of KnockoutJs, just call KnockedUp's function - "ku.applyMappings()":


ko.applyBindings(new TicketsViewModel());

You can download the plug-in here - It's only about 800 bytes!

Disclaimer: Please note that this is currently only in beta phase as its only a concept for now.

Tweet me @FanieReynders for any questions!