Dec 27, 2009

I could fix keyboards

I got my first computer when I was 20 years old (a late bloomer) back in 93. At the time, if a keyboard stopped working, I could fix it. It was no big deal, most of the people I knew could do it to. Troubleshooting the problem was easy.

Open the thingy and look inside.
If it's dirty: Clean it.
If a piece is loose: Push or bend it back in place.
If a piece is visibly broken: Make a new one or replace it with part from another dead thingy.
If a circuit was visibly burned: Replace it with the same part from another dead thingy or declare that one dead but keep it for the parts.

With this check list, you were able to go a long way before throwing something away. So I kept on fixing keyboards, mouses, laptops and PCs for years. Then one of my Natural-Keyboards broke. “No problem!” I was thinking, getting my tools out. It's been a long time and couldn't wait to see what it looked like inside. It was a shock. There's nothing in there. It was two pieces of clear plastic sheets, one of top of the other, covering the space under all the keys. Imbedded in the plastic is a bunch of circuits lines and by pressing the two plastic layers, lines on each layers would form a contact. It was not dirty, there was no pieces to get loose and it was not visibly broken or burned. I was screwed. 'So long' my 120.00$ keyboard and 'Hello' the cheapo 19.99$ keyboard. Yet another reminder of to the consuming world.

Nowadays if something breaks, most of the time we throw it away. If we bother to open the thing, it often brakes in the process since it's not meant to be opened. Once inside, we look at the one chip that, somehow, does everything in-there and sigh before throwing the pile of pieces in the garbage.

I like to fix things. Most of our tables, desks and cupboards in the house are nice old things having a second life. Not that long ago, my wife came home with an old sowing desk that we turned it into a side table in the living room. While fixing it I remove the sowing machine pedal that was still attached inside the desk.


It was begging me to open it and so I did.


It was simple swivel harm that could make contact at five different places on one long coil resistor, or be in the 'fully on' position or the 'fully off' position.


I had a mixture of emotions. I started by being impressed with the simplicity. I knew I could fix that and I knew I could use that design in an eventual project. I was also angry that things are not made like that anymore.

Dec 15, 2009

Points vs Hours

The pains of task estimation. It makes that warm feeling of starting a new project disappear completely. No matter what's your method, Waterfall or Agile, you have to tackle that features list at the beginning of the project and estimate like there's no tomorrow. It's always too big and all those estimations will enable the team to scope. And so, you get to it. It take all of your team days to get through it and a the same time you know you'll have to re-estimate all of those features throughout the entire project.

I got tired of that. Not fast enough, but after 16 years of estimating with hours I couldn't face another project like that. That's when I gave a good try to the Story Points system. It appeared a bit suspicious so I 'googled' away on the subject. My goal was to find THE reason that would convince any programmers on my team to switch to a points estimation. Lucky me, I found one and here it is:

Behold the one reason to use points over hours when estimating.
>> If you show two different features to two programmers, chances are they will not agree on how long, in time, it would take to code it. They will, on the other hand, always agree on which task is bigger than the other one. <<

It takes us now 2-4 hours to estimate what took us a full week before. Here are the easy steps:
1) Put all the possible stories in a spreadsheet.
2) Create a second spreadsheet that will contain, in the end, your estimated backlog (aka the list).
* In this list, the big stories will be at the top and the small ones at the bottom.
3) Copy the first story into the list. Since it's the first item, just drop it at the top of the sheet.
4) Copy the next story into the list by doing an insertion sort based on the simple question “Is this new story smaller or bigger?”.
5) Repeat step four for all the stories.
6) Giving points to the stories starting at the bottom of the list, by giving the first one 1 point.
7) Using the Poker Planning scale (0, ½, 1, 2, 3, 5, 8, 13, 20, 40, 100), ask yourself if the story above the last one is in the same scale.
* If it is: Give it the same estimate.
* If it's bigger: Give it the next increment in the scale.
* If it's smaller: Move it down until it fits.
8) Repeat step 7 for the entire list.

Tips:
- Try to make most of the list fit between the included values 1 and 13.
- Sometimes micro stories are at the bottom of the list. Give them the value ½.
- At the top you will probably find some Epics of values 20, 40 and even 100. those will have to be broken down into sub stories latter.

