Being Cellfish
Stuff I wished I've found in some blog (and sometimes did)
2009 Advent Calendar December 12th
So now we need to fix the broken ImportantProvider making sure it uses one lock: 1: public class...
Author: Emil Gustafsson Date: 12/12/2009
2009 Advent Calendar December 11th
Like yesterday I only have a passing test to add today: 1: public class...
Author: Emil Gustafsson Date: 12/11/2009
2009 Advent Calendar December 10th
Today I'm just adding a passing test. 1: public class...
Author: Emil Gustafsson Date: 12/10/2009
2009 Advent Calendar December 9th
With the solution we have from yesterday we still have a big problem. Whoever uses ImportantObject...
Author: Emil Gustafsson Date: 12/09/2009
2009 Advent Calendar December 8th
So far we've kind of assumed for most of the time that the ImportantObject is easy to create. If not...
Author: Emil Gustafsson Date: 12/08/2009
2009 Advent Calendar December 7th
Now that we have a working transaction from yesterday we need to add the important object to it. So...
Author: Emil Gustafsson Date: 12/07/2009
2009 Advent Calendar December 6th
Since I want the transaction we're creating to take the lock when created I also want to release the...
Author: Emil Gustafsson Date: 12/06/2009
2009 Advent Calendar December 5th
Even though the solution created yesterday ensures thread safety when ImportantMethod is used I'm...
Author: Emil Gustafsson Date: 12/05/2009
2009 Advent Calendar December 4th
The problem with yesterday's solution is that we're only testing that the lock is taken when...
Author: Emil Gustafsson Date: 12/04/2009
2009 Advent Calendar December 3rd
Let's continue with the same lock interface and MutexLock implementation as yesterday. In order to...
Author: Emil Gustafsson Date: 12/03/2009
2009 Advent Calendar December 2nd
Adding virtual methods to handle locks as we did yesterday is really not a good solution. The lock...
Author: Emil Gustafsson Date: 12/02/2009
2009 Advent Calendar December 1st
One way of adding tests for thread safety is to let the important object handle the locking through...
Author: Emil Gustafsson Date: 12/01/2009
The 2009 Advent calendar situation
Assume that you have some important object that performs some important task. It may look something...
Author: Emil Gustafsson Date: 11/29/2009
Advent calendar 2009 - how to TDD thread safety
Last year I wrote the same test in 24 different ways as a little advent calendar for you to enjoy....
Author: Emil Gustafsson Date: 11/28/2009
How do you reward good service at a restaurant?
I bet your answer to this question is; by giving a good tip. So what do you do if the service was...
Author: Emil Gustafsson Date: 11/19/2009
Pugh Decision Matrix
The Pugh decision matrix is a is a tool to help you make decisions when you're trying to sort out...
Author: Emil Gustafsson Date: 11/12/2009
How to prevent the use of "SELECT *"
One good tip for writing good SQL code is to always select the columns you need and never just...
Author: Emil Gustafsson Date: 11/08/2009
Team Coding Dojo 7
This time we did a new Kata - variant of poker hands. Instead of being so specific about the...
Author: Emil Gustafsson Date: 11/06/2009
How do I get someWin32API method to work in .Net?
It was some time since I last needed to use P/Invoke but it seems like I always need something from...
Author: Emil Gustafsson Date: 11/01/2009
Definition of mocking
When I read what Uncle Bob wrote today about how he usually hand-rolls his mocks it not only stirred...
Author: Emil Gustafsson Date: 10/28/2009
Five reasons to shorten your sprints
I've been involved in a few discussion on iteration length lately and was going to write something...
Author: Emil Gustafsson Date: 10/26/2009
Never convert your story points to time!
When I read these observations on estimations I was reminded of a thing that happened to me a few...
Author: Emil Gustafsson Date: 10/23/2009
How many t-shirts in your next iteration?
So considering my last post on t-shirt sizes and burn-downs, how do you decide on how many t-shirts...
Author: Emil Gustafsson Date: 10/21/2009
How to burn down estimates in t-shirt sizes
Some people estimate their user stories is t-shirt sizes, i.e. each story is either small, medium or...
Author: Emil Gustafsson Date: 10/19/2009
Software development at the fish market
The Fish market at Pike place is famous for its flying fish. I was there this weekend for the second...
Author: Emil Gustafsson Date: 10/12/2009
Creative solutions for remote team members
I'm always amazed when I hear how teams make remote team members being co-located with everybody...
Author: Emil Gustafsson Date: 10/07/2009
Coding Dojo 6
It was MineSweeper for the 6th MSFTCorpDojo today. We also applied the object calisthenics rules...
Author: Emil Gustafsson Date: 10/06/2009
Adding days to an iteration (sprint)
In Scrum you never extend a sprint. Read that again. Never. So why do some teams extend their sprint...
Author: Emil Gustafsson Date: 10/03/2009
Exceptions or not?
I've always had mixed feelings for exceptions. First of all exceptions should only be used for...
Author: Emil Gustafsson Date: 10/02/2009
SQL programming mistake #12
I would like to add another thing to my previous list. And that is the mistake of not properly...
Author: Emil Gustafsson Date: 09/27/2009
Extracting methods is just another level of indirection, or is it? - Part 2
Had a discussion about the final version in Uncle Bob's post that I linked to the other day. The...
Author: Emil Gustafsson Date: 09/17/2009
Extracting methods is just another level of indirection, or is it?
Over the last months (since I first tried the object calisthenics rules) I've been starting to...
Author: Emil Gustafsson Date: 09/16/2009
SQL programming mistakes
I recently read this comprehensive list with ten common mistakes done when writing SQL. And I'd like...
Author: Emil Gustafsson Date: 09/14/2009
Second Generation Lean Product Development
I just finished a nice book on lean software development. I actually started to read it because one...
Author: Emil Gustafsson Date: 09/09/2009
One way of executing the daily stand-up
I think the daily stand-up is one of the most important parts that makes a team work well together...
Author: Emil Gustafsson Date: 09/05/2009
Coding Dojo 5
Yesterday was the fifth MSFTCorpDojo. MineSweeper as usual and we tried switching person at keyboard...
Author: Emil Gustafsson Date: 09/02/2009
pthread_cond_timedwait behaving differently on different platforms
pthread_cond_timedwait is a nice little function that can be used to "atomically" release a mutex,...
Author: Emil Gustafsson Date: 09/01/2009
Premature optimization is the root of all evil, or is it?
I've been sitting in a lot of code reviews and code inspections where somebody suggests a change to...
Author: Emil Gustafsson Date: 08/30/2009
Team Coding Dojo 5
This time we took the completed BankOCR Kata from last time and tried to refactor it using the...
Author: Emil Gustafsson Date: 08/27/2009
Object Calisthenics: Rule 9: Don't use any getters, setters or properties
This is my favorite rule. I think it's a forgotten guideline in OO design to tell objects what to do...
Author: Emil Gustafsson Date: 08/24/2009
Object Calisthenics: Rule 8: Use first class collections
Yet another rule to keep your objects focused at a single responsibility. Any class with an instance...
Author: Emil Gustafsson Date: 08/23/2009
Object Calisthenics: Rule 7: Don't use any classes with more than two instance variables
This is another aspect of keeping your entities small I think. Classes with a lot of instance...
Author: Emil Gustafsson Date: 08/22/2009
Object Calisthenics: Rule 6: Keep all entities small
This is a funny rule when exercising this. No class should be more than 50 lines long and no package...
Author: Emil Gustafsson Date: 08/21/2009
Object Calisthenics: Rule 5: Don't abbreviate
This rule has a weird name I think. What it means is that whenever you abbreviate in a class or...
Author: Emil Gustafsson Date: 08/20/2009
Object Calisthenics: Rule 4: Use only one dot per line
Not only is a long line with a lot of dots harder to understand. It usually means that your object...
Author: Emil Gustafsson Date: 08/19/2009
Object Calisthenics: Rule 3: Wrap all primitives and strings
This rule states that no parameters should be a of a primitive type (e.g. int, double) nor a string....
Author: Emil Gustafsson Date: 08/18/2009
Object Calisthenics: Rule 2: Don't use the else keyword
Some people think that the if branch should be the every thing is good branch and the else branch...
Author: Emil Gustafsson Date: 08/17/2009
Object Calisthenics: Rule 1: Use one level of indentation per method
First of all a method with a lot of different indentation is harder to understand than a method with...
Author: Emil Gustafsson Date: 08/16/2009
Object Calisthenics: First contact
A few weeks ago I was introduced the the object calisthenics described by Jeff Bay in the book The...
Author: Emil Gustafsson Date: 08/15/2009