Monday, January 3, 2011

Guide to opening Christmas presents with 10+ people


Christmas is a big and wonderful event at my family. This year we had 10 people joining us for Christmas morning. This means a bunch of presents. If you try to just hand them out without a system you will end up with people feeling left out.

If nothing else, you need to sort.


But that’s getting ahead of ourselves. First, Let’s do some math:


If 10 people buy 1 present for each of the other 9 people
Then 
10 * 1* 9 = 90 presents 


Which means, that you will have a minimum of 90 presents for a 10 person group.
For us, a big part of Christmas is enjoying seeing each other’s faces as they open their present. Which means that opening a present might take 3-4 minutes. So

90 presents *  4 minutes / present  = 360 minutes = 6 hours... minimum.

Which is a fair bit of time. However, just to complicate things not everyone is “equal” in the present receiving world. Some people might get 4-5 gifts from a loved one, which means you might have a few people with 30 presents instead of 9. This isn’t even a simple matter of “popularity”. You might get your father in law 4 small presents, while getting your sweetie only 1 Diamond bracelet.  

If you don’t time things right, you can have people sitting around for 4-5 hours without receiving a single gift.

So the question falls to how do you manage opening the gifts. I have been in the “Santa” position quite a few times, and finally feel happy enough with my methodology to share it with you.

But first,

The Axioms:

Include everybody
The goal here is to distribute gifts so that everyone feels included, and no one feels left-out or feeling like “why am I still here”.

Memory is not accounting
How people remember the gift giving is not simple numbers. If it was, it wouldn’t matter in which order you handed out the gifts.

Equal Distribution
Ideally, if you had 4 people you would distribute to person 1, person 2, person 3, person 4. You can’t do that of course, because not everyone has the same number of presents. But this is the idea.

Not all boxes are equal
While the size of the box does not correlate to the goodness of the gift. It is generally assumed that bigger presents are more exciting. These should also be distributed to avoid clustering. For example if you 4 small presents & 3 large presents, you wouldn’t want to open 3 large presents followed by 4 small ones.

Related Presents
Presents can group both by a single person, or by multiple people. You might have given someone a Wii & Wii Fit. The Wii Fit should not be opened 1st, as it would give away the Wii.  Likewise, you might have gotten the same “group therapy”  T-Shirts for 3 different people, they should be opened together.

Continual Opening
No one wants to wait around for santa to figure out what gift should be opened next.



Now lets look at
The Methodology

Start Strong & End Strong
The most import parts are the start and the finish. You should try to give 1 present to everyone there both at the beginning and at the end of the gift giving. This should be done in a circular order so that it is a easy pattern that will stick in the memories everyone there and make them feel like everyone is included. Keep in mind that some people (last minute guests) might only have 2-3 presents. So be careful not to use up all of their presents in the first few rounds.

Sort into Piles
You need to have some idea of how many presents per person you are dealing with, otherwise all hope is lost. Also you need to be able to easily answer the question “Where is a gift for Mary?”.
To do this, start to create piles of gifts for each person there. Creating these will take some time (90 * 30 seconds = 45 minutes of sorting), so you’ll need to do it as you go. Create the piles of presents while people are open the gifts. I usually start by giving 1 gift to every person (only acceptable at the 1st and last round), and having them go 1 at a time after each other. Make sure to put some space between the piles, or they will quickly get confused.

Prepare Next Gift 
If you give out 4 present at then you will end up with 2 being opened at the same time, or one being set down and forgotten. If you don’t hand out 1 while one is being opened, you’ll have a 1/2 minute pause in between. It doesn’t seem like much, but it will add an extra hour to the gift opening process.

Ask for Help
You will not be able to know which presents are related. Sometimes you can guess “group” presents by package shape. But simply asking if “these should be opened together”, or “is this a good one to open now?” is useful. Having sorted piles will make it easy to swap out the present if you need to. 

Sub Group
Once you’ve finally gotten the presents into piles, start making  “finishing” piles. The Idea here is to make it easy to finish strong. Take this scenario:

Bob
8 gifts
Colette
14 gifts
Marsha
10 gifts
Jan
5 gifts
Brie
6 gifts
How do you distribute? Hard to do right? 
Now, look at the same scenario, with a 4 present sub-pile finish. This allows for the differences in gifts to be easier to see. You want the finishing pile to be as big of a number as possible.  Now you have