Those stories will never have to be re-estimated unless the descriptions changes dramatically. The velocity of the team can be calculated by the total of points they can burn in one sprint and that velocity normally stabilize after 2-3 sprints. With that value you can also predict how many sprints it will take to complete the backlog.

Go points!

Nov 18, 2009

Dimensions... again

In a previous post, I was wondering if it was possible to describe a dimension solely in terms understandable by the previous dimension(s) (i.e. describe (n)D in terms of (n-1)D). While thinking about this, I stumble on something interesting. But first lets start with some basic setup:

The Point
It all starts with the point. We say that the point is in 0D (no dimension).

The Line
To make a line starting from that point we can go in any directions around it. We than stretch that point into that direction and draw a line between the two points. We can then say that we had total freedom of movement to create that line. We would also be drawn to conclude that this freedom of movement was in a 3D volume. (Spherical coordinate system.)

The Square
Making the square is a similar process but this time we have stay perpendicular to the previous line. We then stretch the line anywhere around the original line and draw two extra lines liking the copied points. We had some freedom of movement to create that square and conclude that this freedom of movement was in a 2D plane. (Circular coordinate system)

The Cube
Repeating the procedure again will generate a cube. This time our movement have to stay perpendicular to the squares plane. We then stretch the square anywhere along a perpendicular line from the plane and draw four lines liking the copied points. Again, we had some freedom of movement to create that square. We would conclude that this freedom of movement was on a 1D line. (Linear coordinate system)


Looking back at what happen, we can see that as the dimensions are increasing from 0D to 3D the freedoms of movement decreases from 3D to 1D, leaving no dimension to continue stretching the cube into a possible next dimension. In a way, I was somewhat happy. It looked like a perfect circle, from 1D to 3D and back. I showed those results to my wife and the first thing she thought was “Of course you start describing the points freedom of movement as 3D because that's the max for you, they would not say that in line world”. She was right.

I ask myself: how would 1D and 2D describe the same transformation?

The Line
The line would say that the point as no dimension (0D). It would say that to make a line, you have to stretch the point into the first dimension. It then stretch the point anywhere along the existing Line World (1D) and draw a line between the two points. It can say that It had some freedom of movement to create that line. It would conclude that this freedom of movement was on a 1D line.

The Square
The square would also say that the point as no dimension (0D). It would also agree that to make a line, you have to stretch the point into 1D. It then stretch the point anywhere around the original point, while staying in the squares plane, and draw a line between the two points. It can say that It had some freedom of movement creating that line. It would conclude that this freedom of movement was in a 2D plane.
The square would then be able to go one step further than the 1D Line, by stretching the newly created line into it's 2D world with a freedom on a 1D line.


Since the maximum freedom of movement is bounded by our knowledge we cannot picture stretching beyond that limit. But, we as 3D beings, know that there is a second dimension even though the Line World can't see it.
A 4D being would say that the freedom of movement of the point, when creating the line, is in four dimensions. It would also be able to stretch the cube into the fourth dimension and understand why we can't see it.

Can that scale of dimensions be infinite?

Nov 11, 2009

Email Overflow

I'm one of those really bad people that can easily get a backed-up inbox, if I don't stay on top of my emails every minute of every day. I'm a get-up-and-say-it-to-the-person kind of guy.

Of course everybody that noticed my email reflux wanted to help me and they always happened to have the best method. So I tried all kinds of stuff: bucket by projects, by categories, by people, by fields of work,... It got much better and it was manageable but I still missed important emails here and there through the tsunami getting to my inbox.

Than came Bob (not the real name). Bob noticed. Bob wanted to help and Bob had the best method. He than told me about his two buckets method.

Two buckets? How does that even work?

The first bucket is for emails where my name is in the “To” field and the second bucket is for emails where my name is in the “CC” field. The justifying rules are: 1) If it's really important, people will put your name in the “To” field. 2) If your name is in the “CC” field, get to it when you can but keep your shirt on. 3) Anything else is getting to you through mailing lists and is not dire... in theory.

