Product launch checklist This is a checklist for a few things you need to consider for launching a new product
Reinventing myself This is how I reinvented myself after several major failures and going through identity crisis
Listen, Challenge, Commit! Listen, Challenge, Commit is a simple process that helps you build highly productive and cohesive teams
Position descriptions are harmful Position descriptions suck the creativity and passion out of employees by boxing them into a few bullet points.
Be clear and explicit about your values and expectations Your team are not mind readers. Be clear and transparent about what you stand for and what you expect and deliver on it
The ultimate software QA process Different teams and organisations have different QA processes: some very heavy handed and some too light. In this post, I outline a practical, lean and collaborative approach to software testing that leads to higher quality products and faster delivery cycles
Microservices lessons from trenches - DDD Melbourne You can find the slides and screen recording of my DDD Melbourne microservices talk here
Microservices lessons from trenches There has been a bit of hype lately around microservices and all you hear is how awesome microservices architecture is. This series is about challenges: things you don't normally hear when developers talk about microservices
BDDfy V4 After 4 months of hard work, 30 pull requests and 300 commits BDDfy V4 is now released with a lot cool new features
Microsoft MVP Award I am proud to announce that I just received MVP Award from Microsoft for my open source contributions
Processing credit card transactions A lot of businesses want the ability to process credit card transactions. In this post we're going to see how credit card transactions work and what it takes to implement a proper solution
Code generation pros and cons and T4 Template Code generation is almost always a code smell; but every once in a while you come across a problem where code generation just might be the right the solution
Never judge a programmer by their commit history Never judge a programmer by their commit history. No matter how good a programmer you are, there are times you're going to do a crappy work
Better release notes for your git repository I just started using a new format for 'release notes' which addresses quite a few issues and removes the need to use GitHub releases
GitHub wish list Here is a wish list of changes and improvements that I think would make GitHub better for a lot of developers
Announcing Software Quotes website Software Quotes website allows you to easily discover and share some awesome software quotes
Humanizer is now a Portable Class Library Humanizer is now a Portable Class Library with support for .Net 4 and higher versions, SilverLight 5, Windows Phone 8 and Win Store applications
A few healthy habits for office workers Over the years I have developed a few habits which I think help me stay healthier despite my somewhat physically unhealthy job
Continuous Integration & Delivery For GitHub With TeamCity This is an end-to-end tutorial for setting up Continuous Integration and Delivery for a GitHub project using TeamCity
Humanizer hit V1 Humanizer just hit V1. Use Humanizer on your .Net projects to make your code and user interface more human-friendly.
Changing RunTime Behavior Of Application Under Test One of the reasons UI and integration tests fail at times is bad test environment. In this article I explain a few ideas for setting up your test environment properly.
Officially a nettuts author I just published my first articles on nettuts about UI automation and am now officially a nettuts author
Seleno V0.6 is released Seleno V0.6 makes the API more consistent, fluent and extensible
Switching from FunnelWeb to DocPad I have switched my blog from FunnelWeb to DocPad
Humanizer V0.5 A quick introduction to features added in Humanizer V0.5
Humanizer V0.4 Humanizer has a few nice additions
A horrifying experience A horrifying personal experience
How I learn a few learning techniques I use to improve my learning rate - mostly as a programmer
Stop Discriminating Stop discriminating! Give some love and you'll get some love back
String in Ruby A quick overview of String class in Ruby and its similarities and differences with String in C#
A quick tour around Ruby In this post I will give you a very quick tour around Ruby.
Ruby for C# developers This is a series of posts in which I will try to explain Ruby in a friendly language for C# developers
Popular posts A quick list of the most hit posts on my blog
Offline Web Application Making a web site available in offline mode could be tricky. In this post I cover a lot of gotchas and provide quite a few tips on how to do it
Automated UI Testing Done Right Automated UI Testing Done Right at Queensland MSDN User Group
Dealing with Net Negative Producing Programmers Net Negative Producing Programmers are those who insert enough spoilage to exceed the value of their production
An experiment with Git, Vim and posh-git I was looking for a way to be more productive with git which led me to do an experiment with Git, Vim and posh-git
Automated UI Testing Done Right Come along to DDDSydney to see how you can do Automated UI Testing Done Right
Why I do not mind VS2012 ALL CAPS menu A lot of devs seem unhappy about Visual Studio 2012 ALL CAPS menu; but I do not mind them and I think you should not either
bddify is moved to GitHub and is renamed to BDDfy Good news for those who could not pronounce bddify. It has now been renamed to BDDfy and lives in GitHub :)
Migrating from Mercurial to Git In this post I explain what you need to do to migrate your repository from Mercurial to Git
Developer productivity tools and Visual Studio extensions A list of windows and Visual Studio productivity tools and extensions I am currently using
Introducing Humanizer Introducing Humanizer - A micro-framework that turns your normal strings, type names, enum fields, date fields ETC into a human friendly format
Advanced Web Debugging with Fiddler My DDD Brisbane session on Advanced Web Debugging with Fiddler
Transform app.config and web.config How to transform app.config and web.config files easily using CodeAssassin.ConfigTransform and SlowCheetah
Using IDisposable to write cleaner code IDisposable is usually used for garbage collection. Here I explain a simple technique that can help you clean up some of your code using IDisposable
Input Parameters in Fluent API In this post I will show you how you can use input parameters with BDDfy's Fluent API
Fluent API in BDDfy In this post we cover Fluent API as the third approach to specify scenario steps
Executable Attributes in BDDfy In this post we discuss how you can specify your steps explicitly using
Story in BDDfy We wrote a simple scenario in the previous post; but how can we write a user story using BDDfy?
Method name conventions in BDDfy In this article I explain how you may take advantage of method name conventions in BDDfy to very easily write a BDD behavior
Introduction to BDDfy BDDfy V1 is released. This is an introduction to the framework and a start of an extensive series about BDDfy.
Zero tolerance on broken windows Broken windows in software are dangerous and contagious and the best way to deal with them is usually zero tolerance
Advanced Web Debugging with Fiddler I just finished up my talk at DDD Brisbane about Fiddler. Here are the slides
Mitigate your merge issues There are a few things you can do to mitigate merge issues to a large extent
Definition of Done in an MVC project Definition of Done in an ASP.Net MVC project I just joined
How secure are GUIDs? In this post I explain whether GUIDs can be hacked or not - just some old news!
Lest we forget these great men R.I.P. Steve Jobs and Dennis Ritchie
That Tricky StackTrace In this article I will show you a tricky situation that could happen when you walk up the StackTrace
Nullable Types' Subtlety In this post I explain a little subtlety with .Net Nullable Types that confuses some programmers
GeekQuiz.Net Introducing GeekQuiz.Net: Geeky quizzes for geeks and coding enthusiasts
Fiddler In Action - Part 2 In this article I will try to cover some of the advanced features of Fiddler
Fiddler In Action - Part 1 A not so quick guide to Fiddler Web Debugger
bddify V0.5 and some updates latest about bddify
Extracting input arguments from expressions For BDDfy's Fluent API I needed a way to be able to inspect a method call lambda expression and extract input parameters from it.
Extending Bddify Bddify is very extensible and extending it is very easy. In this post I will discuss how to extend Bddify.
Introducing bddify: A simple BDD framework for .Net bddify is a simple yet powerful and extensible BDD framework for .Net developers
BDD Simply with Bddify Bddify is a very simple .Net library that allows you to write BDD tests easily.
Refactoring Using R# Refactoring tools are great. They are great time savers and could help us identify and fix some issues in our code; but they could also be dangerous.
Visual Studio 2010 Code Definition Window Visual Studio 2010 Code Definition Window is very handy
Executable Requirements Using BDD you could write executable software requirements. Is not that cool?
BDD to the rescue BDD removes the ambiguity from the requirements; but taking it a step further could provide a lot of other benefits.
BDD Simply In this article I discuss a simple technique that provides a rather decent result if you cannot or do not need to use a fully fledged BDD framework.
On bad code Is it ok to write bad code? Is it ok to rewrite a bad codebase?
ORM anti-patterns - Part 5: Generic update methods One of my biggest issue with ORM usage is when developers save state changes using generic save methods instead of saving the user intention.
FunnelWeb on RavenDB FunnelWeb on RavenDB is a port of FunnelWeb blog engine to work with RavenDB
ORM anti-patterns - Part 4: Persistence vs Domain Model Persistence Model != Domain Model
Inattentional blindness We as programmers deal with inattentional blindness everyday
ORM anti-pattern series Due to their convenience developers tend to use ORM frameworks everywhere possible leading to a lot of issues.
ORM anti-patterns - Part 3: Lazy loading Lazy loading is wrong and programmers use it because it is very convenient and helps them think less before coding.
How to make a bug more easily reproducible We should not work on a bug without a good understanding of it or being able to reproduce it.
ORM anti-patterns - Part 2: Batch Operations Batch operations are not always implemented properly when programmers use ORM.
ORM anti-patterns - Part 1: Active Record There are some common mistakes and anti-patterns in using ORMS. Active Record is one of those data access patterns that is abused.
Installing FunnelWeb Blog Engine Explaining how I went about downloading and installing FunnelWeb and basically got this blog up and running