Bob
4 gifts +
4
Colette
4 gifts +
10
Marsha
4 gifts +
6
Jan
4 gifts +
1
Brie
4 gifts +
2
Better start increasing the gifts to Colette & Marsha!
To make thing worse, you aren’t going to be able to easily get a “count” it’s just a pile of presents. The finishing pile helps you to not have to constantly re-count.
Piles of presents (notice it's still hard to count)

Confuse the middle
While you want the start and end to be nice and ordered a bit of confusion will go a long way in the middle. Try to give presents so it doesn’t just go around in a circle. Lot’s of back and forth. Give presents to people sitting far away. The less of a “pattern” the harder it will be to realize that someone is opening more presents than someone else. 
But be careful to not forget people. In the above scenario, it’s important to make sure Jan gets a present now and then, even if means adjusting your “finishing pile” to 3 or 2 presents.
Hopefully this will help you to have a even merrier Christmas!

Tuesday, November 16, 2010

My Treadmill Desk



Overview
At July’s Ignite San Diego, I saw Ernesto give a talk where he showed his treadmill desk. Yesterday, I made one for myself.

Am I able to work while using it? I’m writing this blog right now while walking at 1.5 mph. 

Verdict
I’m happy with the desk. I’m walking at 1.5 mph which is about right for me, sometimes I need to slow it down to 1 mph depending on the detail of work I am doing or if I am worried about sweating. You don’t sweat a lot but even so 2 hours of small sweat isn’t great if you are going to a meeting. I have not yet gotten to try it out pair programming (except remotely, which doesn’t count). I’m not sure whether or not you need 2 treadmills for that.

Cost
$1250 total.  
Let’s break that down.
Treadmill - $1,000
Desk - $250
I’m happy with my choices, but I believe a treadmill bought off of craigslist can dramatically improve the bottom line here.



F.A.Q
Q. Do the controls on the floor matter?
A. No, you aren't changing the speed often or at all, and it's moving slow.

Q. Do you like it?
A. Yes

Q. Do you sweat?
A. Not at 1 mph, a little at 1.5 mph

The Parts
The Tread Mill

I got a AFG 3.0 AT treadmill. It cost $800 on sale at sports chalet. I also got the extended 5 year warranty which was an additional $200. I don’t usually get the warranty, but thought I might be using this a bit more than the average person.
It’s worth noting this thing is HEAVY (350 lbs) so get some help moving it. 
The Desk

Ikea came thru nicely with the Fredrik 50 inch long desk($200). I modified the setup to put the top self at the bottom (which you need to do 1st) but otherwise it works perfectly.
Extras. I also got a 48 inch power strip ($25 at Fry’s) which I love and would recommend for any desk. A Belkin usb hub ($25), which makes it easier to hook up the laptop to the keyboard and mouse. 



The Build
The assembly of the treadmill looks quite complicated, but I wouldn’t know because it turns out you don’t have to do it. You don’t want the hand rails anyways. and the console is just sitting at the side of the base.
The desk is likewise easy to assemble. I placed the main desk layer so that when walking on the treadmill my arms naturally bent to that height. I am also liking having the  screen at the higher height, so i don’t have to bend over, which is a bit hard while walking.


Links

Saturday, September 25, 2010

Extension Methods

Extension Methods allow for the readability you expect in code you don't own. C# and Ruby have had them for a while, and I created a jar to so you can use them in java as well. (you can read the original post here)

I vBlogged my thoughts here:



Here's the simple reason you want a fluent interface for your code.











Download Extension Methods for Java

Thursday, September 23, 2010

Lamdbas in Java 1.6

If you've ever heard that java is a poor language because it doesn't have lambdas, that ends today!

I created a way to do lambda's in java 1.6 without changing: the JDK, the compiler, the ByteCode or the Syntax.

I vBlogged my thoughts here:


It's only a jar file, no special requirements or changes.

You can down load it here at www.approvaltests.com

You might also be interested in my similar addition of extension method in java

Here's the diagram of the syntax :

I also made a small tutorial here : http://blog.approvaltests.com/2010/10/java-lambdas.html


Tuesday, September 14, 2010

Theory Based Testing

Most of us are familiar with classic unit testing. Today, I wanted to talk a about a different form of unit testing, that is much more powerful when it is possible.

Theory based test take the normal form of
Given A & B expect C
and change it to
Given A & B expect C theory
This removal of the expected C, allows you to test MANY more cases, because you don't need to pre-plan the results for a given A & B

I vBlogged my thoughts here:


btw: if you are interested in attending an open spaces, check out Open Agile So Cal. There's one coming up in San Francisco Oct. 11, 2010

Saturday, September 4, 2010

Rewriting Vs Refactoring

Once again, I found myself having a discussion about the dangers of doing a legacy code rewrite. Durning this client meeting, I came up with an illustration I wanted to share.

I vBlogged my thoughts here:



These 3 graphs sum up the Massive Risk at the end.

The Rewrite Scenario





The Hidden Question at the End






The Refactor Scenario

Tuesday, August 31, 2010

The importance of your Compile Time

Lot's of time i find myself working to shorten compile and build times. While most people agree with shorter is better for compile times, the questions of what is short? and how important is it? seem to remain vague and seemly open to judgement.

It's not. So I wanted to take a moment to clarify it.


 I vBlogged my thoughts here





You can see the excel sheet here
and read the Joel on Software Thread here