Wow! So far it's working great. Now I just have to check the “To” bucket all the time, check the “CC” bucket 5-6 times a day and check the main inbox in the morning and evening.

Ah, the small things in life.

Oct 27, 2009

Milliput

One day I needed to make very organic shapes on a scratch-build model. I put together all the basic parts knowing that I would have to fill all sharp corners and round-off all hard edges using the only putty I knew at the time, Tamya Putty.

Stop laughing

I won a prize for that model. First place in the SciFi Vehicle category. Of course, after I explained my methods to the other guys, I could have also won first place in the Idiot's Method category. That's when I learned about Super Sculpey, Milliput and other sculpting medium that everybody was using, except me of course.
If you didn't get the joke: Tamya Putty is to fill small cracks only. To use it the way I did, it's like trying to extend a wall using wall putty.
One of the modeler, whose work I admired, was working with Milliput. That was all I needed to select it as my future medium. Ha Milliput! I could finally make any shapes I wanted. I started making figures sculpted entirely by hand. Nothing could stop me now... except Milliput!


The thing is, it's a two parts epoxy paste that, out of the box, as the consistency of a dried bubble gum. Here are the steps for using it:

1: Make sure you have at least one hour to invest in this. Milliput takes time to mix and stays soft for only forty five minutes. After that, it's as malleable as depleted uranium.
2: Keep a small bowl of water and a rag near you on the table.
3: Guesstimate as best as you can the exact volume of Milliput you will need and add 20%. This stuff is expensive and once it's mixed you have to use it or it will be lost. My best advice is to always have a rough area to fill-in where you can put the small excess you will have. Don't under estimate because it sucks to remix a small batch.
4: Cut equal amounts of material A and B using a strong blade. (Remember, this is really hard stuff)
5: Try mixing the two parts into a perfectly even material by pressing, bashing, slicing & stacking and mushing the batch with your thumbs. It must be even or you will have holes in your surface. This takes about five minutes but it feels like thirty. At the end your thumbs normally feel as if you've cut your nails way to short and it's sensitive every time you push on their tips.
6: Start using it! You only have forty five minutes and it will get harder every minute. If the Milliput start sticking to your fingers, keep them wet by dipping them in the bowl of water next to you. When it gets to messy use the rag.
7: The next morning, once it's dry, you can use any kind of carving methods to continue shaping your surface.
8: To complete the sculpture, repeat those steps about fifty times.

This is not a joke. I used this stuff for years (from 1996 to 2007) and I had to do that every time. Needless to say that it was an adventure.

By the way, I'm now using Castilene for the last two years.

Oct 18, 2009

Precise imprecision

Have you ever thought about how many types of intersections exist for two lines? Just two straight lines, either in 2D or 3D, bounded by two points (not infinite). And only counting the intersections that fall on one of the two lines, including their end points. You probably didn't, because it sounds pointless.


Well, I had to think about that one seriously while working on a problem back in 2001. It looks simple at first. You start imagining the type of intersections:
  • The two lines crossing in the middle

  • One end of a line touching the other one

  • One end of both lines touching each other

Then you think about that one:

  • The two lines completely overlapping

And that gets you to:

  • The two lines partly overlapping
  • And both overlapping combinations with a short and a long line...

In that completed list, you arrive at 7 types of intersections. That would be OK in a perfect world where everything is on a nice grid and points are either on or off the line.
In the real world, lines don't fall perfectly on each other. Many times, two points will be really, really, really close but not touching. That's when you start working with an allowance for imprecision. Doing that, you round up numbers for which the difference is smaller than the allowed precision. So in a 3D world, you would consider two points that are close enough together as one point. This then creates a perfect world with 7 types of intersections... or does it?

Not really, if you're picky like me. Because, with this approach, the data changes with each correction created by the precision rounding. So I asked myself: what would happened if I didn't move the rounded points? What kind of intersection types would that create? After a lot of work, I finished a new list of intersection types. Starting with the original 7 types of intersections, I identified variations for almost each of them. And because of the imprecision allowance, I also found a whole set of sub-cases with each of them acting as a multiplication factor on the base types. This brought the grand total to 129 types of intersections.


