My wife and I will be traveling to South Carolina (visiting Hilton Head and Charleston) next month. If you’re in that area and would like to meet up, send me mail or comment under this entry.

**Posted In**Travel

**Tagged In**

In 2003 (or maybe 2002) I built a bridge for the BayLTC train layout. But it wasn’t a train bridge, it was a road bridge (for cars and trucks).

The road pieces came from LEGO’s 6600 Highway Construction set, and the bridge’s structural elements were built of Technic bricks.

Most of the angles in the bridge truss design follow some multiple of the 3-4-5 triangle. This is one of the most useful laws of trigonometry: if you have a triangle with sides 3, 4, and 5, or any multiple of that (such as 30, 40, 50) then they will form a perfect right triangle (a triangle where one of the angles is exactly 90 degrees). Why? Because of the Pythagorean Theorem: in any right triangle, the square of the hypotenuse (the side opposite the 90° angle) is always equal to the sum of the squares of the other two sides. And it so happens that 3^{2} + 4^{2} (9 + 16) is equal to 5^{2} (25).

In LEGO, the 3-4-5 triangle is achieved by attaching pieces in distances of 4-5-6 studs. Why? Because of the “fencepost effect” – if you make the connection on the 1st and 4th stud, that’s actually a distance of 3 (since 4-1=3). The same goes for the 4 and 5 unit length sides. In this model, the center trusses are formed by 3-4-5 triangles scaled up by a factor of 6. So the “4” sides (the vertical) are really 24 (actually 25, because of the fencepost effect) tall. The angled trusses are made by sheer guesswork, however. Luckily, there’s enough slop in LEGO connections to make it not really be necessary to always get it just right. When working on this, I built what I called a “Pythagorometer” – a model of the 3-4-5 triangle at various scales – to try to make the angles work out. I’ll post more about that later.

I recently discovered a batch of pictures of this bridge that had never been posted online, taken at the July 2003 GATS layout. You can see them at a Flickr gallery.

When I was a little kid my great passion was building things (usually spacecraft) out of LEGO. When I was 10 I learned about computer programming thanks to the Commodore PET computers at my school. I really think that the mental process is much the same, and that my experience with LEGO led directly to my ability to pick up computer programming skills.

The basic idea is that with LEGO bricks, they fit together to build some kind of creation. And they can only fit together in certain ways and not in others. For example you can’t fit two bricks together stud-to-stud, or bottom-to-bottom (at least, not without other pieces to hold them in that position). Similarly, there are syntax rules with software that limit the ways you can put statements and expressions together. And just as you can create a given shape using a wide number of possible arrangements of various LEGO bricks, you can implement a particular software feature using any number of different combinations of statements and expressions. So if a LEGO creation is like a software program, a LEGO element is like a variable or an operator.

For years when I have talked to parents at train shows and BayLUG meetings, I have been telling them that all the years I spent building LEGO etched certain pathways into my brain which prepared me for computer programming, and that’s a reason they should encourage their kids to do LEGO. And I think the fact that we’re based in Silicon Valley is not the only reason that many of our BayLUG members come from software, engineering, or other technical backgrounds.

Today, I came across a link to an interesting article by one of the foundes of Macromedia Flash on Jake McKee’s blog. His story is basically identical to mine through his childhood years – except that he got into Apple ][ and Mac computers and I was a Commodore guy.