129, Ouch!


So, next time you think something is simple... think twice.

Oct 15, 2009

Flatland 2.0


In the novel Flatland, the sphere fails to enlighten the square about the existence of a 3rd dimension. In the end the sphere simply gives up and pushes the square out of its current plane. This make him hover above his flat world and see it from a 3rd dimension point of view.

This never made sense to me for two reasons. First, this is an easy way out of solving the problem of explaining the 3rd dimension to a 2D being. Second, the square does not acquire a new sense of vision because he is outside of his original plane. He would still see the world through a flat input. What he would see would be incomprehensible to him, the same way the sphere was appearing, morphing and disappearing by intersecting with his plane. All 3D shapes would still look like that to him and all 2D shapes (from his plane or any plane) would look like points and, occasionally, lines.

Is it possible to explain the 3rd dimension using only only 2D terms and their relation to 1D and 0D? That's one of the things that I'm working on...

My poor brain

Explorer or Poet?

Have you ever worked in companies that apply every year for Canada RS&DE? I have... many times. Over the last 16 years a clear pattern was always present. It is my belief that people applying for R&D credits fall in one of the two following categories: Explorers or Poets.

Explorer: Sees his home as a port from which he comes and goes, because the real action is out their. Thrives in finding new physical things before anybody. Is never afraid of failing and so, is always trying again and again.
Poet: Loves the security of home. Can sometimes go as far as the park in front of his home or even the cafe two blocks away. Excels at seeing things from a new angle. Is so alarmed by the idea of failure that, most of the time, he will extract new views from things he knows.

An Explorer-type company works with the uncertainties of experimentation all year long. At the end of the year, their R&D report is already filed with real research and they can go about their normal business.
On the other hand, the Poet-type company reheated last years stuff to capitalize as much as possible on existing technologies. At the end of the year though, the R&D report is empty. That's when the Poet enters the scene.

Oh dear Poet, can you write me something beautiful, inspired by this everyday stuff?

Make it sound new, I hope I'll get 60% of my reclamation.

Sigh!

Oct 14, 2009

Machine Reading


A Machine Reading system would be able to parse any documents and extract all the info, like people, places, time line, any associations between those things and more. It would also have to understand innuendos, ambiguities, sarcasms and backwards logic to understand the real meaning of a text. It would be nice for many application domains like book publishing, web search, forums policing or spying.

Are you nervous now?

A program like that doesn't exist right now. This looks to me like a perfect NP-complete problem. My guess is that it's worth a PhD at the very least... But for that you have to be able to publish your results. Why is that relevant? Because, it looks like the first application of that type is not going to be from the private sector but from the military. Yes, DARPA just gave a 5 year contract of nearly 30 million dollars to BBN Technologies to 'build a prototype' of a fully functional machine reading AI.
Oh, and yes you will need a security clearance to work on the project.

How about now?



For my part, I wish Goolge was building a thing like that and would make it an Open Patent. I also wish I was working on the project but that's another story.

Oct 5, 2009

What's the points?

Back in January 2007, I was browsing Paul Bourke's web site, looking at amazing images generated from fractals. Like most people I find that some of them have an artsy side and would fit perfectly in a modern art exhibit.

Then I came upon this one:

$ x_{n+1}=\sin(ay_n)-\cos(bx_n) $
$ y_{n+1}=\sin(cx_n)-\cos(dy_n) $

It was generated with a mathematical attractor named 'Peter de Jong'. It was simple, no colors and the rendering wasn't that great. Even though all the points are in a single 2D flat plane, I couldn't help seeing depth in this image. To me, there's a bunch of translucent surfaces in a 3D space.
Of course, at that point my brain started working on overdrive wondering what it would take to separate the points for real and see the shape expanding into a 3rd dimension. So I've set some basic rules for this experiment:

1) Only use the existing X and Y data to generate the new Z data.
2) Never modify the existing X and Y data.

I called this process delamination, because it's like trying to separate different layers glued on top of each other. So far I've achieve 80% to 90% delamination. I only understand 20% of the process and I'm analyzing my results to figure it out.

Also. If you've worked on something like this, I would really like to talk with you.

Oct 4, 2009

A7LB

I sculpted this during an on-off period between 2000 and 2003. Most of it is made of Milliput, a really hard epoxy-base compound I will never work with again. The painting was done using acrylic.



The figure is about 1:10 scale and depicts Cdr Eugene Cernan during Apollo 17th and last moon landing mission.

Sep 18, 2009

Sting - Police fan?

My wife found this group called Nouvelle Vague. They are doing an interpretation of the Police 'So lonely'.



Personally I think it's very good and I like the industrial sounds they put in it. I don't know much about the group itself and about the rest of their music, bu I'm sure going to look into it now.

Sep 15, 2009

Left behind

Normally when I watch TED talks, I come out very motivated and dive into my work for hours. This time it was different, Bjarke Ingels's talk left me both motivated and disheartened. Here he comes showing incredible architecture solutions, beautiful buildings and enormous projects, but something was not quite right. Most of those amazing projects are nowhere near North America or Europe. Are we not a bit worried about making amazing buildings, cities and bridges? When I see all this crazy developments I wish there was more of them here. I know we have some, but with the amount of money flowing here, it feels like we're left behind on this.
We shouldn't be the old square-gray-building world, we should be leaders too. We sure have the minds & means to do it.

Bitch, moan, cry... shut up Phillipe and do something about it.

Sep 13, 2009

Canada Population 2008

This is a representation of Canada and its Provinces by Population ratio. The numbers are comming from Statistic Canada web site for 2008.
The size of the words are the ratio of population compared to the smallest province populations (Nunavut with 31,400). There should be 13 provinces (plus Canada) in the picture but Nunavut, Northwest-Territories and Yukon are to small to be displayed.



Link to the original image created with wordle.

Sep 12, 2009

Error handling with the user

One of my development strategy for software tools is to always give a result and working in cooperation with the user. Here are my three basic rules:
1.Software must always output some result
2.Communications with the user must be done by using the current data format
3.Errors must be clearly identifiable compared to normal outputs


Rule #1) Software must always output some result
Software should never just stop. If a minima is reached, a meaningful descriptive of the problem should always be displayed. If an algorithm fails halfway through execution, that first half should be displayed. Why is that important? Because the point at which it stopped is the biggest clue you'll ever give to the user on 'why it failed' and it's the biggest lead for the user on 'how to fix his inputs'. It is of course imperative that those errors outputs are non-destructive to the rest of the data.

Rule #2) Communications with the user must be done by using the current data format
Why use a different language than the one utilized by the user? Imagine that a problem occurs when doing some calculation base on vector data in 3DS Max (a 3D modeling software). Lets say that the problem lies in one of the vertices (points). Your code is trying to process the problematic vertex but it can't. Why? There's about as many reasons that there is users and 3DS drawings, so forget the reason. Of course if you just display a text box trying to describe the problem, it might have a chance at helping the user. But if you highlight the problematic vertex and pan/zoom to it, now that's helping the user. You don't have to do this in the original file. You can use a separate file but keep a similar medium. If the user is doing vector graphics use vector graphics.

Rule #3) Errors must be clearly identifiable compared to normal outputs
Highlight the errors and the thing that you're not sure about. An errors as to be flagrant, make it bold and use red a lot. The user should be able in one glance to identify the problems but still recognizer the surrounding data. This ability to see the bad data in its real context is the key for the user to quickly see the problem.

A good example of this way of working is MS Words handling of typos. While you type, it highlights errors but never stops your actions. You can then fix the problem(s) whenever you want and they're easy to fix because they're in context.

Sep 10, 2009

Three, two , duh!

Even if you don't like space exploration, you'll probably like this one. Japan launched its HTV automatic space vehicle en route to the International Space Station. I'll direct you to a video of launch, but I have to tell you something before you click on it.

Remember when you did countdowns before starting a game with your friends? The first few times we learn pretty much everything about the 'duration' of the count. A bunch of people start at ten, a nice round number, and then realize half way to zero that it's awkwardly long. Ten is good if you want to make it an official moment, like jumping into the pool from the roof. It also give you time to rethink things. Once you've done ten, then you start at five, much shorter and about one second from being awkward. Finally, if you're in a hurry, you start at three. Anybody that ever started a countdown longer than ten, let's say twenty, knows that this is a bad idea. Normally people start shutting up at sixteen, talk about the jerk that started it, and get back in the count at five.

This should be it. I lived with those notions of countdowns for thirty plus years and I'm pretty happy. NASA reinforced my neuron connections by starting at ten almost all the time. Then came JAXA, the NASA of Japan. They were launching that big new rocket and I was not going to miss it. So I sat in from of my computer and saw this:

The launch link

Why? Three minutes? Now, how much are they paying that girl? Did she lose a bet? Maybe it's a prank they play on new employees. Imagine doing that in English or French, you'd need some speed talker from the Guinness book.

Anyway, if they keep that up, I'm watching their next launch with no sound.

Sep 8, 2009

Agile - step 1

In the past, I had some small management experiences, though at the time I thought they were significant. Sure it was easy, I only had to manage autonomous people (See previous post about Planing & Foresight for my definition of autonomous). So as a manager, my real challenge began when I was faced with a team largely composed of young graduates. Some of them were dependent some were autonomous.
In the months before the project started, I prepared myself for this leadership position by reading a lot about the subject. I was convinced to try Agile, or more precisely Scrum. Why? Because one of my previous colleagues was using it for years and swore by it. He gave me some key words like 'Scrum' and 'Ken Schwaber' and I was off, learning about Agile planning, development & management.

We started small with agile. I told my guys we would have a scrum meeting every morning and that we would do 4-week sprints. We set our goals for the first sprint and that was it, our first agile iteration was started. We only did two sprints with a duration of 4-weeks. It was a good length at the beginning because we had to set a lot of basic code and procedures. Later they would be 2-weeks sprints. Also, at that time, we did not have many requirements from our owner.

Owner?

The fact was we didn't have an official owner because we were the only ones using agile and nobody else wanted to participate. So I created a virtual owner in my head. His requirements were derived from the needs of the people I identified as The-people-who-should-be-the-owner and I created my own backlog using Jira. We had no way to calculate our velocity but I documented the results of all the sprints on a wiki page that was shared with the team.

I also had two computer screens setup in plain view on which I had a hand-made manually-updated Excel spreadsheet displaying our sprint burn-down and the status of each task. Yes manually-updated, now is that commitment or what? After some time my people started meeting spontaneously in front of the screens to discuss current problems.

When thas project started people were not accustomed to self-organized team work. But I remember the first day I saw 3 people standing up at a workstation, talking lively and pointing at the computer screen. They were discussing possible ways of solving a problem and planning their work. That was a good sign!

Sep 7, 2009

Planning & Foresight

In my opinion, other than the capability of doing their job, the most important skills employees must have or acquire are Planning & Foresight. The most basic of the two is Planning and without it the employees are not functional. This is my 'non-P.C.' scale using Planning & Foresight as the metrics:

Dead weight: Can't plan, Can't foresee anything
Dependent: Plan at task level (actions), Rarely foresees
Autonomous: Plan at module level (tactics), Foresees with little inter-dependencies
Leader: Plan at macro level (strategy), Foresees with inter-dependencies

This is a linear way of comparing the two skills because planning skills depend on foresight. i.e. A good planner cannot be a great planner without foresight but somebody can have great foresight with little planning skills.

After you're done with your list: 1) I take it as a failure of management to either hire a person who is not qualified or failing at motivating that person through work. If you're stuck with a dead weight, let that person go. But wait, you are not done yet. Find out why 'you' (as a person or as a management team) failed so 'you' can prevent it in the future. 2) Create a good environment around the dependent people. Put positive pressure on them to see if they will grow into dead weight or autonomous people. 3) Keep your autonomous people challenged and encourage leadership in them. 4) Don't forget your leaders. Most of the time they're doing fine, but sometimes they

need to vent or to know they're doing a good job.

Note: I'm pretty sure there is a parallel between this way of sorting people and the 'Ability & Willingness' four-quadrant[1] table I recently heard about. I'll post about that later.

References
1. Don Phillips, 2007, The four-quadrant leadership team