https://sjbaker.org/wiki/api.php?action=feedcontributions&user=SteveBaker&feedformat=atomWikiid - User contributions [en]2020-06-02T17:42:14ZUser contributionsMediaWiki 1.24.4https://sjbaker.org/wiki/index.php?title=Tutorials_for_Kids&diff=2259Tutorials for Kids2019-12-15T16:27:27Z<p>SteveBaker: </p>
<hr />
<div>This section contains some simple explanations of various basic subjects that I have created for my son over the years.<br />
<br />
The explanations were geared to his learning pace at the time they were written and cover the things he needed to know at one time or another - but I hope others will find them just as useful - so I'm posting them onto the web. I'm not a professional educator - or a professional mathematician but the way I explain things seems to help some people. The collection will grow slowly and gradually increase in age range as time goes by because it's being written as my son needs it.<br />
<br />
So far, we have:<br />
<br />
* [[A Year of Learning Fractions in Ten Simple Rules]].<br />
* [[The simplest possible guide to writing HTML]].<br />
* [[The simplest possible guide to writing MediaWiki]].<br />
* [[HICCUP]]<br />
* [[A Short Guide to Data Structures]]</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Matrices_can_be_your_friends&diff=2258Matrices can be your friends2018-11-28T15:03:45Z<p>SteveBaker: </p>
<hr />
<div>=== By Steve Baker ===<br />
What stops most novice graphics programmers from getting friendly with matrices is that they look like 16 utterly random numbers. However, a little mental picture that I have seems to help most people to make sense of what's going on. Most programmers are visual thinkers and don't take kindly to piles of abstract math.<br />
<br />
Take an OpenGL matrix:<br />
<br />
float m [ 16 ] ;<br />
<br />
Consider this as a 4x4 array with it's elements laid out into four columns like this:<br />
<br />
m[0] m[4] m[ 8] m[12]<br />
m[1] m[5] m[ 9] m[13]<br />
m[2] m[6] m[10] m[14]<br />
m[3] m[7] m[11] m[15]<br />
<br />
'''WARNING''': Mathematicians like to see their matrices laid out on paper this way (with the array indices increasing down the columns instead of across the rows as a programmer would usually write them). Look CAREFULLY at the order of the matrix elements in the layout above!<br />
...but we are OpenGL programmers - not mathematicians - right?! The reason OpenGL arrays are laid out in what some people would consider to be the opposite direction to mathematical convention is somewhat lost in the mists of time. However, it turns out to be a happy accident as we will see later.<br />
<br />
So graphics engineers think like programmers - and lay the elements out like this:<br />
<br />
m[0] m[1] m[ 2] m[3]<br />
m[4] m[5] m[ 6] m[7]<br />
m[8] m[9] m[10] m[11]<br />
m[12] m[13] m[14] m[15]<br />
<br />
I'm going to continue to talk about them as rows and columns "the programmer way" - and not "the mathematicians way".<br />
<br />
If you are dealing with a matrix which only deals with rigid bodies (ie no scale, shear, squash, etc) then the last column (array elements 3,7,11 and 15) are always 0,0,0 and 1 respectively and so long as they always maintain those values, we can safely forget about them...at least for now.<br />
<br />
The first three elements of the bottommost row of the matrix is just the overall translation. If you imagine some kind of neat little compact object (like a teapot), then array elements 12,13 and 14 tell you where it is in the world. It doesn't matter what combinations of rotations and translations it took to produce the matrix, the rightmost column tells you where the object basically is. It is often fortunate that the OpenGL matrix array is laid out the way it is because it results in those three elements being consecutive in memory.<br />
<br />
OK, so now we are down to only nine random-looking numbers. These are the top three elements of each of the first three columns - and collectively they represent the rotation of the object.<br />
<br />
The easy way to decode those numbers is to imagine what happens to four points near to the origin after they are transformed by the matrix:<br />
<br />
<br />
(0,1,0)<br />
| /(0,0,1)<br />
| /<br />
|/___(1,0,0)<br />
(0,0,0)<br />
<br />
These are four vertices on a 1x1x1 cube that has one corner at the origin.<br />
After the matrix has transformed this cube, where does it end up?<br />
<br />
Well, if we neglect the translation part, then the pure rotation part simply describes the new location of the points on the cube:<br />
<br />
<br />
(1,0,0) ---> ( m[0], m[1], m[2] )<br />
(0,1,0) ---> ( m[4], m[5], m[6] )<br />
(0,0,1) ---> ( m[8], m[9], m[10])<br />
(0,0,0) ---> ( 0, 0, 0 )<br />
<br />
After that, you just add the translation onto each point so that:<br />
<br />
(1,0,0) ---> ( m[0], m[1], m[2] ) + ( m[12], m[13], m[14] )<br />
(0,1,0) ---> ( m[4], m[5], m[6] ) + ( m[12], m[13], m[14] )<br />
(0,0,1) ---> ( m[8], m[9], m[10]) + ( m[12], m[13], m[14] )<br />
(0,0,0) ---> ( 0, 0, 0 ) + ( m[12], m[13], m[14] )<br />
<br />
Once you know this, it becomes quite easy to use matrices to position objects exactly where you need them without messing around with multiple calls to glRotate (which is just as well because this is obsolete in modern OpenGL!).<br />
<br />
Just imagine a little cube at the origin - pretend it's firmly attached to your model. Think about where the cube ends up as the model moves - write down where it's vertices would end up and there is your matrix.<br />
<br />
So, if I gave you this matrix:<br />
<br />
0.707, 0.707, 0, 0<br />
-0.707, 0.707, 0, 0<br />
0 , 0 , 1, 0<br />
10 , 10 , 0, 1<br />
<br />
...you could easily see that the X axis of that little cube is now pointing somewhere between the X and Y axes, the Y axis is pointing somewhere between Y and negative X and the Z axis is unchanged. The entire cube has been moved 10 units off in X and Y. This is a 45 degree rotation about Z and a 10,10,0 translation! You didn't need any hard math - just a mental picture of what the little cube did - and no concerns about the order of operations or anything hard like that. What would have happened to something out at 100,100,0? Well, just imagine it was glued to the cube (on the end of a long stick)...as the cube rotated, the thing at 100,100 would have moved quite a bit too - in fact, you can see that the rotation would put it onto the Y axis and the translation would have moved it 10 units up and to the right.<br />
With practice, you can figure out what that last row of numbers does to the little cube too.<br />
<br />
So, would you like to know how to use a matrix to squash, stretch, shear, etc? Just think about where the axes of that little cube end up - write them down and you are done. What does a cube of jello look like when there is a strong wind blowing from X=-infinity?<br />
<br />
1 , 0 , 0, 0<br />
0.3, 0.9, 0, 0<br />
0 , 0 , 1, 0<br />
0 , 0 , 0, 1<br />
<br />
Look - the Y axis is leaning a third of a unit to the right and the cube got a bit shorter.<br />
Suppose your cartoon character is going to jump vertically, and you want to do a bit of pre-squash before the jump... and post-stretch during the jump. Just gradually vary the matrix from:<br />
<br />
<br />
1 , 0 , 0, 0 1 , 0 , 0, 0<br />
0 , 0.8, 0, 0 0 , 1.2, 0, 0<br />
0 , 0 , 1, 0 ===> 0 , 0 , 1, 0<br />
0 , 0 , 0, 1 0 , 0 , 0, 1<br />
<br />
Not bad - he got shorter then longer - how about getting a bit fatter too (conservation of cartoon volume) ?<br />
<br />
1.2, 0 , 0 , 0 0.9,0 , 0 , 0<br />
0 , 0.8, 0 , 0 0 ,1.2, 0 , 0<br />
0 , 0 , 1.2, 0 ===> 0 ,0 ,0.9, 0<br />
0 , 0 , 0 , 1 0 ,0 , 0 , 1<br />
<br />
Now the cube got smaller in Y and bigger in X and Z then got bigger in Y and smaller in X/Z...easy!<br />
Not only is it easier to think transforms out this way, but it's invariably more efficient too. By seeing the entire transformation as one whole operation on a unit cube, you save a long sequence of rotate, translate, scale matrix multiplications - which each imply a complicated set of multiply/add steps to concatenate the new transform with whatever was there before.<br />
<br />
Finally, there is one matrix that we all need to know - the "Identity" matrix:<br />
<br />
<br />
1, 0, 0, 0<br />
0, 1, 0, 0<br />
0, 0, 1, 0<br />
0, 0, 0, 1<br />
<br />
As you can see, this matrix leaves all the axes completely alone and performs no translation. This is a "do nothing" matrix.<br />
Matrices are really easy - it's just a matter of looking at them pictorially.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=ESP8266&diff=2257ESP82662017-02-24T19:08:27Z<p>SteveBaker: /* Conclusions */</p>
<hr />
<div>== Brain dump on the ESP8266 $2 computer ==<br />
'''WARNING: ESP 8266 SYSTEMS ARE NOT FOR BEGINNERS!'''<br />
[[File:ESP8266.jpg|300px|right]]<br />
Several places sell ESP8266-based systems in the US and Europe - but they charge WAY too much for them. Go to Ebay. Search for ESP8266 - that’s the name of the chip - don’t pay more than $3! There are several different board designs based upon it. I've used the ESP-01 - which is the simplest/smallest of the board designs. If possible, I suggest finding an “ESP-12F” board - that’s my favorite.<br />
<br />
It runs nicely on two AAA or AA batteries.<br />
<br />
You *WILL* have to solder connections just to make the system work at all.<br />
<br />
Soldering wires to the ESP-12F is a bit fiddly - the ESP-01 has an 8 pin connector that makes that easier. But the ESP-01 only exposes a couple of I/O pins - which is really limiting. The ESP-12F exposes all of the useful pins on the chip.<br />
<br />
If you’re using the ESP-12F board you’ll need a soldering iron (get a fine-tipped one with variable wattage) and one of those magnifying glasses with “helping hands” grippers. This tiny board is ''not'' easy to solder to! You’ll need some ~30 AWG solid core wire because the holes in the PCB are very small.<br />
<br />
You’ll also need an “FTDI 232” board (Search eBay - but this one works: http://www.ebay.com/itm/like/112240012039) to connect the ESP board to USB so you can program it from the PC. Be sure to set the switch/jumper to 3.3v and not 5v or you'll destroy your ESP board!<br />
<br />
The ESP8266 was designed ONLY to be used in a WiFi dongle that you plug into a regular computer. However, with an external flash memory, you can reprogram it to do MUCH more impressive things.<br />
<br />
The system comes with a set of ROM functions that you can call fairly easily from C. However, that didn’t do what I needed - so I bypassed it...you'll probably want to make use of it.<br />
<br />
There is a modest community of developers at http://esp8266.net with a forum and such - that’s where you’ll find links to documentation, the SDK, etc. <br />
<br />
There is a full software SDK with the GNU C compiler for cross-compilation onto the device. I managed to make it run C++, but it takes some work to do that.<br />
<br />
I’ve never tried doing this kind of dev work from a Windows or Mac computer - so you’ll almost certainly need a Linux computer (or at least dual-boot into Linux).<br />
<br />
As I said at the outset, this is NOT an easy system to work with - don’t expect it to be like Arduino or Raspberry Pi. The tools are rough - and the community of developers is tiny and not much help when you have difficult questions. There is hardly any sample code to work with and the manufacture's support services aren't much use either. Debugging code is difficult - there is no debugger and even using 'printf' can fail to tell you what's going on because the serial output stream has to be interrupt-driven and if your program crashes, then the diagnostic message you sent with printf right before it crashed will never happen!<br />
<br />
At $2 each, ESP8266-based boards are “disposable items” during development. I bought 20 of them! So if I want to know how much power supply voltage they can take - or whether they can produce enough current to drive some device I have, I can crank up the volts until it breaks and not worry about it. However, shipping charges can easily overwhelm the price of the system - so if you buy them one at a time, you’ll be paying WAY more!<br />
<br />
== Conclusions ==<br />
<br />
It's a rocky road to getting anything working on these primitive systems - but for $2 each, with on-board WiFi - there are definite benefits.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=ESP8266&diff=2256ESP82662017-02-24T19:07:26Z<p>SteveBaker: /* Brain dump on the ESP8266 $2 computer */</p>
<hr />
<div>== Brain dump on the ESP8266 $2 computer ==<br />
'''WARNING: ESP 8266 SYSTEMS ARE NOT FOR BEGINNERS!'''<br />
[[File:ESP8266.jpg|300px|right]]<br />
Several places sell ESP8266-based systems in the US and Europe - but they charge WAY too much for them. Go to Ebay. Search for ESP8266 - that’s the name of the chip - don’t pay more than $3! There are several different board designs based upon it. I've used the ESP-01 - which is the simplest/smallest of the board designs. If possible, I suggest finding an “ESP-12F” board - that’s my favorite.<br />
<br />
It runs nicely on two AAA or AA batteries.<br />
<br />
You *WILL* have to solder connections just to make the system work at all.<br />
<br />
Soldering wires to the ESP-12F is a bit fiddly - the ESP-01 has an 8 pin connector that makes that easier. But the ESP-01 only exposes a couple of I/O pins - which is really limiting. The ESP-12F exposes all of the useful pins on the chip.<br />
<br />
If you’re using the ESP-12F board you’ll need a soldering iron (get a fine-tipped one with variable wattage) and one of those magnifying glasses with “helping hands” grippers. This tiny board is ''not'' easy to solder to! You’ll need some ~30 AWG solid core wire because the holes in the PCB are very small.<br />
<br />
You’ll also need an “FTDI 232” board (Search eBay - but this one works: http://www.ebay.com/itm/like/112240012039) to connect the ESP board to USB so you can program it from the PC. Be sure to set the switch/jumper to 3.3v and not 5v or you'll destroy your ESP board!<br />
<br />
The ESP8266 was designed ONLY to be used in a WiFi dongle that you plug into a regular computer. However, with an external flash memory, you can reprogram it to do MUCH more impressive things.<br />
<br />
The system comes with a set of ROM functions that you can call fairly easily from C. However, that didn’t do what I needed - so I bypassed it...you'll probably want to make use of it.<br />
<br />
There is a modest community of developers at http://esp8266.net with a forum and such - that’s where you’ll find links to documentation, the SDK, etc. <br />
<br />
There is a full software SDK with the GNU C compiler for cross-compilation onto the device. I managed to make it run C++, but it takes some work to do that.<br />
<br />
I’ve never tried doing this kind of dev work from a Windows or Mac computer - so you’ll almost certainly need a Linux computer (or at least dual-boot into Linux).<br />
<br />
As I said at the outset, this is NOT an easy system to work with - don’t expect it to be like Arduino or Raspberry Pi. The tools are rough - and the community of developers is tiny and not much help when you have difficult questions. There is hardly any sample code to work with and the manufacture's support services aren't much use either. Debugging code is difficult - there is no debugger and even using 'printf' can fail to tell you what's going on because the serial output stream has to be interrupt-driven and if your program crashes, then the diagnostic message you sent with printf right before it crashed will never happen!<br />
<br />
At $2 each, ESP8266-based boards are “disposable items” during development. I bought 20 of them! So if I want to know how much power supply voltage they can take - or whether they can produce enough current to drive some device I have, I can crank up the volts until it breaks and not worry about it. However, shipping charges can easily overwhelm the price of the system - so if you buy them one at a time, you’ll be paying WAY more!<br />
<br />
== Conclusions ==<br />
<br />
It's a rocky road to getting anything complicate working on these primitive systems - but for $2 each, there are definite benefits.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=ESP8266&diff=2255ESP82662017-02-24T19:07:05Z<p>SteveBaker: /* Brain dump on the ESP8266 $2 computer */</p>
<hr />
<div>== Brain dump on the ESP8266 $2 computer ==<br />
'''WARNING: ESP 8266 SYSTEMS ARE NOT FOR BEGINNERS!'''<br />
[[File:ESP8266.jpg|300px|left]]<br />
Several places sell ESP8266-based systems in the US and Europe - but they charge WAY too much for them. Go to Ebay. Search for ESP8266 - that’s the name of the chip - don’t pay more than $3! There are several different board designs based upon it. I've used the ESP-01 - which is the simplest/smallest of the board designs. If possible, I suggest finding an “ESP-12F” board - that’s my favorite.<br />
<br />
It runs nicely on two AAA or AA batteries.<br />
<br />
You *WILL* have to solder connections just to make the system work at all.<br />
<br />
Soldering wires to the ESP-12F is a bit fiddly - the ESP-01 has an 8 pin connector that makes that easier. But the ESP-01 only exposes a couple of I/O pins - which is really limiting. The ESP-12F exposes all of the useful pins on the chip.<br />
<br />
If you’re using the ESP-12F board you’ll need a soldering iron (get a fine-tipped one with variable wattage) and one of those magnifying glasses with “helping hands” grippers. This tiny board is ''not'' easy to solder to! You’ll need some ~30 AWG solid core wire because the holes in the PCB are very small.<br />
<br />
You’ll also need an “FTDI 232” board (Search eBay - but this one works: http://www.ebay.com/itm/like/112240012039) to connect the ESP board to USB so you can program it from the PC. Be sure to set the switch/jumper to 3.3v and not 5v or you'll destroy your ESP board!<br />
<br />
The ESP8266 was designed ONLY to be used in a WiFi dongle that you plug into a regular computer. However, with an external flash memory, you can reprogram it to do MUCH more impressive things.<br />
<br />
The system comes with a set of ROM functions that you can call fairly easily from C. However, that didn’t do what I needed - so I bypassed it...you'll probably want to make use of it.<br />
<br />
There is a modest community of developers at http://esp8266.net with a forum and such - that’s where you’ll find links to documentation, the SDK, etc. <br />
<br />
There is a full software SDK with the GNU C compiler for cross-compilation onto the device. I managed to make it run C++, but it takes some work to do that.<br />
<br />
I’ve never tried doing this kind of dev work from a Windows or Mac computer - so you’ll almost certainly need a Linux computer (or at least dual-boot into Linux).<br />
<br />
As I said at the outset, this is NOT an easy system to work with - don’t expect it to be like Arduino or Raspberry Pi. The tools are rough - and the community of developers is tiny and not much help when you have difficult questions. There is hardly any sample code to work with and the manufacture's support services aren't much use either. Debugging code is difficult - there is no debugger and even using 'printf' can fail to tell you what's going on because the serial output stream has to be interrupt-driven and if your program crashes, then the diagnostic message you sent with printf right before it crashed will never happen!<br />
<br />
At $2 each, ESP8266-based boards are “disposable items” during development. I bought 20 of them! So if I want to know how much power supply voltage they can take - or whether they can produce enough current to drive some device I have, I can crank up the volts until it breaks and not worry about it. However, shipping charges can easily overwhelm the price of the system - so if you buy them one at a time, you’ll be paying WAY more!<br />
<br />
== Conclusions ==<br />
<br />
It's a rocky road to getting anything complicate working on these primitive systems - but for $2 each, there are definite benefits.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=File:ESP8266.jpg&diff=2254File:ESP8266.jpg2017-02-24T19:04:54Z<p>SteveBaker: </p>
<hr />
<div></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=ESP8266&diff=2253ESP82662017-02-24T19:02:48Z<p>SteveBaker: Created page with "== Brain dump on the ESP8266 $2 computer == '''WARNING: ESP 8266 SYSTEMS ARE NOT FOR BEGINNERS!''' Several places sell ESP8266-based systems in the US and Europe - but they c..."</p>
<hr />
<div>== Brain dump on the ESP8266 $2 computer ==<br />
'''WARNING: ESP 8266 SYSTEMS ARE NOT FOR BEGINNERS!'''<br />
<br />
Several places sell ESP8266-based systems in the US and Europe - but they charge WAY too much for them. Go to Ebay. Search for ESP8266 - that’s the name of the chip - don’t pay more than $3! There are several different board designs based upon it. I've used the ESP-01 - which is the simplest/smallest of the board designs. If possible, I suggest finding an “ESP-12F” board - that’s my favorite.<br />
<br />
It runs nicely on two AAA or AA batteries.<br />
<br />
You *WILL* have to solder connections just to make the system work at all.<br />
<br />
Soldering wires to the ESP-12F is a bit fiddly - the ESP-01 has an 8 pin connector that makes that easier. But the ESP-01 only exposes a couple of I/O pins - which is really limiting. The ESP-12F exposes all of the useful pins on the chip.<br />
<br />
If you’re using the ESP-12F board you’ll need a soldering iron (get a fine-tipped one with variable wattage) and one of those magnifying glasses with “helping hands” grippers. This tiny board is ''not'' easy to solder to! You’ll need some ~30 AWG solid core wire because the holes in the PCB are very small.<br />
<br />
You’ll also need an “FTDI 232” board (Search eBay - but this one works: http://www.ebay.com/itm/like/112240012039) to connect the ESP board to USB so you can program it from the PC. Be sure to set the switch/jumper to 3.3v and not 5v or you'll destroy your ESP board!<br />
<br />
The ESP8266 was designed ONLY to be used in a WiFi dongle that you plug into a regular computer. However, with an external flash memory, you can reprogram it to do MUCH more impressive things.<br />
<br />
The system comes with a set of ROM functions that you can call fairly easily from C. However, that didn’t do what I needed - so I bypassed it...you'll probably want to make use of it.<br />
<br />
There is a modest community of developers at http://esp8266.net with a forum and such - that’s where you’ll find links to documentation, the SDK, etc. <br />
<br />
There is a full software SDK with the GNU C compiler for cross-compilation onto the device. I managed to make it run C++, but it takes some work to do that.<br />
<br />
I’ve never tried doing this kind of dev work from a Windows or Mac computer - so you’ll almost certainly need a Linux computer (or at least dual-boot into Linux).<br />
<br />
As I said at the outset, this is NOT an easy system to work with - don’t expect it to be like Arduino or Raspberry Pi. The tools are rough - and the community of developers is tiny and not much help when you have difficult questions. There is hardly any sample code to work with and the manufacture's support services aren't much use either. Debugging code is difficult - there is no debugger and even using 'printf' can fail to tell you what's going on because the serial output stream has to be interrupt-driven and if your program crashes, then the diagnostic message you sent with printf right before it crashed will never happen!<br />
<br />
At $2 each, ESP8266-based boards are “disposable items” during development. I bought 20 of them! So if I want to know how much power supply voltage they can take - or whether they can produce enough current to drive some device I have, I can crank up the volts until it breaks and not worry about it. However, shipping charges can easily overwhelm the price of the system - so if you buy them one at a time, you’ll be paying WAY more!<br />
<br />
== Conclusions ==<br />
<br />
It's a rocky road to getting anything complicate working on these primitive systems - but for $2 each, there are definite benefits.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=File:JumpingToConclusions.png&diff=2252File:JumpingToConclusions.png2016-11-02T16:18:05Z<p>SteveBaker: </p>
<hr />
<div></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=BabbagePapers&diff=2251BabbagePapers2016-05-19T03:14:14Z<p>SteveBaker: </p>
<hr />
<div>* BAB/A Drawings of the Analytical Engine<br />
* BAB/A/001 The first drawing of the circular arrangement of the new engine.<br />
* BAB/A/002 Untitled. This drawing is a cardboard model.<br />
* BAB/A/003 Sketch of a plan for reserving the carriages.<br />
* BAB/A/004 Figure 1, Plan / Figure 2, elevation, Figure C Carriage No 4.<br />
* BAB/A/005 Figure 3. Zero Apparatus No. 1. Improved arrangement of snails, figure wheels et cetera for design dated 27 September 1834 and also for a design dated 24 January 1835. Elevation.<br />
* BAB/A/006 Addition No. 4. Carriage No 6. Elevation and plan.<br />
* BAB/A/007 Addition No. 3.<br />
* BAB/A/008 Stepping No. 1 on or in central wheels. Figure 1. Figure 2. Various unnumbered elevations, plans and details.<br />
* BAB/A/009 See designs dated 1834 November 27 and 1834 December 29.<br />
* BAB/A/010 Plan for existing system of two racks. Arrangement plan and four detail elevations.<br />
* BAB/A/011 Figure 1. Plan, elevation and detail.<br />
* BAB/A/012 Sketch of a method of multiplication by means of the directive power stepping. Plans, elevations and details.<br />
* BAB/A/013 Figure 1. Stepping No. 2. Sketch to examine a method of multiplication by stepping. Plan, elevation.<br />
* BAB/A/014 Carriage No. 8. Figure 1. Method of carrying. Plan, elevation.<br />
* BAB/A/015 Method of grouping for the large machine.<br />
* BAB/A/016 Method of grouping for the large machine.<br />
* BAB/A/017 Grouping arrangement. Abandoned end April 1835.<br />
* BAB/A/018 Sketch No. 5. Two parts each. 1835 July 4. General arrangement.<br />
* BAB/A/019 Sketch No. 7. Two parts each. July 4 1835. General arrangement.<br />
* BAB/A/020 Figure 1. Sketch 7*, circular arrangement.<br />
* BAB/A/021 Gearings, et cetera of Sketch No. 8 dated July 31 1835. Arrangement.<br />
* BAB/A/022 Carriage 9. Gearing et cetera of Sketch No. 8 dated July 31 1835. Plan.<br />
* BAB/A/023 Gearing et cetera of Sketch dated July 31 1835. Plan, once part of Drawing 22.<br />
* BAB/A/024 No. 1 lifters for the purpose of division by table. Notation and description in sheets 11 and 12 of large quarto notations. Plan, elevation.<br />
* BAB/A/025 Figure 1 Sketch No. 9, arrangement. Examination of stepping by long pinion shifting a whole cage. Elevation.<br />
* BAB/A/026 Sketch No. 10*, circular, arrangement. Shows 26 variables.<br />
* BAB/A/027 Sketch No. 11, circular, arrangement. Shows 27 variables.<br />
* BAB/A/028 Elevation and formulae for gear trains. Uses differentials for speed adding.<br />
* BAB/A/029 Method of bolting to platforms for vertical motion of axes, plan.<br />
* BAB/A/030 Sketch of sectors for giving vertical motion to axes. Arrangement, design, sketch for interference.<br />
* BAB/A/031 Sketch of sectors for giving vertical motion to axes, arrangement.<br />
* BAB/A/032 Figure 1. First method of stepping by long pinions, elevation.<br />
* BAB/A/033 Sketch 12. Stepping by the method designed 15 April 1836. Circular arrangement, 27 variables.<br />
* BAB/A/034 Sketches of mill used for arranging operations on the engine of four wheels in each cage from April 1836 - August 1837.<br />
* BAB/A/035 Method of governing barrels et cetera. No. 1, plan of elevation.<br />
* BAB/A/036 Counting apparatus No. 1. Plan, elevation. Apparently for counting steps in multiplication, division and square root.<br />
* BAB/A/037 Figure 1. Carriage No. 10. Plan of carrying by circular connection (chain). Plan, rejected. Scribbling Book, volume 2, page 207 et cetera.<br />
* BAB/A/038 Carrying No. 13 Sketch of a method of carrying by circular connection. Plan, two elevations, description 4 November 1836. Rejected, No. 14, 13 October 1835 to be retained.<br />
* BAB/A/039 Adding No. 6, carrying No. 14. Sketch of a method of adding and carrying intended for a Difference machine. Designed between 31 October 1836 and 12 November 1836. Plan, elevations, details, description.<br />
* BAB/A/040 Adding No. 7 Carriage. No. 15 Sketch of a method of adding and carrying with anticipation. Intended for a Difference Machine or an Equation Difference Machine. Plan, elevations, description.<br />
* BAB/A/041 Figure 1. Carriage No. 16. Method of carrying; intended for the Great Machine. Plan, elevation, notation, details. Description 24 February 1837 with additional sketches and notes.<br />
* BAB/A/042 Sketch 13. General arrangement, circular. Showing 30 variables, 5 barrels with reducing apparatus, punch card mechanism, printing apparatus. Notes introduction of great bevel wheel 18 March 1837.<br />
* BAB/A/043 Intended for engraving. Shows six barrels with reducing apparatus.<br />
* BAB/A/044 Part 1. Plan sequence of meshings.<br />
* BAB/A/045 Elevation of arrangement 13 with some of the driving and directive. Elevation includes section of a barrel '65 bands 80 verticals'.<br />
* BAB/A/046 Sketch of sectors for lifting the axes.<br />
* BAB/A/047 Sketch of the sectors for moving axes of store vertically.<br />
* BAB/A/048 Part 1. Plan and elevation of adding wheels, long pinions and intermediate pinions, plan, two elevations. Part 2. Lifting axes and fixed wires, plan, elevation.<br />
* BAB/A/049 Sketch of wheels for reducing carrying figure wheel axes to zero and setting spiral axes. Sketch elevations.<br />
* BAB/A/050 Lifters for selecting the multiple of the Multiplicand or Divisor. Plan, two elevations.<br />
* BAB/A/051 No. 1 Apparatus for registering quotient.<br />
* BAB/A/052 Carriage and method of setting spiral axes for a machine of 50 cages with two figure wheels in each cage. Plan, elevation, details.<br />
* BAB/A/053 Centres of axes and pen sketches of lockings for Sketch 14. Arrangement.<br />
* BAB/A/054 Sketch 14. Arrangement, probably incomplete.<br />
* BAB/A/055 Centres of axes and sketch of lockings for Sketch 15.<br />
* BAB/A/056 Part 1. Opened out view of Plan 14. Part 2. Opened out view of Plan 16.<br />
* BAB/A/057 Part 2. Sketch of some of the centres, et cetera for Plan 16. Arrangement.<br />
* BAB/A/058 Part 1. Sketch of some of the centres et cetera for Plan 16. Arrangement.<br />
* BAB/A/059 Sketch of some of the centres et cetera for Plan 16. Arrangement.<br />
* BAB/A/060 Plan 16. Arrangement, several partial arrangements, numerous notes.<br />
* BAB/A/061 Wheels for driving the adding axes. Plan.<br />
* BAB/A/062 Sketch of sectors for lifting the axes.<br />
* BAB/A/063 Sketch of a decimal counting apparatus. Plan, elevation, description.<br />
* BAB/A/063/1 Sketch of a decimal counting apparatus.<br />
* BAB/A/064 Plan 18, arrangement.<br />
* BAB/A/065 Arms for spiral axes. Plans, elevation, description, note.<br />
* BAB/A/066 Consecutive counting apparatus.<br />
* BAB/A/067 Combinatorial and decimal counting apparatus comprising plan, elevation and description.<br />
* BAB/A/068 Selecting apparatus similar to that described in Sketch Book volume 3, page 54.<br />
* BAB/A/069 Figure 1. Clutch et cetera for driving the adding axes. Plan, elevation.<br />
* BAB/A/070 Elevation of decimal and store counting apparatus.<br />
* BAB/A/071 Plan of decimal and store counting apparatus. Elevation of drawing 70 with description.<br />
* BAB/A/072 Tools for the machine.<br />
* BAB/A/073 Tools for the machine.<br />
* BAB/A/074 Opened out view of figure wheels, 1-42.<br />
* BAB/A/075 Plan 17, store on a rack. Arrangement.<br />
* BAB/A/076 Plan 21, store on a rack. Arrangement.<br />
* BAB/A/077 Sketch of General Plan No. 22. Arrangement and rack. Discussed and rejected.<br />
* BAB/A/078 General Plan No. 23. Arrangement and rack.<br />
* BAB/A/079 Plan No. 24. Arrangement and rack, rearrangement or notes.<br />
* BAB/A/080 Sketches of parts of a carriage similar to that drawn upon No. 81. Plan, elevation.<br />
* BAB/A/081 An improved carriage by vertical chain. Plan, elevation, details.<br />
* BAB/A/082 Plans of parts of one of the selectors belonging to either of the nine multiples. Plan.<br />
* BAB/A/083 Elevation of one of the selectors belonging to either of the nine multiples.<br />
* BAB/A/084 Axes, wheels et cetera for applying the superposition of motion to the units' wheels of the selectors drawn upon No. 82 and 83. Plan, elevation.<br />
* BAB/A/085 Sketch of central wheel and principal framing. Plan, elevation.<br />
* BAB/A/086 Plan and section of an 8 inch figure wheel; hoarding carriage and framing plate. Plan, elevation.<br />
* BAB/A/087 Plan of barrel and reducing apparatus.<br />
* BAB/A/088 Elevation opened out of barrel and reducing apparatus.<br />
* BAB/A/089 Plan 25. Arrangement and rack.<br />
* BAB/A/089/1 The general plan of Mr. Babbage's Great Calculating Engine. Arrangement and rack, details, et cetera.<br />
* BAB/A/090 Sketches of groups.<br />
* BAB/A/091 Plan 27. This was superseded by Drawing 93. Linear arrangement.<br />
* BAB/A/092 Carriage by vertical chain. Plan, elevation.<br />
* BAB/A/093 Two sheets probably relating to Plan 27 of the Analytical Engine.<br />
* BAB/A/093/1 Plan 27. Linear arrangement with letter notations.<br />
* BAB/A/093/2 Plan of the Analytical Engine without lettering.<br />
* BAB/A/094 Two sheets relating to detailed sketches of the Analytical Engine.<br />
* BAB/A/094/1 Sketch elevation of the driving and directive of the Analytical Engine.<br />
* BAB/A/094/2 Tracing sketch of the Analytical Engine. Elevation.<br />
* BAB/A/095 Mill counting apparatus. Consecutive plan.<br />
* BAB/A/096 Mill counting apparatus. Consecutive elevation.<br />
* BAB/A/097 Long pinion for giving off complement. Plan, elevation.<br />
* BAB/A/098 Picking-up sectors. Plan, elevation.<br />
* BAB/A/099 Long pinion for giving off complement.<br />
* BAB/A/100 Self acting consecutive carriage. Plan, elevation and description.<br />
* BAB/A/101 Examination and discussion of a new general plan.<br />
* BAB/A/102 Unfinished sketches of anticipating whole and half zero carriage. Plan, elevation.<br />
* BAB/A/103 Figures 1 and 2. Sketches of a tens chain for carriage for whole and half zero. Plan, elevation.<br />
* BAB/A/104 Sketch of part of a carriage for whole and half zero. Plan. Wheels and pinions for part of centre group for Plans 28 and 28a.<br />
* BAB/A/105 Positions of wheels, guides for moveable framing, et cetera.<br />
* BAB/A/106 Anticipating whole and half zero digit counting carriage. Plan, elevation and details.<br />
* BAB/A/107 Parts of the slide for Planing machine. Plan, elevation.<br />
* BAB/A/108 Parts of the slide for the Planing machine. Plan, elevation.<br />
* BAB/A/109 Untitled plan, elevation.<br />
* BAB/A/110 Parts of the slides for the Planing machine.<br />
* BAB/A/111 Parts of the slide for the Planing machine.<br />
* BAB/A/112 Parts of slide for the Planing machine. Plan, elevation.<br />
* BAB/A/113 Parts of slide for the Planing machine. Plan, elevation<br />
* BAB/A/114 Planing machine. Elevation, details.<br />
* BAB/A/114/1 Part of the Planing machine.<br />
* BAB/A/115 Chuck for Planing machine. Plan, elevation.<br />
* BAB/A/116 Parts of slide tool for Planing machine. Plan, elevation.<br />
* BAB/A/116/1 Sketch of drilling machine. Details.<br />
* BAB/A/117 Sketches of cams for consecutive carriage.<br />
* BAB/A/118 Various arrangements proposed, examined and rejected between the rejection of Plan 27 and the adoption of Plan 28. Figures 1, 2, 3, 4, 9.<br />
* BAB/A/119 Sketch of an anticipating whole and half zero carriage. Plan, elevation.<br />
* BAB/A/120 Axes D1 E1 for the left hand group of Plan 28. Plan, elevation.<br />
* BAB/A/121 Axes D E G H for the right hand group of Plan 28.<br />
* BAB/A/122 Improved framing for centre group of Plan 28. Arrangement, plan.<br />
* BAB/A/123 Sundry axes and wheels for Plan 28.<br />
* BAB/A/124 First sketch of all the parts in plan of the right half to middle group of General Plan 28. Plan, elevation.<br />
* BAB/A/125 Plan of consecutive mill counting apparatus for General Plan 28. Plan, note.<br />
* BAB/A/126 Elevation of consecutive mill counting apparatus for General Plan 28 and 28a.<br />
* BAB/A/127 Plan of the left half to middle group for General Plan 28.<br />
* BAB/A/128 Plan and section of a large chuck for Planing machine. Plan, elevation.<br />
* BAB/A/129 Elevation of parts of middle group drawn in plan on No. 127.<br />
* BAB/A/130 Elevation of parts of middle group drawn in plan on No. 127.<br />
* BAB/A/131 Plan and elevation of sundry parts in the upper cages of left half of middle group.<br />
* BAB/A/132 Plan of operation and variable card counting apparatus. Suited to Plans 28 and 28a.<br />
* BAB/A/133 Elevation of parts of the card counting apparatus for operation and variable cards.<br />
* BAB/A/134 Elevation of parts of the card counting apparatus for operation and variable cards.<br />
* BAB/A/135 Apparatus for registering the quotient adapted to Plan 28a. Plan, elevation and detail.<br />
* BAB/A/136 Sketch of a half zero anticipating carriage. Plan, description and note.<br />
* BAB/A/137 Plan and new method of counting off for mill counting apparatus. Elevation, detail.<br />
* BAB/A/138 Sign apparatus. Plan, elevation.<br />
* BAB/A/139 Sign apparatus for Plan 28a. Plan, elevation.<br />
* BAB/A/140 Table and store axes for Plan 28a. Plan, elevation and note.<br />
* BAB/A/141 Sketch of an apparatus for lifting the axes of the Analytical Engine. Plan, elevation.<br />
* BAB/A/142 Apparatus for combining incommensurable cycles. Plan, elevation.<br />
* BAB/A/143 General plans of three groups of the Analytical Engine.<br />
* BAB/A/144 Anticipating whole zero carriages. Figure 2 by vertical chain. Plan, elevation.<br />
* BAB/A/145 Plan and elevation for the calculating part of the Difference Engine. Figure 1. Superseded. Consecutive carriage.<br />
* BAB/A/146 Sketches of the printing and stereotyping apparatus of the Analytical and Difference Engines. Superseded. Plan, elevation.<br />
* BAB/A/147 Stereotype frames for Analytical and Difference Engines. Plan, elevation.<br />
* BAB/A/148 Sketch of an apparatus for advancing stereotype frames of the Difference Engine by cranks and backing them by weights. Superseded. Plan, elevation.<br />
* BAB/A/149 Speculations on the driving and directive for the Difference Engine. Superseded. Arrangements.<br />
* BAB/A/150 Difference Engine wheels for driving the cranks which move the matrix frames. Superseded. Plan, elevation.<br />
* BAB/A/151 Speculations on the driving and directive of the Difference Engine. Superseded. Plan, elevation.<br />
* BAB/A/152 Paper rollers of the printing apparatus for the Analytical and Difference Engines. Superseded. Plan, elevation.<br />
* BAB/A/153 Untitled elevation of the printing and stereotype apparatus. Superseded.<br />
* BAB/A/154 Speculations on the driving and directive of the Difference Engine. Superseded. Arrangement.<br />
* BAB/A/155 Speculations on the driving and directive for the Difference Engine. Elevation.<br />
* BAB/A/156 Plan of the apparatus for stereotyping and printing for both the Analytical and Difference Engines. Superseded.<br />
* BAB/A/157 Plan and elevation of part of the directive of the Difference Engine. Superseded.<br />
* BAB/A/158 Plan and elevation of the driving and directive of the Difference Engine. Superseded.<br />
* BAB/A/159 General plan and details of cams for driving calculating axes.<br />
* BAB/A/160 Untitled elevation. Table of symbols on reverse.<br />
* BAB/A/161 General plan and detail of the driving of the calculating part of the Difference Engine No. 2.<br />
* BAB/A/162 Part of frame for supporting stereotype axes.<br />
* BAB/A/163 Elevation of Difference Engine No. 2.<br />
* BAB/A/164 Plan of the Difference Engine No. 2.<br />
* BAB/A/165 Details of Difference Engine No. 2. Plan, elevation.<br />
* BAB/A/166 Apparatus for moving stereotype frames for Analytical and Difference Engines. Plan, elevation.<br />
* BAB/A/167 Elevation and end view of part of general framing. Plan.<br />
* BAB/A/168 Plan and end view of cams et cetera for vertical motion to calculating axes.<br />
* BAB/A/169 Plan of cams for locking odd Difference figure wheels and for vertical motion of even Difference warning.<br />
* BAB/A/170 Plan of cams for circular motion of even difference axes.<br />
* BAB/A/171 Difference Engine No. 2. Addition carriage and mode of driving the axes.<br />
* BAB/A/172 End view of inking printing paper and stereotype apparatus.<br />
* BAB/A/173 Plan of inking printing and stereotype apparatus.<br />
* BAB/A/174 Rack pinions for connecting table figure wheels with printing stereotype sectors. Elevation.<br />
* BAB/A/175 Plan of cams for punching with small stereotype sectors and cams for removing paper rollers.<br />
* BAB/A/176 Plan of calculating part of Difference Engine with the means of conveying numbers to stereotype sectors.<br />
* BAB/A/177 Bars and levers for lifting axes of the Difference Engine No. 2. Plan.<br />
* BAB/A/178 Five sheets relating to general notation of the motions of the Difference Engine No. 2.<br />
* BAB/A/178/1 General notation of the motions of the Difference Engine No. 2.<br />
* BAB/A/178/2 General notation of the motions of the Difference Engine No. 2.<br />
* BAB/A/178/3 General notation of the motions of the Difference Engine No. 2.<br />
* BAB/A/178/4 General notation of the motions of the Difference Engine No. 2.<br />
* BAB/A/178/5 General notation of the motions of the Difference Engine No. 2.<br />
* BAB/A/179 Untitled. Appears to be layout of axes on framing of Difference Engine No. 2. Plan of the calculating axis and framing of the Difference Engine.<br />
* BAB/A/180 Is A.180x intended<br />
* BAB/A/180/1 Untitled. Plan for raising axes (vertical motion) of the Difference Engine. Locking plates and travelling platforms.<br />
* BAB/A/181 Plan and elevation of a platform for giving circular motion to axes applied as an experiment to the Difference Engine No. 2. Drawing 163.<br />
* BAB/A/182 Untitled. Plan of locking plates for locking axis circularly and vertically.<br />
* BAB/A/183 Untitled. Plan of the universal and general locking plates. Plan and elevation of the locked arms.<br />
* BAB/B Drawings and tracings of Difference Engine No. 2.<br />
* BAB/B/002 Plan of Difference Engine No. 2. Tracing of BAB A/164.<br />
* BAB/B/003 Difference Engine No. 2. Addition carriage and mode of driving the axis. Tracing of BAB A/171.<br />
* BAB/B/004 Plan of the calculating part with the means of conveying numbers to stereotype sectors. Tracing of BAB A/176.<br />
* BAB/B/006 General plan and detail of the driving of the calculating part of Difference Engine No. 2. Tracing of BAB A/161.<br />
* BAB/B/006/1 Plan of part of framing of Drawing 161. Tracing of BAB A/161.<br />
* BAB/B/006/2 Plan of part of framing of Drawing 161. Tracing of BAB A/161.<br />
* BAB/B/006/3 Plan of part of framing of Drawing 161. Tracing of BAB A/161.<br />
* BAB/B/007 General plan and details of cams for driving calculating axis. Also the disconnecting apparatus. First mover. Tracing of BAB A/159.<br />
* BAB/B/008 End view and side elevation of driving and lifting apparatus.<br />
* BAB/B/008/1 Part of framing shown on 160. Tracing of BAB A/160.<br />
* BAB/B/008/2 Part of framing of Drawing 160. Tracing of BAB A/160.<br />
* BAB/B/008/3 Elevation of part of framing of Drawing 160.<br />
* BAB/B/012 Rack pinions for connecting table figure wheels with printing stereotype sectors. Elevation. Tracing of BAB A/174.<br />
* BAB/B/013 End view of inking printing paper and stereotyping apparatus. Tracing of BAB A/172.<br />
* BAB/B/014 Plan of inking, printing and stereotype apparatus. Tracing of BAB A/173<br />
* BAB/B/018 Stereotype frames for Analytical and Difference engines. Plan, end view and elevation. Tracing of BAB A/147.<br />
* BAB/B/019 Apparatus for moving stereotype frames for Analytical and Difference engines. Plan, end view and elevation. Tracing of BAB A/166.<br />
* BAB/C Miscellaneous tracings relating to the Analytical Engine<br />
* BAB/C/117 Digit counting apparatus upon axes of the left hand group of Plan 28. Plan, description and notation.<br />
* BAB/C/120 Axes D1, E1 for the left hand group of Plan 28<br />
* BAB/C/127 Plan of left half of middle group for General Plan 28.<br />
* BAB/C/129 Elevation of parts of middle group drawn in plan on No. 127.<br />
* BAB/C/130 Elevation of parts of middle group drawn in plan on No. 127.<br />
* BAB/C/131 Plan and elevation of sundry parts in the upper cages of left half of middle group.<br />
* BAB/C/135 Apparatus for registering the quotient adapted to Plan 28a.<br />
* BAB/C/121 Axes D,E,G,H for the right hand group of Plan 28<br />
* BAB/D Drawings of the Analytical Engine<br />
* BAB/D/001 Analytical Engine. Sheet No. 1. Sections of store wheels and their framing selectors.<br />
* BAB/D/002 Digit counting apparatus on the two upper wheel selectors.<br />
* BAB/D/003 Carriage with tens warning. Sheet 3.<br />
* BAB/D/004 Digit counting apparatus. Sheet 4.<br />
* BAB/D/005 Frame lifting bar and selectors. Sheet 5.<br />
* BAB/D/006 Sections of framing and racks. Sheet 6.<br />
* BAB/D/007 Digit counting apparatus spiral axis. Sheet 7.<br />
* BAB/D/008 First draft of selecting apparatus. Sheet 8.<br />
* BAB/D/009 Lifting apparatus by screw. Sheet 9.<br />
* BAB/D/010 Carriage and racks in sections. Sheet 10.<br />
* BAB/D/011 Plan of mill with two racks. Sheet 11.<br />
* BAB/D/012 Selecting apparatus. Sheet 12.<br />
* BAB/D/013 Carriage axis, head and tail of product. Sheet 13.<br />
* BAB/D/014 Carriage. Sheet 14.<br />
* BAB/D/015 Selectors, circular framing for mill.<br />
* BAB/D/016 Circular mill. Various plans. Sheet 16.<br />
* BAB/D/017 First draft of framing. Sheet 17.<br />
* BAB/D/018 Hoarding carriage, framing.<br />
* BAB/D/019 Side and end view of framing showing bearings for racks at Figure 1. Sheet 10.<br />
* BAB/D/020 Elevation arrangements for division. Sheet 20<br />
* BAB/D/021 Digit counting apparatus units and tens. Sheet 26.<br />
* BAB/D/022 Revised plan of mill. Sheet 27.<br />
* BAB/D/023 Raising and lowering figure wheel axis. Sheet 28.<br />
* BAB/D/024 Plan of mill, table wheels and carriage. Sheet 31.<br />
* BAB/D/025 Platform raising apparatus. Sheet 32.<br />
* BAB/D/026 Platform raising apparatus. Sheet 33.<br />
* BAB/D/027 Continuation of raising apparatus.<br />
* BAB/D/028 Mill. Sheet 28. Superseded by Sheet 25.<br />
* BAB/D/029 Draft of the mill. Sheet 29. Superseded by Sheet 24.<br />
* BAB/D/030 Plan of improved mill. The last improved copy. Sheet 30.<br />
* BAB/D/031 Elevation of the mill.<br />
* BAB/D/032 Long stepping mill driven by pinions. Sheet 32.<br />
* BAB/D/033 Carriage, axis and wheels. Sections. Sheet 33.<br />
* BAB/D/034 Plan of mill and store. First draft of revised store and mill connected.<br />
* BAB/D/035 Rough draft of mill and store. Plan and elevation.<br />
* BAB/D/036 Plan of mill. Sheet 35. Superseded by Sheet 36.<br />
* BAB/D/037 Plan of mill. Superseded by Sheet 35 - 36.<br />
* BAB/D/038 Rising platforms, advancing plate.<br />
* BAB/D/039 Plan and elevation of bolts and advancing plate.<br />
* BAB/D/040 Plan and elevation of bolts for store.<br />
* BAB/D/041 Plan and elevation of rising platform.<br />
* BAB/D/042 Wanting tooth for long stepping. Parts of adding and carriage.<br />
* BAB/D/043 Wanting tooth for long stepping. Rough sketches for carriage. Attempt at break and joint for carriage.<br />
* BAB/D/044 Plan of store with double mill and printing. Superseded.<br />
* BAB/D/045 Printing and card punching. Printing part of the Analytical Engine.<br />
* BAB/E Drawings of tools<br />
* BAB/E/001 Rough draft of Universal Machine Tool. Designed and employed for obtaining the different motions.<br />
* BAB/E/002 Rough draft of throw out motion for feed apparatus.<br />
* BAB/E/003 Experimental planing machine<br />
* BAB/E/004 Reverse motion for cross planing.<br />
* BAB/E/005 Elevation and section of cross slide.<br />
* BAB/E/006 Plan, elevation and section of cross slide.<br />
* BAB/E/007 Back and end elevation of cross slide.<br />
* BAB/E/008 Side and end elevation of feed and drawing apparatus.<br />
* BAB/E/009 Side and end elevation of feed motion with shade. Second revision.<br />
* BAB/E/010 Front and side elevation of feed apparatus. Showing worm and slotting motion.<br />
* BAB/E/011 Side and end elevation of feed motions. Showing the bands in different colours.<br />
* BAB/E/012 Elevations and sections of feed motions. Fourth revision.<br />
* BAB/E/013 Small planing machine. Sheet 1.<br />
* BAB/E/014 End and side elevation of Large Universal Machine.<br />
* BAB/E/015 Small Experimental Machine. Sheet 5.<br />
* BAB/E/016 Small Universal Machine. Sheet 6.<br />
* BAB/E/017 Small Universal Machine.<br />
* BAB/E/018 Small Experimental Machine. Sheet 2.<br />
* BAB/E/019 Plan of Large Universal Machine.<br />
* BAB/F Notations of the Analytical Engine<br />
* BAB/F/001 Multiplication before the invention of multiplication by table. Sheet 1 of 2.<br />
* BAB/F/002 Multiplication before the invention of multiplication by table. Sheet 2 of 2.<br />
* BAB/F/003 Division before division by table was contrived. Sheet 1 of 4.<br />
* BAB/F/004 Division continued. Sheet 2 of 4.<br />
* BAB/F/005 Division continued. Sheet 3 of 4.<br />
* BAB/F/006 Division continued. Sheet 4 of 4.<br />
* BAB/F/007 Extraction of square root. Sheet 1 of 4.<br />
* BAB/F/008 Extraction of square root. Sheet 2 of 4.<br />
* BAB/F/009 Extraction of square root. Sheet 3 of 4.<br />
* BAB/F/010 Extraction of square root. Sheet 4 of 4.<br />
* BAB/F/011 Notation for lifters. Sheet 1 of 2.<br />
* BAB/F/012 Notation for lifters for division by table, continued. Sheet 2 of 2.<br />
* BAB/F/013 Table multiplication.<br />
* BAB/F/014 Bolting plates for multiplication by table.<br />
* BAB/F/015 Table division.<br />
* BAB/F/016 Table division.<br />
* BAB/F/017 Table division.<br />
* BAB/F/018 Multiplication without table. Sheet 1 of 2.<br />
* BAB/F/019 Multiplication without table. Sheet 2 of 2.<br />
* BAB/F/020 Bolting plates to multiply without table.<br />
* BAB/F/021 Division without table. Four sheets. Sheet 1 of 4.<br />
* BAB/F/022 Division without table. Sheet 2 of 4.<br />
* BAB/F/023 Division without table. Sheet 3 of 4.<br />
* BAB/F/024 Division without table. Sheet 4 of 4.<br />
* BAB/F/025 Bolting plates to divide without table.<br />
* BAB/F/026 Square root. Sheet 1 of 4.<br />
* BAB/F/027 Square root. Sheet 2 of 4.<br />
* BAB/F/028 Square root. Sheet 3 of 4.<br />
* BAB/F/029 Square root. Sheet 4 of 4.<br />
* BAB/F/030 Bolting plates to do square root. Sheet 1of 2.<br />
* BAB/F/031 Bolting plates to do square root, continued. Sheet 2 of 2.<br />
* BAB/F/032 Ordinary cycle of 16.<br />
* BAB/F/033 Notation of carriage<br />
* BAB/F/034 Notation for differences.<br />
* BAB/F/035 Various sheets on division and multiplication.<br />
* BAB/F/036 Part of a notation of division.<br />
* BAB/F/037 Notation for division.<br />
* BAB/F/038 Notation for multiplication.<br />
* BAB/F/039 Notation for multiplication.<br />
* BAB/F/040 Barrels for multiplication. Left hand side of machine.<br />
* BAB/F/041 Notation of the counting apparatus, et cetera, to suit Notation 39, for multiplication.<br />
* BAB/F/042 Notation for division for Sketch No. 12 ( A/33).<br />
* BAB/F/043 Cycles on barrels for division.<br />
* BAB/F/044 Notation for square root.<br />
* BAB/F/045 Barrels for square root.<br />
* BAB/F/046 Counting apparatus.<br />
* BAB/F/047 Division and multiplication of 60 figures.<br />
* BAB/F/048 Single machine division of 30 figures with tail. General notation.<br />
* BAB/F/049 Multiplication and division of 60 figures with tail of 60. General notation.<br />
* BAB/F/050 Extracted from notations F/39, F/42 and F/44 for the purpose of arranging the verticals on the barrels.<br />
* BAB/F/051 Differences.<br />
* BAB/F/052 Addition and subtraction. Multiplication by stepping without table (to be done in store). Division by powers of ten (stepping done in store).<br />
* BAB/F/053 Printing differences.<br />
* BAB/F/054 Additions with signs.<br />
* BAB/F/055 Copy of ordinary cycle of 16. No. 32.<br />
* BAB/F/056 Counting by means of figure wheels. Division.<br />
* BAB/F/057 Multiplication.<br />
* BAB/F/058 Square root.<br />
* BAB/F/059 Counting by stepping. Division.<br />
* BAB/F/060 Cycle of 16.<br />
* BAB/F/061 Notation of locking.<br />
* BAB/F/062 Cycle of 17.<br />
* BAB/F/063 Notation of locking. Small operations.<br />
* BAB/F/064 Notation of locking for multiplication and division.<br />
* BAB/F/065 Notation of locking for square root.<br />
* BAB/F/066 Extracted from notations of locking.<br />
* BAB/F/067 Notation of division.<br />
* BAB/F/067/1 Notation of Division. Sheet 1 of 2.<br />
* BAB/F/067/2 Notation of division. Sheet 2 of 2.<br />
* BAB/F/068 Notation of multiplication.<br />
* BAB/F/069 Notation for square root.<br />
* BAB/F/070 Addition and subtraction with signs.<br />
* BAB/F/071 Notation of division.<br />
* BAB/F/071/1 Notation of division. Sheet 1 of 2.<br />
* BAB/F/071/2 Notation of division. Sheet 2 of 2.<br />
* BAB/F/072 Cycle of 20.<br />
* BAB/F/073 Two cycles - one of 21 and one of 28 units.<br />
* BAB/F/074 Notation of multiplication with hoarded carriages, beginning with the highest figure of multiplier.<br />
* BAB/F/074/1 Notation of multiplication with hoarded carriages, beginning with the highest figure of multiplier. Sheet 1 of 2.<br />
* BAB/F/074/2 Notation of multiplication with hoarded carriages, beginning with the lowest figure multiplier. Sheet 2 of 2.<br />
* BAB/F/075 Notation of division.<br />
* BAB/F/075/1 Notation of division. Two figure wheels in each cage. Two cycles. Sheet 1 of 2.<br />
* BAB/F/075/2 Notation of division. Two figure wheels in each cage. Two cycles. Sheet 2 of 2.<br />
* BAB/F/076 Two cycles of 15 and 20.<br />
* BAB/F/077 Mill and rack cycles.<br />
* BAB/F/077/1 Mill cycles of 15 and 20. Sheet 1 of 2.<br />
* BAB/F/077/2 Racks, cycle of 20. Sheet 2 of 2.<br />
* BAB/F/078 Verticals.<br />
* BAB/F/079 General notation of addition and subtraction with signs.<br />
* BAB/F/080 Notations of lockings.<br />
* BAB/F/080/1 Notation of lockings. Sheet 1 of 3.<br />
* BAB/F/080/2 Notation of lockings. Sheet 2 of 3<br />
* BAB/F/080/3 Notation of lockings - store. Sheet 3 of 3.<br />
* BAB/F/081 General notation of addition and subtraction.<br />
* BAB/F/082 Sectors, levers, et cetera in mill and store.<br />
* BAB/F/083 Notation of approximative multiplication.<br />
* BAB/F/084 Addition and subtraction with signs.<br />
* BAB/F/085 Notation of approximative division.<br />
* BAB/F/086 Notation for the directive of multiplication.<br />
* BAB/F/087 Directive of Division.<br />
* BAB/F/088 Directive of addition and subtraction.<br />
* BAB/F/089 Notation of the directive of multiplication in which carriages are hoarded.<br />
* BAB/F/090 Directive of addition.<br />
* BAB/F/091 Directive of addition.<br />
* BAB/F/092 Directive of addition.<br />
* BAB/F/093 Verticals.<br />
* BAB/F/093/1 Verticals. Multiplication. Sheet 1 of 3.<br />
* BAB/F/093/2 Verticals. Division. Sheet 2 of 3.<br />
* BAB/F/093/3 Verticals. Approximative division. Sheet 3 of 3.<br />
* BAB/F/094 Notation for the directive of multiplication.<br />
* BAB/F/095 No sheet. Preceding sheet F/94 and subsequent sheet F/96 indicate that there is no notation numbered 95.<br />
* BAB/F/096 Notations for the directive of division.<br />
* BAB/F/096/1 Notation for the directive of division. Sheet 1 of 2.<br />
* BAB/F/096/2 Notation of the directive introduced into division for approximative division. Sheet 2 of 2.<br />
* BAB/F/097 Notation of cards for multiplication, for multiplication without stepping, and for approximative multiplication.<br />
* BAB/F/098 Notation of cards for division and approximative division.<br />
* BAB/F/099 Cases of the combination of the algebraic and accidental sign.<br />
* BAB/F/100 Addition.<br />
* BAB/F/101 Addition.<br />
* BAB/F/102 Notation for addition of any number of quantities, giving off and retaining every pair.<br />
* BAB/F/103 Notations dealing with addition, division and multiplication. Notation for addition of any number of quantities, giving off and retaining at every addition. Sheet one of six.<br />
* BAB/F/103/1 Untitled. Draft notes. Sheet two of six.<br />
* BAB/F/103/2 Acting verticals in the variations of division and approximative division. Sheet three of six.<br />
* BAB/F/103/3 Notation multiplication 108. Sheet four of six.<br />
* BAB/F/103/4 Multiplication. Sheet five of six.<br />
* BAB/F/103/5 Multiplication, division and addition for verticals. Sheet six of six.<br />
* BAB/F/104 Algebraic addition.<br />
* BAB/F/105 Addition and subtraction with signs and position of the verticals.<br />
* BAB/F/105/1 Addition and subtraction with signs. Give off arbitrarily. Sheet 1 of 2.<br />
* BAB/F/105/2 Addition and subtraction with signs. Give off after each addition. Sheet 2 of 2.<br />
* BAB/F/106 Directive of Division, No. 1.<br />
* BAB/F/107 Directive of multiplication, No. 1.<br />
* BAB/F/108 Notations for multiplication.<br />
* BAB/F/108/1 Multiplication. Sheet 1 of 4.<br />
* BAB/F/108/2 Multiplication, continued. Sheet 2 of 4.<br />
* BAB/F/108/3 Standard case of approximate multiplication. Sheet 3 of 4.<br />
* BAB/F/108/4 Approximative multiplication, continued. Sheet 4 of 4.<br />
* BAB/F/109 Notations for division.<br />
* BAB/F/109/1 Notation of division. Standard Case. Sheet 1 of 12.<br />
* BAB/F/109/2 Division, continued. Sheet 2 of 12.<br />
* BAB/F/109/3 Division, continued. Sheet 3 of 12.<br />
* BAB/F/109/4 Approximative division. Standard case. Sheet 4 of 12.<br />
* BAB/F/109/5 Approximative division, continued. Sheet 5 of 12.<br />
* BAB/F/109/6 Approximative division, continued. Sheet 6 of 12.<br />
* BAB/F/109/7 Approximative division, continued. Sheet 7 of 12.<br />
* BAB/F/109/8 Approximative division, continued. Sheet 8 of 12.<br />
* BAB/F/109/9 Approximative division, continued. Sheet 9 of 12.<br />
* BAB/F/109/10 Approximative division, continued. Sheet 10 of 12.<br />
* BAB/F/109/11 Approximative division, continued. Sheet 11 of 12.<br />
* BAB/F/109/12 36 variations of approximative division. Sheet 12 of 12.<br />
* BAB/F/110 Verticals for multiplication. Notation 108.<br />
* BAB/F/111 Verticals for division.<br />
* BAB/F/111/1 Verticals for division. Sheet 1 of 4.<br />
* BAB/F/111/2 Verticals for approximative division. Sheet 2 of 4.<br />
* BAB/F/111/3 Verticals for approximative division. Sheet 3 of 4.<br />
* BAB/F/111/4 Verticals for approximative division. Sheet 4 of 4.<br />
* BAB/F/112 Cases of common and approximative multiplication and division.<br />
* BAB/F/112/1 Cases of common multiplication and their corresponding variations introduced. Sheet 1 of 7.<br />
* BAB/F/112/2 Cases of approximative multiplication with the arbitrary variations introduced. Sheets 2 - 7 of 7.<br />
* BAB/F/113 Addition and subtraction of 120 figures.<br />
* BAB/F/113/1 Addition and subtraction of 120 figures. Sheet 1 of 3.<br />
* BAB/F/113/2 Addition and subtraction of 120 figures. Sheet 2 of 3.<br />
* BAB/F/113/3 Addition and subtraction of 120 figures. Sheet 3 of 3.<br />
* BAB/F/114 Notation of cards for algebraic addition.<br />
* BAB/F/115 Algebraic addition to suit notation 114. Unfinished. Superseded by notation 122.<br />
* BAB/F/116 Algebraic addition if more than 40 figures.<br />
* BAB/F/116/1 Algebraic addition if more than 40 figures. Cases 1 and 2. Sheet 1 of 6.<br />
* BAB/F/116/2 Algebraic addition of more than 40 figures. Cases 3 and 4. Sheet 2 of 6.<br />
* BAB/F/116/3 Algebraic addition if more than 40 figures. Cases 5 and 6. Sheet 3 of 6.<br />
* BAB/F/116/4 Algebraic addition if more than 40 figures. Case 7. Sheet 4 of 6.<br />
* BAB/F/116/5 Algebraic addition if more than 40 figures. Case 8. Sheets 5 and 6 of 6.<br />
* BAB/F/117 Notation of cards for algebraic addition if more than 40 figures.<br />
* BAB/F/118 General notation of directive.<br />
* BAB/F/119 Directive of Addition (Algebraic).<br />
* BAB/F/120 No sheet according to the note 'none' on front page of BAB F/122.<br />
* BAB/F/121 No sheet according to the note 'none' on front page of BAB F/122.<br />
* BAB/F/122 Algebraic addition.<br />
* BAB/F/123 Notation of cards for algebraic addition.<br />
* BAB/F/124 General notation of possible trains.<br />
* BAB/F/124/1 General notation of possible trains. Sheet 1 of 3.<br />
* BAB/F/124/2 General notation of possible trains. Sheet 2 of 3.<br />
* BAB/F/124/3 General notation of possible trains. Sheet 3 of 3.<br />
* BAB/F/125 Trains in addition in mill. Barrel divided for verticals.<br />
* BAB/F/126 Trains in division.<br />
* BAB/F/127 Cases of common and approximative multiplication and their corresponding variations introduced.<br />
* BAB/F/128 Directive or courses of the verticals in common division.<br />
* BAB/F/129 Trains for multiplication and variations of common and approximative multiplication.<br />
* BAB/F/129/1 Trains of multiplication. Standard Case. Sheet 1 of 2.<br />
* BAB/F/129/2 Trains of variations of common and approximative multiplication. Sheet 2 of 2.<br />
* BAB/F/130 Distribution of the verticals on different sets of barrels.<br />
* BAB/F/131 Trains of division, variations and approximative division.<br />
* BAB/F/131/1 Trains of division. Standard Case. Sheet 1 of 7.<br />
* BAB/F/131/2 Trains of variations 1, 2, 3, 4 of division. Sheet 2 of 7<br />
* BAB/F/131/3 Trains of variations 5, 6, 8, 9 of division. Sheet 3 of 7.<br />
* BAB/F/131/4 Trains of variations 7 of division. Sheet 4 of 7.<br />
* BAB/F/131/5 Trains of accidents in common division. Sheet 5 of 7.<br />
* BAB/F/131/6 Trains of approximative division. Sheet 6 of 7.<br />
* BAB/F/131/7 Trains of approximative division. Sheet 7 of 7.<br />
* BAB/F/132 Trains of addition.<br />
* BAB/F/132/1 Trains of addition. Sheet 1 of 3.<br />
* BAB/F/132/2 Trains of addition. Sheet 2 of 3.<br />
* BAB/F/132/3 Trains of algebraic addition to suit Notation 105. Sheet 3 of 3.<br />
* BAB/F/133 Distribution of verticals of the large group of the mill on seven barrels.<br />
* BAB/F/134 Trains ordered by one barrel, and verticals for one barrel, group "A.<br />
* BAB/F/134/1 Trains ordered by one barrel on group "F and group "A. Sheet 1 of 2.<br />
* BAB/F/134/2 Verticals for one barrel group "A. Sheet 2 of 2.<br />
* BAB/F/135 No sheet according to original notes on Notations 134 and 136.<br />
* BAB/F/136 Verticals used on the seven barrels of the great group in division. Standard Case.<br />
* BAB/F/137 Verticals on barrels for groups "F and "A and Table.<br />
* BAB/F/138 Subsidiary operations on K combined with rack and "F executed during multiplication and division in mill.<br />
* BAB/F/139 Trains on "F and I during operations in mill and store.<br />
* BAB/F/139/1 Trains on "F and I during operations in the mill. Sheet 1 of 3<br />
* BAB/F/139/2 Trains on "F and I during subsidiary operations in store. Sheet 2 of 3.<br />
* BAB/F/139/3 Trains on "F and I during subsidiary operations in store. Sheet 3 of 3.<br />
* BAB/F/140 Steps of the trains in one barrel in group "F and I during operations in the mill and during subsidiary operations in the store.<br />
* BAB/F/141 Enumeration of trains on groups I and "F.<br />
* BAB/F/142 Enumeration of trains on groups A F consisting of the axes A F G I 1 I J L O S.<br />
* BAB/F/143 Steps of the trains on barrels of great group for division. Standard Case.<br />
* BAB/F/144 Trains of group "F I for division. Standard Case.<br />
* BAB/F/145 Steps of trains on barrels of all the groups<br />
* BAB/F/145/1 Steps of trains on barrels of all the groups. Sheet 1 of 5.<br />
* BAB/F/145/2 Steps of trains on barrels of all the groups. Sheet 2 of 5.<br />
* BAB/F/145/3 Steps of trains on barrels of all the groups. Sheet 3 of 5.<br />
* BAB/F/145/4 Steps of trains on barrels of all the groups. Sheet 4 of 5.<br />
* BAB/F/145/5 Steps of the trains. Sheet 5 of 5.<br />
* BAB/F/146 Enumeration of trains on groups I and "F.<br />
* BAB/F/147 Directive of division.<br />
* BAB/F/148 No sheet according to note on Notations 147 and 149.<br />
* BAB/F/149 Algebraic addition.<br />
* BAB/F/149/1 Algebraic addition. Sheet 1 of 4.<br />
* BAB/F/149/2 Algebraic addition. Sheet 2 of 4.<br />
* BAB/F/149/3 Algebraic addition. Sheet 3 of 4.<br />
* BAB/F/149/4 Verticals on one great barrel for algebraic addition. Sheet 4 of 4.<br />
* BAB/F/150 Directive of algebraic addition.<br />
* BAB/F/150/1 Directive of algebraic addition. Sheet 1 of 3.<br />
* BAB/F/150/2 Directive of algebraic addition. Sheet 2 of 3.<br />
* BAB/F/150/3 Directive of algebraic addition. Sheet 3 of 3.<br />
* BAB/F/151 Trains of algebraic addition.<br />
* BAB/F/151/1 Trains of algebraic addition. Sheet 1 of 2.<br />
* BAB/F/151/2 Trains of algebraic addition. Sheet 2 of 2.<br />
* BAB/F/152 Used while discussing the selecting apparatus.<br />
* BAB/F/153 Used while discussing the selecting apparatus.<br />
* BAB/F/154 Sketches of various notations.<br />
* BAB/F/154/1 Sketches of various notations. Sheet 1 of 2.<br />
* BAB/F/154/2 Sketches of various notations. Sheet 2 of 2.<br />
* BAB/F/155 Tables of multiples, et cetera.<br />
* BAB/F/156 Used while discussing selectors.<br />
* BAB/F/157 Used while discussing selectors.<br />
* BAB/F/158 Selectors. Notation for setting the shades for the nine multiples of 04321 for number and complement.<br />
* BAB/F/159 Selectors. Notation for setting the cams for the nine multiples of 04321.<br />
* BAB/F/160 Notation and description of the carriage drawn on Notation 81.<br />
* BAB/F/161 Selectors, drawings 82 and 83.<br />
* BAB/F/161/1 Selectors, drawings 82 and 83, setting. Sheet 1 of 4.<br />
* BAB/F/161/2 Selectors, drawings 82 and 83, using. Sheet 2 of 4.<br />
* BAB/F/161/3 Selectors, drawings 82 and 83, using. Sheet 3 of 4.<br />
* BAB/F/161/4 Selectors, drawings 82 and 83, reducing to zero. Sheet 4 of 4.<br />
* BAB/F/162 Used while discussing the selecting apparatus.<br />
* BAB/F/163 Case of division used while discussing the selectors and selecting apparatus.<br />
* BAB/F/163/1 Case of division used while discussing the selectors. Sheet 1 of 3.<br />
* BAB/F/163/2 Case of division used while discussing the selecting apparatus. Sheet 2 of 3.<br />
* BAB/F/163/3 Case of division used while discussing the selecting apparatus. Sheet 3 of 3.<br />
* BAB/F/164 General notation of directive. First Motion.<br />
* BAB/F/165 Sketch of multiplication.<br />
* BAB/F/166 Notations of multiplication.<br />
* BAB/F/166/1 Notation of multiplication with hoarded carriages. Sheet 1 of 4.<br />
* BAB/F/166/2 Notation of multiplication. Sheet 2 of 4.<br />
* BAB/F/166/3 Notation of multiplication. Sheet 3 of 4.<br />
* BAB/F/166/4 Notation of multiplication. Sheet 4 of 4.<br />
* BAB/F/167 Division.<br />
* BAB/F/167/1 Division. One turn of hand for each figure of quotient. Two sets of selectors. Standard Case. Sheet 1 of 9.<br />
* BAB/F/167/2 Division. Sheet 2 of 9.<br />
* BAB/F/167/3 Division. Sheet 3 of 9.<br />
* BAB/F/167/4 Division. Sheet 4 of 9.<br />
* BAB/F/167/5 Division. Sheet 5 of 9.<br />
* BAB/F/167/6 Division. Sheet 6 of 9.<br />
* BAB/F/167/7 Division. Sheet 7 of 9.<br />
* BAB/F/167/8 Division. Sheet 8 of 9.<br />
* BAB/F/167/9 Division. Sheet 9 of 9.<br />
* BAB/F/168 Verticals for multiplication. Notation 166.<br />
* BAB/F/169 Verticals for division as in Notation 167.<br />
* BAB/F/170 Notations of algebraic addition. To suit Plan 25.<br />
* BAB/F/170/1 Notation of algebraic addition. To suit Plan 25. Sheet 1 of 3.<br />
* BAB/F/170/2 Notation of algebraic addition. Sheet 2 of 3.<br />
* BAB/F/170/3 Notation of algebraic addition. Sheet 3 of 3.<br />
* BAB/F/171 Verticals for governing A et cetera for algebraic additions, notation 170.<br />
* BAB/F/171/1 Verticals for governing A et cetera for algebraic additions, notation 170. Sheet 1 of 2.<br />
* BAB/F/171/2 Verticals for governing A et cetera for algebraic additions, notation 170. Sheet 2 of 2.<br />
* BAB/F/172 Engine without control.<br />
* BAB/F/173 Sketches of various notations.<br />
* BAB/F/174 Sketches of various notations.<br />
* BAB/F/175 Sketches of various notations.<br />
* BAB/F/176 Division. Sketches of various notations.<br />
* BAB/F/177 Used while discussing selecting apparatus for small Analytical Engine.<br />
* BAB/F/178 Case of division illustrating the method of selecting + or - quotient figures with one set of selectors.<br />
* BAB/F/179 Approximate Division. Standard case to suit Plan 26 Drawing 90 and case on Notation 178.<br />
* BAB/F/180 Sketches of various notations.<br />
* BAB/F/181 Sketches of various notations.<br />
* BAB/F/182 Case of multiplication adapted to Notations 183 and 206.<br />
* BAB/F/183 Multiplication. Sketches of Notations.<br />
* BAB/F/184 Algebraic addition of K figures<br />
* BAB/F/185 Sketches of algebraic addition.<br />
* BAB/F/186 Sketches of algebraic addition.<br />
* BAB/F/187 Algebraic addition of K figures.<br />
* BAB/F/188 Sequences of the verticals for algebraic addition of k figures.<br />
* BAB/F/188/1 Sequences of the verticals for algebraic addition of K figures. Sheet 1 of 2.<br />
* BAB/F/188/2 Sequences of the verticals for algebraic addition of K figures. Sheet 2 of 2<br />
* BAB/F/189 Algebraic addition of K figures. Sequences of the verticals and the work ordered by each vertical.<br />
* BAB/F/189/1 Algebraic addition of K figures. Sequences of the verticals and the work ordered by each vertical. Sheet 1 of 2.<br />
* BAB/F/189/2 Algebraic addition of K figures. Sequences of the verticals and the work ordered by each vertical. Sheet 2 of 2.<br />
* BAB/F/190 Sketches of notations for algebraic addition. Case 1, 2 and 3.<br />
* BAB/F/191 Directive of algebraic addition.<br />
* BAB/F/192 Directive of algebraic addition.<br />
* BAB/F/193 Algebraic addition. Sequences of the verticals.<br />
* BAB/F/194 Algebraic addition.<br />
* BAB/F/195 Algebraic addition.<br />
* BAB/F/195/1 Algebraic addition. Sheet 1 of 3.<br />
* BAB/F/195/2 Algebraic addition. Sheet 2 of 2.<br />
* BAB/F/195/3 Algebraic addition. Sheet 3 of 3.<br />
* BAB/F/196 Algebraic addition.<br />
* BAB/F/197 Algebraic addition.<br />
* BAB/F/198 Work ordered by three barrels for algebraic addition of n times k figures.<br />
* BAB/F/198/1 Work ordered by three barrels for algebraic addition of n times k figures. Sheet 1 of 2.<br />
* BAB/F/198/2 Work ordered by three barrels for algebraic addition of n times k figures. Sheet 2 of 2.<br />
* BAB/F/199 Compound addition or addition of n k figures. Notation of cards for compound addition.<br />
* BAB/F/200 Algebraic addition of n times k figures.<br />
* BAB/F/200/1 Algebraic addition of n times k figures. Sheet 1 of 3.<br />
* BAB/F/200/2 Algebraic addition of n times k figures. Sheet 2 of 3.<br />
* BAB/F/200/3 Algebraic addition of n times k figures. Sheet 3 of 3.<br />
* BAB/F/201 Sequences of the verticals on each barrel for algebraic addition of k figures.<br />
* BAB/F/202 Verticals on each barrel for algebraic addition of k figures.<br />
* BAB/F/203 Sequences of the verticals on each barrel for algebraic addition of k figures.<br />
* BAB/F/203/1 Sequences of the verticals on each barrel for algebraic addition of k figures. Sheet 1 of 2.<br />
* BAB/F/203/2 Sequences of the verticals on each barrel for algebraic addition of k figures. Sheet 2 of 2.<br />
* BAB/F/204 Algebraic addition of k figures.<br />
* BAB/F/205 Arithmetic examples of algebraic addition of n times k figures.<br />
* BAB/F/206 Multiplication.<br />
* BAB/F/206/1 Multiplication. Sheet 1 of 3.<br />
* BAB/F/206/2 Multiplication. Sheet 2 of 3.<br />
* BAB/F/206/3 Multiplication. Sheet 3 of 3.<br />
* BAB/F/207 Division.<br />
* BAB/F/207/1 Division. Sheet 1 of 5.<br />
* BAB/F/207/2 Division. Sheet 2 of 5.<br />
* BAB/F/207/3 Division. Sheet 3 of 5.<br />
* BAB/F/207/4 Division. Sheet 4 of 5.<br />
* BAB/F/207/5 Accidents in division. Sheet 5 of 5.<br />
* BAB/F/208 Verticals for multiplication (as performed in Notation 206) on one barrel.<br />
* BAB/F/209 Verticals for division (as performed in Notation 207) on one barrel.<br />
* BAB/F/210 Axes, times and bands of the Analytical Engine.<br />
* BAB/F/210/1 Axes, times and bands of the Analytical Engine. Sheet 1 of 2.<br />
* BAB/F/210/2 Axes, times and bands of the Analytical Engine. Sheet 2 of 2.<br />
* BAB/F/211 Mill.<br />
* BAB/F/211/1 Mill. Sheet 1 of 2.<br />
* BAB/F/211/2 Mill. Cycles of 15 and 20. Sheet 2 of 2.<br />
* BAB/F/212 Algebraic addition of k figure.<br />
* BAB/F/213 Algebraic addition of n times k figures.<br />
* BAB/F/213/1 Algebraic addition of n times k figures. Sheet 1 of 5.<br />
* BAB/F/213/2 Algebraic addition of n times k figures. Sheet 2 of 5.<br />
* BAB/F/213/3 Algebraic addition of n times k figures. Sheet 3 of 5.<br />
* BAB/F/213/4 Algebraic addition of n times k figures. Sheet 4 of 5.<br />
* BAB/F/213/5 Algebraic addition of n times k figures. Sheet 5 of 5.<br />
* BAB/F/214 Sequences of the verticals in algebraic addition of n times k figures.<br />
* BAB/F/215 Arithmetic examples of algebraic addition of n times k figures.<br />
* BAB/F/215/1 Arithmetic examples of algebraic addition of n times k figures. Sheet 1 of 2.<br />
* BAB/F/215/2 Arithmetic examples of algebraic addition of n times k figures. Sheet 2 of 2.<br />
* BAB/F/216 Sketches of notations. Table making for multiplication and division.<br />
* BAB/F/217 Notation of the counting apparatus (Drawings 95 and 96) for division (Notation 218).<br />
* BAB/F/218 Division.<br />
* BAB/F/218/1 Division. Sheet 1 of 6.<br />
* BAB/F/218/2 Division. Sheet 2 of 6.<br />
* BAB/F/218/3 Division. Sheet 3 of 5.<br />
* BAB/F/218/4 Division. Sheet 4 of 6.<br />
* BAB/F/218/5 Division. Sheet 5 of 5.<br />
* BAB/F/219 Arithmetical example of multiplication as performed in Notation 220.<br />
* BAB/F/220 Multiplication.<br />
* BAB/F/220/1 Multiplication. Sheet 1 of 3.<br />
* BAB/F/220/2 Multiplication. Sheet 2 of 3.<br />
* BAB/F/220/3 Multiplication. Sheet 3 of 3.<br />
* BAB/F/221 Verticals for division as performed on Notation 218 arranged on one barrel.<br />
* BAB/F/222 Verticals for multiplication as performed in Notation 220 arranged on one barrel.<br />
* BAB/F/223 Reversing sign.<br />
* BAB/F/224 Stepping ruled by operation cards.<br />
* BAB/F/225 Multiplication of two factors, when the multiplicand has more than k, but both factors together not more than 2 k digits.<br />
* BAB/F/226 Cards, et cetera for multiplication of a number having k + p digits by another number having not more than k - p digits.<br />
* BAB/F/227 Reversing sign ascertaining if a variable is zero, ascertaining if a variable has a + or - sign (supersedes 223).<br />
* BAB/F/228 Counting the digits in any variable P or in any number of variables P Q R et cetera.<br />
* BAB/F/229 Stepping up.<br />
* BAB/F/230 Stepping down.<br />
* BAB/F/231 Multiplication with three multiples.<br />
* BAB/F/231/1 Multiplication with three multiples. Sheet 1 of 2.<br />
* BAB/F/231/2 Multiplication with three multiples. Sheet 2 of 2.<br />
* BAB/F/232 Notation of self-acting positive and negative consecutive carriage.<br />
* BAB/F/233 Notation of units of consecutive half zero carriage.<br />
* BAB/F/234 Notation of tens chains for the anticipating half and whole zero carriage.<br />
* BAB/F/235 Notation of consecutive and half zero carriage.<br />
* BAB/F/236 Anticipating half zero carriage. Addition and subtraction.<br />
* BAB/F/236/1 Anticipating half zero carriage. Addition and subtraction by whole zero. Sheet 1 of 2.<br />
* BAB/F/236/2 Anticipating half zero carriage. Addition and subtraction by half zero. Sheet 2 of 2.<br />
* BAB/F/237 Anticipating whole and half zero digit counting carriage (Drawing 106). Addition and subtraction by whole and half zero.<br />
* BAB/F/238 Digit counting by carriage. Drawing 106.<br />
* BAB/F/239 Trial of a method of division.<br />
* BAB/F/240 Summary of multiplication.<br />
* BAB/F/241 Division.<br />
* BAB/F/242 Division. Working notation belonging to Summary No. 244 which superseded Notation 241.<br />
* BAB/F/243 Working notation belonging to the summary of multiplication number 240.<br />
* BAB/F/244 Summary of division.<br />
* BAB/F/245 Summary of algebraic addition.<br />
* BAB/F/246 Algebraic addition.<br />
* BAB/F/247 Carriage.<br />
* BAB/F/248 Stepping sketches.<br />
* BAB/F/249 Vertical positions of the wheels.<br />
* BAB/F/249/1 Vertical positions of the wheels in addition, subtraction, making table and multiplication. Sheet 1 of 5.<br />
* BAB/F/249/2 Vertical position of the wheels for steppings in division and multiplication. Stepping up during division and giving off to selectors. This includes stepping up before division. Sheet 2 of 5.<br />
* BAB/F/249/3 Vertical positions of the wheels in the final steppings in multiplication and preliminary steppings in division. Sheet 3 of 5.<br />
* BAB/F/249/4 Vertical positions of the wheels. Sheet 4 of 5.<br />
* BAB/F/249/5 Vertical positions of the wheels. Sheet 5 of 5.<br />
* BAB/F/250 Cycles for division, stepping, addition and subtraction.<br />
* BAB/F/251 Cycle of units.<br />
* BAB/F/251/1 Cycle of units. Sheet 1 of 3.<br />
* BAB/F/251/2 Cycle of units. Sheet 2 of 3.<br />
* BAB/F/251/3 Cycle of units. Sheet 3 of 3.<br />
* BAB/F/252 Vertical motions of the wheels and axes of Plan 28.<br />
* BAB/F/253 Multiplication. Sketch from which Notations 259 and 268 were made.<br />
* BAB/F/254 Sketch of division.<br />
* BAB/F/255 Division. Periods of counting apparatus.<br />
* BAB/F/256 Multiplication. Periods of counting apparatus.<br />
* BAB/F/257 Mill decimal counting apparatus.<br />
* BAB/F/258 Counting apparatus. Multiplication and division.<br />
* BAB/F/259 Approximative multiplication.<br />
* BAB/F/259/1 Approximative multiplication. Sheet 1 of 5.<br />
* BAB/F/259/2 Approximative multiplication. Summary of multiplication. Sheet 2 of 5.<br />
* BAB/F/259/3 Approximative multiplication. Sheet 3 of 5.<br />
* BAB/F/259/4 Approximative multiplication. Sheet 4 of 5.<br />
* BAB/F/259/5 Approximative multiplication. Sheet 5 of 5.<br />
* BAB/F/260 No sheet exists.<br />
* BAB/F/261 Plan 28. Trains, vertical positions of the wheels and algebraic addition.<br />
* BAB/F/261/1 Vertical positions of the wheels of Plan 28. Sheet 1 of 23.<br />
* BAB/F/261/2 Vertical positions of the wheels of Plan 28. Sheet 2 of 23.<br />
* BAB/F/261/3 Vertical positions of the wheels of Plan 28. Sheet 3 of 23.<br />
* BAB/F/261/4 Vertical positions of the wheels of Plan 28. Sheet 4 of 23.<br />
* BAB/F/261/5 Vertical positions of the wheels of Plan 28. Sheet 5 of 23.<br />
* BAB/F/261/6 Vertical positions of the wheels of Plan 28. Sheet 6 of 23.<br />
* BAB/F/261/7 Vertical positions of the wheels of Plan 28. Sheet 7 of 23.<br />
* BAB/F/261/8 Vertical positions of the wheels of Plan 28. Sheet 8 of 23.<br />
* BAB/F/261/9 Vertical positions of the wheels of Plan 28. Sheet 9 of 23.<br />
* BAB/F/261/10 Vertical positions of the wheels of Plan 28. Sheet 3 of 23.<br />
* BAB/F/261/11 Vertical positions of the wheels of Plan 28. Sheet 11 of 23.<br />
* BAB/F/261/12 Vertical positions of the wheels of Plan 28. Sheet 12 of 23.<br />
* BAB/F/261/13 Vertical positions of the wheels of Plan 28. Sheet 13 of 23.<br />
* BAB/F/261/14 Vertical positions of the wheels of Plan 28 for multiplication. Sheet 14 of 23.<br />
* BAB/F/261/15 Vertical positions of the wheels of Plan 28. Sheet 15 of 23.<br />
* BAB/F/261/16 Vertical positions of the wheels of Plan 28 for algebraic addition of i k figures. Cycle ordered by vertical C of centre barrel. Sheet 16 of 23.<br />
* BAB/F/261/17 Vertical positions of the wheels of Plan 28 for artificial stepping of divisor. Sheet 17 of 23.<br />
* BAB/F/261/18 Vertical positions of the wheels of Plan 28 for algebraic addition of k figures. Sheet 18 of 23.<br />
* BAB/F/261/19 Vertical positions of the wheels of Plan 28 algebraic addition of k figures. Sheet 19 of 23.<br />
* BAB/F/261/20 Vertical positions of the wheels of Plan 28 for algebraic addition of i k figures. First part of cycles ordered by verticals n and 'n of centre barrel. Sheet 20 of 23.<br />
* BAB/F/261/21 Algebraic addition of i k figures. Cycle ordered by vertical "a of centre barrel. Sheet 21 of 23.<br />
* BAB/F/261/22 Algebraic addition of i k figures (General Plan 28). Latter part of cycles ordered by vertical 'n of centre barrel. Sheet 22 of 23.<br />
* BAB/F/261/23 Algebraic addition of i k figures (General Plan 28). Cycle ordered by vertical ""s of centre barrel. Sheet 23 of 23.<br />
* BAB/F/262 Multiplication.<br />
* BAB/F/262/1 Multiplication. Genealogy of variation of multiplication. Sheet 1 of 2.<br />
* BAB/F/262/2 Multiplication. Sheet 2 of 2.<br />
* BAB/F/263 Multiplication.<br />
* BAB/F/264 Multiplication.<br />
* BAB/F/265 Multiplication.<br />
* BAB/F/266 Verticals for multiplication. Notation 259.<br />
* BAB/F/267 Counting apparatus. Approximative multiplication and division.<br />
* BAB/F/268 Approximative and common multiplication for Plans 28 and 28a.<br />
* BAB/F/268/1 Approximative multiplication for Plans 28 and 28a. Sheet 1 of 8.<br />
* BAB/F/268/2 Approximative multiplication for Plan 28. Sheet 2 of 8.<br />
* BAB/F/268/3 Approximative multiplication for Plan 28. Sheet 3 of 8.<br />
* BAB/F/268/4 Approximative multiplication for Plan 28. Sheet 4 of 8.<br />
* BAB/F/268/5 Approximative multiplication for Plan 28. Sheet 5 of 8.<br />
* BAB/F/268/6 Approximative multiplication for Plan 28. Sheet 6 of 8.<br />
* BAB/F/268/7 Approximative multiplication for Plan 28. Sheet 7 of 8.<br />
* BAB/F/268/8 Common multiplication for Plan 28. Sheet 8 of 8.<br />
* BAB/F/269 First arrangement of the verticals for one barrel to do approximative multiplication.<br />
* BAB/F/269/1 First arrangement of the verticals for one barrel to do approximative multiplication. Notation 268. Sheet 1 of 2.<br />
* BAB/F/269/2 First arrangement of the verticals for common multiplication. Notation 268. Sheet 2 of 2.<br />
* BAB/F/270 Sketch of division.<br />
* BAB/F/271 Cases of division to illustrate the method of selecting with the half zero apparatus.<br />
* BAB/F/271/1 Cases of division to illustrate the method of selecting with the half zero apparatus. Sheet 1 of 2.<br />
* BAB/F/271/2 Cases of division to illustrate the method of selecting with the half zero apparatus of Plan 28. Sheet 2 of 2.<br />
* BAB/F/272 Division. Rough drafts of parts of Notations 272 and 273.<br />
* BAB/F/273 Directive for division. Four barrels.<br />
* BAB/F/274 Directive for multiplication. Four barrels.<br />
* BAB/F/275 Vertical movements of axes ordered by left and right barrels for multiplication.<br />
* BAB/F/275/1 Vertical movements of axes ordered by right barrel for multiplication compiled in part from a genealogical notation. Sheet 1 of 3.<br />
* BAB/F/275/2 Vertical movements of axes ordered by right barrel for multiplication compiled in part from a genealogical notation. Sheet 2 of 3.<br />
* BAB/F/275/3 Vertical movements of axes ordered by left barrel for multiplication compiled in part from a genealogical notation. Sheet 3 of 3.<br />
* BAB/F/276 Vertical movements of axes ordered by barrels for division.<br />
* BAB/F/276/1 Vertical movements of axes ordered by right barrel for division. Compiled from a genealogical notation. Sheet 1 of 3.<br />
* BAB/F/276/2 Vertical movements of axes ordered by middle barrel for division. Sheet 2 of 3.<br />
* BAB/F/276/3 Vertical movements of axes ordered by left barrel for division. Sheet 3 of 3.<br />
* BAB/F/277 Algebraic addition of k figures.<br />
* BAB/F/278 Algebraic addition and algebraic subtraction.<br />
* BAB/F/279 Algebraic addition of i k figures.<br />
* BAB/F/280 General directive.<br />
* BAB/F/281 General directive.<br />
* BAB/F/282 Algebraic addition.<br />
* BAB/F/283 Description of parts and their duties. Plan 28.<br />
* BAB/F/284 Cards and barrels.<br />
* BAB/F/285 Algebraic addition.<br />
* BAB/F/286 Algebraic addition of k figures.<br />
* BAB/F/287 Algebraic addition of k figures. Algebraic subtraction of k figures.<br />
* BAB/F/288 Verticals on barrel of mill counting apparatus.<br />
* BAB/F/289 Verticals for barrels for multiplication.<br />
* BAB/F/289/1 Verticals for counting barrel for multiplication. Notation 268. Sheet 1 of 4.<br />
* BAB/F/289/2 Verticals for right and table barrel for multiplication. Notation 268. Sheet 2 of 4.<br />
* BAB/F/289/3 Verticals for left and middle barrels for multiplication. Notation 268. Sheet 3 of 4.<br />
* BAB/F/289/4 Verticals for two barrels for counting apparatus for multiplication. Notation 268. Sheet 4 of 4.<br />
* BAB/F/290 Division as performed with General Plans 28 and 28a and mill counting apparatus.<br />
* BAB/F/290/1 Division as performed with General Plans 28 and 28a and mill counting apparatus. Sheet 1 of 15.<br />
* BAB/F/290/2 Division. Sheet 2 of 15.<br />
* BAB/F/290/3 Division. Sheet 3 of 15.<br />
* BAB/F/290/4 Division. Sheet 4 of 15.<br />
* BAB/F/290/5 Division. Sheet 5 of 15.<br />
* BAB/F/290/6 Division. Sheet 6 of 15.<br />
* BAB/F/290/7 Division. Sheet 7 of 15.<br />
* BAB/F/290/8 Division. Sheet 8 of 15.<br />
* BAB/F/290/9 Division. Sheet 9 of 15.<br />
* BAB/F/290/10 Division. Sheet 10 of 15.<br />
* BAB/F/290/11 Division. Sheet 11 of 15.<br />
* BAB/F/290/12 Division. Sheet 12 of 15.<br />
* BAB/F/290/13 Division. Sheet 13 of 15.<br />
* BAB/F/290/14 Division. Sheet 14 of 15.<br />
* BAB/F/290/15 Division. Sheet 15 of 15.<br />
* BAB/F/291 Verticals of the counting apparatus, table, right, middle and left barrels.<br />
* BAB/F/291/1 Verticals of the counting apparatus barrel for division as performed with Plan 28, Notation 290 and mill counting apparatus sketched on Drawings 125 and 126. Sheet 1 of 9.<br />
* BAB/F/291/2 Verticals of the counting apparatus barrel. Sheet 2 of 9.<br />
* BAB/F/291/3 Verticals of the counting apparatus barrel. Sheet 3 of 9.<br />
* BAB/F/291/4 Verticals of table barrel. Sheet 4 of 9.<br />
* BAB/F/291/5 Verticals of right barrel. Sheet 5 of 9.<br />
* BAB/F/291/6 Verticals of middle barrel. Sheet 6 of 9.<br />
* BAB/F/291/7 Verticals of left barrel. Sheet 7 of 9.<br />
* BAB/F/291/8 Verticals of the counting apparatus barrel number 1. Sheet 8 of 9.<br />
* BAB/F/291/9 Verticals of the counting apparatus barrel number 2. Sheet 9 of 9.<br />
* BAB/F/292 Algebraic addition of k figures for algebraic card +.<br />
* BAB/F/293 Algebraic addition.<br />
* BAB/F/294 Algebraic addition.<br />
* BAB/F/295 Algebraic addition of i k figures.<br />
* BAB/F/296 Algebraic give off and retain for k figures.<br />
* BAB/F/297 Algebraic addition.<br />
* BAB/F/298 Algebraic addition.<br />
* BAB/F/298/1 Algebraic addition. Sheet 1 of 2.<br />
* BAB/F/298/2 Algebraic addition. Sheet 2 of 2.<br />
* BAB/F/299 Algebraic addition, give off and retain for General Plan 28.<br />
* BAB/F/299/1 Algebraic addition give off and retain for General Plan 28. Sheet 1 of 2.<br />
* BAB/F/299/2 Algebraic addition, give off and retain. Sheet 2 of 2.<br />
* BAB/F/300 Algebraic addition of i k figures. Multiplication.<br />
* BAB/F/301 Algebraic addition of i k figures for General Plan 28.<br />
* BAB/F/301/1 Algebraic addition of i k figures for General Plan 28 (Summary). Sheet 1 of 2.<br />
* BAB/F/301/2 Algebraic addition of i k figures for General Plan 28 (Summary). Sheet 2 of 2.<br />
* BAB/F/302 Algebraic addition with giving off (summary).<br />
* BAB/F/303 Algebraic addition of k figures.<br />
* BAB/F/304 Algebraic addition with giving off and retain.<br />
* BAB/F/304/1 Algebraic addition with giving off. Sheet 1 of 2.<br />
* BAB/F/304/2 Algebraic addition with giving off and retain. Sheet 2 of 2.<br />
* BAB/F/305 Algebraic addition of k figures with give off and without retaining for General Plan 28.<br />
* BAB/F/306 Algebraic addition of k figures.<br />
* BAB/F/306/1 Algebraic addition of k figures adapted to General Plan 28. Sheet 1 of 4.<br />
* BAB/F/306/2 Algebraic addition of k figures. Sheet 2 of 4.<br />
* BAB/F/306/3 Algebraic addition of k figures. Sheet 3 of 4.<br />
* BAB/F/306/4 Algebraic addition of k figures. Sheet 4 of 4.<br />
* BAB/F/307 Verticals for algebraic addition of k figures.<br />
* BAB/F/307/1 Verticals for algebraic addition of k figures. Sheet 1 of 2.<br />
* BAB/F/307/2 Verticals for algebraic addition of k figures. Sheet 2 of 2.<br />
* BAB/F/308 Verticals for algebraic addition of k figures.<br />
* BAB/F/308/1 Verticals for one barrel to do algebraic addition of k figures. Sheet 1 of 2.<br />
* BAB/F/308/2 Verticals for algebraic addition of k figures. One barrel. Sheet 2 of 2.<br />
* BAB/F/309 Analytical Engine. Algebraic addition of k figures. One barrel.<br />
* BAB/F/310 Analytical Engine. Algebraic addition of k figures.<br />
* BAB/F/311 Algebraic addition of k figures.<br />
* BAB/F/312 Algebraic addition of k figures. Three barrels.<br />
* BAB/F/313 Verticals for one barrel to perform algebraic addition of k figures with General Plan 28.<br />
* BAB/F/313/1 Verticals for one barrel to perform algebraic addition of k figures with General Plan 28. Sheet 1 of 2.<br />
* BAB/F/313/2 Verticals for one barrel to perform algebraic addition of k figures with General Plan 28. Sheet 2 of 2.<br />
* BAB/F/314 Multiplication. One barrel.<br />
* BAB/F/314/1 Multiplication. One barrel. Sheet 1 of 2.<br />
* BAB/F/314/2 Multiplication. One barrel. Sheet 2 of 2.<br />
* BAB/F/315 Multiplication. One barrel.<br />
* BAB/F/315/1 Multiplication. One barrel. Sheet 1 of 2.<br />
* BAB/F/315/2 Multiplication. One barrel. Sheet 2 of 2.<br />
* BAB/F/316 List of verticals on one barrel for division (Notation 290) with the equivalent verticals on five barrels to order the same work.<br />
* BAB/F/317 Genealogy of multiplication.<br />
* BAB/F/317/1 Genealogy of multiplication. Sheet 1 of 2.<br />
* BAB/F/317/2 Genealogy of multiplication. One barrel. Sheet 2 of 2.<br />
* BAB/F/318 Verticals for one barrel of 278 verticals to perform division with General Plan 28.<br />
* BAB/F/318/1 Verticals for one barrel of 278 verticals to perform division with General Plan 28. Sheet 1 of 3.<br />
* BAB/F/318/2 Verticals for one barrel of 278 verticals to perform division with General Plan 28. Sheet 2 of 3.<br />
* BAB/F/318/3 Verticals for one barrel of 278 verticals to perform division with General Plan 28. Sheet 3 of 3.<br />
* BAB/F/319 List of verticals on one barrel for multiplication (Notation 268) with the equivalent verticals on five barrels to order the same work.<br />
* BAB/F/320 Second arrangement of the verticals for one barrel to perform multiplication in the manner exhibited on Notation 268 and with General Plan 28 and 28a.<br />
* BAB/F/321 Algebraic addition of i k figures.<br />
* BAB/F/321/1 Algebraic addition of i k figures by the method described in Sketch Book Vol IV p 95 and with General Plan 28. Sheet 1 of 8.<br />
* BAB/F/321/2 Algebraic addition of i k figures. Sheet 2of 8.<br />
* BAB/F/321/3 Algebraic addition of i k figures. Sheet 3 of 8.<br />
* BAB/F/321/4 Algebraic addition of i k figures. Sheet 4 of 8.<br />
* BAB/F/321/5 Algebraic addition of i k figures. Sheet 5 of 8.<br />
* BAB/F/321/6 Algebraic addition of i k figures. Sheet 6 of 8.<br />
* BAB/F/321/7 Algebraic addition of i k figures. Sheet 7 of 8.<br />
* BAB/F/321/8 Algebraic addition of i k figures. Sheet 8 of 8.<br />
* BAB/F/322 Verticals for algebraic addition of i k figures. Notation 321.<br />
* BAB/F/322/1 Verticals of algebraic addition of i k figures. Notation 321. Sheet 1 of 3.<br />
* BAB/F/322/2 Verticals of algebraic addition of i k figures. Notation 321. Sheet 2 of 3.<br />
* BAB/F/322/3 Verticals of algebraic addition of i k figures. Notation 321. Sheet 3 of 3.<br />
* BAB/F/323 Verticals upon four barrels for algebraic addition of i k figures. Notation 321.<br />
* BAB/F/323/1 Verticals upon four barrels for algebraic addition of i k figures. Notation 321. Sheet 1 of 2.<br />
* BAB/F/323/2 Verticals upon four barrels for algebraic addition of i k figures. Notation 321. Sheet 2 of 2.<br />
* BAB/F/324 Notation of cycle wheels.<br />
* BAB/F/325 Notation of units for Plan 28.<br />
* BAB/F/326 Untitled. [Motions of axes and wheels of Plan 28]<br />
* BAB/F/327 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268.<br />
* BAB/F/327/1 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268. Sheet 1 of 4.<br />
* BAB/F/327/2 Untitled. [Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268]. Sheet 2 of 4.<br />
* BAB/F/327/3 Untitled. [Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268]. Sheet 3 of 4.<br />
* BAB/F/327/4 Untitled. [Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268]. Sheet 4 of 4.<br />
* BAB/F/328 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for algebraic addition of k figures as performed in Notations 306 and 306x.<br />
* BAB/F/329 Vertical position of the axes, wheels, et cetera, of right group of Plan 28 while performing multiplication as in Notation 268.<br />
* BAB/F/330 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for algebraic addition of i k figures as performed in Notation 321.<br />
* BAB/F/330/1 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for algebraic addition of i k figures as performed in Notation 321. Sheet 1 of 2.<br />
* BAB/F/330/2 Vertical motions for algebraic addition of i k figures. Sheet 2 of 2.<br />
* BAB/F/331 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290.<br />
* BAB/F/331/1 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290. Sheet 1 of 4.<br />
* BAB/F/331/2 Untitled. [Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290]. Sheet 2 of 4.<br />
* BAB/F/331/3 Untitled. [Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290]. Sheet 3 of 4.<br />
* BAB/F/331/4 Untitled. [Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290]. Sheet 4of 4.<br />
* BAB/F/332 Ascertaining if a variable = 0. Ascertaining if a variable has a + or - sign as performed by General Plans 28 and 28a.<br />
* BAB/F/333 Finding the sum of the numbers of digits in two numbers P and Q and finding the difference of the numbers of digits in two numbers P and Q. Plans 28 and 28a.<br />
* BAB/F/334 Differences as performed by General Plans 28 and 28a.<br />
* BAB/F/334/1 Differences as performed by General Plans 28 and 28. Sheet 1 of 2.<br />
* BAB/F/334/2 Differences as performed by General Plans 28 and 28a. Sheet 2 of 2.<br />
* BAB/F/335 Stepping up or down or multiplying or dividing by any power of ten. Plans 28 and 28a.<br />
* BAB/F/335/1 Stepping up or down or multiplying or dividing by any power of ten. Plans 28 and 28a. Sheet 1 of 2.<br />
* BAB/F/335/2 Stepping up or down or multiplying or dividing by any power of ten. Plans 28 and 28a. Sheet 2 of 2.<br />
* BAB/F/336 Notation of verticals for working Notations 332 and 333.<br />
* BAB/F/337 Notation of verticals for differences (Notation 334) and stepping up or down Notation 335.<br />
* BAB/F/338 Notation of units for General Plan 28. Superseded by 353.<br />
* BAB/F/339 List of cycles with their vertical motions.<br />
* BAB/F/340 Vertical motions of cycles a and a e.<br />
* BAB/F/341 Vertical motions of the wheels and axes of the centre group.<br />
* BAB/F/341/1 Vertical motions of the wheels and axes of the centre group. Sheet 1 of 4.<br />
* BAB/F/341/2 Vertical motions of the wheels and axes of the centre group. Plans 28 and 28a. Sheet 2 of 4.<br />
* BAB/F/341/3 Vertical motions of the wheels and axes of the centre group. Sheet 3 of 4.<br />
* BAB/F/341/4 Vertical motions of the wheels and axes of the centre group. Sheet 4 of 4.<br />
* BAB/F/342 Motions of some of the axes.<br />
* BAB/F/343 Motions of some of the axes for Plan 28.<br />
* BAB/F/343/1 Motions of some of the axes for Plan 28. Sheet 1 of 8.<br />
* BAB/F/343/2 Motions of some of the axes for Plan 28. Sheet 2 of 8.<br />
* BAB/F/343/3 Motions of some of the axes for Plan 28. Sheet 3 of 8.<br />
* BAB/F/343/4 Motions of some of the axes for Plan 28. Sheet 4 of 8.<br />
* BAB/F/343/5 Motions of some of the axes for Plan 28. Sheet 5 of 8.<br />
* BAB/F/343/6 [Motions of some of the axes for Plan 28]. Sheet 6 of 8.<br />
* BAB/F/343/7 [Motions of some of the axes for Plan 28]. Sheet 7 of 8.<br />
* BAB/F/343/8 [Motions of some of the axes for Plan 28]. Sheet 8 of 8.<br />
* BAB/F/344 Lockings (circular) of Plan 28.<br />
* BAB/F/344/1 Lockings (circular) of Plan 28. Sheet 1 of 2.<br />
* BAB/F/344/2 [Lockings (circular) of Plan 28]. Sheet 2 of 2.<br />
* BAB/F/345 Vertical motions of the wheels and axes of the middle group of Plan 28a for algebraic addition of k figures as performed in Notations 306 and 306x.<br />
* BAB/F/346 Vertical motions of the wheels and axes of the middle group of Plan 28 for algebraic addition of i k figures as performed in Notation 321.<br />
* BAB/F/346/1 Vertical motions of the wheels and axes of the middle group of Plan 28 for algebraic addition of i k figures as performed in Notation 321. Sheet 1 of 2.<br />
* BAB/F/346/2 Vertical motions for algebraic addition of i k figures. Sheet 2 of 2.<br />
* BAB/F/347 List of the vertical movements in the left middle and right groups.<br />
* BAB/F/347/1 List of the vertical movements in the left middle and right groups. Sheet 1 of 2.<br />
* BAB/F/347/2 List of the vertical movements in the left middle and right groups distributed by heights and cycles. Sheet 2 of 2.<br />
* BAB/F/348 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for multiplication as performed in working Notation 268<br />
* BAB/F/348/1 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for multiplication as performed in working Notation 268. Sheet 1 of 3.<br />
* BAB/F/348/2 Trains and vertical motions for multiplication. Sheet 2 of 3.<br />
* BAB/F/348/3 Trains and vertical motions for multiplication. Sheet 3 of 3.<br />
* BAB/F/349 Analysis of verticals on left group for multiplication.<br />
* BAB/F/350 Lockings of Plan 28a.<br />
* BAB/F/351 Notation of units for cycles of c (=18) and of 2c units used for counting the digits in multiplication and division.<br />
* BAB/F/352 Vertical positions of some of the wheels of Plan 28a. Notation 348 cycles.<br />
* BAB/F/352/1 Vertical positions of some of the wheels of Plan 28a. Notation 348 cycles. Sheet 1 of 13.<br />
* BAB/F/352/2 Notation 348 cycle 18. Sheet 2 of 13.<br />
* BAB/F/352/3 Notation 348 cycle 19. Sheet 3 of 13.<br />
* BAB/F/352/4 Notation 348 cycle 20. Sheet 4 of 13.<br />
* BAB/F/352/5 Notation 348 cycles 26 and 27. Sheet 5 of 13.<br />
* BAB/F/352/6 Notation 348 cycle 26. Sheet 6 of 13.<br />
* BAB/F/352/7 Notation 348 cycles 26 and 27. Sheet 7 of 13.<br />
* BAB/F/352/8 Notation 348 cycle 26. Sheet 8 of 13.<br />
* BAB/F/352/9 Notation 331 cycles 21 and 26. Sheet 9 of 13.<br />
* BAB/F/352/10 Notation 331 cycle 23 and 24. Sheet 10 of 13.<br />
* BAB/F/352/11 Untitled. [Vertical positions of some of the wheels of Plan 28a. Notation 348 and 331 cycles]. Sheet 11 of 13.<br />
* BAB/F/352/12 Untitled. [Vertical positions of some of the wheels of Plan 28a. Notation 348 and 331 cycles]. Sheet 12 of 13.<br />
* BAB/F/352/13 Untitled. [Vertical positions of some of the wheels of Plan 28a. Notation 348 and 331 cycles]. Sheet 13 of 13.<br />
* BAB/F/353 Notation of units for General Plan 28a.<br />
* BAB/F/353/1 Notation of units for General Plan 28a. Sheet 1 of 6.<br />
* BAB/F/353/2 Notation of units for General Plan 28a. Sheet 2 of 6.<br />
* BAB/F/353/3 Notation of units for General Plan 28a. Sheet 3 of 6.<br />
* BAB/F/353/4 Notation of units for General Plan 28a. Sheet 4 of 6.<br />
* BAB/F/353/5 Notation of units for General Plan 28a. Sheet 5 of 6.<br />
* BAB/F/353/6 Notation of units for mill counting apparatus drawings 125, 126 and 137 and for sign wheel drawing. Sheet 6 of 6.<br />
* BAB/F/354 Times of lockings in various cycles for Plan 28.<br />
* BAB/F/354/1 Times of lockings in various cycles for Plan 28. Sheet 1 of 2.<br />
* BAB/F/354/2 Untitled. [Times of lockings in various cycles for Plan 28]. Sheet 2 of 2.<br />
* BAB/F/355 Trains and vertical motions of the wheels and axes of the centre group for differences and of the right group for stepping up or down. Plan 28a.<br />
* BAB/F/356 Untitled. [Verticals. Motions of the wheels and axes for Plan 28].<br />
* BAB/F/356/1 Untitled. [Verticals. Motions of the wheels and axes for Plan 28]. Sheet 1 of 2.<br />
* BAB/F/356/2 Untitled. [Verticals. Motions of the wheels and axes for Plan 28]. Sheet 2 of 2.<br />
* BAB/F/357 Duties of the calculating mechanism of left, centre and right groups of Plan 28a.<br />
* BAB/F/357/1 Duties of the calculating mechanism of left, centre and right groups of Plan 28a. Right group. Sheet 1 of 11.<br />
* BAB/F/357/2 Duties of the calculating mechanism of left, centre and right groups of Plan 28a. Right group. Sheet 2 of 11.<br />
* BAB/F/357/3 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 3 of 11.<br />
* BAB/F/357/4 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 4 of 11.<br />
* BAB/F/357/5 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 5 of 11.<br />
* BAB/F/357/6 Duties of the calculating mechanism of left, centre and right groups of Plan 28a. Centre group. Sheet 6 of 11.<br />
* BAB/F/357/7 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 7 of 11.<br />
* BAB/F/357/8 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 8 of 11.<br />
* BAB/F/357/9 Duties of the calculating mechanism of Plan 28a. Left group. Sheet 9 of 11.<br />
* BAB/F/357/10 Duties of the calculating mechanism of Plan 28a. Left group. Sheet 10 of 11.<br />
* BAB/F/357/11 Duties of the calculating mechanism of Plan 28a. Left group. Sheet 11 of 11.<br />
* BAB/F/358 Analysis of the trains with reference to cycles and verticals.<br />
* BAB/F/358/1 Analysis of the trains with reference to cycles and verticals. Right group. Sheet 1 of 3.<br />
* BAB/F/358/2 Analysis of the trains with reference to cycles and verticals. Centre group. Sheet 2 of 3.<br />
* BAB/F/358/3 Analysis of the trains with reference to cycles and verticals. Left group. Sheet 3 of 3.<br />
* BAB/F/359 Trains and vertical motions of the wheels and axes of the table group of Plan 28a for multiplication, as performed in working Notation 268 and for stepping up or down.<br />
* BAB/F/360 Trains and vertical motions of the wheels and axes of the table group of Plan 28a for division, as performed in working Notation 290 and for ascertaining if a variable has a + or - sign.<br />
* BAB/F/361 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for multiplication, as performed in the working Notation 268.<br />
* BAB/F/361/1 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for multiplication, as performed in the working Notation 268. Sheet 1 of 2.<br />
* BAB/F/361/2 Trains and vertical motions of the wheels and axes ordered by barrel no. 2 of the mill counting apparatus of Plans 28 and 28a for multiplication, as performed in the working Notation 268. Sheet 2 of 2.<br />
* BAB/F/362 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for division, as performed in working Notation 290.<br />
* BAB/F/362/1 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for division, as performed in working Notation 290. Sheet 1 of 2.<br />
* BAB/F/362/2 Trains and vertical motions of the wheels and axes ordered by barrel no. 2 of the mill counting apparatus of Plans 28 and 28a for division, as performed in working Notation 290. Sheet 2 of 2.<br />
* BAB/F/363 Trains and vertical motions of the wheels and axes of the table group of Plan 28a for algebraic addition, as performed in working Notations 306 and 321.<br />
* BAB/F/364 Notations of periods ready for copying.<br />
* BAB/F/365 Notation of periods for table axes.<br />
* BAB/F/366 Notation of periods for mill counting apparatus.<br />
* BAB/F/367 Notation of periods for right group.<br />
* BAB/F/367/1 Notation of periods for right group. Sheet 1 of 5.<br />
* BAB/F/367/2 Notation of periods for right group. Sheet 2 of 5.<br />
* BAB/F/367/3 Notation of periods for right group. Sheet 3 of 5.<br />
* BAB/F/367/4 Notation of periods for right group. Sheet 4 of 5.<br />
* BAB/F/367/5 Notation of periods for right group. Sheet 5 of 5.<br />
* BAB/F/368 Notation of periods for the centre group.<br />
* BAB/F/369 Duties of the mill counting apparatus which require the cycle of 2c(=36) units for Plan 28a.<br />
* BAB/F/369/1 Duties of the mill counting apparatus which require the cycle of 2c(=36) units for Plan 28a. Sheet 1 of 2.<br />
* BAB/F/369/2 Duties of the mill counting apparatus which require the cycle of a(=12) units for Plan 28a. Sheet 2 of 2.<br />
* BAB/F/370 Duties of the calculating mechanism of Plan 28a table group.<br />
* BAB/F/370/1 Duties of the calculating mechanism of Plan 28a table group. Sheet 1 of 2.<br />
* BAB/F/370/2 Duties of the calculating mechanism of Plan 28a table group. Sheet 2 of 2.<br />
* BAB/F/371 Analysis of lockings.<br />
* BAB/F/371/1 Analysis of lockings. Right Group. Sheet 1 of 4.<br />
* BAB/F/371/2 Analysis of the lockings. Centre group. Sheet 2 of 4.<br />
* BAB/F/371/3 Analysis. Sheet 3 of 4.<br />
* BAB/F/371/4 Analysis of the lockings on the left group. Sheet 4 of 4.<br />
* BAB/F/372 Vertical motions for multiplication, division, addition and differences.<br />
* BAB/F/372/1 Right group. Vertical motions arranged by cycles. Multiplication and division. Sheet 1 of 5.<br />
* BAB/F/372/2 Untitled. [Vertical motions for multiplication and division]. Sheet 2 of 5.<br />
* BAB/F/372/3 Centre group. Sheet 3 of 5.<br />
* BAB/F/372/4 Mill counting apparatus. Vertical motions of the axes ordered by barrel no. 2. Sheet 4 of 5.<br />
* BAB/F/372/5 Table group. Sheet 5 of 5.<br />
* BAB/F/373 Skeleton of vertical motions for all operations.<br />
* BAB/F/373/1 Skeleton of vertical motions for all operations. Right groups. Multiplication and division from 372 Sheet 1. Sheet 1 of 3.<br />
* BAB/F/373/2 Skeleton of vertical motions for all operations. Left group. Sheet 2 of 3.<br />
* BAB/F/373/3 Skeleton of vertical motions for all operations. Centre group. Sheet 3 of 3.<br />
* BAB/F/374 Abstract of vertical motions arranged by cycles. Centre group.<br />
* BAB/F/375 Combination of the cycles of the groups; right, centre, left, table.<br />
* BAB/F/375/1 Combination of the cycles of the groups; right, centre, left, table, for multiplication. Sheet 1 of 2.<br />
* BAB/F/375/2 Combination of the cycles of the groups, right, centre, left, table. Sheet 2 of 2.<br />
* BAB/F/376 Skeleton of vertical motions of left, centre, right, table groups and mill counting apparatus.<br />
* BAB/F/376/1 Skeleton of vertical motions of left group. Sheet 1 of 6.<br />
* BAB/F/376/2 Skeleton of vertical motions of centre group. Sheet 2 of 6.<br />
* BAB/F/376/3 Untitled. [Skeleton of vertical motions of right group]. Sheet 3 of 6.<br />
* BAB/F/376/4 Untitled. [Skeleton of vertical motions of table group. Sheet 4 of 6.<br />
* BAB/F/376/5 Untitled. [Skeleton of vertical motions of mill counting apparatus barrel no. 1]. Sheet 5 of 6.<br />
* BAB/F/376/6 Untitled.[Skeleton of vertical motions of mill counting apparatus barrel no. 2.] Sheet 6 of 6.<br />
* BAB/F/377 List of the combinations in multiplication performed in Notation 268, with the cycles in which they occur.<br />
* BAB/F/378 List of the combinations in division performed as in Notation 290, with the cycles in which they occur.<br />
* BAB/F/378/1 List of the combinations in division performed as in Notation 290, with the cycles in which they occur. Sheet 1 of 4.<br />
* BAB/F/378/2 List of the combinations in division performed as in Notation 290, with the cycles in which they occur. Sheet 2 of 4.<br />
* BAB/F/378/3 List, et cetera. [List of the combinations in division performed as in Notation 290, with the cycles in which they occur] Sheet 3 of 4.<br />
* BAB/F/378/4 Untitled. [List of the combinations in division performed as in Notation 290, with the cycles in which they occur] Sheet 4 of 4.<br />
* BAB/F/379 List of the combinations in division performed as in Notation 290, with the cycles in which they occur.<br />
* BAB/F/380 List of the cases in multiplication as performed in Notation no. 268.<br />
* BAB/F/381 List of the cases in division as performed in Notation 290.<br />
* BAB/F/382 Notation of units anticipating whole zero cycles by circular chain.<br />
* BAB/F/383 Notation of units for Difference Engine calculating part.<br />
* BAB/F/383/1 Notation of units for Difference Engine calculating part. Sheet 1 of 2.<br />
* BAB/F/383/2 Notation of units for Difference Engine No. 2 calculating part. Sheet 2 of 2.<br />
* BAB/F/384 Notation of units for stereotype printing apparatus.<br />
* BAB/F/385 Notation of units for Difference Engine No. 2.<br />
* BAB/F/385/1 Notation of units for Difference Engine No. 2. Sheet 1 of 2.<br />
* BAB/F/385/2 Notation of units for various methods of giving motion to Difference Engine No. 2. Sheet 2 of 2.<br />
* BAB/F/386 Directive. Difference Engine No. 2. [Genealogy]<br />
* BAB/F/387 Analytical Engine. Notation of units of incommensurable cycle wheel.<br />
* BAB/F/388 Notation of units of apparatus for combining incommensurable cycles (Drawing 142).<br />
* BAB/G Cardboard drawings of the Analytical Engine<br />
* BAB/G/001 General plan of Analytical Engine, quarter size.<br />
* BAB/G/002 Rising platform and selectors for variable columns in store one to each half of store. Quarter size.<br />
* BAB/G/003 Store variable selectors. Superseding drawing No 2.<br />
* BAB/G/004 General plan of the Analytical Engine, half size.<br />
* BAB/G/005 Whole zero anticipating carriage with one plate in each cage.<br />
* BAB/G/006 Half zero anticipating carriage with three plates in each cage.<br />
* BAB/G/007 Plans for the moulds for anticipating carriage.<br />
* BAB/G/008 Mould for wheel of eighty teeth. Adding column.<br />
* BAB/G/009 Mould for warning pinion.<br />
* BAB/G/010 Untitled, appears to represent the printing mechanism.<br />
* BAB/G/011 Print apparatus as made in the large model.<br />
* BAB/G/012 Probably a plan of carriage and figure columns.<br />
* BAB/G/013 Plan of motion for carriage slide.<br />
* BAB/G/014 Details of carriage.<br />
* BAB/G/015 Motion for carrying the tens, plus and minus.<br />
* BAB/H Notation of units of the Difference Engine No. 2.<br />
* BAB/H/001 Sheet 1 showing driving, odd difference sectors, circular motion and vertical motion.<br />
* BAB/H/002 Sheet 2 showing odd difference figure wheels, circular motion, vertical motion; locking of odd difference figure wheels and odd difference warnings, circular motion.<br />
* BAB/H/003 Sheet 3 showing odd difference warnings, vertical motion; even difference sectors, circular motion, vertical motion and even difference figure wheels, circular motion.<br />
* BAB/H/004 Sheet 4 showing even difference figure wheels, vertical motion, locking of even difference figure wheels and even difference warnings, circular motion and vertical motion.<br />
* BAB/H/005 Sheet 5 showing odd difference figure wheels; odd difference warnings; odd difference carriage; even difference sectors and even difference figure wheels.<br />
* BAB/H/006 Sheet 6 showing even difference figure wheels; even difference warnings; large stereotype sectors, vertical motion and calculations conveyed to printing sectors, to large and small stereotype sectors.<br />
* BAB/H/007 Sheet 7 showing locking of large stereotype sectors, printing sectors, figure racks, printing racks and small stereotype sector, vertical motion.<br />
* BAB/H/008 Sheet 8 showing paper rollers, inking rollers, copper plate motion [column to column motion].<br />
* BAB/H/009 Sheet 9 showing copper plate motion.<br />
* BAB/I There is no physical material for this series although the reference was included in the previous finding aid.<br />
* BAB/J Draft notation of the Difference Engine No. 2<br />
* BAB/J/001 Notation of units<br />
* BAB/J/002 Notation of units<br />
* BAB/J/003 Notation of units<br />
* BAB/J/004 Notation of units. Circular motions of the calculating axes. Odd difference warnings and figure wheels.<br />
* BAB/J/005 Notation of units. Vertical motions. Even and odd difference sectors.<br />
* BAB/J/006 Notation of units.<br />
* BAB/J/007 Notation of units. Vertical motions of the calculating axes. Even and odd difference warnings.<br />
* BAB/J/008 Notation of units. Calculating axes.<br />
* BAB/J/009 Notation of units.<br />
* BAB/J/010 Notation of units.<br />
* BAB/J/011 Notation of units.<br />
* BAB/J/012 Notation of units.<br />
* BAB/J/013 Notation of units.<br />
* BAB/J/014 Notation of units.<br />
* BAB/J/015 Notation of units. Motions of the printing apparatus.<br />
* BAB/J/016 Notation of units.<br />
* BAB/J/017 Notation of units.<br />
* BAB/J/018 There is no archive material for this item although the reference was included in the previous finding aid.<br />
* BAB/J/019 There is no archive material for this item although the reference was included in the previous finding aid.<br />
* BAB/J/020 There is no archive material for this item although the reference was included in the previous finding aid. This is actually Notation F 386.<br />
* BAB/J/021 General trains. Circular motion of axes.<br />
* BAB/J/022 Trains. Vertical motions of axes.<br />
* BAB/J/023 Printing and punching.<br />
* BAB/J/024 Trains for stereotype frames.<br />
* BAB/J/025 Times of action.<br />
* BAB/J/026 General trains.<br />
* BAB/J/027 General trains to be used with Sheets 1 to 4 of the special trains on drawing paper.<br />
* BAB/J/028 Analytical and Difference Engine. Notations of units. Copper plate moving.<br />
* BAB/J/029 There is no archive material for this item although the reference was included in the previous finding aid. This is actually notation F383/1.<br />
* BAB/J/030 There is no archive material for this item although the reference was included in the previous finding aid. This is actually Notation F 383/2.<br />
* BAB/J/031 Trains to stereotype.<br />
* BAB/J/032 Commencement of trains.<br />
* BAB/J/033 Printing. Analytical and Difference Engine.<br />
* BAB/J/034 Direct trains. Third edition [possibly version].<br />
* BAB/J/035 Complete analysis of trains. Second Edition [possibly version].<br />
* BAB/J/036 Stereotype plate movements. Fourth Edition [possibly version].<br />
* BAB/J/037 Calculating.<br />
* BAB/J/038 Notation of units. First Edition [possibly version].<br />
* BAB/J/039 The trains.<br />
* BAB/J/040 The trains. Calculating. Second Edition [possibly version].<br />
* BAB/J/041 Calculation.<br />
* BAB/J/042 Comparison of two modes of moving matrix frame.<br />
* BAB/J/043 Description of copper plate moving apparatus.<br />
* BAB/J/044 Number of parts and working points.<br />
* BAB/K Drawings of Difference Engine No. 1<br />
* BAB/K/003 Frame for holding the copper.<br />
* BAB/K/058 Framing plate and details of rejected plans.<br />
* BAB/K/062 Calculating machine.<br />
* BAB/K/079 End view of general platform and end framing plate.<br />
* BAB/K/087 End views of printing part, frame and castor.<br />
* BAB/K/094 Wheel for three figure motion, indispensable element.<br />
* BAB/K/001 End view of printing part nearly all of which has been altered since this was drawn.<br />
* BAB/K/002 Endless screw, clutches, etc. for moving the copper.<br />
* BAB/K/027 Plan of machinery intended to be attached to planing machine.<br />
* BAB/K/029 First 60 wheel & 7 levers - old plan.<br />
* BAB/K/031 Calculating Machine.<br />
* BAB/K/033 Type Sectors.<br />
* BAB/K/034 Forces of punches.<br />
* BAB/K/040 Untitled.<br />
* BAB/K/042 Levers for cones, single teeth, &c.<br />
* BAB/K/043 3 figure motion.<br />
* BAB/K/044 Untitled.<br />
* BAB/K/071 untitled<br />
* BAB/K/075 Untitled<br />
* BAB/K/077 Untitled<br />
* BAB/K/078 Endviews of general platform. Plan of framing plates next type sector etc.<br />
* BAB/K/080 Untitled<br />
* BAB/K/081 Untitled<br />
* BAB/K/082 Untitled<br />
* BAB/K/083 Untitled<br />
* BAB/L Notations of calculations for the Analytical Engine<br />
* BAB/L/001 Solution of two simultaneous equations<br />
* BAB/L/002 Notation for the coefficients of the powers of x. Computation of the coefficients of a polynomial from those of another divided by a linear term.<br />
* BAB/L/003 Computation of the coefficients of a polynomial from those of another divided by a quadratic term<br />
* BAB/L/004 Solution of a single linear equation and reduction of two simultaneous equations in two variables to two independent linear equations.<br />
* BAB/L/005 Reduction of three simultaneous equations in three variables to two simultaneous equations in two variables.<br />
* BAB/L/006 Reduction of three simultaneous equations in three variables to two simultaneous equations in two variables.<br />
* BAB/L/007 Reduction of four simultaneous equations in four variables to three simultaneous equations in three variables.<br />
* BAB/L/008 Tabulation of a quadratic by differences. Calculation of a rational integral function of the second degree by differences.<br />
* BAB/L/009 Tabulation of a cubic by differences.<br />
* BAB/L/010 Tabulation of a quartic by differences.<br />
* BAB/L/011 Generation of terms of a series by a recurrence relation based on terms of other series.<br />
* BAB/L/012 Generation of terms of a series by a recurrence relation based on quadratic functions.<br />
* BAB/L/013 Generation of the coefficients in the product of two polynomials.<br />
* BAB/L/014 Generation of the coefficients in the product of two cosine series.<br />
* BAB/L/015 Notation for determining the value of x from the three equations. Successive reduction of three simultaneous equations in three variables to find the solution for one variable.<br />
* BAB/L/016 Successive reduction of simultaneous equations.<br />
* BAB/L/016/1 Sheet 1. Successive reduction of three simultaneous equations in three variables to find the solution for one variable.<br />
* BAB/L/016/2 Sheet 2. Successive reduction of five simultaneous equations in five variables to find the solution for one variable.<br />
* BAB/L/017 Notation for computing the elliptic radius vector by having the eccentricity and the mean anomaly.<br />
* BAB/L/018 Notation for computing the elliptic radius vector by having the eccentricity and the mean anomaly.<br />
* BAB/L/019 Notation of the reduction of the four equations. Reduction of four simultaneous equations in four variables to three simultaneous equations in three variables.<br />
* BAB/L/020 Notation of the reduction of the three equations. Successive reductions of three simultaneous equations in three variables to find the value of one variable.<br />
* BAB/L/021 Reduction of the four equations. Reduction of four simultaneous equations in four variables to three simultaneous equations in three variables.<br />
* BAB/L/022 Reduction of the three equations. Successive reductions of three simultaneous equations in three variables to find the value of one variable.<br />
* BAB/L/023 Notation of a formula for multiplication. Use of combinatorial cards in the computation of the coefficients in the product of two polynomials.<br />
* BAB/L/024 Generation of terms of a series by recurrence relations based on quadratic and linear functions.<br />
* BAB/L/025 Algebraic notation. Tabulation of the elliptic radius vector from the eccentricity and the mean anomaly.<br />
* BAB/L/026 Calculation of the numerical value of a formula. Computation of a simple formula by two methods.<br />
* BAB/L/027 List of variables, their signs and coefficients.<br />
* BAB/M Stereotype drawings<br />
* BAB/N History Sheets of the Analytical Engine<br />
* BAB/N/001 History: beginning of September 1834 to the end of December 1834, both inclusive.<br />
* BAB/N/002 History sheet for 1835<br />
* BAB/N/003 History sheet for 1836<br />
* BAB/N/004 History.<br />
* BAB/N/005 History.<br />
* BAB/N/006 History.<br />
* BAB/N/007 History.<br />
* BAB/N/008 History.<br />
* BAB/N/009 History.<br />
* BAB/N/010 History.<br />
* BAB/N/011 History.<br />
* BAB/N/012 History.<br />
* BAB/N/013 History.<br />
* BAB/N/014 History.<br />
* BAB/N/015 History.<br />
* BAB/N/016 History.<br />
* BAB/N/017 History.<br />
* BAB/N/018 History.<br />
* BAB/N/019 History.<br />
* BAB/N/020 History.<br />
* BAB/N/021 History.<br />
* BAB/N/022 History.<br />
* BAB/O Formulas relating to programs<br />
* BAB/O/001 Multinomial or Polynomial Theorem<br />
* BAB/O/002 Untitled. [Algebraic developments relating to various calculations]<br />
* BAB/O/003 Untitled. [Algebraic developments relating to various calculations]<br />
* BAB/O/004 Sturm's Theorem.<br />
* BAB/O/005 [Table of figures] from Mr. Barnett.<br />
* BAB/P Drawings of the Analytical Engine, Second Phase.<br />
* BAB/P/046 A rough draft of apparatus for reducing the two top figures to zero. Each sketch is superseded by Figures 1 and 2. Sketch of carriage with joint in frame. See Figures 3 and 4.<br />
* BAB/P/159 Analytical Engine (appears incomplete).<br />
* BAB/P/160 General Plan. Sheet 42.<br />
* BAB/P/161 Elevation of the Analytical Engine. Counting and stepping apparatus.<br />
* BAB/P/162 Untitled. Shows plans and elevations of store wheels, mill, mill wheel cages, carriages and framing.<br />
* BAB/P/163 Elevations and plans of printing apparatus. Experimental sketches for mill and store plans.<br />
* BAB/P/164 Plan of part of the Analytical Engine. Quarto size.<br />
* BAB/P/165 Combination of cams, platform and stop bolts. Selectors for table. Elevation.<br />
* BAB/P/166 Parts of plan, elevation and section of rising platforms for store. Superseded in following sheet.<br />
* BAB/P/167 Plan of bolts for store.<br />
* BAB/P/168 Plan and side elevation of table axis with combination of cams and platforms. Plan and end elevation of mill showing a combination of cams, platforms, stop bolts and barrels.<br />
* BAB/P/169 Rough draft of mill and driving without platforms.<br />
* BAB/P/170 Untitled, probably plan and elevation.<br />
* BAB/P/171 Sketches of axes, bolts and levers.<br />
* BAB/P/172 Untitled. Probably sketch of various cam apparatus.<br />
* BAB/P/173 Driving of mill axis. Appears incomplete.<br />
* BAB/P/174 Untitled. Appears to be a machine tool slide.<br />
* BAB/P/175 A figure wheel around which a carriage could be arranged.<br />
* BAB/P/176 Untitled. Probably a plan and elevation.<br />
* BAB/P/177 Improved table for shaping machine.<br />
* BAB/P/178 Detailed sketches of moving parts. Untitled.<br />
* BAB/P/179 Hoarding and anticipating carriages.<br />
* BAB/P/180 Hoarding carriage.<br />
* BAB/P/190 Untitled details. Incomplete.<br />
* BAB/P/191 Untitled details. Incomplete.<br />
* BAB/P/192 No. 6 half ten. No. 7 whole zero. Incomplete details.<br />
* BAB/P/193 Circular half zero carriage. Plans No. 8 - 10.<br />
* BAB/P/194 Selectors for division and multiplication.<br />
* BAB/P/195 Counting digits, end elevation and printing side elevation.<br />
* BAB/P/196 Figure No. 11. Half zero carriage with hoarding. Incomplete details.<br />
* BAB/P/197 Plans for store variables.<br />
* BAB/P/198 Adding column with motion for changing from plus to minus. Incomplete.<br />
* BAB/P/199 Untitled. A model of six cages was made from this drawing. Incomplete.<br />
* BAB/P/200 Whole zero and half zero, three figures.<br />
* BAB/P/201 Whole zero and half zero.<br />
* BAB/P/202 Half size plan and side elevation of three moveable platforms. Of which the two levers are abolished.<br />
* BAB/P/203 Plans for figure wheels, area for reducing to neutral position, carriage axes and locking arms.<br />
* BAB/P/205 Untitled plan and elevation. Incomplete.<br />
* BAB/P/207 Plan and elevation of bolts for each axis in the mill and motion for raising platform.<br />
* BAB/P/210 Motions for reducing the two upper figures to zero in division.<br />
* BAB/Q Miscellaneous mechanical notations<br />
* BAB/Q/001 Specimens of description.<br />
* BAB/Q/001/1 Principles to be followed in the description of the constituent portions of the Analytical Engine.<br />
* BAB/Q/001/2 Adding apparatus description.<br />
* BAB/Q/002 On putting letters to drawings, in draft.<br />
* BAB/Q/003 Drafts and rough notes.<br />
* BAB/Q/003/1 Mechanical notation<br />
* BAB/Q/003/2 Rough notes and sketches, including drawings of Babbage's game 'Tit Tat Toe'.<br />
* BAB/Q/004 Untitled. [Arrows indicating different forms of drive and connection].<br />
* BAB/Q/005 Untitled [Arrows indicating different forms of drive and connection].<br />
* BAB/Q/006 Untitled [Arrows indicating different forms of drive and connection].<br />
* BAB/Q/007 Rough notes of algebraic formulae, including some symbols of form.<br />
* BAB/R Catalogues and indexes of Babbage's papers relating to his calculating engines<br />
* BAB/R/001 Index to drawings<br />
* BAB/R/002 Index to drawings No. 1 to 62, describing the figures in each drawing.<br />
* BAB/R/003 The drawings of the new engine arranged according to the subjects in an alphabetical order.<br />
* BAB/R/004 The drawings of the New Engine arranged according to the subjects alphabetically. Analytical.<br />
* BAB/R/005 Catalogue of the drawings of the New Analytical Engine.<br />
* BAB/R/006 List of notations copied and read off.<br />
* BAB/R/007 Catalogue of 386 notations with their classification.<br />
* BAB/R/008 List of designs. Cross reference list, showing numbers of drawings, pages of sketch books and numbers of notations.<br />
* BAB/R/009 Duplicate. Index to the drawings. Cross reference list.<br />
* BAB/R/010 Corrected printed proofs and sheets of lists in H.P. Babbage's 'Calculating Engines', enclosed in a manuscript cover. It includes a manuscript list of tool drawings.<br />
* BAB/R/011 Corrected printed proof sheets for the catalogue of notations in H.P. Babbage's 'Calculating Engines'.<br />
* BAB/R/012 List of notations and drawings in the tin case. Taken to Turin in 1840.<br />
* BAB/R/013 List of sizes of the notations of the Analytical Engine.<br />
* BAB/R/014 List of plates.<br />
* BAB/T Universal Machine Tool<br />
* BAB/T/001 Universal Tool Notebook.<br />
* BAB/T/001/1 First of the six 'Universal Tool' sheets.<br />
* BAB/T/001/2 Continuation of sheet T/1/1<br />
* BAB/T/001/3 Continuation of sheet T/1/2. Second Edition.<br />
* BAB/T/001/4 Continuation of sheet T/1/3<br />
* BAB/T/001/5 Continuation of sheet T/1/4<br />
* BAB/T/001/6 Continuation of sheet T/1/5<br />
* BAB/T/002 Section through cross slide with part of its elevation. Drawing. Sheet 3.<br />
* BAB/T/003 Tool holder for universal machines. Drawing.<br />
* BAB/U Difference Engine No. 1. Drawings, notations, manuscripts and printed extracts.<br />
* BAB/U/001 Plan and side elevation of Difference Engine.<br />
* BAB/U/002 End elevation of the Difference Engine.<br />
* BAB/U/003 Copy of drawing of end elevation of the lower portion of the calculating part of the Difference Engine.<br />
* BAB/U/004 End elevation. Difference Engine 1823 - 1833. Drive.<br />
* BAB/U/005 Plan of Difference Engine 1823 - 1833. Calculating part.<br />
* BAB/U/006 First Difference Engine before 1834. Incomplete and unfinished notation, includes 'C.B. 1849' in the title.<br />
* BAB/U/007 Untitled notations.<br />
* BAB/U/008 Number no longer in use. Re-numbered as BAB U/3.<br />
* BAB/U/009 Number no longer in use. Re-numbered as BAB U/1[a].<br />
* BAB/U/010 Number no longer in use. Re-numbered as BAB U/1[b].<br />
* BAB/U/011 Number no longer in use. Re-numbered as BAB U/2[a] and BAB U/2[b].<br />
* BAB/U/012 Timing notation of calculating part.<br />
* BAB/U/013 Extracts in French from M. de Prony's tables.<br />
* BAB/U/014 Printed broad sheet entitled 'Babbage's Calculating Machine' by B. Herschel Babbage.<br />
* BAB/V Difference Engine No. 2. Notations and indexes.<br />
* BAB/V/001 Motions of the calculating part of the Difference Engine.<br />
* BAB/V/002 Notations of positions (vertical) for a Difference Engine as seen in drawings 180 - 183.<br />
* BAB/V/003 Difference Engine index of parts.<br />
* BAB/V/004 Index of Difference Engine No. 2.<br />
* BAB/V/005 Index of Difference Engine No. 2<br />
* BAB/W Draft notes and drawings relating to the first phase of work on the Analytical Engine from 1833-1848<br />
* BAB/W/001 A draft drawing labelled 'Sheet 3', showing card adding axis, mill adding axis, figure wheels, warning bar and lever and tens lifting slide.<br />
* BAB/W/002 List of letters with the numbers of the drawings on which they occur.<br />
* BAB/W/002/1 List of letters with the numbers of the drawings on which they occur. Sheet 1.<br />
* BAB/W/002/2 List of letters with the numbers of the drawings on which they occur. Sheet 2.<br />
* BAB/W/003 The drawings of the New Engine arranged according to the subjects, alphabetically. Re-catalogued as BAB R/3 and BAB R/4.<br />
* BAB/W/004 Trains of the Analytical Engine. Third Edition.<br />
* BAB/W/005 Letters (mechanical notation) used to indicate the most important parts of Plan 28a.<br />
* BAB/W/006 Abstracts of the various plans of the calculating engine.<br />
* BAB/W/007 Figure for notation 181.<br />
* BAB/W/008 Draft copy of Plan 28, dated 28 December 1842.<br />
* BAB/W/009 Analytical Engine Plan 28. Scale 1/6. Draft.<br />
* BAB/W/010 Counting apparatus. Arrangement of wheels.<br />
* BAB/W/011 Scraps and sketches that have been copied. Probably refers to the Analytical Engine.<br />
* BAB/X Draft sketches relating to the second phase of work on the Analytical Engine from 1857-1872<br />
* BAB/X/001 Locking motions for carriage column.<br />
* BAB/X/002 Sketch of driving.<br />
* BAB/X/003 Sketch of mould for adding column collars.<br />
* BAB/X/004 Sketch of framing for support cross driving axis and framing axis.<br />
* BAB/X/005 Plan of the Analytical Engine. Includes representative timings.<br />
* BAB/X/006 Untitled cardboard model.<br />
* BAB/X/007 Sketch described as '32 teeth to be cut into this mould, 3/16 pitch'.<br />
* BAB/X/008 Untitled. [Drawings of cams]<br />
* BAB/X/009 Untitled rough sketch of machine parts.<br />
* BAB/X/010 Special trains of notation for anticipating carriage of the Analytical Engine. Sheet No. 1.<br />
* BAB/Y Miscellaneous papers relating to H.P. Babbage's 'Mill' of the Analytical Engine<br />
* BAB/Y/001 Machine patterns for Machines 1 - 4, comprising four sheets<br />
* BAB/Y/001/1 My Machine I pattern for cast iron (base) ...<br />
* BAB/Y/001/2 My Machine 1888 II Plan of driving cams, levers, etc. in initial position.<br />
* BAB/Y/001/3 My Machine 1889 III Development of driving cams.<br />
* BAB/Y/001/4 My Machine 1883 - 1895 IV Copied and corrected from a former drawing.<br />
* BAB/Z Papers relating to the Scheutz's Difference Engine<br />
* BAB/Z/001 Drawings of the Difference Engine, comprising four sheets.<br />
* BAB/Z/001/1 Drawing of the Difference Engine<br />
* BAB/Z/001/2 Drawing. Sheet 2, unmounted<br />
* BAB/Z/001/3 Drawing, sheet 3, un-mounted.<br />
* BAB/Z/001/4 Drawing, sheet 4, un-mounted.<br />
* BAB/Z/002 Part of the end view of the Difference Engine<br />
* BAB/S Sketch books and scribbling books<br />
* BAB/S/1 First series of scribbling books of notations, sketches and calculations of the Difference and Analytical Engines<br />
* BAB/S/1/01 Tool Book. Volume I. Discussion and sketches of tools.<br />
* BAB/S/1/02 Scribbling Book Volume II<br />
* BAB/S/1/03 Sketch Book Volume III<br />
* BAB/S/1/11 Scribbling Book Volume XI<br />
* BAB/S/1/04 Sketch Book Volume IV<br />
* BAB/S/1/05 Scribbling Book Volume V. Important matter of history in the Analytical Engine.<br />
* BAB/S/1/06 Sketch Book Volume VI<br />
* BAB/S/1/07 Scribbling Book Volume VII. Analytical Engine.<br />
* BAB/S/1/08 Scribbling Book Volume VIII<br />
* BAB/S/1/09 Scribbling Book Volume IX<br />
* BAB/S/1/10 Scribbling Book Volume X.<br />
* BAB/S/1/12 Scribbling Book Volume XII. List of parts of the Engine, before August 1821.<br />
* BAB/S/1/13 Scribbling Book Volume XIII. Sketch of the history of the new calculating engine.<br />
* BAB/S/1/14 Scribbling Book Volume XIV. Travelling Scribbling Book.<br />
* BAB/S/1/15 Scribbling Book Volume XV. Containing various developments of series for the Analytical Engine, molecules elliptic, and various developments.<br />
* BAB/S/1/16 Scribbling Book Vol XVI. Various analytical developments adapted to engine.<br />
* BAB/S/2 Second series of scribbling books of a later date.<br />
* BAB/S/2/1 Scribbling Book Volume X<br />
* BAB/S/2/2 Scribbling Book Vol XI. Drawing Office.<br />
* BAB/S/2/3 Scribbling Book Volume XIA.<br />
* BAB/S/2/4 Scribbling Book Volume XII. Drawing Office.<br />
* BAB/S/3 Third series of scribbling books<br />
* BAB/S/3/1 Untitled.[Rough sketches of machine parts and tools].<br />
* BAB/S/3/2 Untitled.<br />
* BAB/S/3/3 Untitled. [Operations for the Analytical Engine]<br />
* BAB/S/3/4 Untitled. [Notations 224 and 321. List of operations.]<br />
* BAB/S/4 Bound notebooks of draft notations and sketches of notations.<br />
* BAB/S/4/1 Draft Notations and Sketches of Notations.<br />
* BAB/S/4/2 Draft Notations and Sketches of Notations: Cases<br />
* BAB/S/4/3 Draft Notations and Sketches of Notations<br />
* BAB/M Stereotype drawings<br />
* BAB/M/001 Plan of the figure wheels for one method of adding numbers.<br />
* BAB/M/002 Adding axis and wheels without framing<br />
* BAB/M/003 Frame of adding wheels<br />
* BAB/M/004 Section of adding wheels and framing.<br />
* BAB/M/005 Section of adding and sign axes and wheels frames, et cetera. Complete.<br />
* BAB/M/006 Impression from original wood cut from which No. 7 is a stereotype plate with letters and signs inserted.<br />
* BAB/M/007 Stereotype cast from wooden block No. 6 with letters and signs inserted.<br />
* BAB/M/008 Plan of adding wheels, and of long and short pinions.<br />
* BAB/M/009 Long pinions in the position for adding. Adding wheels and short pinions behind long pinions.<br />
* BAB/M/010 Long pinions in the position for stepping. Adding wheels and short pinions behind long wheels.<br />
* BAB/M/011 Plan of carriage by anticipation.<br />
* BAB/M/012 Fixed and moveable wires of the anticipating carriage. One third the real wire.<br />
* BAB/M/013 Carriage by anticipation.<br />
* BAB/M/014 Description of the mechanism for addition.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=BabbagePapers&diff=2250BabbagePapers2016-05-19T03:12:00Z<p>SteveBaker: </p>
<hr />
<div>* BAB/F/220 Multiplication.<br />
* BAB/F/220/1 Multiplication. Sheet 1 of 3.<br />
* BAB/F/220/2 Multiplication. Sheet 2 of 3.<br />
* BAB/F/220/3 Multiplication. Sheet 3 of 3.<br />
* BAB/F/221 Verticals for division as performed on Notation 218 arranged on one barrel.<br />
* BAB/F/222 Verticals for multiplication as performed in Notation 220 arranged on one barrel.<br />
* BAB/F/223 Reversing sign.<br />
* BAB/F/224 Stepping ruled by operation cards.<br />
* BAB/F/225 Multiplication of two factors, when the multiplicand has more than k, but both factors together not more than 2 k digits.<br />
* BAB/F/226 Cards, et cetera for multiplication of a number having k + p digits by another number having not more than k - p digits.<br />
* BAB/F/227 Reversing sign ascertaining if a variable is zero, ascertaining if a variable has a + or - sign (supersedes 223).<br />
* BAB/F/228 Counting the digits in any variable P or in any number of variables P Q R et cetera.<br />
* BAB/F/229 Stepping up.<br />
* BAB/F/230 Stepping down.<br />
* BAB/F/231 Multiplication with three multiples.<br />
* BAB/F/231/1 Multiplication with three multiples. Sheet 1 of 2.<br />
* BAB/F/231/2 Multiplication with three multiples. Sheet 2 of 2.<br />
* BAB/F/232 Notation of self-acting positive and negative consecutive carriage.<br />
* BAB/F/233 Notation of units of consecutive half zero carriage.<br />
* BAB/F/234 Notation of tens chains for the anticipating half and whole zero carriage.<br />
* BAB/F/235 Notation of consecutive and half zero carriage.<br />
* BAB/F/236 Anticipating half zero carriage. Addition and subtraction.<br />
* BAB/F/236/1 Anticipating half zero carriage. Addition and subtraction by whole zero. Sheet 1 of 2.<br />
* BAB/F/236/2 Anticipating half zero carriage. Addition and subtraction by half zero. Sheet 2 of 2.<br />
* BAB/F/237 Anticipating whole and half zero digit counting carriage (Drawing 106). Addition and subtraction by whole and half zero.<br />
* BAB/F/238 Digit counting by carriage. Drawing 106.<br />
* BAB/F/239 Trial of a method of division.<br />
* BAB/F/240 Summary of multiplication.<br />
* BAB/F/241 Division.<br />
* BAB/F/242 Division. Working notation belonging to Summary No. 244 which superseded Notation 241.<br />
* BAB/F/243 Working notation belonging to the summary of multiplication number 240.<br />
* BAB/F/244 Summary of division.<br />
* BAB/F/245 Summary of algebraic addition.<br />
* BAB/F/246 Algebraic addition.<br />
* BAB/F/247 Carriage.<br />
* BAB/F/248 Stepping sketches.<br />
* BAB/F/249 Vertical positions of the wheels.<br />
* BAB/F/249/1 Vertical positions of the wheels in addition, subtraction, making table and multiplication. Sheet 1 of 5.<br />
* BAB/F/249/2 Vertical position of the wheels for steppings in division and multiplication. Stepping up during division and giving off to selectors. This includes stepping up before division. Sheet 2 of 5.<br />
* BAB/F/249/3 Vertical positions of the wheels in the final steppings in multiplication and preliminary steppings in division. Sheet 3 of 5.<br />
* BAB/F/249/4 Vertical positions of the wheels. Sheet 4 of 5.<br />
* BAB/F/249/5 Vertical positions of the wheels. Sheet 5 of 5.<br />
* BAB/F/250 Cycles for division, stepping, addition and subtraction.<br />
* BAB/F/251 Cycle of units.<br />
* BAB/F/251/1 Cycle of units. Sheet 1 of 3.<br />
* BAB/F/251/2 Cycle of units. Sheet 2 of 3.<br />
* BAB/F/251/3 Cycle of units. Sheet 3 of 3.<br />
* BAB/F/252 Vertical motions of the wheels and axes of Plan 28.<br />
* BAB/F/253 Multiplication. Sketch from which Notations 259 and 268 were made.<br />
* BAB/F/254 Sketch of division.<br />
* BAB/F/255 Division. Periods of counting apparatus.<br />
* BAB/F/256 Multiplication. Periods of counting apparatus.<br />
* BAB/F/257 Mill decimal counting apparatus.<br />
* BAB/F/258 Counting apparatus. Multiplication and division.<br />
* BAB/F/259 Approximative multiplication.<br />
* BAB/F/259/1 Approximative multiplication. Sheet 1 of 5.<br />
* BAB/F/259/2 Approximative multiplication. Summary of multiplication. Sheet 2 of 5.<br />
* BAB/F/259/3 Approximative multiplication. Sheet 3 of 5.<br />
* BAB/F/259/4 Approximative multiplication. Sheet 4 of 5.<br />
* BAB/F/259/5 Approximative multiplication. Sheet 5 of 5.<br />
* BAB/F/260 No sheet exists.<br />
* BAB/F/261 Plan 28. Trains, vertical positions of the wheels and algebraic addition.<br />
* BAB/F/261/1 Vertical positions of the wheels of Plan 28. Sheet 1 of 23.<br />
* BAB/F/261/2 Vertical positions of the wheels of Plan 28. Sheet 2 of 23.<br />
* BAB/F/261/3 Vertical positions of the wheels of Plan 28. Sheet 3 of 23.<br />
* BAB/F/261/4 Vertical positions of the wheels of Plan 28. Sheet 4 of 23.<br />
* BAB/F/261/5 Vertical positions of the wheels of Plan 28. Sheet 5 of 23.<br />
* BAB/F/261/6 Vertical positions of the wheels of Plan 28. Sheet 6 of 23.<br />
* BAB/F/261/7 Vertical positions of the wheels of Plan 28. Sheet 7 of 23.<br />
* BAB/F/261/8 Vertical positions of the wheels of Plan 28. Sheet 8 of 23.<br />
* BAB/F/261/9 Vertical positions of the wheels of Plan 28. Sheet 9 of 23.<br />
* BAB/F/261/10 Vertical positions of the wheels of Plan 28. Sheet 3 of 23.<br />
* BAB/F/261/11 Vertical positions of the wheels of Plan 28. Sheet 11 of 23.<br />
* BAB/F/261/12 Vertical positions of the wheels of Plan 28. Sheet 12 of 23.<br />
* BAB/F/261/13 Vertical positions of the wheels of Plan 28. Sheet 13 of 23.<br />
* BAB/F/261/14 Vertical positions of the wheels of Plan 28 for multiplication. Sheet 14 of 23.<br />
* BAB/F/261/15 Vertical positions of the wheels of Plan 28. Sheet 15 of 23.<br />
* BAB/F/261/16 Vertical positions of the wheels of Plan 28 for algebraic addition of i k figures. Cycle ordered by vertical C of centre barrel. Sheet 16 of 23.<br />
* BAB/F/261/17 Vertical positions of the wheels of Plan 28 for artificial stepping of divisor. Sheet 17 of 23.<br />
* BAB/F/261/18 Vertical positions of the wheels of Plan 28 for algebraic addition of k figures. Sheet 18 of 23.<br />
* BAB/F/261/19 Vertical positions of the wheels of Plan 28 algebraic addition of k figures. Sheet 19 of 23.<br />
* BAB/F/261/20 Vertical positions of the wheels of Plan 28 for algebraic addition of i k figures. First part of cycles ordered by verticals n and 'n of centre barrel. Sheet 20 of 23.<br />
* BAB/F/261/21 Algebraic addition of i k figures. Cycle ordered by vertical "a of centre barrel. Sheet 21 of 23.<br />
* BAB/F/261/22 Algebraic addition of i k figures (General Plan 28). Latter part of cycles ordered by vertical 'n of centre barrel. Sheet 22 of 23.<br />
* BAB/F/261/23 Algebraic addition of i k figures (General Plan 28). Cycle ordered by vertical ""s of centre barrel. Sheet 23 of 23.<br />
* BAB/F/262 Multiplication.<br />
* BAB/F/262/1 Multiplication. Genealogy of variation of multiplication. Sheet 1 of 2.<br />
* BAB/F/262/2 Multiplication. Sheet 2 of 2.<br />
* BAB/F/263 Multiplication.<br />
* BAB/F/264 Multiplication.<br />
* BAB/F/265 Multiplication.<br />
* BAB/F/266 Verticals for multiplication. Notation 259.<br />
* BAB/F/267 Counting apparatus. Approximative multiplication and division.<br />
* BAB/F/268 Approximative and common multiplication for Plans 28 and 28a.<br />
* BAB/F/268/1 Approximative multiplication for Plans 28 and 28a. Sheet 1 of 8.<br />
* BAB/F/268/2 Approximative multiplication for Plan 28. Sheet 2 of 8.<br />
* BAB/F/268/3 Approximative multiplication for Plan 28. Sheet 3 of 8.<br />
* BAB/F/268/4 Approximative multiplication for Plan 28. Sheet 4 of 8.<br />
* BAB/F/268/5 Approximative multiplication for Plan 28. Sheet 5 of 8.<br />
* BAB/F/268/6 Approximative multiplication for Plan 28. Sheet 6 of 8.<br />
* BAB/F/268/7 Approximative multiplication for Plan 28. Sheet 7 of 8.<br />
* BAB/F/268/8 Common multiplication for Plan 28. Sheet 8 of 8.<br />
* BAB/F/269 First arrangement of the verticals for one barrel to do approximative multiplication.<br />
* BAB/F/269/1 First arrangement of the verticals for one barrel to do approximative multiplication. Notation 268. Sheet 1 of 2.<br />
* BAB/F/269/2 First arrangement of the verticals for common multiplication. Notation 268. Sheet 2 of 2.<br />
* BAB/F/270 Sketch of division.<br />
* BAB/F/271 Cases of division to illustrate the method of selecting with the half zero apparatus.<br />
* BAB/F/271/1 Cases of division to illustrate the method of selecting with the half zero apparatus. Sheet 1 of 2.<br />
* BAB/F/271/2 Cases of division to illustrate the method of selecting with the half zero apparatus of Plan 28. Sheet 2 of 2.<br />
* BAB/F/272 Division. Rough drafts of parts of Notations 272 and 273.<br />
* BAB/F/273 Directive for division. Four barrels.<br />
* BAB/F/274 Directive for multiplication. Four barrels.<br />
* BAB/F/275 Vertical movements of axes ordered by left and right barrels for multiplication.<br />
* BAB/F/275/1 Vertical movements of axes ordered by right barrel for multiplication compiled in part from a genealogical notation. Sheet 1 of 3.<br />
* BAB/F/275/2 Vertical movements of axes ordered by right barrel for multiplication compiled in part from a genealogical notation. Sheet 2 of 3.<br />
* BAB/F/275/3 Vertical movements of axes ordered by left barrel for multiplication compiled in part from a genealogical notation. Sheet 3 of 3.<br />
* BAB/F/276 Vertical movements of axes ordered by barrels for division.<br />
* BAB/F/276/1 Vertical movements of axes ordered by right barrel for division. Compiled from a genealogical notation. Sheet 1 of 3.<br />
* BAB/F/276/2 Vertical movements of axes ordered by middle barrel for division. Sheet 2 of 3.<br />
* BAB/F/276/3 Vertical movements of axes ordered by left barrel for division. Sheet 3 of 3.<br />
* BAB/F/277 Algebraic addition of k figures.<br />
* BAB/F/278 Algebraic addition and algebraic subtraction.<br />
* BAB/F/279 Algebraic addition of i k figures.<br />
* BAB/F/280 General directive.<br />
* BAB/F/281 General directive.<br />
* BAB/F/282 Algebraic addition.<br />
* BAB/F/283 Description of parts and their duties. Plan 28.<br />
* BAB/F/284 Cards and barrels.<br />
* BAB/F/285 Algebraic addition.<br />
* BAB/F/286 Algebraic addition of k figures.<br />
* BAB/F/287 Algebraic addition of k figures. Algebraic subtraction of k figures.<br />
* BAB/F/288 Verticals on barrel of mill counting apparatus.<br />
* BAB/F/289 Verticals for barrels for multiplication.<br />
* BAB/F/289/1 Verticals for counting barrel for multiplication. Notation 268. Sheet 1 of 4.<br />
* BAB/F/289/2 Verticals for right and table barrel for multiplication. Notation 268. Sheet 2 of 4.<br />
* BAB/F/289/3 Verticals for left and middle barrels for multiplication. Notation 268. Sheet 3 of 4.<br />
* BAB/F/289/4 Verticals for two barrels for counting apparatus for multiplication. Notation 268. Sheet 4 of 4.<br />
* BAB/F/290 Division as performed with General Plans 28 and 28a and mill counting apparatus.<br />
* BAB/F/290/1 Division as performed with General Plans 28 and 28a and mill counting apparatus. Sheet 1 of 15.<br />
* BAB/F/290/2 Division. Sheet 2 of 15.<br />
* BAB/F/290/3 Division. Sheet 3 of 15.<br />
* BAB/F/290/4 Division. Sheet 4 of 15.<br />
* BAB/F/290/5 Division. Sheet 5 of 15.<br />
* BAB/F/290/6 Division. Sheet 6 of 15.<br />
* BAB/F/290/7 Division. Sheet 7 of 15.<br />
* BAB/F/290/8 Division. Sheet 8 of 15.<br />
* BAB/F/290/9 Division. Sheet 9 of 15.<br />
* BAB/F/290/10 Division. Sheet 10 of 15.<br />
* BAB/F/290/11 Division. Sheet 11 of 15.<br />
* BAB/F/290/12 Division. Sheet 12 of 15.<br />
* BAB/F/290/13 Division. Sheet 13 of 15.<br />
* BAB/F/290/14 Division. Sheet 14 of 15.<br />
* BAB/F/290/15 Division. Sheet 15 of 15.<br />
* BAB/F/291 Verticals of the counting apparatus, table, right, middle and left barrels.<br />
* BAB/F/291/1 Verticals of the counting apparatus barrel for division as performed with Plan 28, Notation 290 and mill counting apparatus sketched on Drawings 125 and 126. Sheet 1 of 9.<br />
* BAB/F/291/2 Verticals of the counting apparatus barrel. Sheet 2 of 9.<br />
* BAB/F/291/3 Verticals of the counting apparatus barrel. Sheet 3 of 9.<br />
* BAB/F/291/4 Verticals of table barrel. Sheet 4 of 9.<br />
* BAB/F/291/5 Verticals of right barrel. Sheet 5 of 9.<br />
* BAB/F/291/6 Verticals of middle barrel. Sheet 6 of 9.<br />
* BAB/F/291/7 Verticals of left barrel. Sheet 7 of 9.<br />
* BAB/F/291/8 Verticals of the counting apparatus barrel number 1. Sheet 8 of 9.<br />
* BAB/F/291/9 Verticals of the counting apparatus barrel number 2. Sheet 9 of 9.<br />
* BAB/F/292 Algebraic addition of k figures for algebraic card +.<br />
* BAB/F/293 Algebraic addition.<br />
* BAB/F/294 Algebraic addition.<br />
* BAB/F/295 Algebraic addition of i k figures.<br />
* BAB/F/296 Algebraic give off and retain for k figures.<br />
* BAB/F/297 Algebraic addition.<br />
* BAB/F/298 Algebraic addition.<br />
* BAB/F/298/1 Algebraic addition. Sheet 1 of 2.<br />
* BAB/F/298/2 Algebraic addition. Sheet 2 of 2.<br />
* BAB/F/299 Algebraic addition, give off and retain for General Plan 28.<br />
* BAB/F/299/1 Algebraic addition give off and retain for General Plan 28. Sheet 1 of 2.<br />
* BAB/F/299/2 Algebraic addition, give off and retain. Sheet 2 of 2.<br />
* BAB/F/300 Algebraic addition of i k figures. Multiplication.<br />
* BAB/F/301 Algebraic addition of i k figures for General Plan 28.<br />
* BAB/F/301/1 Algebraic addition of i k figures for General Plan 28 (Summary). Sheet 1 of 2.<br />
* BAB/F/301/2 Algebraic addition of i k figures for General Plan 28 (Summary). Sheet 2 of 2.<br />
* BAB/F/302 Algebraic addition with giving off (summary).<br />
* BAB/F/303 Algebraic addition of k figures.<br />
* BAB/F/304 Algebraic addition with giving off and retain.<br />
* BAB/F/304/1 Algebraic addition with giving off. Sheet 1 of 2.<br />
* BAB/F/304/2 Algebraic addition with giving off and retain. Sheet 2 of 2.<br />
* BAB/F/305 Algebraic addition of k figures with give off and without retaining for General Plan 28.<br />
* BAB/F/306 Algebraic addition of k figures.<br />
* BAB/F/306/1 Algebraic addition of k figures adapted to General Plan 28. Sheet 1 of 4.<br />
* BAB/F/306/2 Algebraic addition of k figures. Sheet 2 of 4.<br />
* BAB/F/306/3 Algebraic addition of k figures. Sheet 3 of 4.<br />
* BAB/F/306/4 Algebraic addition of k figures. Sheet 4 of 4.<br />
* BAB/F/307 Verticals for algebraic addition of k figures.<br />
* BAB/F/307/1 Verticals for algebraic addition of k figures. Sheet 1 of 2.<br />
* BAB/F/307/2 Verticals for algebraic addition of k figures. Sheet 2 of 2.<br />
* BAB/F/308 Verticals for algebraic addition of k figures.<br />
* BAB/F/308/1 Verticals for one barrel to do algebraic addition of k figures. Sheet 1 of 2.<br />
* BAB/F/308/2 Verticals for algebraic addition of k figures. One barrel. Sheet 2 of 2.<br />
* BAB/F/309 Analytical Engine. Algebraic addition of k figures. One barrel.<br />
* BAB/F/310 Analytical Engine. Algebraic addition of k figures.<br />
* BAB/F/311 Algebraic addition of k figures.<br />
* BAB/F/312 Algebraic addition of k figures. Three barrels.<br />
* BAB/F/313 Verticals for one barrel to perform algebraic addition of k figures with General Plan 28.<br />
* BAB/F/313/1 Verticals for one barrel to perform algebraic addition of k figures with General Plan 28. Sheet 1 of 2.<br />
* BAB/F/313/2 Verticals for one barrel to perform algebraic addition of k figures with General Plan 28. Sheet 2 of 2.<br />
* BAB/F/314 Multiplication. One barrel.<br />
* BAB/F/314/1 Multiplication. One barrel. Sheet 1 of 2.<br />
* BAB/F/314/2 Multiplication. One barrel. Sheet 2 of 2.<br />
* BAB/F/315 Multiplication. One barrel.<br />
* BAB/F/315/1 Multiplication. One barrel. Sheet 1 of 2.<br />
* BAB/F/315/2 Multiplication. One barrel. Sheet 2 of 2.<br />
* BAB/F/316 List of verticals on one barrel for division (Notation 290) with the equivalent verticals on five barrels to order the same work.<br />
* BAB/F/317 Genealogy of multiplication.<br />
* BAB/F/317/1 Genealogy of multiplication. Sheet 1 of 2.<br />
* BAB/F/317/2 Genealogy of multiplication. One barrel. Sheet 2 of 2.<br />
* BAB/F/318 Verticals for one barrel of 278 verticals to perform division with General Plan 28.<br />
* BAB/F/318/1 Verticals for one barrel of 278 verticals to perform division with General Plan 28. Sheet 1 of 3.<br />
* BAB/F/318/2 Verticals for one barrel of 278 verticals to perform division with General Plan 28. Sheet 2 of 3.<br />
* BAB/F/318/3 Verticals for one barrel of 278 verticals to perform division with General Plan 28. Sheet 3 of 3.<br />
* BAB/F/319 List of verticals on one barrel for multiplication (Notation 268) with the equivalent verticals on five barrels to order the same work.<br />
* BAB/F/320 Second arrangement of the verticals for one barrel to perform multiplication in the manner exhibited on Notation 268 and with General Plan 28 and 28a.<br />
* BAB/F/321 Algebraic addition of i k figures.<br />
* BAB/F/321/1 Algebraic addition of i k figures by the method described in Sketch Book Vol IV p 95 and with General Plan 28. Sheet 1 of 8.<br />
* BAB/F/321/2 Algebraic addition of i k figures. Sheet 2of 8.<br />
* BAB/F/321/3 Algebraic addition of i k figures. Sheet 3 of 8.<br />
* BAB/F/321/4 Algebraic addition of i k figures. Sheet 4 of 8.<br />
* BAB/F/321/5 Algebraic addition of i k figures. Sheet 5 of 8.<br />
* BAB/F/321/6 Algebraic addition of i k figures. Sheet 6 of 8.<br />
* BAB/F/321/7 Algebraic addition of i k figures. Sheet 7 of 8.<br />
* BAB/F/321/8 Algebraic addition of i k figures. Sheet 8 of 8.<br />
* BAB/F/322 Verticals for algebraic addition of i k figures. Notation 321.<br />
* BAB/F/322/1 Verticals of algebraic addition of i k figures. Notation 321. Sheet 1 of 3.<br />
* BAB/F/322/2 Verticals of algebraic addition of i k figures. Notation 321. Sheet 2 of 3.<br />
* BAB/F/322/3 Verticals of algebraic addition of i k figures. Notation 321. Sheet 3 of 3.<br />
* BAB/F/323 Verticals upon four barrels for algebraic addition of i k figures. Notation 321.<br />
* BAB/F/323/1 Verticals upon four barrels for algebraic addition of i k figures. Notation 321. Sheet 1 of 2.<br />
* BAB/F/323/2 Verticals upon four barrels for algebraic addition of i k figures. Notation 321. Sheet 2 of 2.<br />
* BAB/F/324 Notation of cycle wheels.<br />
* BAB/F/325 Notation of units for Plan 28.<br />
* BAB/F/326 Untitled. [Motions of axes and wheels of Plan 28]<br />
* BAB/F/327 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268.<br />
* BAB/F/327/1 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268. Sheet 1 of 4.<br />
* BAB/F/327/2 Untitled. [Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268]. Sheet 2 of 4.<br />
* BAB/F/327/3 Untitled. [Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268]. Sheet 3 of 4.<br />
* BAB/F/327/4 Untitled. [Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268]. Sheet 4 of 4.<br />
* BAB/F/328 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for algebraic addition of k figures as performed in Notations 306 and 306x.<br />
* BAB/F/329 Vertical position of the axes, wheels, et cetera, of right group of Plan 28 while performing multiplication as in Notation 268.<br />
* BAB/F/330 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for algebraic addition of i k figures as performed in Notation 321.<br />
* BAB/F/330/1 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for algebraic addition of i k figures as performed in Notation 321. Sheet 1 of 2.<br />
* BAB/F/330/2 Vertical motions for algebraic addition of i k figures. Sheet 2 of 2.<br />
* BAB/F/331 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290.<br />
* BAB/F/331/1 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290. Sheet 1 of 4.<br />
* BAB/F/331/2 Untitled. [Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290]. Sheet 2 of 4.<br />
* BAB/F/331/3 Untitled. [Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290]. Sheet 3 of 4.<br />
* BAB/F/331/4 Untitled. [Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290]. Sheet 4of 4.<br />
* BAB/F/332 Ascertaining if a variable = 0. Ascertaining if a variable has a + or - sign as performed by General Plans 28 and 28a.<br />
* BAB/F/333 Finding the sum of the numbers of digits in two numbers P and Q and finding the difference of the numbers of digits in two numbers P and Q. Plans 28 and 28a.<br />
* BAB/F/334 Differences as performed by General Plans 28 and 28a.<br />
* BAB/F/334/1 Differences as performed by General Plans 28 and 28. Sheet 1 of 2.<br />
* BAB/F/334/2 Differences as performed by General Plans 28 and 28a. Sheet 2 of 2.<br />
* BAB/F/335 Stepping up or down or multiplying or dividing by any power of ten. Plans 28 and 28a.<br />
* BAB/F/335/1 Stepping up or down or multiplying or dividing by any power of ten. Plans 28 and 28a. Sheet 1 of 2.<br />
* BAB/F/335/2 Stepping up or down or multiplying or dividing by any power of ten. Plans 28 and 28a. Sheet 2 of 2.<br />
* BAB/F/336 Notation of verticals for working Notations 332 and 333.<br />
* BAB/F/337 Notation of verticals for differences (Notation 334) and stepping up or down Notation 335.<br />
* BAB/F/338 Notation of units for General Plan 28. Superseded by 353.<br />
* BAB/F/339 List of cycles with their vertical motions.<br />
* BAB/F/340 Vertical motions of cycles a and a e.<br />
* BAB/F/341 Vertical motions of the wheels and axes of the centre group.<br />
* BAB/F/341/1 Vertical motions of the wheels and axes of the centre group. Sheet 1 of 4.<br />
* BAB/F/341/2 Vertical motions of the wheels and axes of the centre group. Plans 28 and 28a. Sheet 2 of 4.<br />
* BAB/F/341/3 Vertical motions of the wheels and axes of the centre group. Sheet 3 of 4.<br />
* BAB/F/341/4 Vertical motions of the wheels and axes of the centre group. Sheet 4 of 4.<br />
* BAB/F/342 Motions of some of the axes.<br />
* BAB/F/343 Motions of some of the axes for Plan 28.<br />
* BAB/F/343/1 Motions of some of the axes for Plan 28. Sheet 1 of 8.<br />
* BAB/F/343/2 Motions of some of the axes for Plan 28. Sheet 2 of 8.<br />
* BAB/F/343/3 Motions of some of the axes for Plan 28. Sheet 3 of 8.<br />
* BAB/F/343/4 Motions of some of the axes for Plan 28. Sheet 4 of 8.<br />
* BAB/F/343/5 Motions of some of the axes for Plan 28. Sheet 5 of 8.<br />
* BAB/F/343/6 [Motions of some of the axes for Plan 28]. Sheet 6 of 8.<br />
* BAB/F/343/7 [Motions of some of the axes for Plan 28]. Sheet 7 of 8.<br />
* BAB/F/343/8 [Motions of some of the axes for Plan 28]. Sheet 8 of 8.<br />
* BAB/F/344 Lockings (circular) of Plan 28.<br />
* BAB/F/344/1 Lockings (circular) of Plan 28. Sheet 1 of 2.<br />
* BAB/F/344/2 [Lockings (circular) of Plan 28]. Sheet 2 of 2.<br />
* BAB/F/345 Vertical motions of the wheels and axes of the middle group of Plan 28a for algebraic addition of k figures as performed in Notations 306 and 306x.<br />
* BAB/F/346 Vertical motions of the wheels and axes of the middle group of Plan 28 for algebraic addition of i k figures as performed in Notation 321.<br />
* BAB/F/346/1 Vertical motions of the wheels and axes of the middle group of Plan 28 for algebraic addition of i k figures as performed in Notation 321. Sheet 1 of 2.<br />
* BAB/F/346/2 Vertical motions for algebraic addition of i k figures. Sheet 2 of 2.<br />
* BAB/F/347 List of the vertical movements in the left middle and right groups.<br />
* BAB/F/347/1 List of the vertical movements in the left middle and right groups. Sheet 1 of 2.<br />
* BAB/F/347/2 List of the vertical movements in the left middle and right groups distributed by heights and cycles. Sheet 2 of 2.<br />
* BAB/F/348 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for multiplication as performed in working Notation 268<br />
* BAB/F/348/1 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for multiplication as performed in working Notation 268. Sheet 1 of 3.<br />
* BAB/F/348/2 Trains and vertical motions for multiplication. Sheet 2 of 3.<br />
* BAB/F/348/3 Trains and vertical motions for multiplication. Sheet 3 of 3.<br />
* BAB/F/349 Analysis of verticals on left group for multiplication.<br />
* BAB/F/350 Lockings of Plan 28a.<br />
* BAB/F/351 Notation of units for cycles of c (=18) and of 2c units used for counting the digits in multiplication and division.<br />
* BAB/F/352 Vertical positions of some of the wheels of Plan 28a. Notation 348 cycles.<br />
* BAB/F/352/1 Vertical positions of some of the wheels of Plan 28a. Notation 348 cycles. Sheet 1 of 13.<br />
* BAB/F/352/2 Notation 348 cycle 18. Sheet 2 of 13.<br />
* BAB/F/352/3 Notation 348 cycle 19. Sheet 3 of 13.<br />
* BAB/F/352/4 Notation 348 cycle 20. Sheet 4 of 13.<br />
* BAB/F/352/5 Notation 348 cycles 26 and 27. Sheet 5 of 13.<br />
* BAB/F/352/6 Notation 348 cycle 26. Sheet 6 of 13.<br />
* BAB/F/352/7 Notation 348 cycles 26 and 27. Sheet 7 of 13.<br />
* BAB/F/352/8 Notation 348 cycle 26. Sheet 8 of 13.<br />
* BAB/F/352/9 Notation 331 cycles 21 and 26. Sheet 9 of 13.<br />
* BAB/F/352/10 Notation 331 cycle 23 and 24. Sheet 10 of 13.<br />
* BAB/F/352/11 Untitled. [Vertical positions of some of the wheels of Plan 28a. Notation 348 and 331 cycles]. Sheet 11 of 13.<br />
* BAB/F/352/12 Untitled. [Vertical positions of some of the wheels of Plan 28a. Notation 348 and 331 cycles]. Sheet 12 of 13.<br />
* BAB/F/352/13 Untitled. [Vertical positions of some of the wheels of Plan 28a. Notation 348 and 331 cycles]. Sheet 13 of 13.<br />
* BAB/F/353 Notation of units for General Plan 28a.<br />
* BAB/F/353/1 Notation of units for General Plan 28a. Sheet 1 of 6.<br />
* BAB/F/353/2 Notation of units for General Plan 28a. Sheet 2 of 6.<br />
* BAB/F/353/3 Notation of units for General Plan 28a. Sheet 3 of 6.<br />
* BAB/F/353/4 Notation of units for General Plan 28a. Sheet 4 of 6.<br />
* BAB/F/353/5 Notation of units for General Plan 28a. Sheet 5 of 6.<br />
* BAB/F/353/6 Notation of units for mill counting apparatus drawings 125, 126 and 137 and for sign wheel drawing. Sheet 6 of 6.<br />
* BAB/F/354 Times of lockings in various cycles for Plan 28.<br />
* BAB/F/354/1 Times of lockings in various cycles for Plan 28. Sheet 1 of 2.<br />
* BAB/F/354/2 Untitled. [Times of lockings in various cycles for Plan 28]. Sheet 2 of 2.<br />
* BAB/F/355 Trains and vertical motions of the wheels and axes of the centre group for differences and of the right group for stepping up or down. Plan 28a.<br />
* BAB/F/356 Untitled. [Verticals. Motions of the wheels and axes for Plan 28].<br />
* BAB/F/356/1 Untitled. [Verticals. Motions of the wheels and axes for Plan 28]. Sheet 1 of 2.<br />
* BAB/F/356/2 Untitled. [Verticals. Motions of the wheels and axes for Plan 28]. Sheet 2 of 2.<br />
* BAB/F/357 Duties of the calculating mechanism of left, centre and right groups of Plan 28a.<br />
* BAB/F/357/1 Duties of the calculating mechanism of left, centre and right groups of Plan 28a. Right group. Sheet 1 of 11.<br />
* BAB/F/357/2 Duties of the calculating mechanism of left, centre and right groups of Plan 28a. Right group. Sheet 2 of 11.<br />
* BAB/F/357/3 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 3 of 11.<br />
* BAB/F/357/4 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 4 of 11.<br />
* BAB/F/357/5 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 5 of 11.<br />
* BAB/F/357/6 Duties of the calculating mechanism of left, centre and right groups of Plan 28a. Centre group. Sheet 6 of 11.<br />
* BAB/F/357/7 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 7 of 11.<br />
* BAB/F/357/8 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 8 of 11.<br />
* BAB/F/357/9 Duties of the calculating mechanism of Plan 28a. Left group. Sheet 9 of 11.<br />
* BAB/F/357/10 Duties of the calculating mechanism of Plan 28a. Left group. Sheet 10 of 11.<br />
* BAB/F/357/11 Duties of the calculating mechanism of Plan 28a. Left group. Sheet 11 of 11.<br />
* BAB/F/358 Analysis of the trains with reference to cycles and verticals.<br />
* BAB/F/358/1 Analysis of the trains with reference to cycles and verticals. Right group. Sheet 1 of 3.<br />
* BAB/F/358/2 Analysis of the trains with reference to cycles and verticals. Centre group. Sheet 2 of 3.<br />
* BAB/F/358/3 Analysis of the trains with reference to cycles and verticals. Left group. Sheet 3 of 3.<br />
* BAB/F/359 Trains and vertical motions of the wheels and axes of the table group of Plan 28a for multiplication, as performed in working Notation 268 and for stepping up or down.<br />
* BAB/F/360 Trains and vertical motions of the wheels and axes of the table group of Plan 28a for division, as performed in working Notation 290 and for ascertaining if a variable has a + or - sign.<br />
* BAB/F/361 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for multiplication, as performed in the working Notation 268.<br />
* BAB/F/361/1 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for multiplication, as performed in the working Notation 268. Sheet 1 of 2.<br />
* BAB/F/361/2 Trains and vertical motions of the wheels and axes ordered by barrel no. 2 of the mill counting apparatus of Plans 28 and 28a for multiplication, as performed in the working Notation 268. Sheet 2 of 2.<br />
* BAB/F/362 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for division, as performed in working Notation 290.<br />
* BAB/F/362/1 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for division, as performed in working Notation 290. Sheet 1 of 2.<br />
* BAB/F/362/2 Trains and vertical motions of the wheels and axes ordered by barrel no. 2 of the mill counting apparatus of Plans 28 and 28a for division, as performed in working Notation 290. Sheet 2 of 2.<br />
* BAB/F/363 Trains and vertical motions of the wheels and axes of the table group of Plan 28a for algebraic addition, as performed in working Notations 306 and 321.<br />
* BAB/F/364 Notations of periods ready for copying.<br />
* BAB/F/365 Notation of periods for table axes.<br />
* BAB/F/366 Notation of periods for mill counting apparatus.<br />
* BAB/F/367 Notation of periods for right group.<br />
* BAB/F/367/1 Notation of periods for right group. Sheet 1 of 5.<br />
* BAB/F/367/2 Notation of periods for right group. Sheet 2 of 5.<br />
* BAB/F/367/3 Notation of periods for right group. Sheet 3 of 5.<br />
* BAB/F/367/4 Notation of periods for right group. Sheet 4 of 5.<br />
* BAB/F/367/5 Notation of periods for right group. Sheet 5 of 5.<br />
* BAB/F/368 Notation of periods for the centre group.<br />
* BAB/F/369 Duties of the mill counting apparatus which require the cycle of 2c(=36) units for Plan 28a.<br />
* BAB/F/369/1 Duties of the mill counting apparatus which require the cycle of 2c(=36) units for Plan 28a. Sheet 1 of 2.<br />
* BAB/F/369/2 Duties of the mill counting apparatus which require the cycle of a(=12) units for Plan 28a. Sheet 2 of 2.<br />
* BAB/F/370 Duties of the calculating mechanism of Plan 28a table group.<br />
* BAB/F/370/1 Duties of the calculating mechanism of Plan 28a table group. Sheet 1 of 2.<br />
* BAB/F/370/2 Duties of the calculating mechanism of Plan 28a table group. Sheet 2 of 2.<br />
* BAB/F/371 Analysis of lockings.<br />
* BAB/F/371/1 Analysis of lockings. Right Group. Sheet 1 of 4.<br />
* BAB/F/371/2 Analysis of the lockings. Centre group. Sheet 2 of 4.<br />
* BAB/F/371/3 Analysis. Sheet 3 of 4.<br />
* BAB/F/371/4 Analysis of the lockings on the left group. Sheet 4 of 4.<br />
* BAB/F/372 Vertical motions for multiplication, division, addition and differences.<br />
* BAB/F/372/1 Right group. Vertical motions arranged by cycles. Multiplication and division. Sheet 1 of 5.<br />
* BAB/F/372/2 Untitled. [Vertical motions for multiplication and division]. Sheet 2 of 5.<br />
* BAB/F/372/3 Centre group. Sheet 3 of 5.<br />
* BAB/F/372/4 Mill counting apparatus. Vertical motions of the axes ordered by barrel no. 2. Sheet 4 of 5.<br />
* BAB/F/372/5 Table group. Sheet 5 of 5.<br />
* BAB/F/373 Skeleton of vertical motions for all operations.<br />
* BAB/F/373/1 Skeleton of vertical motions for all operations. Right groups. Multiplication and division from 372 Sheet 1. Sheet 1 of 3.<br />
* BAB/F/373/2 Skeleton of vertical motions for all operations. Left group. Sheet 2 of 3.<br />
* BAB/F/373/3 Skeleton of vertical motions for all operations. Centre group. Sheet 3 of 3.<br />
* BAB/F/374 Abstract of vertical motions arranged by cycles. Centre group.<br />
* BAB/F/375 Combination of the cycles of the groups; right, centre, left, table.<br />
* BAB/F/375/1 Combination of the cycles of the groups; right, centre, left, table, for multiplication. Sheet 1 of 2.<br />
* BAB/F/375/2 Combination of the cycles of the groups, right, centre, left, table. Sheet 2 of 2.<br />
* BAB/F/376 Skeleton of vertical motions of left, centre, right, table groups and mill counting apparatus.<br />
* BAB/F/376/1 Skeleton of vertical motions of left group. Sheet 1 of 6.<br />
* BAB/F/376/2 Skeleton of vertical motions of centre group. Sheet 2 of 6.<br />
* BAB/F/376/3 Untitled. [Skeleton of vertical motions of right group]. Sheet 3 of 6.<br />
* BAB/F/376/4 Untitled. [Skeleton of vertical motions of table group. Sheet 4 of 6.<br />
* BAB/F/376/5 Untitled. [Skeleton of vertical motions of mill counting apparatus barrel no. 1]. Sheet 5 of 6.<br />
* BAB/F/376/6 Untitled.[Skeleton of vertical motions of mill counting apparatus barrel no. 2.] Sheet 6 of 6.<br />
* BAB/F/377 List of the combinations in multiplication performed in Notation 268, with the cycles in which they occur.<br />
* BAB/F/378 List of the combinations in division performed as in Notation 290, with the cycles in which they occur.<br />
* BAB/F/378/1 List of the combinations in division performed as in Notation 290, with the cycles in which they occur. Sheet 1 of 4.<br />
* BAB/F/378/2 List of the combinations in division performed as in Notation 290, with the cycles in which they occur. Sheet 2 of 4.<br />
* BAB/F/378/3 List, et cetera. [List of the combinations in division performed as in Notation 290, with the cycles in which they occur] Sheet 3 of 4.<br />
* BAB/F/378/4 Untitled. [List of the combinations in division performed as in Notation 290, with the cycles in which they occur] Sheet 4 of 4.<br />
* BAB/F/379 List of the combinations in division performed as in Notation 290, with the cycles in which they occur.<br />
* BAB/F/380 List of the cases in multiplication as performed in Notation no. 268.<br />
* BAB/F/381 List of the cases in division as performed in Notation 290.<br />
* BAB/F/382 Notation of units anticipating whole zero cycles by circular chain.<br />
* BAB/F/383 Notation of units for Difference Engine calculating part.<br />
* BAB/F/383/1 Notation of units for Difference Engine calculating part. Sheet 1 of 2.<br />
* BAB/F/383/2 Notation of units for Difference Engine No. 2 calculating part. Sheet 2 of 2.<br />
* BAB/F/384 Notation of units for stereotype printing apparatus.<br />
* BAB/F/385 Notation of units for Difference Engine No. 2.<br />
* BAB/F/385/1 Notation of units for Difference Engine No. 2. Sheet 1 of 2.<br />
* BAB/F/385/2 Notation of units for various methods of giving motion to Difference Engine No. 2. Sheet 2 of 2.<br />
* BAB/F/386 Directive. Difference Engine No. 2. [Genealogy]<br />
* BAB/F/387 Analytical Engine. Notation of units of incommensurable cycle wheel.<br />
* BAB/F/388 Notation of units of apparatus for combining incommensurable cycles (Drawing 142).<br />
* BAB/G Cardboard drawings of the Analytical Engine<br />
* BAB/G/001 General plan of Analytical Engine, quarter size.<br />
* BAB/G/002 Rising platform and selectors for variable columns in store one to each half of store. Quarter size.<br />
* BAB/G/003 Store variable selectors. Superseding drawing No 2.<br />
* BAB/G/004 General plan of the Analytical Engine, half size.<br />
* BAB/G/005 Whole zero anticipating carriage with one plate in each cage.<br />
* BAB/G/006 Half zero anticipating carriage with three plates in each cage.<br />
* BAB/G/007 Plans for the moulds for anticipating carriage.<br />
* BAB/G/008 Mould for wheel of eighty teeth. Adding column.<br />
* BAB/G/009 Mould for warning pinion.<br />
* BAB/G/010 Untitled, appears to represent the printing mechanism.<br />
* BAB/G/011 Print apparatus as made in the large model.<br />
* BAB/G/012 Probably a plan of carriage and figure columns.<br />
* BAB/G/013 Plan of motion for carriage slide.<br />
* BAB/G/014 Details of carriage.<br />
* BAB/G/015 Motion for carrying the tens, plus and minus.<br />
* BAB/H Notation of units of the Difference Engine No. 2.<br />
* BAB/H/001 Sheet 1 showing driving, odd difference sectors, circular motion and vertical motion.<br />
* BAB/H/002 Sheet 2 showing odd difference figure wheels, circular motion, vertical motion; locking of odd difference figure wheels and odd difference warnings, circular motion.<br />
* BAB/H/003 Sheet 3 showing odd difference warnings, vertical motion; even difference sectors, circular motion, vertical motion and even difference figure wheels, circular motion.<br />
* BAB/H/004 Sheet 4 showing even difference figure wheels, vertical motion, locking of even difference figure wheels and even difference warnings, circular motion and vertical motion.<br />
* BAB/H/005 Sheet 5 showing odd difference figure wheels; odd difference warnings; odd difference carriage; even difference sectors and even difference figure wheels.<br />
* BAB/H/006 Sheet 6 showing even difference figure wheels; even difference warnings; large stereotype sectors, vertical motion and calculations conveyed to printing sectors, to large and small stereotype sectors.<br />
* BAB/H/007 Sheet 7 showing locking of large stereotype sectors, printing sectors, figure racks, printing racks and small stereotype sector, vertical motion.<br />
* BAB/H/008 Sheet 8 showing paper rollers, inking rollers, copper plate motion [column to column motion].<br />
* BAB/H/009 Sheet 9 showing copper plate motion.<br />
* BAB/I There is no physical material for this series although the reference was included in the previous finding aid.<br />
* BAB/J Draft notation of the Difference Engine No. 2<br />
* BAB/J/001 Notation of units<br />
* BAB/J/002 Notation of units<br />
* BAB/J/003 Notation of units<br />
* BAB/J/004 Notation of units. Circular motions of the calculating axes. Odd difference warnings and figure wheels.<br />
* BAB/J/005 Notation of units. Vertical motions. Even and odd difference sectors.<br />
* BAB/J/006 Notation of units.<br />
* BAB/J/007 Notation of units. Vertical motions of the calculating axes. Even and odd difference warnings.<br />
* BAB/J/008 Notation of units. Calculating axes.<br />
* BAB/J/009 Notation of units.<br />
* BAB/J/010 Notation of units.<br />
* BAB/J/011 Notation of units.<br />
* BAB/J/012 Notation of units.<br />
* BAB/J/013 Notation of units.<br />
* BAB/J/014 Notation of units.<br />
* BAB/J/015 Notation of units. Motions of the printing apparatus.<br />
* BAB/J/016 Notation of units.<br />
* BAB/J/017 Notation of units.<br />
* BAB/J/018 There is no archive material for this item although the reference was included in the previous finding aid.<br />
* BAB/J/019 There is no archive material for this item although the reference was included in the previous finding aid.<br />
* BAB/J/020 There is no archive material for this item although the reference was included in the previous finding aid. This is actually Notation F 386.<br />
* BAB/J/021 General trains. Circular motion of axes.<br />
* BAB/J/022 Trains. Vertical motions of axes.<br />
* BAB/J/023 Printing and punching.<br />
* BAB/J/024 Trains for stereotype frames.<br />
* BAB/J/025 Times of action.<br />
* BAB/J/026 General trains.<br />
* BAB/J/027 General trains to be used with Sheets 1 to 4 of the special trains on drawing paper.<br />
* BAB/J/028 Analytical and Difference Engine. Notations of units. Copper plate moving.<br />
* BAB/J/029 There is no archive material for this item although the reference was included in the previous finding aid. This is actually notation F383/1.<br />
* BAB/J/030 There is no archive material for this item although the reference was included in the previous finding aid. This is actually Notation F 383/2.<br />
* BAB/J/031 Trains to stereotype.<br />
* BAB/J/032 Commencement of trains.<br />
* BAB/J/033 Printing. Analytical and Difference Engine.<br />
* BAB/J/034 Direct trains. Third edition [possibly version].<br />
* BAB/J/035 Complete analysis of trains. Second Edition [possibly version].<br />
* BAB/J/036 Stereotype plate movements. Fourth Edition [possibly version].<br />
* BAB/J/037 Calculating.<br />
* BAB/J/038 Notation of units. First Edition [possibly version].<br />
* BAB/J/039 The trains.<br />
* BAB/J/040 The trains. Calculating. Second Edition [possibly version].<br />
* BAB/J/041 Calculation.<br />
* BAB/J/042 Comparison of two modes of moving matrix frame.<br />
* BAB/J/043 Description of copper plate moving apparatus.<br />
* BAB/J/044 Number of parts and working points.<br />
* BAB/K Drawings of Difference Engine No. 1<br />
* BAB/K/003 Frame for holding the copper.<br />
* BAB/K/058 Framing plate and details of rejected plans.<br />
* BAB/K/062 Calculating machine.<br />
* BAB/K/079 End view of general platform and end framing plate.<br />
* BAB/K/087 End views of printing part, frame and castor.<br />
* BAB/K/094 Wheel for three figure motion, indispensable element.<br />
* BAB/K/001 End view of printing part nearly all of which has been altered since this was drawn.<br />
* BAB/K/002 Endless screw, clutches, etc. for moving the copper.<br />
* BAB/K/027 Plan of machinery intended to be attached to planing machine.<br />
* BAB/K/029 First 60 wheel & 7 levers - old plan.<br />
* BAB/K/031 Calculating Machine.<br />
* BAB/K/033 Type Sectors.<br />
* BAB/K/034 Forces of punches.<br />
* BAB/K/040 Untitled.<br />
* BAB/K/042 Levers for cones, single teeth, &c.<br />
* BAB/K/043 3 figure motion.<br />
* BAB/K/044 Untitled.<br />
* BAB/K/071 untitled<br />
* BAB/K/075 Untitled<br />
* BAB/K/077 Untitled<br />
* BAB/K/078 Endviews of general platform. Plan of framing plates next type sector etc.<br />
* BAB/K/080 Untitled<br />
* BAB/K/081 Untitled<br />
* BAB/K/082 Untitled<br />
* BAB/K/083 Untitled<br />
* BAB/L Notations of calculations for the Analytical Engine<br />
* BAB/L/001 Solution of two simultaneous equations<br />
* BAB/L/002 Notation for the coefficients of the powers of x. Computation of the coefficients of a polynomial from those of another divided by a linear term.<br />
* BAB/L/003 Computation of the coefficients of a polynomial from those of another divided by a quadratic term<br />
* BAB/L/004 Solution of a single linear equation and reduction of two simultaneous equations in two variables to two independent linear equations.<br />
* BAB/L/005 Reduction of three simultaneous equations in three variables to two simultaneous equations in two variables.<br />
* BAB/L/006 Reduction of three simultaneous equations in three variables to two simultaneous equations in two variables.<br />
* BAB/L/007 Reduction of four simultaneous equations in four variables to three simultaneous equations in three variables.<br />
* BAB/L/008 Tabulation of a quadratic by differences. Calculation of a rational integral function of the second degree by differences.<br />
* BAB/L/009 Tabulation of a cubic by differences.<br />
* BAB/L/010 Tabulation of a quartic by differences.<br />
* BAB/L/011 Generation of terms of a series by a recurrence relation based on terms of other series.<br />
* BAB/L/012 Generation of terms of a series by a recurrence relation based on quadratic functions.<br />
* BAB/L/013 Generation of the coefficients in the product of two polynomials.<br />
* BAB/L/014 Generation of the coefficients in the product of two cosine series.<br />
* BAB/L/015 Notation for determining the value of x from the three equations. Successive reduction of three simultaneous equations in three variables to find the solution for one variable.<br />
* BAB/L/016 Successive reduction of simultaneous equations.<br />
* BAB/L/016/1 Sheet 1. Successive reduction of three simultaneous equations in three variables to find the solution for one variable.<br />
* BAB/L/016/2 Sheet 2. Successive reduction of five simultaneous equations in five variables to find the solution for one variable.<br />
* BAB/L/017 Notation for computing the elliptic radius vector by having the eccentricity and the mean anomaly.<br />
* BAB/L/018 Notation for computing the elliptic radius vector by having the eccentricity and the mean anomaly.<br />
* BAB/L/019 Notation of the reduction of the four equations. Reduction of four simultaneous equations in four variables to three simultaneous equations in three variables.<br />
* BAB/L/020 Notation of the reduction of the three equations. Successive reductions of three simultaneous equations in three variables to find the value of one variable.<br />
* BAB/L/021 Reduction of the four equations. Reduction of four simultaneous equations in four variables to three simultaneous equations in three variables.<br />
* BAB/L/022 Reduction of the three equations. Successive reductions of three simultaneous equations in three variables to find the value of one variable.<br />
* BAB/L/023 Notation of a formula for multiplication. Use of combinatorial cards in the computation of the coefficients in the product of two polynomials.<br />
* BAB/L/024 Generation of terms of a series by recurrence relations based on quadratic and linear functions.<br />
* BAB/L/025 Algebraic notation. Tabulation of the elliptic radius vector from the eccentricity and the mean anomaly.<br />
* BAB/L/026 Calculation of the numerical value of a formula. Computation of a simple formula by two methods.<br />
* BAB/L/027 List of variables, their signs and coefficients.<br />
* BAB/M Stereotype drawings<br />
* BAB/N History Sheets of the Analytical Engine<br />
* BAB/N/001 History: beginning of September 1834 to the end of December 1834, both inclusive.<br />
* BAB/N/002 History sheet for 1835<br />
* BAB/N/003 History sheet for 1836<br />
* BAB/N/004 History.<br />
* BAB/N/005 History.<br />
* BAB/N/006 History.<br />
* BAB/N/007 History.<br />
* BAB/N/008 History.<br />
* BAB/N/009 History.<br />
* BAB/N/010 History.<br />
* BAB/N/011 History.<br />
* BAB/N/012 History.<br />
* BAB/N/013 History.<br />
* BAB/N/014 History.<br />
* BAB/N/015 History.<br />
* BAB/N/016 History.<br />
* BAB/N/017 History.<br />
* BAB/N/018 History.<br />
* BAB/N/019 History.<br />
* BAB/N/020 History.<br />
* BAB/N/021 History.<br />
* BAB/N/022 History.<br />
* BAB/O Formulas relating to programs<br />
* BAB/O/001 Multinomial or Polynomial Theorem<br />
* BAB/O/002 Untitled. [Algebraic developments relating to various calculations]<br />
* BAB/O/003 Untitled. [Algebraic developments relating to various calculations]<br />
* BAB/O/004 Sturm's Theorem.<br />
* BAB/O/005 [Table of figures] from Mr. Barnett.<br />
* BAB/P Drawings of the Analytical Engine, Second Phase.<br />
* BAB/P/046 A rough draft of apparatus for reducing the two top figures to zero. Each sketch is superseded by Figures 1 and 2. Sketch of carriage with joint in frame. See Figures 3 and 4.<br />
* BAB/P/159 Analytical Engine (appears incomplete).<br />
* BAB/P/160 General Plan. Sheet 42.<br />
* BAB/P/161 Elevation of the Analytical Engine. Counting and stepping apparatus.<br />
* BAB/P/162 Untitled. Shows plans and elevations of store wheels, mill, mill wheel cages, carriages and framing.<br />
* BAB/P/163 Elevations and plans of printing apparatus. Experimental sketches for mill and store plans.<br />
* BAB/P/164 Plan of part of the Analytical Engine. Quarto size.<br />
* BAB/P/165 Combination of cams, platform and stop bolts. Selectors for table. Elevation.<br />
* BAB/P/166 Parts of plan, elevation and section of rising platforms for store. Superseded in following sheet.<br />
* BAB/P/167 Plan of bolts for store.<br />
* BAB/P/168 Plan and side elevation of table axis with combination of cams and platforms. Plan and end elevation of mill showing a combination of cams, platforms, stop bolts and barrels.<br />
* BAB/P/169 Rough draft of mill and driving without platforms.<br />
* BAB/P/170 Untitled, probably plan and elevation.<br />
* BAB/P/171 Sketches of axes, bolts and levers.<br />
* BAB/P/172 Untitled. Probably sketch of various cam apparatus.<br />
* BAB/P/173 Driving of mill axis. Appears incomplete.<br />
* BAB/P/174 Untitled. Appears to be a machine tool slide.<br />
* BAB/P/175 A figure wheel around which a carriage could be arranged.<br />
* BAB/P/176 Untitled. Probably a plan and elevation.<br />
* BAB/P/177 Improved table for shaping machine.<br />
* BAB/P/178 Detailed sketches of moving parts. Untitled.<br />
* BAB/P/179 Hoarding and anticipating carriages.<br />
* BAB/P/180 Hoarding carriage.<br />
* BAB/P/190 Untitled details. Incomplete.<br />
* BAB/P/191 Untitled details. Incomplete.<br />
* BAB/P/192 No. 6 half ten. No. 7 whole zero. Incomplete details.<br />
* BAB/P/193 Circular half zero carriage. Plans No. 8 - 10.<br />
* BAB/P/194 Selectors for division and multiplication.<br />
* BAB/P/195 Counting digits, end elevation and printing side elevation.<br />
* BAB/P/196 Figure No. 11. Half zero carriage with hoarding. Incomplete details.<br />
* BAB/P/197 Plans for store variables.<br />
* BAB/P/198 Adding column with motion for changing from plus to minus. Incomplete.<br />
* BAB/P/199 Untitled. A model of six cages was made from this drawing. Incomplete.<br />
* BAB/P/200 Whole zero and half zero, three figures.<br />
* BAB/P/201 Whole zero and half zero.<br />
* BAB/P/202 Half size plan and side elevation of three moveable platforms. Of which the two levers are abolished.<br />
* BAB/P/203 Plans for figure wheels, area for reducing to neutral position, carriage axes and locking arms.<br />
* BAB/P/205 Untitled plan and elevation. Incomplete.<br />
* BAB/P/207 Plan and elevation of bolts for each axis in the mill and motion for raising platform.<br />
* BAB/P/210 Motions for reducing the two upper figures to zero in division.<br />
* BAB/Q Miscellaneous mechanical notations<br />
* BAB/Q/001 Specimens of description.<br />
* BAB/Q/001/1 Principles to be followed in the description of the constituent portions of the Analytical Engine.<br />
* BAB/Q/001/2 Adding apparatus description.<br />
* BAB/Q/002 On putting letters to drawings, in draft.<br />
* BAB/Q/003 Drafts and rough notes.<br />
* BAB/Q/003/1 Mechanical notation<br />
* BAB/Q/003/2 Rough notes and sketches, including drawings of Babbage's game 'Tit Tat Toe'.<br />
* BAB/Q/004 Untitled. [Arrows indicating different forms of drive and connection].<br />
* BAB/Q/005 Untitled [Arrows indicating different forms of drive and connection].<br />
* BAB/Q/006 Untitled [Arrows indicating different forms of drive and connection].<br />
* BAB/Q/007 Rough notes of algebraic formulae, including some symbols of form.<br />
* BAB/R Catalogues and indexes of Babbage's papers relating to his calculating engines<br />
* BAB/R/001 Index to drawings<br />
* BAB/R/002 Index to drawings No. 1 to 62, describing the figures in each drawing.<br />
* BAB/R/003 The drawings of the new engine arranged according to the subjects in an alphabetical order.<br />
* BAB/R/004 The drawings of the New Engine arranged according to the subjects alphabetically. Analytical.<br />
* BAB/R/005 Catalogue of the drawings of the New Analytical Engine.<br />
* BAB/R/006 List of notations copied and read off.<br />
* BAB/R/007 Catalogue of 386 notations with their classification.<br />
* BAB/R/008 List of designs. Cross reference list, showing numbers of drawings, pages of sketch books and numbers of notations.<br />
* BAB/R/009 Duplicate. Index to the drawings. Cross reference list.<br />
* BAB/R/010 Corrected printed proofs and sheets of lists in H.P. Babbage's 'Calculating Engines', enclosed in a manuscript cover. It includes a manuscript list of tool drawings.<br />
* BAB/R/011 Corrected printed proof sheets for the catalogue of notations in H.P. Babbage's 'Calculating Engines'.<br />
* BAB/R/012 List of notations and drawings in the tin case. Taken to Turin in 1840.<br />
* BAB/R/013 List of sizes of the notations of the Analytical Engine.<br />
* BAB/R/014 List of plates.<br />
* BAB/T Universal Machine Tool<br />
* BAB/T/001 Universal Tool Notebook.<br />
* BAB/T/001/1 First of the six 'Universal Tool' sheets.<br />
* BAB/T/001/2 Continuation of sheet T/1/1<br />
* BAB/T/001/3 Continuation of sheet T/1/2. Second Edition.<br />
* BAB/T/001/4 Continuation of sheet T/1/3<br />
* BAB/T/001/5 Continuation of sheet T/1/4<br />
* BAB/T/001/6 Continuation of sheet T/1/5<br />
* BAB/T/002 Section through cross slide with part of its elevation. Drawing. Sheet 3.<br />
* BAB/T/003 Tool holder for universal machines. Drawing.<br />
* BAB/U Difference Engine No. 1. Drawings, notations, manuscripts and printed extracts.<br />
* BAB/U/001 Plan and side elevation of Difference Engine.<br />
* BAB/U/002 End elevation of the Difference Engine.<br />
* BAB/U/003 Copy of drawing of end elevation of the lower portion of the calculating part of the Difference Engine.<br />
* BAB/U/004 End elevation. Difference Engine 1823 - 1833. Drive.<br />
* BAB/U/005 Plan of Difference Engine 1823 - 1833. Calculating part.<br />
* BAB/U/006 First Difference Engine before 1834. Incomplete and unfinished notation, includes 'C.B. 1849' in the title.<br />
* BAB/U/007 Untitled notations.<br />
* BAB/U/008 Number no longer in use. Re-numbered as BAB U/3.<br />
* BAB/U/009 Number no longer in use. Re-numbered as BAB U/1[a].<br />
* BAB/U/010 Number no longer in use. Re-numbered as BAB U/1[b].<br />
* BAB/U/011 Number no longer in use. Re-numbered as BAB U/2[a] and BAB U/2[b].<br />
* BAB/U/012 Timing notation of calculating part.<br />
* BAB/U/013 Extracts in French from M. de Prony's tables.<br />
* BAB/U/014 Printed broad sheet entitled 'Babbage's Calculating Machine' by B. Herschel Babbage.<br />
* BAB/V Difference Engine No. 2. Notations and indexes.<br />
* BAB/V/001 Motions of the calculating part of the Difference Engine.<br />
* BAB/V/002 Notations of positions (vertical) for a Difference Engine as seen in drawings 180 - 183.<br />
* BAB/V/003 Difference Engine index of parts.<br />
* BAB/V/004 Index of Difference Engine No. 2.<br />
* BAB/V/005 Index of Difference Engine No. 2<br />
* BAB/W Draft notes and drawings relating to the first phase of work on the Analytical Engine from 1833-1848<br />
* BAB/W/001 A draft drawing labelled 'Sheet 3', showing card adding axis, mill adding axis, figure wheels, warning bar and lever and tens lifting slide.<br />
* BAB/W/002 List of letters with the numbers of the drawings on which they occur.<br />
* BAB/W/002/1 List of letters with the numbers of the drawings on which they occur. Sheet 1.<br />
* BAB/W/002/2 List of letters with the numbers of the drawings on which they occur. Sheet 2.<br />
* BAB/W/003 The drawings of the New Engine arranged according to the subjects, alphabetically. Re-catalogued as BAB R/3 and BAB R/4.<br />
* BAB/W/004 Trains of the Analytical Engine. Third Edition.<br />
* BAB/W/005 Letters (mechanical notation) used to indicate the most important parts of Plan 28a.<br />
* BAB/W/006 Abstracts of the various plans of the calculating engine.<br />
* BAB/W/007 Figure for notation 181.<br />
* BAB/W/008 Draft copy of Plan 28, dated 28 December 1842.<br />
* BAB/W/009 Analytical Engine Plan 28. Scale 1/6. Draft.<br />
* BAB/W/010 Counting apparatus. Arrangement of wheels.<br />
* BAB/W/011 Scraps and sketches that have been copied. Probably refers to the Analytical Engine.<br />
* BAB/X Draft sketches relating to the second phase of work on the Analytical Engine from 1857-1872<br />
* BAB/X/001 Locking motions for carriage column.<br />
* BAB/X/002 Sketch of driving.<br />
* BAB/X/003 Sketch of mould for adding column collars.<br />
* BAB/X/004 Sketch of framing for support cross driving axis and framing axis.<br />
* BAB/X/005 Plan of the Analytical Engine. Includes representative timings.<br />
* BAB/X/006 Untitled cardboard model.<br />
* BAB/X/007 Sketch described as '32 teeth to be cut into this mould, 3/16 pitch'.<br />
* BAB/X/008 Untitled. [Drawings of cams]<br />
* BAB/X/009 Untitled rough sketch of machine parts.<br />
* BAB/X/010 Special trains of notation for anticipating carriage of the Analytical Engine. Sheet No. 1.<br />
* BAB/Y Miscellaneous papers relating to H.P. Babbage's 'Mill' of the Analytical Engine<br />
* BAB/Y/001 Machine patterns for Machines 1 - 4, comprising four sheets<br />
* BAB/Y/001/1 My Machine I pattern for cast iron (base) ...<br />
* BAB/Y/001/2 My Machine 1888 II Plan of driving cams, levers, etc. in initial position.<br />
* BAB/Y/001/3 My Machine 1889 III Development of driving cams.<br />
* BAB/Y/001/4 My Machine 1883 - 1895 IV Copied and corrected from a former drawing.<br />
* BAB/Z Papers relating to the Scheutz's Difference Engine<br />
* BAB/Z/001 Drawings of the Difference Engine, comprising four sheets.<br />
* BAB/Z/001/1 Drawing of the Difference Engine<br />
* BAB/Z/001/2 Drawing. Sheet 2, unmounted<br />
* BAB/Z/001/3 Drawing, sheet 3, un-mounted.<br />
* BAB/Z/001/4 Drawing, sheet 4, un-mounted.<br />
* BAB/Z/002 Part of the end view of the Difference Engine<br />
* BAB/S Sketch books and scribbling books<br />
* BAB/S/1 First series of scribbling books of notations, sketches and calculations of the Difference and Analytical Engines<br />
* BAB/S/1/01 Tool Book. Volume I. Discussion and sketches of tools.<br />
* BAB/S/1/02 Scribbling Book Volume II<br />
* BAB/S/1/03 Sketch Book Volume III<br />
* BAB/S/1/11 Scribbling Book Volume XI<br />
* BAB/S/1/04 Sketch Book Volume IV<br />
* BAB/S/1/05 Scribbling Book Volume V. Important matter of history in the Analytical Engine.<br />
* BAB/S/1/06 Sketch Book Volume VI<br />
* BAB/S/1/07 Scribbling Book Volume VII. Analytical Engine.<br />
* BAB/S/1/08 Scribbling Book Volume VIII<br />
* BAB/S/1/09 Scribbling Book Volume IX<br />
* BAB/S/1/10 Scribbling Book Volume X.<br />
* BAB/S/1/12 Scribbling Book Volume XII. List of parts of the Engine, before August 1821.<br />
* BAB/S/1/13 Scribbling Book Volume XIII. Sketch of the history of the new calculating engine.<br />
* BAB/S/1/14 Scribbling Book Volume XIV. Travelling Scribbling Book.<br />
* BAB/S/1/15 Scribbling Book Volume XV. Containing various developments of series for the Analytical Engine, molecules elliptic, and various developments.<br />
* BAB/S/1/16 Scribbling Book Vol XVI. Various analytical developments adapted to engine.<br />
* BAB/S/2 Second series of scribbling books of a later date.<br />
* BAB/S/2/1 Scribbling Book Volume X<br />
* BAB/S/2/2 Scribbling Book Vol XI. Drawing Office.<br />
* BAB/S/2/3 Scribbling Book Volume XIA.<br />
* BAB/S/2/4 Scribbling Book Volume XII. Drawing Office.<br />
* BAB/S/3 Third series of scribbling books<br />
* BAB/S/3/1 Untitled.[Rough sketches of machine parts and tools].<br />
* BAB/S/3/2 Untitled.<br />
* BAB/S/3/3 Untitled. [Operations for the Analytical Engine]<br />
* BAB/S/3/4 Untitled. [Notations 224 and 321. List of operations.]<br />
* BAB/S/4 Bound notebooks of draft notations and sketches of notations.<br />
* BAB/S/4/1 Draft Notations and Sketches of Notations.<br />
* BAB/S/4/2 Draft Notations and Sketches of Notations: Cases<br />
* BAB/S/4/3 Draft Notations and Sketches of Notations<br />
* BAB/M Stereotype drawings<br />
* BAB/M/001 Plan of the figure wheels for one method of adding numbers.<br />
* BAB/M/002 Adding axis and wheels without framing<br />
* BAB/M/003 Frame of adding wheels<br />
* BAB/M/004 Section of adding wheels and framing.<br />
* BAB/M/005 Section of adding and sign axes and wheels frames, et cetera. Complete.<br />
* BAB/M/006 Impression from original wood cut from which No. 7 is a stereotype plate with letters and signs inserted.<br />
* BAB/M/007 Stereotype cast from wooden block No. 6 with letters and signs inserted.<br />
* BAB/M/008 Plan of adding wheels, and of long and short pinions.<br />
* BAB/M/009 Long pinions in the position for adding. Adding wheels and short pinions behind long pinions.<br />
* BAB/M/010 Long pinions in the position for stepping. Adding wheels and short pinions behind long wheels.<br />
* BAB/M/011 Plan of carriage by anticipation.<br />
* BAB/M/012 Fixed and moveable wires of the anticipating carriage. One third the real wire.<br />
* BAB/M/013 Carriage by anticipation.<br />
* BAB/M/014 Description of the mechanism for addition.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=BabbagePapers&diff=2249BabbagePapers2016-05-19T03:10:38Z<p>SteveBaker: Blanked the page</p>
<hr />
<div></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=BabbagePapers&diff=2248BabbagePapers2016-05-19T01:06:59Z<p>SteveBaker: Created page with "About Us Search Results Details Selection Search History Actions Send via e-mail Print TitleStereotype drawingsReferenceBAB/MDate1837-05-10 - 1838-07-30CreatorBabbage, Charle..."</p>
<hr />
<div>About Us<br />
Search<br />
Results<br />
Details<br />
Selection<br />
Search History<br />
Actions<br />
Send via e-mail<br />
Print<br />
TitleStereotype drawingsReferenceBAB/MDate1837-05-10 - 1838-07-30CreatorBabbage, Charles (1791-1871, mathematician) Scope and ContentThese 13 drawings are impressions from stereotype plates prepared for Babbage. They show how the printed drawings were made by successively removing detail from a stereotype plate. There are multiple impressions of most of these drawings. <br />
<br />
The drawings are accompanied by manuscript notes describing the mechanism for addition. The second page of notes includes the text "copied by Professor Matthes" in Babbage's own hand.<br />
<br />
The drawings were published in "Babbage's Calculating Engines" by H. P. Babbage.Extent14 drawings and accompanying manuscript notes.Level of descriptionseriesRepository nameScience Museum, LondonSystem of arrangementThe series is arranged alpha-numerically in date order.Hierarchy browser<br />
TOPBAB The Babbage Papers<br />
seriesBAB/A Drawings of the Analytical Engine<br />
itemBAB/A/001 The first drawing of the circular arrangement of the new engine.<br />
itemBAB/A/002 Untitled. This drawing is a cardboard model.<br />
itemBAB/A/003 Sketch of a plan for reserving the carriages.<br />
itemBAB/A/004 Figure 1, Plan / Figure 2, elevation, Figure C Carriage No 4.<br />
itemBAB/A/005 Figure 3. Zero Apparatus No. 1. Improved arrangement of snails, figure wheels et cetera for design dated 27 September 1834 and also for a design dated 24 January 1835. Elevation.<br />
itemBAB/A/006 Addition No. 4. Carriage No 6. Elevation and plan.<br />
itemBAB/A/007 Addition No. 3.<br />
itemBAB/A/008 Stepping No. 1 on or in central wheels. Figure 1. Figure 2. Various unnumbered elevations, plans and details.<br />
itemBAB/A/009 See designs dated 1834 November 27 and 1834 December 29.<br />
itemBAB/A/010 Plan for existing system of two racks. Arrangement plan and four detail elevations.<br />
itemBAB/A/011 Figure 1. Plan, elevation and detail.<br />
itemBAB/A/012 Sketch of a method of multiplication by means of the directive power stepping. Plans, elevations and details.<br />
itemBAB/A/013 Figure 1. Stepping No. 2. Sketch to examine a method of multiplication by stepping. Plan, elevation.<br />
itemBAB/A/014 Carriage No. 8. Figure 1. Method of carrying. Plan, elevation.<br />
itemBAB/A/015 Method of grouping for the large machine.<br />
itemBAB/A/016 Method of grouping for the large machine.<br />
itemBAB/A/017 Grouping arrangement. Abandoned end April 1835.<br />
itemBAB/A/018 Sketch No. 5. Two parts each. 1835 July 4. General arrangement.<br />
itemBAB/A/019 Sketch No. 7. Two parts each. July 4 1835. General arrangement.<br />
itemBAB/A/020 Figure 1. Sketch 7*, circular arrangement.<br />
itemBAB/A/021 Gearings, et cetera of Sketch No. 8 dated July 31 1835. Arrangement.<br />
itemBAB/A/022 Carriage 9. Gearing et cetera of Sketch No. 8 dated July 31 1835. Plan.<br />
itemBAB/A/023 Gearing et cetera of Sketch dated July 31 1835. Plan, once part of Drawing 22.<br />
itemBAB/A/024 No. 1 lifters for the purpose of division by table. Notation and description in sheets 11 and 12 of large quarto notations. Plan, elevation.<br />
itemBAB/A/025 Figure 1 Sketch No. 9, arrangement. Examination of stepping by long pinion shifting a whole cage. Elevation.<br />
itemBAB/A/026 Sketch No. 10*, circular, arrangement. Shows 26 variables.<br />
itemBAB/A/027 Sketch No. 11, circular, arrangement. Shows 27 variables.<br />
itemBAB/A/028 Elevation and formulae for gear trains. Uses differentials for speed adding.<br />
itemBAB/A/029 Method of bolting to platforms for vertical motion of axes, plan.<br />
itemBAB/A/030 Sketch of sectors for giving vertical motion to axes. Arrangement, design, sketch for interference.<br />
itemBAB/A/031 Sketch of sectors for giving vertical motion to axes, arrangement.<br />
itemBAB/A/032 Figure 1. First method of stepping by long pinions, elevation.<br />
itemBAB/A/033 Sketch 12. Stepping by the method designed 15 April 1836. Circular arrangement, 27 variables.<br />
itemBAB/A/034 Sketches of mill used for arranging operations on the engine of four wheels in each cage from April 1836 - August 1837.<br />
itemBAB/A/035 Method of governing barrels et cetera. No. 1, plan of elevation.<br />
itemBAB/A/036 Counting apparatus No. 1. Plan, elevation. Apparently for counting steps in multiplication, division and square root.<br />
itemBAB/A/037 Figure 1. Carriage No. 10. Plan of carrying by circular connection (chain). Plan, rejected. Scribbling Book, volume 2, page 207 et cetera.<br />
itemBAB/A/038 Carrying No. 13 Sketch of a method of carrying by circular connection. Plan, two elevations, description 4 November 1836. Rejected, No. 14, 13 October 1835 to be retained.<br />
itemBAB/A/039 Adding No. 6, carrying No. 14. Sketch of a method of adding and carrying intended for a Difference machine. Designed between 31 October 1836 and 12 November 1836. Plan, elevations, details, description.<br />
itemBAB/A/040 Adding No. 7 Carriage. No. 15 Sketch of a method of adding and carrying with anticipation. Intended for a Difference Machine or an Equation Difference Machine. Plan, elevations, description.<br />
itemBAB/A/041 Figure 1. Carriage No. 16. Method of carrying; intended for the Great Machine. Plan, elevation, notation, details. Description 24 February 1837 with additional sketches and notes.<br />
itemBAB/A/042 Sketch 13. General arrangement, circular. Showing 30 variables, 5 barrels with reducing apparatus, punch card mechanism, printing apparatus. Notes introduction of great bevel wheel 18 March 1837.<br />
itemBAB/A/043 Intended for engraving. Shows six barrels with reducing apparatus.<br />
itemBAB/A/044 Part 1. Plan sequence of meshings.<br />
itemBAB/A/045 Elevation of arrangement 13 with some of the driving and directive. Elevation includes section of a barrel '65 bands 80 verticals'.<br />
itemBAB/A/046 Sketch of sectors for lifting the axes.<br />
itemBAB/A/047 Sketch of the sectors for moving axes of store vertically.<br />
itemBAB/A/048 Part 1. Plan and elevation of adding wheels, long pinions and intermediate pinions, plan, two elevations. Part 2. Lifting axes and fixed wires, plan, elevation.<br />
itemBAB/A/049 Sketch of wheels for reducing carrying figure wheel axes to zero and setting spiral axes. Sketch elevations.<br />
itemBAB/A/050 Lifters for selecting the multiple of the Multiplicand or Divisor. Plan, two elevations.<br />
itemBAB/A/051 No. 1 Apparatus for registering quotient.<br />
itemBAB/A/052 Carriage and method of setting spiral axes for a machine of 50 cages with two figure wheels in each cage. Plan, elevation, details.<br />
itemBAB/A/053 Centres of axes and pen sketches of lockings for Sketch 14. Arrangement.<br />
itemBAB/A/054 Sketch 14. Arrangement, probably incomplete.<br />
itemBAB/A/055 Centres of axes and sketch of lockings for Sketch 15.<br />
itemBAB/A/056 Part 1. Opened out view of Plan 14. Part 2. Opened out view of Plan 16.<br />
itemBAB/A/057 Part 2. Sketch of some of the centres, et cetera for Plan 16. Arrangement.<br />
itemBAB/A/058 Part 1. Sketch of some of the centres et cetera for Plan 16. Arrangement.<br />
itemBAB/A/059 Sketch of some of the centres et cetera for Plan 16. Arrangement.<br />
itemBAB/A/060 Plan 16. Arrangement, several partial arrangements, numerous notes.<br />
itemBAB/A/061 Wheels for driving the adding axes. Plan.<br />
itemBAB/A/062 Sketch of sectors for lifting the axes.<br />
itemBAB/A/063 Sketch of a decimal counting apparatus. Plan, elevation, description.<br />
itemBAB/A/063/1 Sketch of a decimal counting apparatus.<br />
Contains<br />
itemBAB/A/064 Plan 18, arrangement.<br />
itemBAB/A/065 Arms for spiral axes. Plans, elevation, description, note.<br />
itemBAB/A/066 Consecutive counting apparatus.<br />
itemBAB/A/067 Combinatorial and decimal counting apparatus comprising plan, elevation and description.<br />
itemBAB/A/068 Selecting apparatus similar to that described in Sketch Book volume 3, page 54.<br />
itemBAB/A/069 Figure 1. Clutch et cetera for driving the adding axes. Plan, elevation.<br />
itemBAB/A/070 Elevation of decimal and store counting apparatus.<br />
itemBAB/A/071 Plan of decimal and store counting apparatus. Elevation of drawing 70 with description.<br />
itemBAB/A/072 Tools for the machine.<br />
itemBAB/A/073 Tools for the machine.<br />
itemBAB/A/074 Opened out view of figure wheels, 1-42.<br />
itemBAB/A/075 Plan 17, store on a rack. Arrangement.<br />
itemBAB/A/076 Plan 21, store on a rack. Arrangement.<br />
itemBAB/A/077 Sketch of General Plan No. 22. Arrangement and rack. Discussed and rejected.<br />
itemBAB/A/078 General Plan No. 23. Arrangement and rack.<br />
itemBAB/A/079 Plan No. 24. Arrangement and rack, rearrangement or notes.<br />
itemBAB/A/080 Sketches of parts of a carriage similar to that drawn upon No. 81. Plan, elevation.<br />
itemBAB/A/081 An improved carriage by vertical chain. Plan, elevation, details.<br />
itemBAB/A/082 Plans of parts of one of the selectors belonging to either of the nine multiples. Plan.<br />
itemBAB/A/083 Elevation of one of the selectors belonging to either of the nine multiples.<br />
itemBAB/A/084 Axes, wheels et cetera for applying the superposition of motion to the units' wheels of the selectors drawn upon No. 82 and 83. Plan, elevation.<br />
itemBAB/A/085 Sketch of central wheel and principal framing. Plan, elevation.<br />
itemBAB/A/086 Plan and section of an 8 inch figure wheel; hoarding carriage and framing plate. Plan, elevation.<br />
itemBAB/A/087 Plan of barrel and reducing apparatus.<br />
itemBAB/A/088 Elevation opened out of barrel and reducing apparatus.<br />
itemBAB/A/089 Plan 25. Arrangement and rack.<br />
itemBAB/A/089/1 The general plan of Mr. Babbage's Great Calculating Engine. Arrangement and rack, details, et cetera.<br />
Contains<br />
itemBAB/A/090 Sketches of groups.<br />
itemBAB/A/091 Plan 27. This was superseded by Drawing 93. Linear arrangement.<br />
itemBAB/A/092 Carriage by vertical chain. Plan, elevation.<br />
itemBAB/A/093 Two sheets probably relating to Plan 27 of the Analytical Engine.<br />
itemBAB/A/093/1 Plan 27. Linear arrangement with letter notations.<br />
itemBAB/A/093/2 Plan of the Analytical Engine without lettering.<br />
Contains<br />
itemBAB/A/094 Two sheets relating to detailed sketches of the Analytical Engine.<br />
itemBAB/A/094/1 Sketch elevation of the driving and directive of the Analytical Engine.<br />
itemBAB/A/094/2 Tracing sketch of the Analytical Engine. Elevation.<br />
Contains<br />
itemBAB/A/095 Mill counting apparatus. Consecutive plan.<br />
itemBAB/A/096 Mill counting apparatus. Consecutive elevation.<br />
itemBAB/A/097 Long pinion for giving off complement. Plan, elevation.<br />
itemBAB/A/098 Picking-up sectors. Plan, elevation.<br />
itemBAB/A/099 Long pinion for giving off complement.<br />
itemBAB/A/100 Self acting consecutive carriage. Plan, elevation and description.<br />
itemBAB/A/101 Examination and discussion of a new general plan.<br />
itemBAB/A/102 Unfinished sketches of anticipating whole and half zero carriage. Plan, elevation.<br />
itemBAB/A/103 Figures 1 and 2. Sketches of a tens chain for carriage for whole and half zero. Plan, elevation.<br />
itemBAB/A/104 Sketch of part of a carriage for whole and half zero. Plan. Wheels and pinions for part of centre group for Plans 28 and 28a.<br />
itemBAB/A/105 Positions of wheels, guides for moveable framing, et cetera.<br />
itemBAB/A/106 Anticipating whole and half zero digit counting carriage. Plan, elevation and details.<br />
itemBAB/A/107 Parts of the slide for Planing machine. Plan, elevation.<br />
itemBAB/A/108 Parts of the slide for the Planing machine. Plan, elevation.<br />
itemBAB/A/109 Untitled plan, elevation.<br />
itemBAB/A/110 Parts of the slides for the Planing machine.<br />
itemBAB/A/111 Parts of the slide for the Planing machine.<br />
itemBAB/A/112 Parts of slide for the Planing machine. Plan, elevation.<br />
itemBAB/A/113 Parts of slide for the Planing machine. Plan, elevation<br />
itemBAB/A/114 Planing machine. Elevation, details.<br />
itemBAB/A/114/1 Part of the Planing machine.<br />
Contains<br />
itemBAB/A/115 Chuck for Planing machine. Plan, elevation.<br />
itemBAB/A/116 Parts of slide tool for Planing machine. Plan, elevation.<br />
itemBAB/A/116/1 Sketch of drilling machine. Details.<br />
Contains<br />
itemBAB/A/117 Sketches of cams for consecutive carriage.<br />
itemBAB/A/118 Various arrangements proposed, examined and rejected between the rejection of Plan 27 and the adoption of Plan 28. Figures 1, 2, 3, 4, 9.<br />
itemBAB/A/119 Sketch of an anticipating whole and half zero carriage. Plan, elevation.<br />
itemBAB/A/120 Axes D1 E1 for the left hand group of Plan 28. Plan, elevation.<br />
itemBAB/A/121 Axes D E G H for the right hand group of Plan 28.<br />
itemBAB/A/122 Improved framing for centre group of Plan 28. Arrangement, plan.<br />
itemBAB/A/123 Sundry axes and wheels for Plan 28.<br />
itemBAB/A/124 First sketch of all the parts in plan of the right half to middle group of General Plan 28. Plan, elevation.<br />
itemBAB/A/125 Plan of consecutive mill counting apparatus for General Plan 28. Plan, note.<br />
itemBAB/A/126 Elevation of consecutive mill counting apparatus for General Plan 28 and 28a.<br />
itemBAB/A/127 Plan of the left half to middle group for General Plan 28.<br />
itemBAB/A/128 Plan and section of a large chuck for Planing machine. Plan, elevation.<br />
itemBAB/A/129 Elevation of parts of middle group drawn in plan on No. 127.<br />
itemBAB/A/130 Elevation of parts of middle group drawn in plan on No. 127.<br />
itemBAB/A/131 Plan and elevation of sundry parts in the upper cages of left half of middle group.<br />
itemBAB/A/132 Plan of operation and variable card counting apparatus. Suited to Plans 28 and 28a.<br />
itemBAB/A/133 Elevation of parts of the card counting apparatus for operation and variable cards.<br />
itemBAB/A/134 Elevation of parts of the card counting apparatus for operation and variable cards.<br />
itemBAB/A/135 Apparatus for registering the quotient adapted to Plan 28a. Plan, elevation and detail.<br />
itemBAB/A/136 Sketch of a half zero anticipating carriage. Plan, description and note.<br />
itemBAB/A/137 Plan and new method of counting off for mill counting apparatus. Elevation, detail.<br />
itemBAB/A/138 Sign apparatus. Plan, elevation.<br />
itemBAB/A/139 Sign apparatus for Plan 28a. Plan, elevation.<br />
itemBAB/A/140 Table and store axes for Plan 28a. Plan, elevation and note.<br />
itemBAB/A/141 Sketch of an apparatus for lifting the axes of the Analytical Engine. Plan, elevation.<br />
itemBAB/A/142 Apparatus for combining incommensurable cycles. Plan, elevation.<br />
itemBAB/A/143 General plans of three groups of the Analytical Engine.<br />
itemBAB/A/144 Anticipating whole zero carriages. Figure 2 by vertical chain. Plan, elevation.<br />
itemBAB/A/145 Plan and elevation for the calculating part of the Difference Engine. Figure 1. Superseded. Consecutive carriage.<br />
itemBAB/A/146 Sketches of the printing and stereotyping apparatus of the Analytical and Difference Engines. Superseded. Plan, elevation.<br />
itemBAB/A/147 Stereotype frames for Analytical and Difference Engines. Plan, elevation.<br />
itemBAB/A/148 Sketch of an apparatus for advancing stereotype frames of the Difference Engine by cranks and backing them by weights. Superseded. Plan, elevation.<br />
itemBAB/A/149 Speculations on the driving and directive for the Difference Engine. Superseded. Arrangements.<br />
itemBAB/A/150 Difference Engine wheels for driving the cranks which move the matrix frames. Superseded. Plan, elevation.<br />
itemBAB/A/151 Speculations on the driving and directive of the Difference Engine. Superseded. Plan, elevation.<br />
itemBAB/A/152 Paper rollers of the printing apparatus for the Analytical and Difference Engines. Superseded. Plan, elevation.<br />
itemBAB/A/153 Untitled elevation of the printing and stereotype apparatus. Superseded.<br />
itemBAB/A/154 Speculations on the driving and directive of the Difference Engine. Superseded. Arrangement.<br />
itemBAB/A/155 Speculations on the driving and directive for the Difference Engine. Elevation.<br />
itemBAB/A/156 Plan of the apparatus for stereotyping and printing for both the Analytical and Difference Engines. Superseded.<br />
itemBAB/A/157 Plan and elevation of part of the directive of the Difference Engine. Superseded.<br />
itemBAB/A/158 Plan and elevation of the driving and directive of the Difference Engine. Superseded.<br />
itemBAB/A/159 General plan and details of cams for driving calculating axes.<br />
itemBAB/A/160 Untitled elevation. Table of symbols on reverse.<br />
itemBAB/A/161 General plan and detail of the driving of the calculating part of the Difference Engine No. 2.<br />
itemBAB/A/162 Part of frame for supporting stereotype axes.<br />
itemBAB/A/163 Elevation of Difference Engine No. 2.<br />
itemBAB/A/164 Plan of the Difference Engine No. 2.<br />
itemBAB/A/165 Details of Difference Engine No. 2. Plan, elevation.<br />
itemBAB/A/166 Apparatus for moving stereotype frames for Analytical and Difference Engines. Plan, elevation.<br />
itemBAB/A/167 Elevation and end view of part of general framing. Plan.<br />
itemBAB/A/168 Plan and end view of cams et cetera for vertical motion to calculating axes.<br />
itemBAB/A/169 Plan of cams for locking odd Difference figure wheels and for vertical motion of even Difference warning.<br />
itemBAB/A/170 Plan of cams for circular motion of even difference axes.<br />
itemBAB/A/171 Difference Engine No. 2. Addition carriage and mode of driving the axes.<br />
itemBAB/A/172 End view of inking printing paper and stereotype apparatus.<br />
itemBAB/A/173 Plan of inking printing and stereotype apparatus.<br />
itemBAB/A/174 Rack pinions for connecting table figure wheels with printing stereotype sectors. Elevation.<br />
itemBAB/A/175 Plan of cams for punching with small stereotype sectors and cams for removing paper rollers.<br />
itemBAB/A/176 Plan of calculating part of Difference Engine with the means of conveying numbers to stereotype sectors.<br />
itemBAB/A/177 Bars and levers for lifting axes of the Difference Engine No. 2. Plan.<br />
itemBAB/A/178 Five sheets relating to general notation of the motions of the Difference Engine No. 2.<br />
itemBAB/A/178/1 General notation of the motions of the Difference Engine No. 2.<br />
itemBAB/A/178/2 General notation of the motions of the Difference Engine No. 2.<br />
itemBAB/A/178/3 General notation of the motions of the Difference Engine No. 2.<br />
itemBAB/A/178/4 General notation of the motions of the Difference Engine No. 2.<br />
itemBAB/A/178/5 General notation of the motions of the Difference Engine No. 2.<br />
Contains<br />
itemBAB/A/179 Untitled. Appears to be layout of axes on framing of Difference Engine No. 2. Plan of the calculating axis and framing of the Difference Engine.<br />
itemBAB/A/180 Is A.180x intended<br />
itemBAB/A/180/1 Untitled. Plan for raising axes (vertical motion) of the Difference Engine. Locking plates and travelling platforms.<br />
Contains<br />
itemBAB/A/181 Plan and elevation of a platform for giving circular motion to axes applied as an experiment to the Difference Engine No. 2. Drawing 163.<br />
itemBAB/A/182 Untitled. Plan of locking plates for locking axis circularly and vertically.<br />
itemBAB/A/183 Untitled. Plan of the universal and general locking plates. Plan and elevation of the locked arms.<br />
Contains<br />
seriesBAB/B Drawings and tracings of Difference Engine No. 2.<br />
itemBAB/B/002 Plan of Difference Engine No. 2. Tracing of BAB A/164.<br />
itemBAB/B/003 Difference Engine No. 2. Addition carriage and mode of driving the axis. Tracing of BAB A/171.<br />
itemBAB/B/004 Plan of the calculating part with the means of conveying numbers to stereotype sectors. Tracing of BAB A/176.<br />
itemBAB/B/006 General plan and detail of the driving of the calculating part of Difference Engine No. 2. Tracing of BAB A/161.<br />
itemBAB/B/006/1 Plan of part of framing of Drawing 161. Tracing of BAB A/161.<br />
itemBAB/B/006/2 Plan of part of framing of Drawing 161. Tracing of BAB A/161.<br />
itemBAB/B/006/3 Plan of part of framing of Drawing 161. Tracing of BAB A/161.<br />
Contains<br />
itemBAB/B/007 General plan and details of cams for driving calculating axis. Also the disconnecting apparatus. First mover. Tracing of BAB A/159.<br />
itemBAB/B/008 End view and side elevation of driving and lifting apparatus.<br />
itemBAB/B/008/1 Part of framing shown on 160. Tracing of BAB A/160.<br />
itemBAB/B/008/2 Part of framing of Drawing 160. Tracing of BAB A/160.<br />
itemBAB/B/008/3 Elevation of part of framing of Drawing 160.<br />
Contains<br />
itemBAB/B/012 Rack pinions for connecting table figure wheels with printing stereotype sectors. Elevation. Tracing of BAB A/174.<br />
itemBAB/B/013 End view of inking printing paper and stereotyping apparatus. Tracing of BAB A/172.<br />
itemBAB/B/014 Plan of inking, printing and stereotype apparatus. Tracing of BAB A/173<br />
itemBAB/B/018 Stereotype frames for Analytical and Difference engines. Plan, end view and elevation. Tracing of BAB A/147.<br />
itemBAB/B/019 Apparatus for moving stereotype frames for Analytical and Difference engines. Plan, end view and elevation. Tracing of BAB A/166.<br />
Contains<br />
seriesBAB/C Miscellaneous tracings relating to the Analytical Engine<br />
itemBAB/C/117 Digit counting apparatus upon axes of the left hand group of Plan 28. Plan, description and notation.<br />
itemBAB/C/120 Axes D1, E1 for the left hand group of Plan 28<br />
itemBAB/C/127 Plan of left half of middle group for General Plan 28.<br />
itemBAB/C/129 Elevation of parts of middle group drawn in plan on No. 127.<br />
itemBAB/C/130 Elevation of parts of middle group drawn in plan on No. 127.<br />
itemBAB/C/131 Plan and elevation of sundry parts in the upper cages of left half of middle group.<br />
itemBAB/C/135 Apparatus for registering the quotient adapted to Plan 28a.<br />
itemBAB/C/121 Axes D,E,G,H for the right hand group of Plan 28<br />
Contains<br />
seriesBAB/D Drawings of the Analytical Engine<br />
itemBAB/D/001 Analytical Engine. Sheet No. 1. Sections of store wheels and their framing selectors.<br />
itemBAB/D/002 Digit counting apparatus on the two upper wheel selectors.<br />
itemBAB/D/003 Carriage with tens warning. Sheet 3.<br />
itemBAB/D/004 Digit counting apparatus. Sheet 4.<br />
itemBAB/D/005 Frame lifting bar and selectors. Sheet 5.<br />
itemBAB/D/006 Sections of framing and racks. Sheet 6.<br />
itemBAB/D/007 Digit counting apparatus spiral axis. Sheet 7.<br />
itemBAB/D/008 First draft of selecting apparatus. Sheet 8.<br />
itemBAB/D/009 Lifting apparatus by screw. Sheet 9.<br />
itemBAB/D/010 Carriage and racks in sections. Sheet 10.<br />
itemBAB/D/011 Plan of mill with two racks. Sheet 11.<br />
itemBAB/D/012 Selecting apparatus. Sheet 12.<br />
itemBAB/D/013 Carriage axis, head and tail of product. Sheet 13.<br />
itemBAB/D/014 Carriage. Sheet 14.<br />
itemBAB/D/015 Selectors, circular framing for mill.<br />
itemBAB/D/016 Circular mill. Various plans. Sheet 16.<br />
itemBAB/D/017 First draft of framing. Sheet 17.<br />
itemBAB/D/018 Hoarding carriage, framing.<br />
itemBAB/D/019 Side and end view of framing showing bearings for racks at Figure 1. Sheet 10.<br />
itemBAB/D/020 Elevation arrangements for division. Sheet 20<br />
itemBAB/D/021 Digit counting apparatus units and tens. Sheet 26.<br />
itemBAB/D/022 Revised plan of mill. Sheet 27.<br />
itemBAB/D/023 Raising and lowering figure wheel axis. Sheet 28.<br />
itemBAB/D/024 Plan of mill, table wheels and carriage. Sheet 31.<br />
itemBAB/D/025 Platform raising apparatus. Sheet 32.<br />
itemBAB/D/026 Platform raising apparatus. Sheet 33.<br />
itemBAB/D/027 Continuation of raising apparatus.<br />
itemBAB/D/028 Mill. Sheet 28. Superseded by Sheet 25.<br />
itemBAB/D/029 Draft of the mill. Sheet 29. Superseded by Sheet 24.<br />
itemBAB/D/030 Plan of improved mill. The last improved copy. Sheet 30.<br />
itemBAB/D/031 Elevation of the mill.<br />
itemBAB/D/032 Long stepping mill driven by pinions. Sheet 32.<br />
itemBAB/D/033 Carriage, axis and wheels. Sections. Sheet 33.<br />
itemBAB/D/034 Plan of mill and store. First draft of revised store and mill connected.<br />
itemBAB/D/035 Rough draft of mill and store. Plan and elevation.<br />
itemBAB/D/036 Plan of mill. Sheet 35. Superseded by Sheet 36.<br />
itemBAB/D/037 Plan of mill. Superseded by Sheet 35 - 36.<br />
itemBAB/D/038 Rising platforms, advancing plate.<br />
itemBAB/D/039 Plan and elevation of bolts and advancing plate.<br />
itemBAB/D/040 Plan and elevation of bolts for store.<br />
itemBAB/D/041 Plan and elevation of rising platform.<br />
itemBAB/D/042 Wanting tooth for long stepping. Parts of adding and carriage.<br />
itemBAB/D/043 Wanting tooth for long stepping. Rough sketches for carriage. Attempt at break and joint for carriage.<br />
itemBAB/D/044 Plan of store with double mill and printing. Superseded.<br />
itemBAB/D/045 Printing and card punching. Printing part of the Analytical Engine.<br />
Contains<br />
seriesBAB/E Drawings of tools<br />
itemBAB/E/001 Rough draft of Universal Machine Tool. Designed and employed for obtaining the different motions.<br />
itemBAB/E/002 Rough draft of throw out motion for feed apparatus.<br />
itemBAB/E/003 Experimental planing machine<br />
itemBAB/E/004 Reverse motion for cross planing.<br />
itemBAB/E/005 Elevation and section of cross slide.<br />
itemBAB/E/006 Plan, elevation and section of cross slide.<br />
itemBAB/E/007 Back and end elevation of cross slide.<br />
itemBAB/E/008 Side and end elevation of feed and drawing apparatus.<br />
itemBAB/E/009 Side and end elevation of feed motion with shade. Second revision.<br />
itemBAB/E/010 Front and side elevation of feed apparatus. Showing worm and slotting motion.<br />
itemBAB/E/011 Side and end elevation of feed motions. Showing the bands in different colours.<br />
itemBAB/E/012 Elevations and sections of feed motions. Fourth revision.<br />
itemBAB/E/013 Small planing machine. Sheet 1.<br />
itemBAB/E/014 End and side elevation of Large Universal Machine.<br />
itemBAB/E/015 Small Experimental Machine. Sheet 5.<br />
itemBAB/E/016 Small Universal Machine. Sheet 6.<br />
itemBAB/E/017 Small Universal Machine.<br />
itemBAB/E/018 Small Experimental Machine. Sheet 2.<br />
itemBAB/E/019 Plan of Large Universal Machine.<br />
Contains<br />
seriesBAB/F Notations of the Analytical Engine<br />
itemBAB/F/001 Multiplication before the invention of multiplication by table. Sheet 1 of 2.<br />
itemBAB/F/002 Multiplication before the invention of multiplication by table. Sheet 2 of 2.<br />
itemBAB/F/003 Division before division by table was contrived. Sheet 1 of 4.<br />
itemBAB/F/004 Division continued. Sheet 2 of 4.<br />
itemBAB/F/005 Division continued. Sheet 3 of 4.<br />
itemBAB/F/006 Division continued. Sheet 4 of 4.<br />
itemBAB/F/007 Extraction of square root. Sheet 1 of 4.<br />
itemBAB/F/008 Extraction of square root. Sheet 2 of 4.<br />
itemBAB/F/009 Extraction of square root. Sheet 3 of 4.<br />
itemBAB/F/010 Extraction of square root. Sheet 4 of 4.<br />
itemBAB/F/011 Notation for lifters. Sheet 1 of 2.<br />
itemBAB/F/012 Notation for lifters for division by table, continued. Sheet 2 of 2.<br />
itemBAB/F/013 Table multiplication.<br />
itemBAB/F/014 Bolting plates for multiplication by table.<br />
itemBAB/F/015 Table division.<br />
itemBAB/F/016 Table division.<br />
itemBAB/F/017 Table division.<br />
itemBAB/F/018 Multiplication without table. Sheet 1 of 2.<br />
itemBAB/F/019 Multiplication without table. Sheet 2 of 2.<br />
itemBAB/F/020 Bolting plates to multiply without table.<br />
itemBAB/F/021 Division without table. Four sheets. Sheet 1 of 4.<br />
itemBAB/F/022 Division without table. Sheet 2 of 4.<br />
itemBAB/F/023 Division without table. Sheet 3 of 4.<br />
itemBAB/F/024 Division without table. Sheet 4 of 4.<br />
itemBAB/F/025 Bolting plates to divide without table.<br />
itemBAB/F/026 Square root. Sheet 1 of 4.<br />
itemBAB/F/027 Square root. Sheet 2 of 4.<br />
itemBAB/F/028 Square root. Sheet 3 of 4.<br />
itemBAB/F/029 Square root. Sheet 4 of 4.<br />
itemBAB/F/030 Bolting plates to do square root. Sheet 1of 2.<br />
itemBAB/F/031 Bolting plates to do square root, continued. Sheet 2 of 2.<br />
itemBAB/F/032 Ordinary cycle of 16.<br />
itemBAB/F/033 Notation of carriage<br />
itemBAB/F/034 Notation for differences.<br />
itemBAB/F/035 Various sheets on division and multiplication.<br />
itemBAB/F/036 Part of a notation of division.<br />
itemBAB/F/037 Notation for division.<br />
itemBAB/F/038 Notation for multiplication.<br />
itemBAB/F/039 Notation for multiplication.<br />
itemBAB/F/040 Barrels for multiplication. Left hand side of machine.<br />
itemBAB/F/041 Notation of the counting apparatus, et cetera, to suit Notation 39, for multiplication.<br />
itemBAB/F/042 Notation for division for Sketch No. 12 ( A/33).<br />
itemBAB/F/043 Cycles on barrels for division.<br />
itemBAB/F/044 Notation for square root.<br />
itemBAB/F/045 Barrels for square root.<br />
itemBAB/F/046 Counting apparatus.<br />
itemBAB/F/047 Division and multiplication of 60 figures.<br />
itemBAB/F/048 Single machine division of 30 figures with tail. General notation.<br />
itemBAB/F/049 Multiplication and division of 60 figures with tail of 60. General notation.<br />
itemBAB/F/050 Extracted from notations F/39, F/42 and F/44 for the purpose of arranging the verticals on the barrels.<br />
itemBAB/F/051 Differences.<br />
itemBAB/F/052 Addition and subtraction. Multiplication by stepping without table (to be done in store). Division by powers of ten (stepping done in store).<br />
itemBAB/F/053 Printing differences.<br />
itemBAB/F/054 Additions with signs.<br />
itemBAB/F/055 Copy of ordinary cycle of 16. No. 32.<br />
itemBAB/F/056 Counting by means of figure wheels. Division.<br />
itemBAB/F/057 Multiplication.<br />
itemBAB/F/058 Square root.<br />
itemBAB/F/059 Counting by stepping. Division.<br />
itemBAB/F/060 Cycle of 16.<br />
itemBAB/F/061 Notation of locking.<br />
itemBAB/F/062 Cycle of 17.<br />
itemBAB/F/063 Notation of locking. Small operations.<br />
itemBAB/F/064 Notation of locking for multiplication and division.<br />
itemBAB/F/065 Notation of locking for square root.<br />
itemBAB/F/066 Extracted from notations of locking.<br />
itemBAB/F/067 Notation of division.<br />
itemBAB/F/067/1 Notation of Division. Sheet 1 of 2.<br />
itemBAB/F/067/2 Notation of division. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/068 Notation of multiplication.<br />
itemBAB/F/069 Notation for square root.<br />
itemBAB/F/070 Addition and subtraction with signs.<br />
itemBAB/F/071 Notation of division.<br />
itemBAB/F/071/1 Notation of division. Sheet 1 of 2.<br />
itemBAB/F/071/2 Notation of division. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/072 Cycle of 20.<br />
itemBAB/F/073 Two cycles - one of 21 and one of 28 units.<br />
itemBAB/F/074 Notation of multiplication with hoarded carriages, beginning with the highest figure of multiplier.<br />
itemBAB/F/074/1 Notation of multiplication with hoarded carriages, beginning with the highest figure of multiplier. Sheet 1 of 2.<br />
itemBAB/F/074/2 Notation of multiplication with hoarded carriages, beginning with the lowest figure multiplier. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/075 Notation of division.<br />
itemBAB/F/075/1 Notation of division. Two figure wheels in each cage. Two cycles. Sheet 1 of 2.<br />
itemBAB/F/075/2 Notation of division. Two figure wheels in each cage. Two cycles. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/076 Two cycles of 15 and 20.<br />
itemBAB/F/077 Mill and rack cycles.<br />
itemBAB/F/077/1 Mill cycles of 15 and 20. Sheet 1 of 2.<br />
itemBAB/F/077/2 Racks, cycle of 20. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/078 Verticals.<br />
itemBAB/F/079 General notation of addition and subtraction with signs.<br />
itemBAB/F/080 Notations of lockings.<br />
itemBAB/F/080/1 Notation of lockings. Sheet 1 of 3.<br />
itemBAB/F/080/2 Notation of lockings. Sheet 2 of 3<br />
itemBAB/F/080/3 Notation of lockings - store. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/081 General notation of addition and subtraction.<br />
itemBAB/F/082 Sectors, levers, et cetera in mill and store.<br />
itemBAB/F/083 Notation of approximative multiplication.<br />
itemBAB/F/084 Addition and subtraction with signs.<br />
itemBAB/F/085 Notation of approximative division.<br />
itemBAB/F/086 Notation for the directive of multiplication.<br />
itemBAB/F/087 Directive of Division.<br />
itemBAB/F/088 Directive of addition and subtraction.<br />
itemBAB/F/089 Notation of the directive of multiplication in which carriages are hoarded.<br />
itemBAB/F/090 Directive of addition.<br />
itemBAB/F/091 Directive of addition.<br />
itemBAB/F/092 Directive of addition.<br />
itemBAB/F/093 Verticals.<br />
itemBAB/F/093/1 Verticals. Multiplication. Sheet 1 of 3.<br />
itemBAB/F/093/2 Verticals. Division. Sheet 2 of 3.<br />
itemBAB/F/093/3 Verticals. Approximative division. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/094 Notation for the directive of multiplication.<br />
BAB/F/095 No sheet. Preceding sheet F/94 and subsequent sheet F/96 indicate that there is no notation numbered 95.<br />
itemBAB/F/096 Notations for the directive of division.<br />
itemBAB/F/096/1 Notation for the directive of division. Sheet 1 of 2.<br />
itemBAB/F/096/2 Notation of the directive introduced into division for approximative division. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/097 Notation of cards for multiplication, for multiplication without stepping, and for approximative multiplication.<br />
itemBAB/F/098 Notation of cards for division and approximative division.<br />
itemBAB/F/099 Cases of the combination of the algebraic and accidental sign.<br />
itemBAB/F/100 Addition.<br />
itemBAB/F/101 Addition.<br />
itemBAB/F/102 Notation for addition of any number of quantities, giving off and retaining every pair.<br />
itemBAB/F/103 Notations dealing with addition, division and multiplication. Notation for addition of any number of quantities, giving off and retaining at every addition. Sheet one of six.<br />
itemBAB/F/103/1 Untitled. Draft notes. Sheet two of six.<br />
itemBAB/F/103/2 Acting verticals in the variations of division and approximative division. Sheet three of six.<br />
itemBAB/F/103/3 Notation multiplication 108. Sheet four of six.<br />
itemBAB/F/103/4 Multiplication. Sheet five of six.<br />
itemBAB/F/103/5 Multiplication, division and addition for verticals. Sheet six of six.<br />
Contains<br />
itemBAB/F/104 Algebraic addition.<br />
itemBAB/F/105 Addition and subtraction with signs and position of the verticals.<br />
itemBAB/F/105/1 Addition and subtraction with signs. Give off arbitrarily. Sheet 1 of 2.<br />
itemBAB/F/105/2 Addition and subtraction with signs. Give off after each addition. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/106 Directive of Division, No. 1.<br />
itemBAB/F/107 Directive of multiplication, No. 1.<br />
itemBAB/F/108 Notations for multiplication.<br />
itemBAB/F/108/1 Multiplication. Sheet 1 of 4.<br />
itemBAB/F/108/2 Multiplication, continued. Sheet 2 of 4.<br />
itemBAB/F/108/3 Standard case of approximate multiplication. Sheet 3 of 4.<br />
itemBAB/F/108/4 Approximative multiplication, continued. Sheet 4 of 4.<br />
Contains<br />
itemBAB/F/109 Notations for division.<br />
itemBAB/F/109/1 Notation of division. Standard Case. Sheet 1 of 12.<br />
itemBAB/F/109/2 Division, continued. Sheet 2 of 12.<br />
itemBAB/F/109/3 Division, continued. Sheet 3 of 12.<br />
itemBAB/F/109/4 Approximative division. Standard case. Sheet 4 of 12.<br />
itemBAB/F/109/5 Approximative division, continued. Sheet 5 of 12.<br />
itemBAB/F/109/6 Approximative division, continued. Sheet 6 of 12.<br />
itemBAB/F/109/7 Approximative division, continued. Sheet 7 of 12.<br />
itemBAB/F/109/8 Approximative division, continued. Sheet 8 of 12.<br />
itemBAB/F/109/9 Approximative division, continued. Sheet 9 of 12.<br />
itemBAB/F/109/10 Approximative division, continued. Sheet 10 of 12.<br />
itemBAB/F/109/11 Approximative division, continued. Sheet 11 of 12.<br />
itemBAB/F/109/12 36 variations of approximative division. Sheet 12 of 12.<br />
Contains<br />
itemBAB/F/110 Verticals for multiplication. Notation 108.<br />
itemBAB/F/111 Verticals for division.<br />
itemBAB/F/111/1 Verticals for division. Sheet 1 of 4.<br />
itemBAB/F/111/2 Verticals for approximative division. Sheet 2 of 4.<br />
itemBAB/F/111/3 Verticals for approximative division. Sheet 3 of 4.<br />
itemBAB/F/111/4 Verticals for approximative division. Sheet 4 of 4.<br />
Contains<br />
itemBAB/F/112 Cases of common and approximative multiplication and division.<br />
itemBAB/F/112/1 Cases of common multiplication and their corresponding variations introduced. Sheet 1 of 7.<br />
itemBAB/F/112/2 Cases of approximative multiplication with the arbitrary variations introduced. Sheets 2 - 7 of 7.<br />
Contains<br />
itemBAB/F/113 Addition and subtraction of 120 figures.<br />
itemBAB/F/113/1 Addition and subtraction of 120 figures. Sheet 1 of 3.<br />
itemBAB/F/113/2 Addition and subtraction of 120 figures. Sheet 2 of 3.<br />
itemBAB/F/113/3 Addition and subtraction of 120 figures. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/114 Notation of cards for algebraic addition.<br />
itemBAB/F/115 Algebraic addition to suit notation 114. Unfinished. Superseded by notation 122.<br />
itemBAB/F/116 Algebraic addition if more than 40 figures.<br />
itemBAB/F/116/1 Algebraic addition if more than 40 figures. Cases 1 and 2. Sheet 1 of 6.<br />
itemBAB/F/116/2 Algebraic addition of more than 40 figures. Cases 3 and 4. Sheet 2 of 6.<br />
itemBAB/F/116/3 Algebraic addition if more than 40 figures. Cases 5 and 6. Sheet 3 of 6.<br />
itemBAB/F/116/4 Algebraic addition if more than 40 figures. Case 7. Sheet 4 of 6.<br />
itemBAB/F/116/5 Algebraic addition if more than 40 figures. Case 8. Sheets 5 and 6 of 6.<br />
Contains<br />
itemBAB/F/117 Notation of cards for algebraic addition if more than 40 figures.<br />
itemBAB/F/118 General notation of directive.<br />
itemBAB/F/119 Directive of Addition (Algebraic).<br />
itemBAB/F/120 No sheet according to the note 'none' on front page of BAB F/122.<br />
BAB/F/121 No sheet according to the note 'none' on front page of BAB F/122.<br />
itemBAB/F/122 Algebraic addition.<br />
itemBAB/F/123 Notation of cards for algebraic addition.<br />
itemBAB/F/124 General notation of possible trains.<br />
itemBAB/F/124/1 General notation of possible trains. Sheet 1 of 3.<br />
itemBAB/F/124/2 General notation of possible trains. Sheet 2 of 3.<br />
itemBAB/F/124/3 General notation of possible trains. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/125 Trains in addition in mill. Barrel divided for verticals.<br />
itemBAB/F/126 Trains in division.<br />
itemBAB/F/127 Cases of common and approximative multiplication and their corresponding variations introduced.<br />
itemBAB/F/128 Directive or courses of the verticals in common division.<br />
itemBAB/F/129 Trains for multiplication and variations of common and approximative multiplication.<br />
itemBAB/F/129/1 Trains of multiplication. Standard Case. Sheet 1 of 2.<br />
itemBAB/F/129/2 Trains of variations of common and approximative multiplication. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/130 Distribution of the verticals on different sets of barrels.<br />
itemBAB/F/131 Trains of division, variations and approximative division.<br />
itemBAB/F/131/1 Trains of division. Standard Case. Sheet 1 of 7.<br />
itemBAB/F/131/2 Trains of variations 1, 2, 3, 4 of division. Sheet 2 of 7<br />
itemBAB/F/131/3 Trains of variations 5, 6, 8, 9 of division. Sheet 3 of 7.<br />
itemBAB/F/131/4 Trains of variations 7 of division. Sheet 4 of 7.<br />
itemBAB/F/131/5 Trains of accidents in common division. Sheet 5 of 7.<br />
itemBAB/F/131/6 Trains of approximative division. Sheet 6 of 7.<br />
itemBAB/F/131/7 Trains of approximative division. Sheet 7 of 7.<br />
Contains<br />
itemBAB/F/132 Trains of addition.<br />
itemBAB/F/132/1 Trains of addition. Sheet 1 of 3.<br />
itemBAB/F/132/2 Trains of addition. Sheet 2 of 3.<br />
itemBAB/F/132/3 Trains of algebraic addition to suit Notation 105. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/133 Distribution of verticals of the large group of the mill on seven barrels.<br />
itemBAB/F/134 Trains ordered by one barrel, and verticals for one barrel, group "A.<br />
itemBAB/F/134/1 Trains ordered by one barrel on group "F and group "A. Sheet 1 of 2.<br />
itemBAB/F/134/2 Verticals for one barrel group "A. Sheet 2 of 2.<br />
Contains<br />
BAB/F/135 No sheet according to original notes on Notations 134 and 136.<br />
itemBAB/F/136 Verticals used on the seven barrels of the great group in division. Standard Case.<br />
itemBAB/F/137 Verticals on barrels for groups "F and "A and Table.<br />
itemBAB/F/138 Subsidiary operations on K combined with rack and "F executed during multiplication and division in mill.<br />
itemBAB/F/139 Trains on "F and I during operations in mill and store.<br />
itemBAB/F/139/1 Trains on "F and I during operations in the mill. Sheet 1 of 3<br />
itemBAB/F/139/2 Trains on "F and I during subsidiary operations in store. Sheet 2 of 3.<br />
itemBAB/F/139/3 Trains on "F and I during subsidiary operations in store. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/140 Steps of the trains in one barrel in group "F and I during operations in the mill and during subsidiary operations in the store.<br />
itemBAB/F/141 Enumeration of trains on groups I and "F.<br />
itemBAB/F/142 Enumeration of trains on groups A F consisting of the axes A F G I 1 I J L O S.<br />
itemBAB/F/143 Steps of the trains on barrels of great group for division. Standard Case.<br />
itemBAB/F/144 Trains of group "F I for division. Standard Case.<br />
itemBAB/F/145 Steps of trains on barrels of all the groups<br />
itemBAB/F/145/1 Steps of trains on barrels of all the groups. Sheet 1 of 5.<br />
itemBAB/F/145/2 Steps of trains on barrels of all the groups. Sheet 2 of 5.<br />
itemBAB/F/145/3 Steps of trains on barrels of all the groups. Sheet 3 of 5.<br />
itemBAB/F/145/4 Steps of trains on barrels of all the groups. Sheet 4 of 5.<br />
itemBAB/F/145/5 Steps of the trains. Sheet 5 of 5.<br />
Contains<br />
itemBAB/F/146 Enumeration of trains on groups I and "F.<br />
itemBAB/F/147 Directive of division.<br />
BAB/F/148 No sheet according to note on Notations 147 and 149.<br />
itemBAB/F/149 Algebraic addition.<br />
itemBAB/F/149/1 Algebraic addition. Sheet 1 of 4.<br />
itemBAB/F/149/2 Algebraic addition. Sheet 2 of 4.<br />
itemBAB/F/149/3 Algebraic addition. Sheet 3 of 4.<br />
itemBAB/F/149/4 Verticals on one great barrel for algebraic addition. Sheet 4 of 4.<br />
Contains<br />
itemBAB/F/150 Directive of algebraic addition.<br />
itemBAB/F/150/1 Directive of algebraic addition. Sheet 1 of 3.<br />
itemBAB/F/150/2 Directive of algebraic addition. Sheet 2 of 3.<br />
itemBAB/F/150/3 Directive of algebraic addition. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/151 Trains of algebraic addition.<br />
itemBAB/F/151/1 Trains of algebraic addition. Sheet 1 of 2.<br />
itemBAB/F/151/2 Trains of algebraic addition. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/152 Used while discussing the selecting apparatus.<br />
itemBAB/F/153 Used while discussing the selecting apparatus.<br />
itemBAB/F/154 Sketches of various notations.<br />
itemBAB/F/154/1 Sketches of various notations. Sheet 1 of 2.<br />
itemBAB/F/154/2 Sketches of various notations. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/155 Tables of multiples, et cetera.<br />
itemBAB/F/156 Used while discussing selectors.<br />
itemBAB/F/157 Used while discussing selectors.<br />
itemBAB/F/158 Selectors. Notation for setting the shades for the nine multiples of 04321 for number and complement.<br />
itemBAB/F/159 Selectors. Notation for setting the cams for the nine multiples of 04321.<br />
itemBAB/F/160 Notation and description of the carriage drawn on Notation 81.<br />
itemBAB/F/161 Selectors, drawings 82 and 83.<br />
itemBAB/F/161/1 Selectors, drawings 82 and 83, setting. Sheet 1 of 4.<br />
itemBAB/F/161/2 Selectors, drawings 82 and 83, using. Sheet 2 of 4.<br />
itemBAB/F/161/3 Selectors, drawings 82 and 83, using. Sheet 3 of 4.<br />
itemBAB/F/161/4 Selectors, drawings 82 and 83, reducing to zero. Sheet 4 of 4.<br />
Contains<br />
itemBAB/F/162 Used while discussing the selecting apparatus.<br />
itemBAB/F/163 Case of division used while discussing the selectors and selecting apparatus.<br />
itemBAB/F/163/1 Case of division used while discussing the selectors. Sheet 1 of 3.<br />
itemBAB/F/163/2 Case of division used while discussing the selecting apparatus. Sheet 2 of 3.<br />
itemBAB/F/163/3 Case of division used while discussing the selecting apparatus. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/164 General notation of directive. First Motion.<br />
itemBAB/F/165 Sketch of multiplication.<br />
itemBAB/F/166 Notations of multiplication.<br />
itemBAB/F/166/1 Notation of multiplication with hoarded carriages. Sheet 1 of 4.<br />
itemBAB/F/166/2 Notation of multiplication. Sheet 2 of 4.<br />
itemBAB/F/166/3 Notation of multiplication. Sheet 3 of 4.<br />
itemBAB/F/166/4 Notation of multiplication. Sheet 4 of 4.<br />
Contains<br />
itemBAB/F/167 Division.<br />
itemBAB/F/167/1 Division. One turn of hand for each figure of quotient. Two sets of selectors. Standard Case. Sheet 1 of 9.<br />
itemBAB/F/167/2 Division. Sheet 2 of 9.<br />
itemBAB/F/167/3 Division. Sheet 3 of 9.<br />
itemBAB/F/167/4 Division. Sheet 4 of 9.<br />
itemBAB/F/167/5 Division. Sheet 5 of 9.<br />
itemBAB/F/167/6 Division. Sheet 6 of 9.<br />
itemBAB/F/167/7 Division. Sheet 7 of 9.<br />
itemBAB/F/167/8 Division. Sheet 8 of 9.<br />
itemBAB/F/167/9 Division. Sheet 9 of 9.<br />
Contains<br />
itemBAB/F/168 Verticals for multiplication. Notation 166.<br />
itemBAB/F/169 Verticals for division as in Notation 167.<br />
itemBAB/F/170 Notations of algebraic addition. To suit Plan 25.<br />
itemBAB/F/170/1 Notation of algebraic addition. To suit Plan 25. Sheet 1 of 3.<br />
itemBAB/F/170/2 Notation of algebraic addition. Sheet 2 of 3.<br />
itemBAB/F/170/3 Notation of algebraic addition. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/171 Verticals for governing A et cetera for algebraic additions, notation 170.<br />
itemBAB/F/171/1 Verticals for governing A et cetera for algebraic additions, notation 170. Sheet 1 of 2.<br />
itemBAB/F/171/2 Verticals for governing A et cetera for algebraic additions, notation 170. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/172 Engine without control.<br />
itemBAB/F/173 Sketches of various notations.<br />
itemBAB/F/174 Sketches of various notations.<br />
itemBAB/F/175 Sketches of various notations.<br />
itemBAB/F/176 Division. Sketches of various notations.<br />
itemBAB/F/177 Used while discussing selecting apparatus for small Analytical Engine.<br />
itemBAB/F/178 Case of division illustrating the method of selecting + or - quotient figures with one set of selectors.<br />
itemBAB/F/179 Approximate Division. Standard case to suit Plan 26 Drawing 90 and case on Notation 178.<br />
itemBAB/F/180 Sketches of various notations.<br />
itemBAB/F/181 Sketches of various notations.<br />
itemBAB/F/182 Case of multiplication adapted to Notations 183 and 206.<br />
itemBAB/F/183 Multiplication. Sketches of Notations.<br />
itemBAB/F/184 Algebraic addition of K figures<br />
itemBAB/F/185 Sketches of algebraic addition.<br />
itemBAB/F/186 Sketches of algebraic addition.<br />
itemBAB/F/187 Algebraic addition of K figures.<br />
itemBAB/F/188 Sequences of the verticals for algebraic addition of k figures.<br />
itemBAB/F/188/1 Sequences of the verticals for algebraic addition of K figures. Sheet 1 of 2.<br />
itemBAB/F/188/2 Sequences of the verticals for algebraic addition of K figures. Sheet 2 of 2<br />
Contains<br />
itemBAB/F/189 Algebraic addition of K figures. Sequences of the verticals and the work ordered by each vertical.<br />
itemBAB/F/189/1 Algebraic addition of K figures. Sequences of the verticals and the work ordered by each vertical. Sheet 1 of 2.<br />
itemBAB/F/189/2 Algebraic addition of K figures. Sequences of the verticals and the work ordered by each vertical. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/190 Sketches of notations for algebraic addition. Case 1, 2 and 3.<br />
itemBAB/F/191 Directive of algebraic addition.<br />
itemBAB/F/192 Directive of algebraic addition.<br />
itemBAB/F/193 Algebraic addition. Sequences of the verticals.<br />
itemBAB/F/194 Algebraic addition.<br />
itemBAB/F/195 Algebraic addition.<br />
itemBAB/F/195/1 Algebraic addition. Sheet 1 of 3.<br />
itemBAB/F/195/2 Algebraic addition. Sheet 2 of 2.<br />
itemBAB/F/195/3 Algebraic addition. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/196 Algebraic addition.<br />
itemBAB/F/197 Algebraic addition.<br />
itemBAB/F/198 Work ordered by three barrels for algebraic addition of n times k figures.<br />
itemBAB/F/198/1 Work ordered by three barrels for algebraic addition of n times k figures. Sheet 1 of 2.<br />
itemBAB/F/198/2 Work ordered by three barrels for algebraic addition of n times k figures. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/199 Compound addition or addition of n k figures. Notation of cards for compound addition.<br />
itemBAB/F/200 Algebraic addition of n times k figures.<br />
itemBAB/F/200/1 Algebraic addition of n times k figures. Sheet 1 of 3.<br />
itemBAB/F/200/2 Algebraic addition of n times k figures. Sheet 2 of 3.<br />
itemBAB/F/200/3 Algebraic addition of n times k figures. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/201 Sequences of the verticals on each barrel for algebraic addition of k figures.<br />
itemBAB/F/202 Verticals on each barrel for algebraic addition of k figures.<br />
itemBAB/F/203 Sequences of the verticals on each barrel for algebraic addition of k figures.<br />
itemBAB/F/203/1 Sequences of the verticals on each barrel for algebraic addition of k figures. Sheet 1 of 2.<br />
itemBAB/F/203/2 Sequences of the verticals on each barrel for algebraic addition of k figures. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/204 Algebraic addition of k figures.<br />
itemBAB/F/205 Arithmetic examples of algebraic addition of n times k figures.<br />
itemBAB/F/206 Multiplication.<br />
itemBAB/F/206/1 Multiplication. Sheet 1 of 3.<br />
itemBAB/F/206/2 Multiplication. Sheet 2 of 3.<br />
itemBAB/F/206/3 Multiplication. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/207 Division.<br />
itemBAB/F/207/1 Division. Sheet 1 of 5.<br />
itemBAB/F/207/2 Division. Sheet 2 of 5.<br />
itemBAB/F/207/3 Division. Sheet 3 of 5.<br />
itemBAB/F/207/4 Division. Sheet 4 of 5.<br />
itemBAB/F/207/5 Accidents in division. Sheet 5 of 5.<br />
Contains<br />
itemBAB/F/208 Verticals for multiplication (as performed in Notation 206) on one barrel.<br />
itemBAB/F/209 Verticals for division (as performed in Notation 207) on one barrel.<br />
itemBAB/F/210 Axes, times and bands of the Analytical Engine.<br />
itemBAB/F/210/1 Axes, times and bands of the Analytical Engine. Sheet 1 of 2.<br />
itemBAB/F/210/2 Axes, times and bands of the Analytical Engine. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/211 Mill.<br />
itemBAB/F/211/1 Mill. Sheet 1 of 2.<br />
itemBAB/F/211/2 Mill. Cycles of 15 and 20. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/212 Algebraic addition of k figure.<br />
itemBAB/F/213 Algebraic addition of n times k figures.<br />
itemBAB/F/213/1 Algebraic addition of n times k figures. Sheet 1 of 5.<br />
itemBAB/F/213/2 Algebraic addition of n times k figures. Sheet 2 of 5.<br />
itemBAB/F/213/3 Algebraic addition of n times k figures. Sheet 3 of 5.<br />
itemBAB/F/213/4 Algebraic addition of n times k figures. Sheet 4 of 5.<br />
itemBAB/F/213/5 Algebraic addition of n times k figures. Sheet 5 of 5.<br />
Contains<br />
itemBAB/F/214 Sequences of the verticals in algebraic addition of n times k figures.<br />
itemBAB/F/215 Arithmetic examples of algebraic addition of n times k figures.<br />
itemBAB/F/215/1 Arithmetic examples of algebraic addition of n times k figures. Sheet 1 of 2.<br />
itemBAB/F/215/2 Arithmetic examples of algebraic addition of n times k figures. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/216 Sketches of notations. Table making for multiplication and division.<br />
itemBAB/F/217 Notation of the counting apparatus (Drawings 95 and 96) for division (Notation 218).<br />
itemBAB/F/218 Division.<br />
itemBAB/F/218/1 Division. Sheet 1 of 6.<br />
itemBAB/F/218/2 Division. Sheet 2 of 6.<br />
itemBAB/F/218/3 Division. Sheet 3 of 5.<br />
itemBAB/F/218/4 Division. Sheet 4 of 6.<br />
itemBAB/F/218/5 Division. Sheet 5 of 5.<br />
Contains<br />
itemBAB/F/219 Arithmetical example of multiplication as performed in Notation 220.<br />
itemBAB/F/220 Multiplication.<br />
itemBAB/F/220/1 Multiplication. Sheet 1 of 3.<br />
itemBAB/F/220/2 Multiplication. Sheet 2 of 3.<br />
itemBAB/F/220/3 Multiplication. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/221 Verticals for division as performed on Notation 218 arranged on one barrel.<br />
itemBAB/F/222 Verticals for multiplication as performed in Notation 220 arranged on one barrel.<br />
itemBAB/F/223 Reversing sign.<br />
itemBAB/F/224 Stepping ruled by operation cards.<br />
itemBAB/F/225 Multiplication of two factors, when the multiplicand has more than k, but both factors together not more than 2 k digits.<br />
itemBAB/F/226 Cards, et cetera for multiplication of a number having k + p digits by another number having not more than k - p digits.<br />
itemBAB/F/227 Reversing sign ascertaining if a variable is zero, ascertaining if a variable has a + or - sign (supersedes 223).<br />
itemBAB/F/228 Counting the digits in any variable P or in any number of variables P Q R et cetera.<br />
itemBAB/F/229 Stepping up.<br />
itemBAB/F/230 Stepping down.<br />
itemBAB/F/231 Multiplication with three multiples.<br />
itemBAB/F/231/1 Multiplication with three multiples. Sheet 1 of 2.<br />
itemBAB/F/231/2 Multiplication with three multiples. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/232 Notation of self-acting positive and negative consecutive carriage.<br />
itemBAB/F/233 Notation of units of consecutive half zero carriage.<br />
itemBAB/F/234 Notation of tens chains for the anticipating half and whole zero carriage.<br />
itemBAB/F/235 Notation of consecutive and half zero carriage.<br />
itemBAB/F/236 Anticipating half zero carriage. Addition and subtraction.<br />
itemBAB/F/236/1 Anticipating half zero carriage. Addition and subtraction by whole zero. Sheet 1 of 2.<br />
itemBAB/F/236/2 Anticipating half zero carriage. Addition and subtraction by half zero. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/237 Anticipating whole and half zero digit counting carriage (Drawing 106). Addition and subtraction by whole and half zero.<br />
itemBAB/F/238 Digit counting by carriage. Drawing 106.<br />
itemBAB/F/239 Trial of a method of division.<br />
itemBAB/F/240 Summary of multiplication.<br />
itemBAB/F/241 Division.<br />
itemBAB/F/242 Division. Working notation belonging to Summary No. 244 which superseded Notation 241.<br />
itemBAB/F/243 Working notation belonging to the summary of multiplication number 240.<br />
itemBAB/F/244 Summary of division.<br />
itemBAB/F/245 Summary of algebraic addition.<br />
itemBAB/F/246 Algebraic addition.<br />
itemBAB/F/247 Carriage.<br />
itemBAB/F/248 Stepping sketches.<br />
itemBAB/F/249 Vertical positions of the wheels.<br />
itemBAB/F/249/1 Vertical positions of the wheels in addition, subtraction, making table and multiplication. Sheet 1 of 5.<br />
itemBAB/F/249/2 Vertical position of the wheels for steppings in division and multiplication. Stepping up during division and giving off to selectors. This includes stepping up before division. Sheet 2 of 5.<br />
itemBAB/F/249/3 Vertical positions of the wheels in the final steppings in multiplication and preliminary steppings in division. Sheet 3 of 5.<br />
itemBAB/F/249/4 Vertical positions of the wheels. Sheet 4 of 5.<br />
itemBAB/F/249/5 Vertical positions of the wheels. Sheet 5 of 5.<br />
Contains<br />
itemBAB/F/250 Cycles for division, stepping, addition and subtraction.<br />
itemBAB/F/251 Cycle of units.<br />
itemBAB/F/251/1 Cycle of units. Sheet 1 of 3.<br />
itemBAB/F/251/2 Cycle of units. Sheet 2 of 3.<br />
itemBAB/F/251/3 Cycle of units. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/252 Vertical motions of the wheels and axes of Plan 28.<br />
itemBAB/F/253 Multiplication. Sketch from which Notations 259 and 268 were made.<br />
itemBAB/F/254 Sketch of division.<br />
itemBAB/F/255 Division. Periods of counting apparatus.<br />
itemBAB/F/256 Multiplication. Periods of counting apparatus.<br />
itemBAB/F/257 Mill decimal counting apparatus.<br />
itemBAB/F/258 Counting apparatus. Multiplication and division.<br />
itemBAB/F/259 Approximative multiplication.<br />
itemBAB/F/259/1 Approximative multiplication. Sheet 1 of 5.<br />
itemBAB/F/259/2 Approximative multiplication. Summary of multiplication. Sheet 2 of 5.<br />
itemBAB/F/259/3 Approximative multiplication. Sheet 3 of 5.<br />
itemBAB/F/259/4 Approximative multiplication. Sheet 4 of 5.<br />
itemBAB/F/259/5 Approximative multiplication. Sheet 5 of 5.<br />
Contains<br />
BAB/F/260 No sheet exists.<br />
itemBAB/F/261 Plan 28. Trains, vertical positions of the wheels and algebraic addition.<br />
itemBAB/F/261/1 Vertical positions of the wheels of Plan 28. Sheet 1 of 23.<br />
itemBAB/F/261/2 Vertical positions of the wheels of Plan 28. Sheet 2 of 23.<br />
itemBAB/F/261/3 Vertical positions of the wheels of Plan 28. Sheet 3 of 23.<br />
itemBAB/F/261/4 Vertical positions of the wheels of Plan 28. Sheet 4 of 23.<br />
itemBAB/F/261/5 Vertical positions of the wheels of Plan 28. Sheet 5 of 23.<br />
itemBAB/F/261/6 Vertical positions of the wheels of Plan 28. Sheet 6 of 23.<br />
itemBAB/F/261/7 Vertical positions of the wheels of Plan 28. Sheet 7 of 23.<br />
itemBAB/F/261/8 Vertical positions of the wheels of Plan 28. Sheet 8 of 23.<br />
itemBAB/F/261/9 Vertical positions of the wheels of Plan 28. Sheet 9 of 23.<br />
itemBAB/F/261/10 Vertical positions of the wheels of Plan 28. Sheet 3 of 23.<br />
itemBAB/F/261/11 Vertical positions of the wheels of Plan 28. Sheet 11 of 23.<br />
itemBAB/F/261/12 Vertical positions of the wheels of Plan 28. Sheet 12 of 23.<br />
itemBAB/F/261/13 Vertical positions of the wheels of Plan 28. Sheet 13 of 23.<br />
itemBAB/F/261/14 Vertical positions of the wheels of Plan 28 for multiplication. Sheet 14 of 23.<br />
itemBAB/F/261/15 Vertical positions of the wheels of Plan 28. Sheet 15 of 23.<br />
itemBAB/F/261/16 Vertical positions of the wheels of Plan 28 for algebraic addition of i k figures. Cycle ordered by vertical C of centre barrel. Sheet 16 of 23.<br />
itemBAB/F/261/17 Vertical positions of the wheels of Plan 28 for artificial stepping of divisor. Sheet 17 of 23.<br />
itemBAB/F/261/18 Vertical positions of the wheels of Plan 28 for algebraic addition of k figures. Sheet 18 of 23.<br />
itemBAB/F/261/19 Vertical positions of the wheels of Plan 28 algebraic addition of k figures. Sheet 19 of 23.<br />
itemBAB/F/261/20 Vertical positions of the wheels of Plan 28 for algebraic addition of i k figures. First part of cycles ordered by verticals n and 'n of centre barrel. Sheet 20 of 23.<br />
itemBAB/F/261/21 Algebraic addition of i k figures. Cycle ordered by vertical "a of centre barrel. Sheet 21 of 23.<br />
itemBAB/F/261/22 Algebraic addition of i k figures (General Plan 28). Latter part of cycles ordered by vertical 'n of centre barrel. Sheet 22 of 23.<br />
itemBAB/F/261/23 Algebraic addition of i k figures (General Plan 28). Cycle ordered by vertical ""s of centre barrel. Sheet 23 of 23.<br />
Contains<br />
itemBAB/F/262 Multiplication.<br />
itemBAB/F/262/1 Multiplication. Genealogy of variation of multiplication. Sheet 1 of 2.<br />
itemBAB/F/262/2 Multiplication. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/263 Multiplication.<br />
itemBAB/F/264 Multiplication.<br />
itemBAB/F/265 Multiplication.<br />
itemBAB/F/266 Verticals for multiplication. Notation 259.<br />
itemBAB/F/267 Counting apparatus. Approximative multiplication and division.<br />
itemBAB/F/268 Approximative and common multiplication for Plans 28 and 28a.<br />
itemBAB/F/268/1 Approximative multiplication for Plans 28 and 28a. Sheet 1 of 8.<br />
itemBAB/F/268/2 Approximative multiplication for Plan 28. Sheet 2 of 8.<br />
itemBAB/F/268/3 Approximative multiplication for Plan 28. Sheet 3 of 8.<br />
itemBAB/F/268/4 Approximative multiplication for Plan 28. Sheet 4 of 8.<br />
itemBAB/F/268/5 Approximative multiplication for Plan 28. Sheet 5 of 8.<br />
itemBAB/F/268/6 Approximative multiplication for Plan 28. Sheet 6 of 8.<br />
itemBAB/F/268/7 Approximative multiplication for Plan 28. Sheet 7 of 8.<br />
itemBAB/F/268/8 Common multiplication for Plan 28. Sheet 8 of 8.<br />
Contains<br />
itemBAB/F/269 First arrangement of the verticals for one barrel to do approximative multiplication.<br />
itemBAB/F/269/1 First arrangement of the verticals for one barrel to do approximative multiplication. Notation 268. Sheet 1 of 2.<br />
itemBAB/F/269/2 First arrangement of the verticals for common multiplication. Notation 268. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/270 Sketch of division.<br />
itemBAB/F/271 Cases of division to illustrate the method of selecting with the half zero apparatus.<br />
itemBAB/F/271/1 Cases of division to illustrate the method of selecting with the half zero apparatus. Sheet 1 of 2.<br />
itemBAB/F/271/2 Cases of division to illustrate the method of selecting with the half zero apparatus of Plan 28. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/272 Division. Rough drafts of parts of Notations 272 and 273.<br />
itemBAB/F/273 Directive for division. Four barrels.<br />
itemBAB/F/274 Directive for multiplication. Four barrels.<br />
itemBAB/F/275 Vertical movements of axes ordered by left and right barrels for multiplication.<br />
itemBAB/F/275/1 Vertical movements of axes ordered by right barrel for multiplication compiled in part from a genealogical notation. Sheet 1 of 3.<br />
itemBAB/F/275/2 Vertical movements of axes ordered by right barrel for multiplication compiled in part from a genealogical notation. Sheet 2 of 3.<br />
itemBAB/F/275/3 Vertical movements of axes ordered by left barrel for multiplication compiled in part from a genealogical notation. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/276 Vertical movements of axes ordered by barrels for division.<br />
itemBAB/F/276/1 Vertical movements of axes ordered by right barrel for division. Compiled from a genealogical notation. Sheet 1 of 3.<br />
itemBAB/F/276/2 Vertical movements of axes ordered by middle barrel for division. Sheet 2 of 3.<br />
itemBAB/F/276/3 Vertical movements of axes ordered by left barrel for division. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/277 Algebraic addition of k figures.<br />
itemBAB/F/278 Algebraic addition and algebraic subtraction.<br />
itemBAB/F/279 Algebraic addition of i k figures.<br />
itemBAB/F/280 General directive.<br />
itemBAB/F/281 General directive.<br />
itemBAB/F/282 Algebraic addition.<br />
itemBAB/F/283 Description of parts and their duties. Plan 28.<br />
itemBAB/F/284 Cards and barrels.<br />
itemBAB/F/285 Algebraic addition.<br />
itemBAB/F/286 Algebraic addition of k figures.<br />
itemBAB/F/287 Algebraic addition of k figures. Algebraic subtraction of k figures.<br />
itemBAB/F/288 Verticals on barrel of mill counting apparatus.<br />
itemBAB/F/289 Verticals for barrels for multiplication.<br />
itemBAB/F/289/1 Verticals for counting barrel for multiplication. Notation 268. Sheet 1 of 4.<br />
itemBAB/F/289/2 Verticals for right and table barrel for multiplication. Notation 268. Sheet 2 of 4.<br />
itemBAB/F/289/3 Verticals for left and middle barrels for multiplication. Notation 268. Sheet 3 of 4.<br />
itemBAB/F/289/4 Verticals for two barrels for counting apparatus for multiplication. Notation 268. Sheet 4 of 4.<br />
Contains<br />
itemBAB/F/290 Division as performed with General Plans 28 and 28a and mill counting apparatus.<br />
itemBAB/F/290/1 Division as performed with General Plans 28 and 28a and mill counting apparatus. Sheet 1 of 15.<br />
itemBAB/F/290/2 Division. Sheet 2 of 15.<br />
itemBAB/F/290/3 Division. Sheet 3 of 15.<br />
itemBAB/F/290/4 Division. Sheet 4 of 15.<br />
itemBAB/F/290/5 Division. Sheet 5 of 15.<br />
itemBAB/F/290/6 Division. Sheet 6 of 15.<br />
itemBAB/F/290/7 Division. Sheet 7 of 15.<br />
itemBAB/F/290/8 Division. Sheet 8 of 15.<br />
itemBAB/F/290/9 Division. Sheet 9 of 15.<br />
itemBAB/F/290/10 Division. Sheet 10 of 15.<br />
itemBAB/F/290/11 Division. Sheet 11 of 15.<br />
itemBAB/F/290/12 Division. Sheet 12 of 15.<br />
itemBAB/F/290/13 Division. Sheet 13 of 15.<br />
itemBAB/F/290/14 Division. Sheet 14 of 15.<br />
itemBAB/F/290/15 Division. Sheet 15 of 15.<br />
Contains<br />
itemBAB/F/291 Verticals of the counting apparatus, table, right, middle and left barrels.<br />
itemBAB/F/291/1 Verticals of the counting apparatus barrel for division as performed with Plan 28, Notation 290 and mill counting apparatus sketched on Drawings 125 and 126. Sheet 1 of 9.<br />
itemBAB/F/291/2 Verticals of the counting apparatus barrel. Sheet 2 of 9.<br />
itemBAB/F/291/3 Verticals of the counting apparatus barrel. Sheet 3 of 9.<br />
itemBAB/F/291/4 Verticals of table barrel. Sheet 4 of 9.<br />
itemBAB/F/291/5 Verticals of right barrel. Sheet 5 of 9.<br />
itemBAB/F/291/6 Verticals of middle barrel. Sheet 6 of 9.<br />
itemBAB/F/291/7 Verticals of left barrel. Sheet 7 of 9.<br />
itemBAB/F/291/8 Verticals of the counting apparatus barrel number 1. Sheet 8 of 9.<br />
itemBAB/F/291/9 Verticals of the counting apparatus barrel number 2. Sheet 9 of 9.<br />
Contains<br />
itemBAB/F/292 Algebraic addition of k figures for algebraic card +.<br />
itemBAB/F/293 Algebraic addition.<br />
itemBAB/F/294 Algebraic addition.<br />
itemBAB/F/295 Algebraic addition of i k figures.<br />
itemBAB/F/296 Algebraic give off and retain for k figures.<br />
itemBAB/F/297 Algebraic addition.<br />
itemBAB/F/298 Algebraic addition.<br />
itemBAB/F/298/1 Algebraic addition. Sheet 1 of 2.<br />
itemBAB/F/298/2 Algebraic addition. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/299 Algebraic addition, give off and retain for General Plan 28.<br />
itemBAB/F/299/1 Algebraic addition give off and retain for General Plan 28. Sheet 1 of 2.<br />
itemBAB/F/299/2 Algebraic addition, give off and retain. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/300 Algebraic addition of i k figures. Multiplication.<br />
itemBAB/F/301 Algebraic addition of i k figures for General Plan 28.<br />
itemBAB/F/301/1 Algebraic addition of i k figures for General Plan 28 (Summary). Sheet 1 of 2.<br />
itemBAB/F/301/2 Algebraic addition of i k figures for General Plan 28 (Summary). Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/302 Algebraic addition with giving off (summary).<br />
itemBAB/F/303 Algebraic addition of k figures.<br />
itemBAB/F/304 Algebraic addition with giving off and retain.<br />
itemBAB/F/304/1 Algebraic addition with giving off. Sheet 1 of 2.<br />
itemBAB/F/304/2 Algebraic addition with giving off and retain. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/305 Algebraic addition of k figures with give off and without retaining for General Plan 28.<br />
itemBAB/F/306 Algebraic addition of k figures.<br />
itemBAB/F/306/1 Algebraic addition of k figures adapted to General Plan 28. Sheet 1 of 4.<br />
itemBAB/F/306/2 Algebraic addition of k figures. Sheet 2 of 4.<br />
itemBAB/F/306/3 Algebraic addition of k figures. Sheet 3 of 4.<br />
itemBAB/F/306/4 Algebraic addition of k figures. Sheet 4 of 4.<br />
Contains<br />
itemBAB/F/307 Verticals for algebraic addition of k figures.<br />
itemBAB/F/307/1 Verticals for algebraic addition of k figures. Sheet 1 of 2.<br />
itemBAB/F/307/2 Verticals for algebraic addition of k figures. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/308 Verticals for algebraic addition of k figures.<br />
itemBAB/F/308/1 Verticals for one barrel to do algebraic addition of k figures. Sheet 1 of 2.<br />
itemBAB/F/308/2 Verticals for algebraic addition of k figures. One barrel. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/309 Analytical Engine. Algebraic addition of k figures. One barrel.<br />
itemBAB/F/310 Analytical Engine. Algebraic addition of k figures.<br />
itemBAB/F/311 Algebraic addition of k figures.<br />
itemBAB/F/312 Algebraic addition of k figures. Three barrels.<br />
itemBAB/F/313 Verticals for one barrel to perform algebraic addition of k figures with General Plan 28.<br />
itemBAB/F/313/1 Verticals for one barrel to perform algebraic addition of k figures with General Plan 28. Sheet 1 of 2.<br />
itemBAB/F/313/2 Verticals for one barrel to perform algebraic addition of k figures with General Plan 28. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/314 Multiplication. One barrel.<br />
itemBAB/F/314/1 Multiplication. One barrel. Sheet 1 of 2.<br />
itemBAB/F/314/2 Multiplication. One barrel. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/315 Multiplication. One barrel.<br />
itemBAB/F/315/1 Multiplication. One barrel. Sheet 1 of 2.<br />
itemBAB/F/315/2 Multiplication. One barrel. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/316 List of verticals on one barrel for division (Notation 290) with the equivalent verticals on five barrels to order the same work.<br />
itemBAB/F/317 Genealogy of multiplication.<br />
itemBAB/F/317/1 Genealogy of multiplication. Sheet 1 of 2.<br />
itemBAB/F/317/2 Genealogy of multiplication. One barrel. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/318 Verticals for one barrel of 278 verticals to perform division with General Plan 28.<br />
itemBAB/F/318/1 Verticals for one barrel of 278 verticals to perform division with General Plan 28. Sheet 1 of 3.<br />
itemBAB/F/318/2 Verticals for one barrel of 278 verticals to perform division with General Plan 28. Sheet 2 of 3.<br />
itemBAB/F/318/3 Verticals for one barrel of 278 verticals to perform division with General Plan 28. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/319 List of verticals on one barrel for multiplication (Notation 268) with the equivalent verticals on five barrels to order the same work.<br />
itemBAB/F/320 Second arrangement of the verticals for one barrel to perform multiplication in the manner exhibited on Notation 268 and with General Plan 28 and 28a.<br />
itemBAB/F/321 Algebraic addition of i k figures.<br />
itemBAB/F/321/1 Algebraic addition of i k figures by the method described in Sketch Book Vol IV p 95 and with General Plan 28. Sheet 1 of 8.<br />
itemBAB/F/321/2 Algebraic addition of i k figures. Sheet 2of 8.<br />
itemBAB/F/321/3 Algebraic addition of i k figures. Sheet 3 of 8.<br />
itemBAB/F/321/4 Algebraic addition of i k figures. Sheet 4 of 8.<br />
itemBAB/F/321/5 Algebraic addition of i k figures. Sheet 5 of 8.<br />
itemBAB/F/321/6 Algebraic addition of i k figures. Sheet 6 of 8.<br />
itemBAB/F/321/7 Algebraic addition of i k figures. Sheet 7 of 8.<br />
itemBAB/F/321/8 Algebraic addition of i k figures. Sheet 8 of 8.<br />
Contains<br />
itemBAB/F/322 Verticals for algebraic addition of i k figures. Notation 321.<br />
itemBAB/F/322/1 Verticals of algebraic addition of i k figures. Notation 321. Sheet 1 of 3.<br />
itemBAB/F/322/2 Verticals of algebraic addition of i k figures. Notation 321. Sheet 2 of 3.<br />
itemBAB/F/322/3 Verticals of algebraic addition of i k figures. Notation 321. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/323 Verticals upon four barrels for algebraic addition of i k figures. Notation 321.<br />
itemBAB/F/323/1 Verticals upon four barrels for algebraic addition of i k figures. Notation 321. Sheet 1 of 2.<br />
itemBAB/F/323/2 Verticals upon four barrels for algebraic addition of i k figures. Notation 321. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/324 Notation of cycle wheels.<br />
itemBAB/F/325 Notation of units for Plan 28.<br />
itemBAB/F/326 Untitled. [Motions of axes and wheels of Plan 28]<br />
itemBAB/F/327 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268.<br />
itemBAB/F/327/1 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268. Sheet 1 of 4.<br />
itemBAB/F/327/2 Untitled. [Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268]. Sheet 2 of 4.<br />
itemBAB/F/327/3 Untitled. [Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268]. Sheet 3 of 4.<br />
itemBAB/F/327/4 Untitled. [Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for multiplication as performed in working Notation 268]. Sheet 4 of 4.<br />
Contains<br />
itemBAB/F/328 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for algebraic addition of k figures as performed in Notations 306 and 306x.<br />
itemBAB/F/329 Vertical position of the axes, wheels, et cetera, of right group of Plan 28 while performing multiplication as in Notation 268.<br />
itemBAB/F/330 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for algebraic addition of i k figures as performed in Notation 321.<br />
itemBAB/F/330/1 Vertical motions of the wheels and axes of the right, middle and left groups of Plan 28 for algebraic addition of i k figures as performed in Notation 321. Sheet 1 of 2.<br />
itemBAB/F/330/2 Vertical motions for algebraic addition of i k figures. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/331 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290.<br />
itemBAB/F/331/1 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290. Sheet 1 of 4.<br />
itemBAB/F/331/2 Untitled. [Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290]. Sheet 2 of 4.<br />
itemBAB/F/331/3 Untitled. [Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290]. Sheet 3 of 4.<br />
itemBAB/F/331/4 Untitled. [Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for division as performed in working Notation 290]. Sheet 4of 4.<br />
Contains<br />
itemBAB/F/332 Ascertaining if a variable = 0. Ascertaining if a variable has a + or - sign as performed by General Plans 28 and 28a.<br />
itemBAB/F/333 Finding the sum of the numbers of digits in two numbers P and Q and finding the difference of the numbers of digits in two numbers P and Q. Plans 28 and 28a.<br />
itemBAB/F/334 Differences as performed by General Plans 28 and 28a.<br />
itemBAB/F/334/1 Differences as performed by General Plans 28 and 28. Sheet 1 of 2.<br />
itemBAB/F/334/2 Differences as performed by General Plans 28 and 28a. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/335 Stepping up or down or multiplying or dividing by any power of ten. Plans 28 and 28a.<br />
itemBAB/F/335/1 Stepping up or down or multiplying or dividing by any power of ten. Plans 28 and 28a. Sheet 1 of 2.<br />
itemBAB/F/335/2 Stepping up or down or multiplying or dividing by any power of ten. Plans 28 and 28a. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/336 Notation of verticals for working Notations 332 and 333.<br />
itemBAB/F/337 Notation of verticals for differences (Notation 334) and stepping up or down Notation 335.<br />
itemBAB/F/338 Notation of units for General Plan 28. Superseded by 353.<br />
Contains<br />
itemBAB/F/339 List of cycles with their vertical motions.<br />
itemBAB/F/340 Vertical motions of cycles a and a e.<br />
itemBAB/F/341 Vertical motions of the wheels and axes of the centre group.<br />
itemBAB/F/341/1 Vertical motions of the wheels and axes of the centre group. Sheet 1 of 4.<br />
itemBAB/F/341/2 Vertical motions of the wheels and axes of the centre group. Plans 28 and 28a. Sheet 2 of 4.<br />
itemBAB/F/341/3 Vertical motions of the wheels and axes of the centre group. Sheet 3 of 4.<br />
itemBAB/F/341/4 Vertical motions of the wheels and axes of the centre group. Sheet 4 of 4.<br />
Contains<br />
itemBAB/F/342 Motions of some of the axes.<br />
itemBAB/F/343 Motions of some of the axes for Plan 28.<br />
itemBAB/F/343/1 Motions of some of the axes for Plan 28. Sheet 1 of 8.<br />
itemBAB/F/343/2 Motions of some of the axes for Plan 28. Sheet 2 of 8.<br />
itemBAB/F/343/3 Motions of some of the axes for Plan 28. Sheet 3 of 8.<br />
itemBAB/F/343/4 Motions of some of the axes for Plan 28. Sheet 4 of 8.<br />
itemBAB/F/343/5 Motions of some of the axes for Plan 28. Sheet 5 of 8.<br />
itemBAB/F/343/6 [Motions of some of the axes for Plan 28]. Sheet 6 of 8.<br />
itemBAB/F/343/7 [Motions of some of the axes for Plan 28]. Sheet 7 of 8.<br />
itemBAB/F/343/8 [Motions of some of the axes for Plan 28]. Sheet 8 of 8.<br />
Contains<br />
itemBAB/F/344 Lockings (circular) of Plan 28.<br />
itemBAB/F/344/1 Lockings (circular) of Plan 28. Sheet 1 of 2.<br />
itemBAB/F/344/2 [Lockings (circular) of Plan 28]. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/345 Vertical motions of the wheels and axes of the middle group of Plan 28a for algebraic addition of k figures as performed in Notations 306 and 306x.<br />
itemBAB/F/346 Vertical motions of the wheels and axes of the middle group of Plan 28 for algebraic addition of i k figures as performed in Notation 321.<br />
itemBAB/F/346/1 Vertical motions of the wheels and axes of the middle group of Plan 28 for algebraic addition of i k figures as performed in Notation 321. Sheet 1 of 2.<br />
itemBAB/F/346/2 Vertical motions for algebraic addition of i k figures. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/347 List of the vertical movements in the left middle and right groups.<br />
itemBAB/F/347/1 List of the vertical movements in the left middle and right groups. Sheet 1 of 2.<br />
itemBAB/F/347/2 List of the vertical movements in the left middle and right groups distributed by heights and cycles. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/348 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for multiplication as performed in working Notation 268<br />
itemBAB/F/348/1 Trains and vertical motions of the wheels and axes of the right, middle and left groups of Plan 28a for multiplication as performed in working Notation 268. Sheet 1 of 3.<br />
itemBAB/F/348/2 Trains and vertical motions for multiplication. Sheet 2 of 3.<br />
itemBAB/F/348/3 Trains and vertical motions for multiplication. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/349 Analysis of verticals on left group for multiplication.<br />
itemBAB/F/350 Lockings of Plan 28a.<br />
itemBAB/F/351 Notation of units for cycles of c (=18) and of 2c units used for counting the digits in multiplication and division.<br />
itemBAB/F/352 Vertical positions of some of the wheels of Plan 28a. Notation 348 cycles.<br />
itemBAB/F/352/1 Vertical positions of some of the wheels of Plan 28a. Notation 348 cycles. Sheet 1 of 13.<br />
itemBAB/F/352/2 Notation 348 cycle 18. Sheet 2 of 13.<br />
itemBAB/F/352/3 Notation 348 cycle 19. Sheet 3 of 13.<br />
itemBAB/F/352/4 Notation 348 cycle 20. Sheet 4 of 13.<br />
itemBAB/F/352/5 Notation 348 cycles 26 and 27. Sheet 5 of 13.<br />
itemBAB/F/352/6 Notation 348 cycle 26. Sheet 6 of 13.<br />
itemBAB/F/352/7 Notation 348 cycles 26 and 27. Sheet 7 of 13.<br />
itemBAB/F/352/8 Notation 348 cycle 26. Sheet 8 of 13.<br />
itemBAB/F/352/9 Notation 331 cycles 21 and 26. Sheet 9 of 13.<br />
itemBAB/F/352/10 Notation 331 cycle 23 and 24. Sheet 10 of 13.<br />
itemBAB/F/352/11 Untitled. [Vertical positions of some of the wheels of Plan 28a. Notation 348 and 331 cycles]. Sheet 11 of 13.<br />
itemBAB/F/352/12 Untitled. [Vertical positions of some of the wheels of Plan 28a. Notation 348 and 331 cycles]. Sheet 12 of 13.<br />
itemBAB/F/352/13 Untitled. [Vertical positions of some of the wheels of Plan 28a. Notation 348 and 331 cycles]. Sheet 13 of 13.<br />
Contains<br />
itemBAB/F/353 Notation of units for General Plan 28a.<br />
itemBAB/F/353/1 Notation of units for General Plan 28a. Sheet 1 of 6.<br />
itemBAB/F/353/2 Notation of units for General Plan 28a. Sheet 2 of 6.<br />
itemBAB/F/353/3 Notation of units for General Plan 28a. Sheet 3 of 6.<br />
itemBAB/F/353/4 Notation of units for General Plan 28a. Sheet 4 of 6.<br />
itemBAB/F/353/5 Notation of units for General Plan 28a. Sheet 5 of 6.<br />
itemBAB/F/353/6 Notation of units for mill counting apparatus drawings 125, 126 and 137 and for sign wheel drawing. Sheet 6 of 6.<br />
Contains<br />
itemBAB/F/354 Times of lockings in various cycles for Plan 28.<br />
itemBAB/F/354/1 Times of lockings in various cycles for Plan 28. Sheet 1 of 2.<br />
itemBAB/F/354/2 Untitled. [Times of lockings in various cycles for Plan 28]. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/355 Trains and vertical motions of the wheels and axes of the centre group for differences and of the right group for stepping up or down. Plan 28a.<br />
itemBAB/F/356 Untitled. [Verticals. Motions of the wheels and axes for Plan 28].<br />
itemBAB/F/356/1 Untitled. [Verticals. Motions of the wheels and axes for Plan 28]. Sheet 1 of 2.<br />
itemBAB/F/356/2 Untitled. [Verticals. Motions of the wheels and axes for Plan 28]. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/357 Duties of the calculating mechanism of left, centre and right groups of Plan 28a.<br />
itemBAB/F/357/1 Duties of the calculating mechanism of left, centre and right groups of Plan 28a. Right group. Sheet 1 of 11.<br />
itemBAB/F/357/2 Duties of the calculating mechanism of left, centre and right groups of Plan 28a. Right group. Sheet 2 of 11.<br />
itemBAB/F/357/3 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 3 of 11.<br />
itemBAB/F/357/4 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 4 of 11.<br />
itemBAB/F/357/5 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 5 of 11.<br />
itemBAB/F/357/6 Duties of the calculating mechanism of left, centre and right groups of Plan 28a. Centre group. Sheet 6 of 11.<br />
itemBAB/F/357/7 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 7 of 11.<br />
itemBAB/F/357/8 Duties of the calculating mechanism of Plan 28a. Centre group. Sheet 8 of 11.<br />
itemBAB/F/357/9 Duties of the calculating mechanism of Plan 28a. Left group. Sheet 9 of 11.<br />
itemBAB/F/357/10 Duties of the calculating mechanism of Plan 28a. Left group. Sheet 10 of 11.<br />
itemBAB/F/357/11 Duties of the calculating mechanism of Plan 28a. Left group. Sheet 11 of 11.<br />
Contains<br />
itemBAB/F/358 Analysis of the trains with reference to cycles and verticals.<br />
itemBAB/F/358/1 Analysis of the trains with reference to cycles and verticals. Right group. Sheet 1 of 3.<br />
itemBAB/F/358/2 Analysis of the trains with reference to cycles and verticals. Centre group. Sheet 2 of 3.<br />
itemBAB/F/358/3 Analysis of the trains with reference to cycles and verticals. Left group. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/359 Trains and vertical motions of the wheels and axes of the table group of Plan 28a for multiplication, as performed in working Notation 268 and for stepping up or down.<br />
itemBAB/F/360 Trains and vertical motions of the wheels and axes of the table group of Plan 28a for division, as performed in working Notation 290 and for ascertaining if a variable has a + or - sign.<br />
itemBAB/F/361 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for multiplication, as performed in the working Notation 268.<br />
itemBAB/F/361/1 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for multiplication, as performed in the working Notation 268. Sheet 1 of 2.<br />
itemBAB/F/361/2 Trains and vertical motions of the wheels and axes ordered by barrel no. 2 of the mill counting apparatus of Plans 28 and 28a for multiplication, as performed in the working Notation 268. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/362 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for division, as performed in working Notation 290.<br />
itemBAB/F/362/1 Trains and vertical motions of the wheels and axes ordered by barrel no. 1 of the mill counting apparatus of Plans 28 and 28a for division, as performed in working Notation 290. Sheet 1 of 2.<br />
itemBAB/F/362/2 Trains and vertical motions of the wheels and axes ordered by barrel no. 2 of the mill counting apparatus of Plans 28 and 28a for division, as performed in working Notation 290. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/363 Trains and vertical motions of the wheels and axes of the table group of Plan 28a for algebraic addition, as performed in working Notations 306 and 321.<br />
itemBAB/F/364 Notations of periods ready for copying.<br />
itemBAB/F/365 Notation of periods for table axes.<br />
itemBAB/F/366 Notation of periods for mill counting apparatus.<br />
itemBAB/F/367 Notation of periods for right group.<br />
itemBAB/F/367/1 Notation of periods for right group. Sheet 1 of 5.<br />
itemBAB/F/367/2 Notation of periods for right group. Sheet 2 of 5.<br />
itemBAB/F/367/3 Notation of periods for right group. Sheet 3 of 5.<br />
itemBAB/F/367/4 Notation of periods for right group. Sheet 4 of 5.<br />
itemBAB/F/367/5 Notation of periods for right group. Sheet 5 of 5.<br />
Contains<br />
itemBAB/F/368 Notation of periods for the centre group.<br />
itemBAB/F/369 Duties of the mill counting apparatus which require the cycle of 2c(=36) units for Plan 28a.<br />
itemBAB/F/369/1 Duties of the mill counting apparatus which require the cycle of 2c(=36) units for Plan 28a. Sheet 1 of 2.<br />
itemBAB/F/369/2 Duties of the mill counting apparatus which require the cycle of a(=12) units for Plan 28a. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/370 Duties of the calculating mechanism of Plan 28a table group.<br />
itemBAB/F/370/1 Duties of the calculating mechanism of Plan 28a table group. Sheet 1 of 2.<br />
itemBAB/F/370/2 Duties of the calculating mechanism of Plan 28a table group. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/371 Analysis of lockings.<br />
itemBAB/F/371/1 Analysis of lockings. Right Group. Sheet 1 of 4.<br />
itemBAB/F/371/2 Analysis of the lockings. Centre group. Sheet 2 of 4.<br />
itemBAB/F/371/3 Analysis. Sheet 3 of 4.<br />
itemBAB/F/371/4 Analysis of the lockings on the left group. Sheet 4 of 4.<br />
Contains<br />
itemBAB/F/372 Vertical motions for multiplication, division, addition and differences.<br />
itemBAB/F/372/1 Right group. Vertical motions arranged by cycles. Multiplication and division. Sheet 1 of 5.<br />
itemBAB/F/372/2 Untitled. [Vertical motions for multiplication and division]. Sheet 2 of 5.<br />
itemBAB/F/372/3 Centre group. Sheet 3 of 5.<br />
itemBAB/F/372/4 Mill counting apparatus. Vertical motions of the axes ordered by barrel no. 2. Sheet 4 of 5.<br />
itemBAB/F/372/5 Table group. Sheet 5 of 5.<br />
Contains<br />
itemBAB/F/373 Skeleton of vertical motions for all operations.<br />
itemBAB/F/373/1 Skeleton of vertical motions for all operations. Right groups. Multiplication and division from 372 Sheet 1. Sheet 1 of 3.<br />
itemBAB/F/373/2 Skeleton of vertical motions for all operations. Left group. Sheet 2 of 3.<br />
itemBAB/F/373/3 Skeleton of vertical motions for all operations. Centre group. Sheet 3 of 3.<br />
Contains<br />
itemBAB/F/374 Abstract of vertical motions arranged by cycles. Centre group.<br />
itemBAB/F/375 Combination of the cycles of the groups; right, centre, left, table.<br />
itemBAB/F/375/1 Combination of the cycles of the groups; right, centre, left, table, for multiplication. Sheet 1 of 2.<br />
itemBAB/F/375/2 Combination of the cycles of the groups, right, centre, left, table. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/376 Skeleton of vertical motions of left, centre, right, table groups and mill counting apparatus.<br />
itemBAB/F/376/1 Skeleton of vertical motions of left group. Sheet 1 of 6.<br />
itemBAB/F/376/2 Skeleton of vertical motions of centre group. Sheet 2 of 6.<br />
itemBAB/F/376/3 Untitled. [Skeleton of vertical motions of right group]. Sheet 3 of 6.<br />
itemBAB/F/376/4 Untitled. [Skeleton of vertical motions of table group. Sheet 4 of 6.<br />
itemBAB/F/376/5 Untitled. [Skeleton of vertical motions of mill counting apparatus barrel no. 1]. Sheet 5 of 6.<br />
itemBAB/F/376/6 Untitled.[Skeleton of vertical motions of mill counting apparatus barrel no. 2.] Sheet 6 of 6.<br />
Contains<br />
itemBAB/F/377 List of the combinations in multiplication performed in Notation 268, with the cycles in which they occur.<br />
itemBAB/F/378 List of the combinations in division performed as in Notation 290, with the cycles in which they occur.<br />
itemBAB/F/378/1 List of the combinations in division performed as in Notation 290, with the cycles in which they occur. Sheet 1 of 4.<br />
itemBAB/F/378/2 List of the combinations in division performed as in Notation 290, with the cycles in which they occur. Sheet 2 of 4.<br />
itemBAB/F/378/3 List, et cetera. [List of the combinations in division performed as in Notation 290, with the cycles in which they occur] Sheet 3 of 4.<br />
itemBAB/F/378/4 Untitled. [List of the combinations in division performed as in Notation 290, with the cycles in which they occur] Sheet 4 of 4.<br />
Contains<br />
itemBAB/F/379 List of the combinations in division performed as in Notation 290, with the cycles in which they occur.<br />
itemBAB/F/380 List of the cases in multiplication as performed in Notation no. 268.<br />
itemBAB/F/381 List of the cases in division as performed in Notation 290.<br />
itemBAB/F/382 Notation of units anticipating whole zero cycles by circular chain.<br />
itemBAB/F/383 Notation of units for Difference Engine calculating part.<br />
itemBAB/F/383/1 Notation of units for Difference Engine calculating part. Sheet 1 of 2.<br />
itemBAB/F/383/2 Notation of units for Difference Engine No. 2 calculating part. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/384 Notation of units for stereotype printing apparatus.<br />
itemBAB/F/385 Notation of units for Difference Engine No. 2.<br />
itemBAB/F/385/1 Notation of units for Difference Engine No. 2. Sheet 1 of 2.<br />
itemBAB/F/385/2 Notation of units for various methods of giving motion to Difference Engine No. 2. Sheet 2 of 2.<br />
Contains<br />
itemBAB/F/386 Directive. Difference Engine No. 2. [Genealogy]<br />
itemBAB/F/387 Analytical Engine. Notation of units of incommensurable cycle wheel.<br />
itemBAB/F/388 Notation of units of apparatus for combining incommensurable cycles (Drawing 142).<br />
Contains<br />
seriesBAB/G Cardboard drawings of the Analytical Engine<br />
itemBAB/G/001 General plan of Analytical Engine, quarter size.<br />
itemBAB/G/002 Rising platform and selectors for variable columns in store one to each half of store. Quarter size.<br />
itemBAB/G/003 Store variable selectors. Superseding drawing No 2.<br />
itemBAB/G/004 General plan of the Analytical Engine, half size.<br />
itemBAB/G/005 Whole zero anticipating carriage with one plate in each cage.<br />
itemBAB/G/006 Half zero anticipating carriage with three plates in each cage.<br />
itemBAB/G/007 Plans for the moulds for anticipating carriage.<br />
itemBAB/G/008 Mould for wheel of eighty teeth. Adding column.<br />
itemBAB/G/009 Mould for warning pinion.<br />
itemBAB/G/010 Untitled, appears to represent the printing mechanism.<br />
itemBAB/G/011 Print apparatus as made in the large model.<br />
itemBAB/G/012 Probably a plan of carriage and figure columns.<br />
itemBAB/G/013 Plan of motion for carriage slide.<br />
itemBAB/G/014 Details of carriage.<br />
itemBAB/G/015 Motion for carrying the tens, plus and minus.<br />
Contains<br />
seriesBAB/H Notation of units of the Difference Engine No. 2.<br />
itemBAB/H/001 Sheet 1 showing driving, odd difference sectors, circular motion and vertical motion.<br />
itemBAB/H/002 Sheet 2 showing odd difference figure wheels, circular motion, vertical motion; locking of odd difference figure wheels and odd difference warnings, circular motion.<br />
itemBAB/H/003 Sheet 3 showing odd difference warnings, vertical motion; even difference sectors, circular motion, vertical motion and even difference figure wheels, circular motion.<br />
itemBAB/H/004 Sheet 4 showing even difference figure wheels, vertical motion, locking of even difference figure wheels and even difference warnings, circular motion and vertical motion.<br />
itemBAB/H/005 Sheet 5 showing odd difference figure wheels; odd difference warnings; odd difference carriage; even difference sectors and even difference figure wheels.<br />
itemBAB/H/006 Sheet 6 showing even difference figure wheels; even difference warnings; large stereotype sectors, vertical motion and calculations conveyed to printing sectors, to large and small stereotype sectors.<br />
itemBAB/H/007 Sheet 7 showing locking of large stereotype sectors, printing sectors, figure racks, printing racks and small stereotype sector, vertical motion.<br />
itemBAB/H/008 Sheet 8 showing paper rollers, inking rollers, copper plate motion [column to column motion].<br />
itemBAB/H/009 Sheet 9 showing copper plate motion.<br />
Contains<br />
seriesBAB/I There is no physical material for this series although the reference was included in the previous finding aid.<br />
seriesBAB/J Draft notation of the Difference Engine No. 2<br />
itemBAB/J/001 Notation of units<br />
itemBAB/J/002 Notation of units<br />
itemBAB/J/003 Notation of units<br />
itemBAB/J/004 Notation of units. Circular motions of the calculating axes. Odd difference warnings and figure wheels.<br />
itemBAB/J/005 Notation of units. Vertical motions. Even and odd difference sectors.<br />
itemBAB/J/006 Notation of units.<br />
itemBAB/J/007 Notation of units. Vertical motions of the calculating axes. Even and odd difference warnings.<br />
itemBAB/J/008 Notation of units. Calculating axes.<br />
itemBAB/J/009 Notation of units.<br />
itemBAB/J/010 Notation of units.<br />
itemBAB/J/011 Notation of units.<br />
itemBAB/J/012 Notation of units.<br />
itemBAB/J/013 Notation of units.<br />
itemBAB/J/014 Notation of units.<br />
itemBAB/J/015 Notation of units. Motions of the printing apparatus.<br />
itemBAB/J/016 Notation of units.<br />
itemBAB/J/017 Notation of units.<br />
itemBAB/J/018 There is no archive material for this item although the reference was included in the previous finding aid.<br />
itemBAB/J/019 There is no archive material for this item although the reference was included in the previous finding aid.<br />
itemBAB/J/020 There is no archive material for this item although the reference was included in the previous finding aid. This is actually Notation F 386.<br />
itemBAB/J/021 General trains. Circular motion of axes.<br />
itemBAB/J/022 Trains. Vertical motions of axes.<br />
itemBAB/J/023 Printing and punching.<br />
itemBAB/J/024 Trains for stereotype frames.<br />
itemBAB/J/025 Times of action.<br />
itemBAB/J/026 General trains.<br />
itemBAB/J/027 General trains to be used with Sheets 1 to 4 of the special trains on drawing paper.<br />
itemBAB/J/028 Analytical and Difference Engine. Notations of units. Copper plate moving.<br />
itemBAB/J/029 There is no archive material for this item although the reference was included in the previous finding aid. This is actually notation F383/1.<br />
itemBAB/J/030 There is no archive material for this item although the reference was included in the previous finding aid. This is actually Notation F 383/2.<br />
itemBAB/J/031 Trains to stereotype.<br />
itemBAB/J/032 Commencement of trains.<br />
itemBAB/J/033 Printing. Analytical and Difference Engine.<br />
itemBAB/J/034 Direct trains. Third edition [possibly version].<br />
itemBAB/J/035 Complete analysis of trains. Second Edition [possibly version].<br />
itemBAB/J/036 Stereotype plate movements. Fourth Edition [possibly version].<br />
itemBAB/J/037 Calculating.<br />
itemBAB/J/038 Notation of units. First Edition [possibly version].<br />
itemBAB/J/039 The trains.<br />
itemBAB/J/040 The trains. Calculating. Second Edition [possibly version].<br />
itemBAB/J/041 Calculation.<br />
itemBAB/J/042 Comparison of two modes of moving matrix frame.<br />
itemBAB/J/043 Description of copper plate moving apparatus.<br />
itemBAB/J/044 Number of parts and working points.<br />
Contains<br />
seriesBAB/K Drawings of Difference Engine No. 1<br />
itemBAB/K/003 Frame for holding the copper.<br />
itemBAB/K/058 Framing plate and details of rejected plans.<br />
itemBAB/K/062 Calculating machine.<br />
itemBAB/K/079 End view of general platform and end framing plate.<br />
itemBAB/K/087 End views of printing part, frame and castor.<br />
itemBAB/K/094 Wheel for three figure motion, indispensable element.<br />
itemBAB/K/001 End view of printing part nearly all of which has been altered since this was drawn.<br />
itemBAB/K/002 Endless screw, clutches, etc. for moving the copper.<br />
itemBAB/K/027 Plan of machinery intended to be attached to planing machine.<br />
itemBAB/K/029 First 60 wheel & 7 levers - old plan.<br />
itemBAB/K/031 Calculating Machine.<br />
itemBAB/K/033 Type Sectors.<br />
itemBAB/K/034 Forces of punches.<br />
itemBAB/K/040 Untitled.<br />
itemBAB/K/042 Levers for cones, single teeth, &c.<br />
itemBAB/K/043 3 figure motion.<br />
itemBAB/K/044 Untitled.<br />
itemBAB/K/071 untitled<br />
itemBAB/K/075 Untitled<br />
itemBAB/K/077 Untitled<br />
itemBAB/K/078 Endviews of general platform. Plan of framing plates next type sector etc.<br />
itemBAB/K/080 Untitled<br />
itemBAB/K/081 Untitled<br />
itemBAB/K/082 Untitled<br />
itemBAB/K/083 Untitled<br />
Contains<br />
seriesBAB/L Notations of calculations for the Analytical Engine<br />
itemBAB/L/001 Solution of two simultaneous equations<br />
itemBAB/L/002 Notation for the coefficients of the powers of x. Computation of the coefficients of a polynomial from those of another divided by a linear term.<br />
itemBAB/L/003 Computation of the coefficients of a polynomial from those of another divided by a quadratic term<br />
itemBAB/L/004 Solution of a single linear equation and reduction of two simultaneous equations in two variables to two independent linear equations.<br />
itemBAB/L/005 Reduction of three simultaneous equations in three variables to two simultaneous equations in two variables.<br />
itemBAB/L/006 Reduction of three simultaneous equations in three variables to two simultaneous equations in two variables.<br />
itemBAB/L/007 Reduction of four simultaneous equations in four variables to three simultaneous equations in three variables.<br />
itemBAB/L/008 Tabulation of a quadratic by differences. Calculation of a rational integral function of the second degree by differences.<br />
itemBAB/L/009 Tabulation of a cubic by differences.<br />
itemBAB/L/010 Tabulation of a quartic by differences.<br />
itemBAB/L/011 Generation of terms of a series by a recurrence relation based on terms of other series.<br />
itemBAB/L/012 Generation of terms of a series by a recurrence relation based on quadratic functions.<br />
itemBAB/L/013 Generation of the coefficients in the product of two polynomials.<br />
itemBAB/L/014 Generation of the coefficients in the product of two cosine series.<br />
itemBAB/L/015 Notation for determining the value of x from the three equations. Successive reduction of three simultaneous equations in three variables to find the solution for one variable.<br />
itemBAB/L/016 Successive reduction of simultaneous equations.<br />
itemBAB/L/016/1 Sheet 1. Successive reduction of three simultaneous equations in three variables to find the solution for one variable.<br />
itemBAB/L/016/2 Sheet 2. Successive reduction of five simultaneous equations in five variables to find the solution for one variable.<br />
Contains<br />
itemBAB/L/017 Notation for computing the elliptic radius vector by having the eccentricity and the mean anomaly.<br />
itemBAB/L/018 Notation for computing the elliptic radius vector by having the eccentricity and the mean anomaly.<br />
itemBAB/L/019 Notation of the reduction of the four equations. Reduction of four simultaneous equations in four variables to three simultaneous equations in three variables.<br />
itemBAB/L/020 Notation of the reduction of the three equations. Successive reductions of three simultaneous equations in three variables to find the value of one variable.<br />
itemBAB/L/021 Reduction of the four equations. Reduction of four simultaneous equations in four variables to three simultaneous equations in three variables.<br />
itemBAB/L/022 Reduction of the three equations. Successive reductions of three simultaneous equations in three variables to find the value of one variable.<br />
itemBAB/L/023 Notation of a formula for multiplication. Use of combinatorial cards in the computation of the coefficients in the product of two polynomials.<br />
itemBAB/L/024 Generation of terms of a series by recurrence relations based on quadratic and linear functions.<br />
itemBAB/L/025 Algebraic notation. Tabulation of the elliptic radius vector from the eccentricity and the mean anomaly.<br />
itemBAB/L/026 Calculation of the numerical value of a formula. Computation of a simple formula by two methods.<br />
itemBAB/L/027 List of variables, their signs and coefficients.<br />
Contains<br />
seriesBAB/M Stereotype drawings<br />
Contains<br />
seriesBAB/N History Sheets of the Analytical Engine<br />
itemBAB/N/001 History: beginning of September 1834 to the end of December 1834, both inclusive.<br />
itemBAB/N/002 History sheet for 1835<br />
itemBAB/N/003 History sheet for 1836<br />
itemBAB/N/004 History.<br />
itemBAB/N/005 History.<br />
itemBAB/N/006 History.<br />
itemBAB/N/007 History.<br />
itemBAB/N/008 History.<br />
itemBAB/N/009 History.<br />
itemBAB/N/010 History.<br />
itemBAB/N/011 History.<br />
itemBAB/N/012 History.<br />
itemBAB/N/013 History.<br />
itemBAB/N/014 History.<br />
itemBAB/N/015 History.<br />
itemBAB/N/016 History.<br />
itemBAB/N/017 History.<br />
itemBAB/N/018 History.<br />
itemBAB/N/019 History.<br />
itemBAB/N/020 History.<br />
itemBAB/N/021 History.<br />
itemBAB/N/022 History.<br />
Contains<br />
seriesBAB/O Formulas relating to programs<br />
itemBAB/O/001 Multinomial or Polynomial Theorem<br />
itemBAB/O/002 Untitled. [Algebraic developments relating to various calculations]<br />
itemBAB/O/003 Untitled. [Algebraic developments relating to various calculations]<br />
itemBAB/O/004 Sturm's Theorem.<br />
itemBAB/O/005 [Table of figures] from Mr. Barnett.<br />
Contains<br />
seriesBAB/P Drawings of the Analytical Engine, Second Phase.<br />
itemBAB/P/046 A rough draft of apparatus for reducing the two top figures to zero. Each sketch is superseded by Figures 1 and 2. Sketch of carriage with joint in frame. See Figures 3 and 4.<br />
itemBAB/P/159 Analytical Engine (appears incomplete).<br />
itemBAB/P/160 General Plan. Sheet 42.<br />
itemBAB/P/161 Elevation of the Analytical Engine. Counting and stepping apparatus.<br />
itemBAB/P/162 Untitled. Shows plans and elevations of store wheels, mill, mill wheel cages, carriages and framing.<br />
itemBAB/P/163 Elevations and plans of printing apparatus. Experimental sketches for mill and store plans.<br />
itemBAB/P/164 Plan of part of the Analytical Engine. Quarto size.<br />
itemBAB/P/165 Combination of cams, platform and stop bolts. Selectors for table. Elevation.<br />
itemBAB/P/166 Parts of plan, elevation and section of rising platforms for store. Superseded in following sheet.<br />
itemBAB/P/167 Plan of bolts for store.<br />
itemBAB/P/168 Plan and side elevation of table axis with combination of cams and platforms. Plan and end elevation of mill showing a combination of cams, platforms, stop bolts and barrels.<br />
itemBAB/P/169 Rough draft of mill and driving without platforms.<br />
itemBAB/P/170 Untitled, probably plan and elevation.<br />
itemBAB/P/171 Sketches of axes, bolts and levers.<br />
itemBAB/P/172 Untitled. Probably sketch of various cam apparatus.<br />
itemBAB/P/173 Driving of mill axis. Appears incomplete.<br />
itemBAB/P/174 Untitled. Appears to be a machine tool slide.<br />
itemBAB/P/175 A figure wheel around which a carriage could be arranged.<br />
itemBAB/P/176 Untitled. Probably a plan and elevation.<br />
itemBAB/P/177 Improved table for shaping machine.<br />
itemBAB/P/178 Detailed sketches of moving parts. Untitled.<br />
itemBAB/P/179 Hoarding and anticipating carriages.<br />
itemBAB/P/180 Hoarding carriage.<br />
itemBAB/P/190 Untitled details. Incomplete.<br />
itemBAB/P/191 Untitled details. Incomplete.<br />
itemBAB/P/192 No. 6 half ten. No. 7 whole zero. Incomplete details.<br />
itemBAB/P/193 Circular half zero carriage. Plans No. 8 - 10.<br />
itemBAB/P/194 Selectors for division and multiplication.<br />
itemBAB/P/195 Counting digits, end elevation and printing side elevation.<br />
itemBAB/P/196 Figure No. 11. Half zero carriage with hoarding. Incomplete details.<br />
itemBAB/P/197 Plans for store variables.<br />
itemBAB/P/198 Adding column with motion for changing from plus to minus. Incomplete.<br />
itemBAB/P/199 Untitled. A model of six cages was made from this drawing. Incomplete.<br />
itemBAB/P/200 Whole zero and half zero, three figures.<br />
itemBAB/P/201 Whole zero and half zero.<br />
itemBAB/P/202 Half size plan and side elevation of three moveable platforms. Of which the two levers are abolished.<br />
itemBAB/P/203 Plans for figure wheels, area for reducing to neutral position, carriage axes and locking arms.<br />
itemBAB/P/205 Untitled plan and elevation. Incomplete.<br />
itemBAB/P/207 Plan and elevation of bolts for each axis in the mill and motion for raising platform.<br />
itemBAB/P/210 Motions for reducing the two upper figures to zero in division.<br />
Contains<br />
seriesBAB/Q Miscellaneous mechanical notations<br />
itemBAB/Q/001 Specimens of description.<br />
itemBAB/Q/001/1 Principles to be followed in the description of the constituent portions of the Analytical Engine.<br />
itemBAB/Q/001/2 Adding apparatus description.<br />
Contains<br />
itemBAB/Q/002 On putting letters to drawings, in draft.<br />
itemBAB/Q/003 Drafts and rough notes.<br />
itemBAB/Q/003/1 Mechanical notation<br />
itemBAB/Q/003/2 Rough notes and sketches, including drawings of Babbage's game 'Tit Tat Toe'.<br />
Contains<br />
itemBAB/Q/004 Untitled. [Arrows indicating different forms of drive and connection].<br />
itemBAB/Q/005 Untitled [Arrows indicating different forms of drive and connection].<br />
itemBAB/Q/006 Untitled [Arrows indicating different forms of drive and connection].<br />
itemBAB/Q/007 Rough notes of algebraic formulae, including some symbols of form.<br />
Contains<br />
seriesBAB/R Catalogues and indexes of Babbage's papers relating to his calculating engines<br />
itemBAB/R/001 Index to drawings<br />
itemBAB/R/002 Index to drawings No. 1 to 62, describing the figures in each drawing.<br />
itemBAB/R/003 The drawings of the new engine arranged according to the subjects in an alphabetical order.<br />
itemBAB/R/004 The drawings of the New Engine arranged according to the subjects alphabetically. Analytical.<br />
itemBAB/R/005 Catalogue of the drawings of the New Analytical Engine.<br />
itemBAB/R/006 List of notations copied and read off.<br />
itemBAB/R/007 Catalogue of 386 notations with their classification.<br />
itemBAB/R/008 List of designs. Cross reference list, showing numbers of drawings, pages of sketch books and numbers of notations.<br />
itemBAB/R/009 Duplicate. Index to the drawings. Cross reference list.<br />
itemBAB/R/010 Corrected printed proofs and sheets of lists in H.P. Babbage's 'Calculating Engines', enclosed in a manuscript cover. It includes a manuscript list of tool drawings.<br />
itemBAB/R/011 Corrected printed proof sheets for the catalogue of notations in H.P. Babbage's 'Calculating Engines'.<br />
itemBAB/R/012 List of notations and drawings in the tin case. Taken to Turin in 1840.<br />
itemBAB/R/013 List of sizes of the notations of the Analytical Engine.<br />
itemBAB/R/014 List of plates.<br />
Contains<br />
seriesBAB/T Universal Machine Tool<br />
itemBAB/T/001 Universal Tool Notebook.<br />
itemBAB/T/001/1 First of the six 'Universal Tool' sheets.<br />
itemBAB/T/001/2 Continuation of sheet T/1/1<br />
itemBAB/T/001/3 Continuation of sheet T/1/2. Second Edition.<br />
itemBAB/T/001/4 Continuation of sheet T/1/3<br />
itemBAB/T/001/5 Continuation of sheet T/1/4<br />
itemBAB/T/001/6 Continuation of sheet T/1/5<br />
Contains<br />
itemBAB/T/002 Section through cross slide with part of its elevation. Drawing. Sheet 3.<br />
itemBAB/T/003 Tool holder for universal machines. Drawing.<br />
Contains<br />
seriesBAB/U Difference Engine No. 1. Drawings, notations, manuscripts and printed extracts.<br />
itemBAB/U/001 Plan and side elevation of Difference Engine.<br />
itemBAB/U/002 End elevation of the Difference Engine.<br />
itemBAB/U/003 Copy of drawing of end elevation of the lower portion of the calculating part of the Difference Engine.<br />
itemBAB/U/004 End elevation. Difference Engine 1823 - 1833. Drive.<br />
itemBAB/U/005 Plan of Difference Engine 1823 - 1833. Calculating part.<br />
itemBAB/U/006 First Difference Engine before 1834. Incomplete and unfinished notation, includes 'C.B. 1849' in the title.<br />
itemBAB/U/007 Untitled notations.<br />
itemBAB/U/008 Number no longer in use. Re-numbered as BAB U/3.<br />
itemBAB/U/009 Number no longer in use. Re-numbered as BAB U/1[a].<br />
itemBAB/U/010 Number no longer in use. Re-numbered as BAB U/1[b].<br />
itemBAB/U/011 Number no longer in use. Re-numbered as BAB U/2[a] and BAB U/2[b].<br />
itemBAB/U/012 Timing notation of calculating part.<br />
itemBAB/U/013 Extracts in French from M. de Prony's tables.<br />
itemBAB/U/014 Printed broad sheet entitled 'Babbage's Calculating Machine' by B. Herschel Babbage.<br />
Contains<br />
seriesBAB/V Difference Engine No. 2. Notations and indexes.<br />
itemBAB/V/001 Motions of the calculating part of the Difference Engine.<br />
itemBAB/V/002 Notations of positions (vertical) for a Difference Engine as seen in drawings 180 - 183.<br />
itemBAB/V/003 Difference Engine index of parts.<br />
itemBAB/V/004 Index of Difference Engine No. 2.<br />
itemBAB/V/005 Index of Difference Engine No. 2<br />
Contains<br />
seriesBAB/W Draft notes and drawings relating to the first phase of work on the Analytical Engine from 1833-1848<br />
itemBAB/W/001 A draft drawing labelled 'Sheet 3', showing card adding axis, mill adding axis, figure wheels, warning bar and lever and tens lifting slide.<br />
itemBAB/W/002 List of letters with the numbers of the drawings on which they occur.<br />
itemBAB/W/002/1 List of letters with the numbers of the drawings on which they occur. Sheet 1.<br />
itemBAB/W/002/2 List of letters with the numbers of the drawings on which they occur. Sheet 2.<br />
Contains<br />
itemBAB/W/003 The drawings of the New Engine arranged according to the subjects, alphabetically. Re-catalogued as BAB R/3 and BAB R/4.<br />
itemBAB/W/004 Trains of the Analytical Engine. Third Edition.<br />
itemBAB/W/005 Letters (mechanical notation) used to indicate the most important parts of Plan 28a.<br />
itemBAB/W/006 Abstracts of the various plans of the calculating engine.<br />
itemBAB/W/007 Figure for notation 181.<br />
itemBAB/W/008 Draft copy of Plan 28, dated 28 December 1842.<br />
itemBAB/W/009 Analytical Engine Plan 28. Scale 1/6. Draft.<br />
itemBAB/W/010 Counting apparatus. Arrangement of wheels.<br />
itemBAB/W/011 Scraps and sketches that have been copied. Probably refers to the Analytical Engine.<br />
Contains<br />
seriesBAB/X Draft sketches relating to the second phase of work on the Analytical Engine from 1857-1872<br />
itemBAB/X/001 Locking motions for carriage column.<br />
itemBAB/X/002 Sketch of driving.<br />
itemBAB/X/003 Sketch of mould for adding column collars.<br />
itemBAB/X/004 Sketch of framing for support cross driving axis and framing axis.<br />
itemBAB/X/005 Plan of the Analytical Engine. Includes representative timings.<br />
itemBAB/X/006 Untitled cardboard model.<br />
itemBAB/X/007 Sketch described as '32 teeth to be cut into this mould, 3/16 pitch'.<br />
itemBAB/X/008 Untitled. [Drawings of cams]<br />
itemBAB/X/009 Untitled rough sketch of machine parts.<br />
itemBAB/X/010 Special trains of notation for anticipating carriage of the Analytical Engine. Sheet No. 1.<br />
Contains<br />
seriesBAB/Y Miscellaneous papers relating to H.P. Babbage's 'Mill' of the Analytical Engine<br />
itemBAB/Y/001 Machine patterns for Machines 1 - 4, comprising four sheets<br />
itemBAB/Y/001/1 My Machine I pattern for cast iron (base) ...<br />
itemBAB/Y/001/2 My Machine 1888 II Plan of driving cams, levers, etc. in initial position.<br />
itemBAB/Y/001/3 My Machine 1889 III Development of driving cams.<br />
itemBAB/Y/001/4 My Machine 1883 - 1895 IV Copied and corrected from a former drawing.<br />
ContainsContains<br />
seriesBAB/Z Papers relating to the Scheutz's Difference Engine<br />
itemBAB/Z/001 Drawings of the Difference Engine, comprising four sheets.<br />
itemBAB/Z/001/1 Drawing of the Difference Engine<br />
itemBAB/Z/001/2 Drawing. Sheet 2, unmounted<br />
itemBAB/Z/001/3 Drawing, sheet 3, un-mounted.<br />
itemBAB/Z/001/4 Drawing, sheet 4, un-mounted.<br />
Contains<br />
itemBAB/Z/002 Part of the end view of the Difference Engine<br />
Contains<br />
seriesBAB/S Sketch books and scribbling books<br />
sub-seriesBAB/S/1 First series of scribbling books of notations, sketches and calculations of the Difference and Analytical Engines<br />
itemBAB/S/1/01 Tool Book. Volume I. Discussion and sketches of tools.<br />
itemBAB/S/1/02 Scribbling Book Volume II<br />
itemBAB/S/1/03 Sketch Book Volume III<br />
itemBAB/S/1/11 Scribbling Book Volume XI<br />
itemBAB/S/1/04 Sketch Book Volume IV<br />
itemBAB/S/1/05 Scribbling Book Volume V. Important matter of history in the Analytical Engine.<br />
itemBAB/S/1/06 Sketch Book Volume VI<br />
itemBAB/S/1/07 Scribbling Book Volume VII. Analytical Engine.<br />
itemBAB/S/1/08 Scribbling Book Volume VIII<br />
itemBAB/S/1/09 Scribbling Book Volume IX<br />
itemBAB/S/1/10 Scribbling Book Volume X.<br />
itemBAB/S/1/12 Scribbling Book Volume XII. List of parts of the Engine, before August 1821.<br />
itemBAB/S/1/13 Scribbling Book Volume XIII. Sketch of the history of the new calculating engine.<br />
itemBAB/S/1/14 Scribbling Book Volume XIV. Travelling Scribbling Book.<br />
itemBAB/S/1/15 Scribbling Book Volume XV. Containing various developments of series for the Analytical Engine, molecules elliptic, and various developments.<br />
itemBAB/S/1/16 Scribbling Book Vol XVI. Various analytical developments adapted to engine.<br />
Contains<br />
sub-seriesBAB/S/2 Second series of scribbling books of a later date.<br />
itemBAB/S/2/1 Scribbling Book Volume X<br />
itemBAB/S/2/2 Scribbling Book Vol XI. Drawing Office.<br />
itemBAB/S/2/3 Scribbling Book Volume XIA.<br />
itemBAB/S/2/4 Scribbling Book Volume XII. Drawing Office.<br />
Contains<br />
sub-seriesBAB/S/3 Third series of scribbling books<br />
itemBAB/S/3/1 Untitled.[Rough sketches of machine parts and tools].<br />
itemBAB/S/3/2 Untitled.<br />
itemBAB/S/3/3 Untitled. [Operations for the Analytical Engine]<br />
itemBAB/S/3/4 Untitled. [Notations 224 and 321. List of operations.]<br />
Contains<br />
sub-seriesBAB/S/4 Bound notebooks of draft notations and sketches of notations.<br />
itemBAB/S/4/1 Draft Notations and Sketches of Notations.<br />
itemBAB/S/4/2 Draft Notations and Sketches of Notations: Cases<br />
itemBAB/S/4/3 Draft Notations and Sketches of Notations<br />
ContainsContainsContains<br />
seriesBAB/M Stereotype drawings<br />
itemBAB/M/001 Plan of the figure wheels for one method of adding numbers.<br />
itemBAB/M/002 Adding axis and wheels without framing<br />
itemBAB/M/003 Frame of adding wheels<br />
itemBAB/M/004 Section of adding wheels and framing.<br />
itemBAB/M/005 Section of adding and sign axes and wheels frames, et cetera. Complete.<br />
itemBAB/M/006 Impression from original wood cut from which No. 7 is a stereotype plate with letters and signs inserted.<br />
itemBAB/M/007 Stereotype cast from wooden block No. 6 with letters and signs inserted.<br />
itemBAB/M/008 Plan of adding wheels, and of long and short pinions.<br />
itemBAB/M/009 Long pinions in the position for adding. Adding wheels and short pinions behind long pinions.<br />
itemBAB/M/010 Long pinions in the position for stepping. Adding wheels and short pinions behind long wheels.<br />
itemBAB/M/011 Plan of carriage by anticipation.<br />
itemBAB/M/012 Fixed and moveable wires of the anticipating carriage. One third the real wire.<br />
itemBAB/M/013 Carriage by anticipation.<br />
itemBAB/M/014 Description of the mechanism for addition.<br />
Contains</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Indian_head_car_ornament&diff=2247Indian head car ornament2016-04-11T04:25:09Z<p>SteveBaker: </p>
<hr />
<div><center>[[File:IMG_3514.JPG|600px]]</center><br />
<gallery><br />
File:IMG_3513.JPG<br />
File:IMG_3514.JPG<br />
File:IMG_3515.JPG<br />
File:IMG_3516.JPG<br />
File:IMG_3517.JPG<br />
File:IMG_3518.JPG<br />
File:IMG_3519.JPG<br />
File:IMG_3520.JPG<br />
</gallery><br />
Object is approx 10cm tall, 8cm wide and has a 2.8cm hole in the base. It's very heavy and appears to be made from chrome plated brass. We believe it's a car hood/bonnet ornament from a car that belonged to my great grandmother in England - probably sometime between 1920 and 1940.<br />
<br />
[[File:IndianHead.png|right|300px]]<br />
An identical hood ornament was sold in Paris, described as: "''Mascotte "'''Tête d'Indien'''" H. Briand éditeur à Paris. Bronze argenté. Monture déportée pour fixation d'un thermomètre. H : 8cm''" [http://www.artcurial.com/en/asp/fullCatalogue.asp?salelot=2107+++++++7+&refno=10378288 HERE]<br />
<br />
Briand was a pseudonym of the Art Deco sculptor Marcel Bouraine, working out of the Le Verrier foundry in Paris. And another "Tête d'Indien"; "Estimation €300 - €500 : Sold for €319. They have dated it to the 1920s. Briand also did cockerels, peacocks, snakes, Minerva's head and a cherub riding a pair of horses. It is considerably more valuable than the $35 to $60 that most car mascots sell for. The one in that auction photograph (at right here) is heavily worn - there are many places where the chrome has worn away, where mine is pristine. That presumably puts mine at the higher price point.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Indian_head_car_ornament&diff=2246Indian head car ornament2016-04-11T04:20:58Z<p>SteveBaker: </p>
<hr />
<div><center>[[File:IMG_3515.JPG|800px]]</center><br />
<gallery><br />
File:IMG_3513.JPG<br />
File:IMG_3514.JPG<br />
File:IMG_3515.JPG<br />
File:IMG_3516.JPG<br />
File:IMG_3517.JPG<br />
File:IMG_3518.JPG<br />
File:IMG_3519.JPG<br />
File:IMG_3520.JPG<br />
</gallery><br />
* Object is approx 10cm tall, 8cm wide and has a 2.8cm hole in the base. It's very heavy and appears to be made from chrome plated brass.<br />
* We believe it's a car hood/bonnet ornament from a car that belonged to my great grandmother in England - probably sometime between 1920 and 1940.<br />
[[File:IndianHead.png|right|300px]]<br />
* An identical hood ornament was sold in Paris, described as: "''Mascotte "'''Tête d'Indien'''" H. Briand éditeur à Paris. Bronze argenté. Monture déportée pour fixation d'un thermomètre. H : 8cm''" [http://www.artcurial.com/en/asp/fullCatalogue.asp?salelot=2107+++++++7+&refno=10378288 HERE]<br />
* Briand was a pseudonym of the Art Deco sculptor Marcel Bouraine, working out of the Le Verrier foundry in Paris. And another "Tête d'Indien"; "Estimation €300 - €500 : Sold for €319. They have dated it to the 1920s. Briand also did cockerels, peacocks, snakes, Minerva's head and a cherub riding a pair of horses. It is considerably more valuable than the $35 to $60 that most car mascots sell for. The one in that auction photograph (at right here) is heavily worn - there are many places where the chrome has worn away, where mine is pristine. That presumably puts mine at the higher price point.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Indian_head_car_ornament&diff=2245Indian head car ornament2016-04-11T04:12:42Z<p>SteveBaker: </p>
<hr />
<div><gallery><br />
File:IMG_3513.JPG<br />
File:IMG_3514.JPG<br />
File:IMG_3515.JPG<br />
File:IMG_3516.JPG<br />
File:IMG_3517.JPG<br />
File:IMG_3518.JPG<br />
File:IMG_3519.JPG<br />
File:IMG_3520.JPG<br />
</gallery><br />
* Object is approx 10cm tall, 8cm wide and has a 2.8cm hole in the base. It's very heavy and appears to be made from chrome plated brass.<br />
* We believe it's a car hood/bonnet ornament from a car that belonged to my great grandmother in England - probably sometime between 1920 and 1940.<br />
[[File:IndianHead.png|right|300px]]<br />
* An identical hood ornament was sold in Paris, described as: "''Mascotte "'''Tête d'Indien'''" H. Briand éditeur à Paris. Bronze argenté. Monture déportée pour fixation d'un thermomètre. H : 8cm''" [http://www.artcurial.com/en/asp/fullCatalogue.asp?salelot=2107+++++++7+&refno=10378288 HERE]<br />
* Briand was a pseudonym of the Art Deco sculptor Marcel Bouraine, working out of the Le Verrier foundry in Paris. And another "Tête d'Indien"; "Estimation €300 - €500 : Sold for €319. They have dated it to the 1920s. Briand also did cockerels, peacocks, snakes, Minerva's head and a cherub riding a pair of horses. It is considerably more valuable than the $35 to $60 that most car mascots sell for. The one in that auction photograph (at right here) is heavily worn - there are many places where the chrome has worn away, where mine is pristine. That presumably puts mine at the higher price point.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=File:IndianHead.png&diff=2244File:IndianHead.png2016-04-11T04:00:09Z<p>SteveBaker: </p>
<hr />
<div></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Reasons_for_poor_laser_cutting&diff=2243Reasons for poor laser cutting2015-10-06T23:41:50Z<p>SteveBaker: Created page with "Some reasons your laser cutter might be cutting poorly, from most probable to least probable: # Dirty lens. Clean with care, never touch the lens with your fingers. # Dirty m..."</p>
<hr />
<div>Some reasons your laser cutter might be cutting poorly, from most probable to least probable:<br />
<br />
# Dirty lens. Clean with care, never touch the lens with your fingers.<br />
# Dirty mirrors. The #3 and #2 mirrors get dirty - the #1 mirror almost never does.<br />
# Scratches or other flaws on mirrors and lens. Probably due to mishandling, excessive cleaning or insufficient cleaning.<br />
# Poor focus. For acrylic, focus onto the top surface of the material, for other materials, focus halfway through the material. Warped material or a poorly leveled bed can also cause this.<br />
# Bad alignment resulting in the beam clipping the edge of the nozzle tip. This causes the nozzle to get insanely hot - which is a good clue that it's happening. Running with bad alignment can trash your lens within minutes - so don't do that!<br />
# Poor smoke removal. Smoke in the path of the laser attenuates it. A puff of smoke should leave your machine within a couple of seconds. Your smoke extraction system should pull the smoke AWAY from the path of the laser, not towards it.<br />
# Mis-adjusted laser power supply delivering too little beam current. You can measure this with an ammeter - but be VERY careful - the laser power supply produces enough voltage to kill you...even when it's unplugged...and it can generate 3" long sparks!<br />
# Inadequate air-assist. Lack of good air-assist airflow reduces the depth of cut - and it also allows smoke to get onto the underside of the lens.<br />
# Ineffective water chilling resulting in the tube overheating. Did you clean out the air filters on your water chiller recently?<br />
# Water condensation on the lens - possibly due to air-assist issues.<br />
# Aging laser tube. Expect your tube to last for 3,000 to 5,000 hours of operation and to gradually degrade in power over that time.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=List_of_FAQ%27s_that_Steve_maintains&diff=2242List of FAQ's that Steve maintains2015-10-06T23:39:09Z<p>SteveBaker: </p>
<hr />
<div>* [http://www.sjbaker.org/steve/omniv The Omniverous Biped OpenGL FAQs].<br />
* [[General Programming FAQ's]].<br />
* [http://www.sjbaker.org/steve/lego Useful info for LEGO builders].<br />
* [http://www.sjbaker.org/tux The Tux the Linux Penguin FAQ].<br />
* [http://www.sjbaker.org/teapot The Newell Teapot FAQ].<br />
* [[The simplest possible guide to writing HTML]].<br />
* [[The simplest possible guide to writing MediaWiki]].<br />
* [[Intersection tests]]<br />
* [[3D Math]]<br />
* [[Recommended Linux-friendly Web Hosting Sites]].<br />
* [[How Linux Games should Install]]<br />
* [[Minimal GnuPlot intro]]<br />
* [[Linux vs Windows - A price guide]]<br />
* [[Reasons for poor laser cutting]]<br />
<br />
== Tutorials for Kids ==<br />
<br />
* [[A Year of Learning Fractions in Ten Simple Rules]].</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=HICCUP&diff=2241HICCUP2015-08-05T16:49:07Z<p>SteveBaker: /* Work to do before Starting SPARK */</p>
<hr />
<div>== Hiccup - Introducing Computer Programming to Little Kids ==<br />
: ''by Steve Baker.<br />
== Introduction for the Teacher ==<br />
This work is designed to teach very young children<br />
something that most adults never<br />
learn. How a computer works and how to program it. We do<br />
this without the need to use a real computer.<br />
<br />
This is achieved by having a group of children act out<br />
the various parts of an imaginary computer called SPARK (Small<br />
Programs And Real Kids). SPARK is made from odds and ends<br />
that you might find in a classroom like matchboxes, 3x5 file cards<br />
and a half dozen children. A calculator might<br />
be a useful accessory - but purists may want to omit it if<br />
the class has some children with sufficiently good arithmetic<br />
skills.<br />
<br />
The activity will require simple reading skills, some<br />
basic math and a lot of enthusiasm.<br />
<br />
The SPARK computer can run real computer programs written<br />
in a special programming language called 'HICCUP' which is<br />
quite like several real computer languages. SPARK computers<br />
run HICCUP programs - VERY SLOWLY. I present a couple of<br />
suitable programs in this book - but you can write more of<br />
your own. If your kids get into writing HICCUP then you<br />
can use a real computer to run them at a decent speed ('''THAT IMPLIES FORMALIZING HICCUP ENOUGH TO ENABLE ME TO<br />
WRITE A SIMPLE PARSER/INTERPRETER'''). Sizeable<br />
HICCUP programs can do real work and be useful (but not<br />
when run on SPARK because the kids get bored and make lots<br />
of mistakes).<br />
<br />
The basic SPARK computer is very simple - but you can<br />
easily extend it with more kids - and add peripherals like<br />
a printer, colour graphics - and even a Robot.<br />
== Why Teach Programming? (An Aside) ==<br />
Computers are amazing machines - whilst they may not have<br />
made as much difference to people as some other machines (The car,<br />
the plow, the flint knife), they are undoubtedly the most astounding.<br />
<br />
What is surprising is that although a computer is really a fairly simple<br />
device, hardly anyone (outside of computer professionals) has the faintest<br />
idea of how a computer actually works. People are taught some<br />
incredibly low level stuff (Binary arithmetic) and some incredibly<br />
high level stuff (How to Surf the Web, How to Word-Process) - but<br />
hardly anyone understands the all important part in between.<br />
<br />
Computer programming is a very important thing to teach children.<br />
It is hard to teach a kid the equations of motion - not because those<br />
equations are particularly hard - but because they appear to have<br />
absolutely no relevance to real life. When did YOU last need to<br />
use those equations in your day-to-day life? Have you EVER needed<br />
those equations in day-to-day life?<br />
<br />
Think about this though - if you are trying to write a<br />
video game (something kids DO identify with) - and you want<br />
your character to jump over an obstacle in a realistic manner - you<br />
need to know the equations of motion! The idea of building<br />
virtual worlds in the computer is appealing - but forces kids<br />
to confront the mathematics of the real world. The computer<br />
can't do anything unless you tell it how - there is no way to<br />
bypass it. You HAVE to use math.<br />
<br />
Well, HICCUP isn't going to do all of that - but it's<br />
a good start. It will certainly get everyone's enthusiasm<br />
going - and could lead into a formal programming course using<br />
a computer programming language like LOGO or BASIC.<br />
== Work to do before Starting SPARK ==<br />
First, you need to get the kids thinking about what a computer is.<br />
<br />
Here are some questions to ask - and what I think the answers are:<br />
<br />
;Are computers smart?<br />
:Well, there are computers that can fly a plane or drive a car - there are computers that can play chess better than any human being alive today. On the other hand, they sometimes make incredibly stupid mistakes like sending you a bill for no dollars and no cents and demanding that you pay it immediately OR ELSE!<br />
<br />
;Do computers make mistakes?<br />
:They do - but very rarely. Computers are by far the most reliable machines that have ever been built. An average car would be unlikely to go for more than 100,000 miles without something on it breaking. At 50mph, that is 120,000 minutes. If the engine runs at 5,000rpm, it does about 600 million operations before it breaks. A computer has to do 600 million operations every SECOND without making a single mistake for years at a time. You often hear stories about computers making mistakes - but the mistake is almost always in the programs that people write for the computer to tell it what to do.<br />
<br />
; Are computers good at numbers?<br />
: Well, how about this - computers don't know all the numbers 0 through 9. They only really understand 0 and 1. This makes counting a bit difficult - try it. ONE, TWO - Oh, no, it can't do TWO can it? - only zeros and ones, what's the next number it could do then? 3,4,5,6,7,8,9 - no. The next number it can do is TEN! OK, let's try again. ONE, TEN!, ELEVEN, ...uh... ONE-HUNDRED!, ONE-HUNDRED-ONE, ONE-HUNDRED-TEN, ONE-HUNDRED-ELEVEN, ...oh-oh...ONE-THOUSAND!?! Try counting some objects in 'binary numbers'. It would be hard to work with computers if they counted like that all the time - so one of the first things we write programs for is to teach them to use ALL the numbers when they talk to us. Once we do that, we can talk to the computer using all the numbers - and it'll change them into zeros and ones so it can understand us. It will even change the zeros and ones back into ordinary numbers so that we can understand what the computer is telling us.<br />
<br />
; Can computers do anything else apart from just numbers?<br />
: No - not really. If the computer wants to use letters or make pictures or sounds, it has to use numbers for all those things. It could do letters by making '1' be 'A', '2' be 'B, '3' be 'C' and so on up to '26' for 'Z'. Real computers use '65' for 'A', '66' for 'B' and so on - that's to leave enough spare numbers for all the other funny squiggles that computers need like '#' and '@'. This is called 'ASCII' (American Standard Code for Information Interchange). You can try writing your name using numbers. (Interesting side-topic about secret codes here too. Write a message, turn it into numbers, add something to all the numbers and then turn it back into letters again. For a computer, all letters are "codes" that it has to decode) Pictures can also be turned into numbers. Colour your picture on squared paper, then turn each square (A picture element or 'pixel') into a number using '1' for Red, '2' for Green, etc. You can turn the numbers back into a picture again by using a box of crayons with the right numbers written on each crayon. Draw a simple picture on a 10x10 grid, code it into a long list of 100 numbers and see if anyone can decode it. What happens if you miss out one<br />
of the numbers near the beginning?<br />
<br />
; What can a computer DO?<br />
: Not Much: All it can do is follow a set of rules called a 'program'. Computers don't do ANYTHING without a program.<br />
<br />
; How fast is a computer?<br />
: When we run HICCUP programs on SPARK, most children never manage more than one instruction every ten seconds - a 2GHz PC such as you might have in your home or classroom is about 20,000,000,000 times faster than SPARK. That sounds pretty fast - but there are still things that humans can do faster than a computer. Recognising the face of someone you know would be a good example. Computers have been designed that can do that, but they take several seconds to do it - something that the human brain can do in a tiny fraction of a second.<br />
<br />
; How many computers does your family own?<br />
: One? Maybe two? Well, I bet there is at least one computer in your family car, another in the microwave, another in your TV and probably another one in the remote control, at least one in your DVD player, maybe one in your Air Conditioning controller, every pocket calculator or digital watch has a computer inside. Video games and cellphones are computers too. Even the big box you call "a computer" probably has three or four smaller computers inside it. Most families own a dozen or more computers without even knowing it. Think how hard it would be to go through a whole day without using a computer of some kind.<br />
<br />
== Building SPARK ==<br />
SPARK is made from a number of separate parts - each one<br />
manned by either one or two kids. In order for HICCUP<br />
programs to 'run' correctly, the kids mustn't make even<br />
one mistake! Fortunately, the HICCUP language makes it<br />
quite hard for a mistake to happen - but it might be<br />
better to have two kids running each part so they can<br />
check up on each other.<br />
<br />
== The Parts ==<br />
Each part is manned by a child who has to follow simple instructions<br />
given to them by one of the other children. It might be nice if<br />
each child wore a paper hat with the name of their part written on it.<br />
<br />
Between 'runs' of a HICCUP program, it's a good idea to change the<br />
jobs of each of the children so they all get a turn at each of the<br />
jobs.<br />
=== The User ===<br />
This isn't strictly a part of SPARK - but someone has to actually use the<br />
SPARK computer to type in data and to respond to output from the<br />
screen. It might seem logical for the teacher to be the user - but that's<br />
probably not a good idea - we need someone 'in the know' to try to catch<br />
mistakes that the kids may make as the program is running.<br />
=== The Memory ===<br />
SPARK's memory consists of a number of small boxes (matchboxes would<br />
be ideal), each clearly labelled with a letter of the alphabet starting<br />
at 'A'. Most SPARK programs will need only four or five matchboxes,<br />
but some programs might need more. The 'memory' probably ought to have<br />
around 16 matchboxes just to get across the general idea. Adding more<br />
matchboxes is a 'Memory Upgrade' - real PC's with 16 Megabytes of memory<br />
have (in effect) 16 million matchboxes. SPARK is a VERY low tech computer.<br />
<br />
The child who is 'MEMORY' should have a pencil and a pile of small<br />
paper squares (large enough to write a number on - but small enough<br />
to put into a matchbox - PostIt notes will do quite well).<br />
<br />
Each box can only contain one number. If MEMORY is asked to put a number<br />
into a box that already has one, then throw the older number away first.<br />
=== The Math Processor ===<br />
The SPARK's math processor (called an 'Arithmetic/Logic unit' or ALU<br />
in a real computer) is just a person who does simple arithmetic<br />
when told to do so by one of the other parts of SPARK. It might<br />
be worth having a calculator at hand in case the arithmetic gets<br />
difficult. Some HICCUP programs need you to do division - and if<br />
so, then any fractional part (or 'remainder')of the result should<br />
be ignored. This is actually the case in real computers much<br />
of the time. 7 / 3 = 2 ! When computers need the fractional<br />
part of the result, they have to use techniques similar to<br />
the ones people use when doing long-division.<br />
<br />
The child who is 'MATH' also needs a supply of paper squares just like<br />
we gave to 'MEMORY'.<br />
=== The Screen ===<br />
This should either be a cardboard box with a screen-shaped hole<br />
in the front that the child can wear on his/her head - or a simple<br />
cutout panel that you can prop up with some books.<br />
<br />
The person who sits here either reads out (or writes on flash-cards)<br />
the output from SPARK so that the USER can 'read' what's on the screen.<br />
<br />
SCREEN is told to read out (or write down and flash) everything that<br />
anyone shows to him or her.<br />
=== The Keyboard ===<br />
The person who is the keyboard should have a number of 'keys' that the<br />
USER can push. They should also have a pencil and some more paper squares.<br />
<br />
Most HICCUP programs only need a few keys to make them work. A key marked<br />
'YES' and another marked 'NO' is important for most HICCUP programs.<br />
The program below needs '<', '>' and '=' keys.<br />
)It's quite amusing to use post-it notes with the key characters on<br />
them and to stick them onto the keyboard persons forehead, nose, fingers,<br />
etc. The USER's typing gets fairly amusing.)<br />
<br />
Whenever the USER pushes a key, the KEYBOARD person should write the<br />
key down on a paper slip and give it to INSTRUCTOR.<br />
=== The Instruction Decoder ===<br />
This is the most important job of all. Each instruction in the HICCUP<br />
program is written out on a 3x5 file card with a hole punched in one<br />
corner. To avoid getting the all-important instructions getting <br />
lost or muddled up, they are best stored on a key-ring.<br />
<br />
The INSTRUCTOR is told to read each card in turn - and to do whatever<br />
it says.<br />
<br />
In a real computer, these instructions are held in<br />
the memory - (one file card per matchbox) - but that gets a little<br />
confusing so HICCUP programs are stored on a keyring. Real computers<br />
also convert each kind of instruction into a different 'code' number<br />
- so that programs are themselves just long lists of numbers. Some<br />
older programmers remember when you had to type the numbers into the<br />
computer - that's why they sometimes talk about 'code' and 'coding'<br />
instead of 'program' and 'programming'.<br />
== A Sample HICCUP Program ==<br />
Each instruction is written on a 3x5 file card. Don't get them<br />
muddled up!<br />
<br />
This is a computer program to play the 'HiLo' game. The rules of 'HiLo'<br />
are that one person thinks of a number (bigger than 0 and smaller than<br />
30 in this game), and the other person has to guess that number by asking<br />
just five questions.<br />
<br />
Most children find it very hard to guess the number with so few questions,<br />
so they will be quite suprised to find they can do it right every time<br />
when they participate in SPARK. The program can guess numbers from 1 to<br />
anything you like - in as few questions as mathematically possible - just<br />
change the maximum number written on the very first file card. Beware though<br />
that every time you double the maximum number, you add around three to five<br />
minutes to the amount of time the children will take to find the answer.<br />
<br />
When playing with people, you can let someone guess a number between 1 and<br />
a million and try to guess it with just 20 questions.<br />
<br />
So, start at the first card...GO!<br />
<br />
# Tell MEMORY to write '30' on a paper slip and put it into box 'B'.<br />
# Tell MEMORY to write '1' on a paper slip and put it into box 'C'.<br />
# Show this to SCREEN: "Think of a number bigger than 0 and smaller than"<br />
# Tell MEMORY to show the slip in box 'B' to SCREEN<br />
# HELLO! (Go on to the next card)<br />
# Tell MEMORY to look inside box B, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add together the two numbers, write the answer down on a new paper slip.<br />
# Tell MATH to divide the new number by two (ignore any remainder).<br />
# Tell MATH to write the answer on another slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# TYPING! (Go on to the next card)<br />
# Show SCREEN this: "Is your number bigger, smaller or the same as "<br />
# Tell MEMORY to show the slip in box 'A' to SCREEN<br />
# Show SCREEN this: "Please type > for Bigger, < for Smaller or = for same."<br />
# Wait for KEYBOARD to pass you a slip of paper.<br />
# If it says '<' then skip on to the card marked "SMALLER!" - if not, carry on from here.<br />
# If it says '>' then skip on to the card marked "BIGGER!" - if not, carry on from here.<br />
# If it says '=' then skip on to the card marked "EQUAL!" - if not, carry on from here.<br />
# Go back to the card marked "TYPING!".<br />
# BIGGER! (Go on to the next card)<br />
# Tell MEMORY to copy the number from box A onto a new slip and to put it into box C (throw away whatever was in box C already).<br />
# Go back to the card marked "HELLO!".<br />
# SMALLER! (Go on to the next card)<br />
# Tell MEMORY to copy the number from box A onto a new slip and to put it into box B (throw away whatever was in box B already).<br />
# Go back to the card marked "HELLO!" and go on from there.<br />
# EQUAL! (Go on to the next card)<br />
# Show SCREEN this: "The number you were thinking of was"<br />
# Tell MEMORY to show the slip in 'A' to SCREEN.<br />
# Well done. Everybody Stop!<br />
<br />
So, what should happen is that the USER thinks of a number - and<br />
by asking a number of questions (at most 5 if nobody makes a mistake),<br />
the 'computer' should be able to correctly guess the number.<br />
<br />
This is interesting. The answer comes out right - but the 'computer'<br />
(ie the kids) have no idea how they did it! That's how come a<br />
computer can play world class chess - and yet still be a chunk of<br />
brainless silicon and copper. All the 'skill' was in the computer<br />
program - which in the case of our HICCUP program is just a bunch<br />
of inanimate 3x5 file cards.<br />
<br />
It takes about 15 HICCUP instruction cards to figure out which<br />
question to ask and it could take as many as five questions to solve<br />
the problem. It needs a total of around 80 cards to be read to get<br />
the problem solved (40 minutes at 30 seconds per card - '''I DON'T<br />
KNOW HOW FAST KIDS WILL BE ABLE TO WORK THESE CARDS - MAYBE FASTER<br />
THAN 30 SECONDS WITH PRACTICE'''). The PC in<br />
your classroom could do that in well under a millionth of a second.<br />
<br />
How long is a millionth of a second? Well, if you stood at one end<br />
of the school holding a flashlight, and turned the flashlight on<br />
at the same instant the computer started to run the program, the<br />
light from the flashlight would not have reached the other end of<br />
the school by the time the computer had finished working on the<br />
problem.<br />
<br />
I estimate that it could take a half hour to run this HICCUP program<br />
on a typical SPARK computer. If you want to cut it shorter than that<br />
then CHEAT! Pick an initial number that the program will guess more<br />
quickly. Alternatively, you could cut some time by reducing the initial<br />
value in box 'B' to 16 - although that's a lot less effective as a demo<br />
and probably only saves about 5 minutes. Here is a table of numbers and<br />
the number of guesses the program should need to get to that number<br />
(assuming 'B' is 30 as above):<br />
<center><br />
<TABLE border=1 cellpadding="2" cellspacing="1"><br />
<TR><TD>Your Number</TD><TD>Number of Guesses</TD></TR><br />
<TR><TD><center>1</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>2</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>3</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>4</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>5</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>6</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>7</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>8</center></TD><TD><center>2</center></TD></TR><br />
<TR><TD><center>9</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>10</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>11</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>12</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>13</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>14</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>15</center></TD><TD><center>1</center></TD></TR><br />
<TR><TD><center>16</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>17</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>18</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>19</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>20</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>21</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>22</center></TD><TD><center>2</center></TD></TR><br />
<TR><TD><center>23</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>24</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>25</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>26</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>27</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>28</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>29</center></TD><TD><center>5</center></TD></TR><br />
</TABLE><br />
</center><br />
<br />
Written in a more conventional programming language (like 'C'),<br />
the HiLo game program looks like this:<br />
<pre><br />
<br />
#include &lt;stdio.h&gt;<br />
<br />
void main ()<br />
{<br />
int A ;<br />
int B = 30 ;<br />
int C = 1 ;<br />
<br />
printf ( "Think of a number bigger than 0 and smaller than %d\n", B ) ;<br />
<br />
while ( 1 )<br />
{<br />
A = ( B + C ) / 2 ;<br />
<br />
printf ( "Is your number bigger, smaller or the same as %d\n", A ) ;<br />
printf ( "Please type &gt; for Bigger, &lt; for Smaller or = for same." ) ;<br />
<br />
switch ( getch () )<br />
{<br />
case '&gt;' : C = A ; break ;<br />
case '&lt;' : B = A ; break ;<br />
case '=' : printf ( "The number you were thinking of was %d\n", A ) ;<br />
exit ( 0 ) ;<br />
}<br />
}<br />
}<br />
<br />
</pre><br />
== Making Change ==<br />
What is the smallest number of coins it takes to make change for some amount of money?<br />
Write down the number of cents you want to make change for - and put that in MEMORY<br />
box 'A' before you start the program running. This program doesn't use the keyboard.<br />
<br />
Although the program is twice as long as HiLo, it runs fairly quickly for small amounts<br />
of change.<br />
<br />
# Show this to SCREEN: "The smallest number of coins for"<br />
# Tell MEMORY to show the slip in box 'A' to SCREEN<br />
# Show this to SCREEN: "cents is:"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# QUARTERS! (Go on to the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 25.<br />
# If it is then skip on to the card marked "DONE_QUARTERS!" - if not, carry on from here.<br />
# Tell MATH to subtract 25 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "QUARTERS"<br />
# DONE_QUARTERS! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Quarters and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# DIMES! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 10.<br />
# If it is then skip on to the card marked "DONE_DIMES!" - if not, carry on from here.<br />
# Tell MATH to subtract 10 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "DIMES!"<br />
# DONE_DIMES! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Dimes and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# NICKELS! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 5.<br />
# If it is then skip on to the card marked "DONE_NICKELS!" - if not, carry on from here.<br />
# Tell MATH to subtract 5 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "PENNIES!"<br />
# DONE_NICKELS! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Nickels and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# PENNIES! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 1.<br />
# If it is then skip on to the card marked "DONE_PENNIES!" - if not, carry on from here.<br />
# Tell MATH to subtract 1 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "PENNIES!"<br />
# DONE_PENNIES! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Pennies."<br />
# Well done. Everybody Stop!<br />
<br />
Here is that one again in 'C':<br />
<pre><br />
<br />
#include &lt;stdio.h&gt;<br />
<br />
int main ()<br />
{<br />
int A = 122 ;<br />
int C ;<br />
<br />
printf ( "The smallest number of coins for %d cents is:\n", A ) ;<br />
C = 0 ; while ( A &gt;= 25 ) { A -= 25 ; C ++ ; }<br />
print ( "%d Quarters and ", C ) ;<br />
C = 0 ; while ( A &gt;= 10 ) { A -= 10 ; C ++ ; }<br />
print ( "%d Dimes and ", C ) ;<br />
C = 0 ; while ( A &gt;= 5 ) { A -= 25 ; C ++ ; }<br />
print ( "%d Nickels and ", C ) ;<br />
C = 0 ; while ( A &gt;= 1 ) { A -= 1 ; C ++ ; }<br />
print ( "%d Pennies.", C ) ;<br />
}<br />
<br />
</pre><br />
== Robots - and onward towards LOGO ==<br />
You can add another child to the team - the ROBOT. This robot has a SPARK computer in it's head<br />
that tell it what to do. Add new instructions on file cards to say things like "Tell ROBOT to<br />
turn left by 90 degrees", "Tell ROBOT to take 5 steps forward"...and so on. This 'Robot' is<br />
now controllable just like the 'Turtle' in LOGO. Kids who have written HICCUP programs to drive<br />
the robot will be well placed to slip into LOGO programming.<br />
<br />
Once the children have the idea of how the HICCUP setup works, they can probably work in pairs,<br />
one playing the robot and the other one running the program. When children write LOGO programs,<br />
they have to learn how to 'Play Turtle' in order to imagine what their program will do when<br />
they are in the process of writing it - and also in order to see what goes wrong when their<br />
programs have bugs in them.<br />
<br />
== A DEEP Conclusion ==<br />
The in 1997, the computer 'DEEP BLUE' beat Kasparov - who was the best<br />
chess player in the whole world at the time. (Arguably, he remains the<br />
best chess player who ever lived). If we rewrote DEEP BLUE's program<br />
in HICCUP (which would be quite easy to do) then SPARK could beat<br />
Kasparov. But hold on. SPARK is just a handful of school children<br />
following some simple rules. The kids might not even know the rules<br />
of chess.<br />
<br />
Could six kids who don't play chess really beat Kasparov?<br />
<br />
The answer is a conditional YES!<br />
<br />
Our kids could play world class chess and beat the best chess player<br />
in the world if they had enough time and a lot of matchboxes. The number<br />
of matchboxes needed would cover several acres of land - and it's doubtful<br />
that the kids would manage to read enough HICCUP instructions to work<br />
out their first move before they graduated from college - but that's<br />
not really the point - in theory, they could do it. So, we must conclude<br />
that the thing that beat Kasparov wasn't the super-powerful IBM computer,<br />
it was the SOFTWARE that ran on the computer.<br />
<br />
: Aside: Deep Blue can probably run though 10,000,000,000 instructions in<br />
a second, and probably took 10 seconds working out what move it should<br />
play. If SPARK could run one instruction per second, it would take those<br />
kids 10,000 years (working 8 hours a day) to make that first move. If they<br />
made one single mistake in all that time then Deep-SPARK's first move<br />
might turn out to be "Eat At Joes" instead of "b2-b4".<br />
<br />
How did the skills to play chess so well get into the computer? It was<br />
in the PROGRAM. How did the skills get into the Program then? Well,<br />
some person wrote the program that DEEP BLUE uses. We could explain what<br />
happened if that person had all the skills needed to beat Kasparov and<br />
just passed them on to the computer.<br />
<br />
Well, that can't be so - if he was that good at chess, he would be<br />
able to beat Kasparov and we know he can't do that or HE would be<br />
the world champion.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=HICCUP&diff=2240HICCUP2015-08-05T16:42:01Z<p>SteveBaker: /* Work to do before Starting SPARK */</p>
<hr />
<div>== Hiccup - Introducing Computer Programming to Little Kids ==<br />
: ''by Steve Baker.<br />
== Introduction for the Teacher ==<br />
This work is designed to teach very young children<br />
something that most adults never<br />
learn. How a computer works and how to program it. We do<br />
this without the need to use a real computer.<br />
<br />
This is achieved by having a group of children act out<br />
the various parts of an imaginary computer called SPARK (Small<br />
Programs And Real Kids). SPARK is made from odds and ends<br />
that you might find in a classroom like matchboxes, 3x5 file cards<br />
and a half dozen children. A calculator might<br />
be a useful accessory - but purists may want to omit it if<br />
the class has some children with sufficiently good arithmetic<br />
skills.<br />
<br />
The activity will require simple reading skills, some<br />
basic math and a lot of enthusiasm.<br />
<br />
The SPARK computer can run real computer programs written<br />
in a special programming language called 'HICCUP' which is<br />
quite like several real computer languages. SPARK computers<br />
run HICCUP programs - VERY SLOWLY. I present a couple of<br />
suitable programs in this book - but you can write more of<br />
your own. If your kids get into writing HICCUP then you<br />
can use a real computer to run them at a decent speed ('''THAT IMPLIES FORMALIZING HICCUP ENOUGH TO ENABLE ME TO<br />
WRITE A SIMPLE PARSER/INTERPRETER'''). Sizeable<br />
HICCUP programs can do real work and be useful (but not<br />
when run on SPARK because the kids get bored and make lots<br />
of mistakes).<br />
<br />
The basic SPARK computer is very simple - but you can<br />
easily extend it with more kids - and add peripherals like<br />
a printer, colour graphics - and even a Robot.<br />
== Why Teach Programming? (An Aside) ==<br />
Computers are amazing machines - whilst they may not have<br />
made as much difference to people as some other machines (The car,<br />
the plow, the flint knife), they are undoubtedly the most astounding.<br />
<br />
What is surprising is that although a computer is really a fairly simple<br />
device, hardly anyone (outside of computer professionals) has the faintest<br />
idea of how a computer actually works. People are taught some<br />
incredibly low level stuff (Binary arithmetic) and some incredibly<br />
high level stuff (How to Surf the Web, How to Word-Process) - but<br />
hardly anyone understands the all important part in between.<br />
<br />
Computer programming is a very important thing to teach children.<br />
It is hard to teach a kid the equations of motion - not because those<br />
equations are particularly hard - but because they appear to have<br />
absolutely no relevance to real life. When did YOU last need to<br />
use those equations in your day-to-day life? Have you EVER needed<br />
those equations in day-to-day life?<br />
<br />
Think about this though - if you are trying to write a<br />
video game (something kids DO identify with) - and you want<br />
your character to jump over an obstacle in a realistic manner - you<br />
need to know the equations of motion! The idea of building<br />
virtual worlds in the computer is appealing - but forces kids<br />
to confront the mathematics of the real world. The computer<br />
can't do anything unless you tell it how - there is no way to<br />
bypass it. You HAVE to use math.<br />
<br />
Well, HICCUP isn't going to do all of that - but it's<br />
a good start. It will certainly get everyone's enthusiasm<br />
going - and could lead into a formal programming course using<br />
a computer programming language like LOGO or BASIC.<br />
== Work to do before Starting SPARK ==<br />
First, you need to get the kids thinking about what a computer is.<br />
<br />
Here are some questions to ask - and what I think the answers are:<br />
<br />
<TABLE border=1 cellpadding="2" cellspacing="1"><br />
<tr><br />
<td>Are computers smart?</td><br />
<td>Well, there are computers that<br />
can fly a plane or drive a car - there are computers that<br />
can play chess better than any human being alive today. On<br />
the other hand, they sometimes make incredibly stupid mistakes like<br />
sending you a bill for no dollars and no cents and demanding<br />
that you pay it immediately OR ELSE!<br />
</td><br />
</tr><br />
<tr><br />
<td>Do computers make mistakes?</td><br />
<td>They do - but very rarely. Computers are by far the most<br />
reliable machines that have ever been built. An average<br />
car would be unlikely to go for more than 100,000 miles without<br />
something on it breaking. At 50mph, that is 120,000 minutes.<br />
If the engine runs at 5,000rpm, it does about 600 million<br />
operations before it breaks. A computer has to do 600 million<br />
operations every SECOND without making a single mistake for years<br />
at a time.<br />
<p><br />
You often hear stories about computers making mistakes - but the<br />
mistake is almost always in the programs that people write for<br />
the computer to tell it what to do.<br />
</td><br />
</tr><br />
<tr><td>Are computers good at numbers?</td><br />
<td>Well, how about this - <br />
computers don't know all the numbers 0 through 9. They only<br />
really understand 0 and 1. This makes counting a bit difficult -<br />
try it. ONE, TWO - Oh, no, it can't do TWO can it? - only zeros<br />
and ones, what's the next number it could do then? 3,4,5,6,7,8,9 -<br />
no. The next number it can do is TEN! OK, let's try<br />
again. ONE, TEN!, ELEVEN, ...uh... ONE-HUNDRED!, ONE-HUNDRED-ONE,<br />
ONE-HUNDRED-TEN, ONE-HUNDRED-ELEVEN, ...oh-oh...ONE-THOUSAND!?!<br />
<p><br />
Try counting some objects in 'binary numbers'. It would be hard to<br />
work with computers if they counted like that all the time - so<br />
one of the first things we write programs for is to teach them<br />
to use ALL the numbers when they talk to us. Once we do that, we<br />
can talk to the computer using all the numbers - and it'll change<br />
them into zeros and ones so it can understand us. It will even<br />
change the zeros and ones back into ordinary numbers so that we<br />
can understand what the computer is telling us.<br />
</td><br />
</tr><br />
<tr><td>Can computers do anything else apart from just numbers?</td><br />
<td>No - not really. If the computer wants to use letters or make pictures<br />
or sounds, it has to use numbers for all those things. It could<br />
do letters by making '1' be 'A', '2' be 'B, '3' be 'C' and so<br />
on up to '26' for 'Z'. Real computers use '65' for 'A', '66' for<br />
'B' and so on - that's to leave enough spare numbers for all the<br />
other funny squiggles that computers need like '#' and '@'. This<br />
is called 'ASCII' (American Standard Code for Information Interchange).<br />
<p><br />
You can try writing your name using numbers.<br />
(Interesting side-topic about secret codes here too. Write a<br />
message, turn it into numbers, add something to all the numbers<br />
and then turn it back into letters again.) Pictures can also<br />
be turned into numbers. Colour your picture on squared paper,<br />
then turn each square (A picture element or 'pixel') into a number<br />
using '1' for Red, '2' for Green, etc. You can turn the numbers<br />
back into a picture again by using a box of crayons with the<br />
right numbers written on each crayon. Draw a simple picture<br />
on a 10x10 grid, code it into a long list of 100 numbers and<br />
see if anyone can decode it. What happens if you miss out one<br />
of the numbers near the beginning?<br />
</td><br />
</tr><br />
<tr><td> What can a computer DO?</td><br />
<td>Not Much: All it can do is follow a set of rules called a 'program'.<br />
Computers don't do ANYTHING without a program.<br />
</td><br />
</tr><br />
<tr><td>How fast is a computer?</td><br />
<td>When we run HICCUP programs on<br />
SPARK, most children never manage more than one instruction<br />
every ten seconds - a 2GHz PC such as you might have in<br />
your home or classroom is about 20,000,000,000 times faster<br />
than SPARK. That sounds pretty fast - but there are still<br />
things that humans can do faster than a computer. Recognising<br />
the face of someone you know would be a good example. Computers<br />
have been designed that can do that, but they take several seconds<br />
to do it - something that the human brain can do in a tiny fraction<br />
of a second.<br />
</td><br />
</tr><br />
<tr><td>How many computers does your family own?</td><br />
<td>None? One? Maybe two? Well, I bet there is at least one computer<br />
in your family car, another in the microwave, another in your TV<br />
and probably another one in the remote control, at least one in<br />
your DVD player, maybe one in your Air Conditioning controller, every<br />
pocket calculator or digital watch has a computer inside. Video<br />
games and cellphones are computers too. Even the big box you call "a computer"<br />
probably has three or four smaller computers inside it. Most<br />
families own a dozen or more computers without even knowing it.<br />
Think how hard it would be to go through a whole day without<br />
using a computer of some kind.<br />
</td><br />
</tr><br />
</table><br />
<br />
== Building SPARK ==<br />
SPARK is made from a number of separate parts - each one<br />
manned by either one or two kids. In order for HICCUP<br />
programs to 'run' correctly, the kids mustn't make even<br />
one mistake! Fortunately, the HICCUP language makes it<br />
quite hard for a mistake to happen - but it might be<br />
better to have two kids running each part so they can<br />
check up on each other.<br />
<br />
== The Parts ==<br />
Each part is manned by a child who has to follow simple instructions<br />
given to them by one of the other children. It might be nice if<br />
each child wore a paper hat with the name of their part written on it.<br />
<br />
Between 'runs' of a HICCUP program, it's a good idea to change the<br />
jobs of each of the children so they all get a turn at each of the<br />
jobs.<br />
=== The User ===<br />
This isn't strictly a part of SPARK - but someone has to actually use the<br />
SPARK computer to type in data and to respond to output from the<br />
screen. It might seem logical for the teacher to be the user - but that's<br />
probably not a good idea - we need someone 'in the know' to try to catch<br />
mistakes that the kids may make as the program is running.<br />
=== The Memory ===<br />
SPARK's memory consists of a number of small boxes (matchboxes would<br />
be ideal), each clearly labelled with a letter of the alphabet starting<br />
at 'A'. Most SPARK programs will need only four or five matchboxes,<br />
but some programs might need more. The 'memory' probably ought to have<br />
around 16 matchboxes just to get across the general idea. Adding more<br />
matchboxes is a 'Memory Upgrade' - real PC's with 16 Megabytes of memory<br />
have (in effect) 16 million matchboxes. SPARK is a VERY low tech computer.<br />
<br />
The child who is 'MEMORY' should have a pencil and a pile of small<br />
paper squares (large enough to write a number on - but small enough<br />
to put into a matchbox - PostIt notes will do quite well).<br />
<br />
Each box can only contain one number. If MEMORY is asked to put a number<br />
into a box that already has one, then throw the older number away first.<br />
=== The Math Processor ===<br />
The SPARK's math processor (called an 'Arithmetic/Logic unit' or ALU<br />
in a real computer) is just a person who does simple arithmetic<br />
when told to do so by one of the other parts of SPARK. It might<br />
be worth having a calculator at hand in case the arithmetic gets<br />
difficult. Some HICCUP programs need you to do division - and if<br />
so, then any fractional part (or 'remainder')of the result should<br />
be ignored. This is actually the case in real computers much<br />
of the time. 7 / 3 = 2 ! When computers need the fractional<br />
part of the result, they have to use techniques similar to<br />
the ones people use when doing long-division.<br />
<br />
The child who is 'MATH' also needs a supply of paper squares just like<br />
we gave to 'MEMORY'.<br />
=== The Screen ===<br />
This should either be a cardboard box with a screen-shaped hole<br />
in the front that the child can wear on his/her head - or a simple<br />
cutout panel that you can prop up with some books.<br />
<br />
The person who sits here either reads out (or writes on flash-cards)<br />
the output from SPARK so that the USER can 'read' what's on the screen.<br />
<br />
SCREEN is told to read out (or write down and flash) everything that<br />
anyone shows to him or her.<br />
=== The Keyboard ===<br />
The person who is the keyboard should have a number of 'keys' that the<br />
USER can push. They should also have a pencil and some more paper squares.<br />
<br />
Most HICCUP programs only need a few keys to make them work. A key marked<br />
'YES' and another marked 'NO' is important for most HICCUP programs.<br />
The program below needs '<', '>' and '=' keys.<br />
)It's quite amusing to use post-it notes with the key characters on<br />
them and to stick them onto the keyboard persons forehead, nose, fingers,<br />
etc. The USER's typing gets fairly amusing.)<br />
<br />
Whenever the USER pushes a key, the KEYBOARD person should write the<br />
key down on a paper slip and give it to INSTRUCTOR.<br />
=== The Instruction Decoder ===<br />
This is the most important job of all. Each instruction in the HICCUP<br />
program is written out on a 3x5 file card with a hole punched in one<br />
corner. To avoid getting the all-important instructions getting <br />
lost or muddled up, they are best stored on a key-ring.<br />
<br />
The INSTRUCTOR is told to read each card in turn - and to do whatever<br />
it says.<br />
<br />
In a real computer, these instructions are held in<br />
the memory - (one file card per matchbox) - but that gets a little<br />
confusing so HICCUP programs are stored on a keyring. Real computers<br />
also convert each kind of instruction into a different 'code' number<br />
- so that programs are themselves just long lists of numbers. Some<br />
older programmers remember when you had to type the numbers into the<br />
computer - that's why they sometimes talk about 'code' and 'coding'<br />
instead of 'program' and 'programming'.<br />
== A Sample HICCUP Program ==<br />
Each instruction is written on a 3x5 file card. Don't get them<br />
muddled up!<br />
<br />
This is a computer program to play the 'HiLo' game. The rules of 'HiLo'<br />
are that one person thinks of a number (bigger than 0 and smaller than<br />
30 in this game), and the other person has to guess that number by asking<br />
just five questions.<br />
<br />
Most children find it very hard to guess the number with so few questions,<br />
so they will be quite suprised to find they can do it right every time<br />
when they participate in SPARK. The program can guess numbers from 1 to<br />
anything you like - in as few questions as mathematically possible - just<br />
change the maximum number written on the very first file card. Beware though<br />
that every time you double the maximum number, you add around three to five<br />
minutes to the amount of time the children will take to find the answer.<br />
<br />
When playing with people, you can let someone guess a number between 1 and<br />
a million and try to guess it with just 20 questions.<br />
<br />
So, start at the first card...GO!<br />
<br />
# Tell MEMORY to write '30' on a paper slip and put it into box 'B'.<br />
# Tell MEMORY to write '1' on a paper slip and put it into box 'C'.<br />
# Show this to SCREEN: "Think of a number bigger than 0 and smaller than"<br />
# Tell MEMORY to show the slip in box 'B' to SCREEN<br />
# HELLO! (Go on to the next card)<br />
# Tell MEMORY to look inside box B, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add together the two numbers, write the answer down on a new paper slip.<br />
# Tell MATH to divide the new number by two (ignore any remainder).<br />
# Tell MATH to write the answer on another slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# TYPING! (Go on to the next card)<br />
# Show SCREEN this: "Is your number bigger, smaller or the same as "<br />
# Tell MEMORY to show the slip in box 'A' to SCREEN<br />
# Show SCREEN this: "Please type > for Bigger, < for Smaller or = for same."<br />
# Wait for KEYBOARD to pass you a slip of paper.<br />
# If it says '<' then skip on to the card marked "SMALLER!" - if not, carry on from here.<br />
# If it says '>' then skip on to the card marked "BIGGER!" - if not, carry on from here.<br />
# If it says '=' then skip on to the card marked "EQUAL!" - if not, carry on from here.<br />
# Go back to the card marked "TYPING!".<br />
# BIGGER! (Go on to the next card)<br />
# Tell MEMORY to copy the number from box A onto a new slip and to put it into box C (throw away whatever was in box C already).<br />
# Go back to the card marked "HELLO!".<br />
# SMALLER! (Go on to the next card)<br />
# Tell MEMORY to copy the number from box A onto a new slip and to put it into box B (throw away whatever was in box B already).<br />
# Go back to the card marked "HELLO!" and go on from there.<br />
# EQUAL! (Go on to the next card)<br />
# Show SCREEN this: "The number you were thinking of was"<br />
# Tell MEMORY to show the slip in 'A' to SCREEN.<br />
# Well done. Everybody Stop!<br />
<br />
So, what should happen is that the USER thinks of a number - and<br />
by asking a number of questions (at most 5 if nobody makes a mistake),<br />
the 'computer' should be able to correctly guess the number.<br />
<br />
This is interesting. The answer comes out right - but the 'computer'<br />
(ie the kids) have no idea how they did it! That's how come a<br />
computer can play world class chess - and yet still be a chunk of<br />
brainless silicon and copper. All the 'skill' was in the computer<br />
program - which in the case of our HICCUP program is just a bunch<br />
of inanimate 3x5 file cards.<br />
<br />
It takes about 15 HICCUP instruction cards to figure out which<br />
question to ask and it could take as many as five questions to solve<br />
the problem. It needs a total of around 80 cards to be read to get<br />
the problem solved (40 minutes at 30 seconds per card - '''I DON'T<br />
KNOW HOW FAST KIDS WILL BE ABLE TO WORK THESE CARDS - MAYBE FASTER<br />
THAN 30 SECONDS WITH PRACTICE'''). The PC in<br />
your classroom could do that in well under a millionth of a second.<br />
<br />
How long is a millionth of a second? Well, if you stood at one end<br />
of the school holding a flashlight, and turned the flashlight on<br />
at the same instant the computer started to run the program, the<br />
light from the flashlight would not have reached the other end of<br />
the school by the time the computer had finished working on the<br />
problem.<br />
<br />
I estimate that it could take a half hour to run this HICCUP program<br />
on a typical SPARK computer. If you want to cut it shorter than that<br />
then CHEAT! Pick an initial number that the program will guess more<br />
quickly. Alternatively, you could cut some time by reducing the initial<br />
value in box 'B' to 16 - although that's a lot less effective as a demo<br />
and probably only saves about 5 minutes. Here is a table of numbers and<br />
the number of guesses the program should need to get to that number<br />
(assuming 'B' is 30 as above):<br />
<center><br />
<TABLE border=1 cellpadding="2" cellspacing="1"><br />
<TR><TD>Your Number</TD><TD>Number of Guesses</TD></TR><br />
<TR><TD><center>1</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>2</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>3</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>4</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>5</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>6</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>7</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>8</center></TD><TD><center>2</center></TD></TR><br />
<TR><TD><center>9</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>10</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>11</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>12</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>13</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>14</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>15</center></TD><TD><center>1</center></TD></TR><br />
<TR><TD><center>16</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>17</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>18</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>19</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>20</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>21</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>22</center></TD><TD><center>2</center></TD></TR><br />
<TR><TD><center>23</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>24</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>25</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>26</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>27</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>28</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>29</center></TD><TD><center>5</center></TD></TR><br />
</TABLE><br />
</center><br />
<br />
Written in a more conventional programming language (like 'C'),<br />
the HiLo game program looks like this:<br />
<pre><br />
<br />
#include &lt;stdio.h&gt;<br />
<br />
void main ()<br />
{<br />
int A ;<br />
int B = 30 ;<br />
int C = 1 ;<br />
<br />
printf ( "Think of a number bigger than 0 and smaller than %d\n", B ) ;<br />
<br />
while ( 1 )<br />
{<br />
A = ( B + C ) / 2 ;<br />
<br />
printf ( "Is your number bigger, smaller or the same as %d\n", A ) ;<br />
printf ( "Please type &gt; for Bigger, &lt; for Smaller or = for same." ) ;<br />
<br />
switch ( getch () )<br />
{<br />
case '&gt;' : C = A ; break ;<br />
case '&lt;' : B = A ; break ;<br />
case '=' : printf ( "The number you were thinking of was %d\n", A ) ;<br />
exit ( 0 ) ;<br />
}<br />
}<br />
}<br />
<br />
</pre><br />
== Making Change ==<br />
What is the smallest number of coins it takes to make change for some amount of money?<br />
Write down the number of cents you want to make change for - and put that in MEMORY<br />
box 'A' before you start the program running. This program doesn't use the keyboard.<br />
<br />
Although the program is twice as long as HiLo, it runs fairly quickly for small amounts<br />
of change.<br />
<br />
# Show this to SCREEN: "The smallest number of coins for"<br />
# Tell MEMORY to show the slip in box 'A' to SCREEN<br />
# Show this to SCREEN: "cents is:"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# QUARTERS! (Go on to the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 25.<br />
# If it is then skip on to the card marked "DONE_QUARTERS!" - if not, carry on from here.<br />
# Tell MATH to subtract 25 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "QUARTERS"<br />
# DONE_QUARTERS! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Quarters and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# DIMES! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 10.<br />
# If it is then skip on to the card marked "DONE_DIMES!" - if not, carry on from here.<br />
# Tell MATH to subtract 10 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "DIMES!"<br />
# DONE_DIMES! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Dimes and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# NICKELS! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 5.<br />
# If it is then skip on to the card marked "DONE_NICKELS!" - if not, carry on from here.<br />
# Tell MATH to subtract 5 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "PENNIES!"<br />
# DONE_NICKELS! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Nickels and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# PENNIES! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 1.<br />
# If it is then skip on to the card marked "DONE_PENNIES!" - if not, carry on from here.<br />
# Tell MATH to subtract 1 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "PENNIES!"<br />
# DONE_PENNIES! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Pennies."<br />
# Well done. Everybody Stop!<br />
<br />
Here is that one again in 'C':<br />
<pre><br />
<br />
#include &lt;stdio.h&gt;<br />
<br />
int main ()<br />
{<br />
int A = 122 ;<br />
int C ;<br />
<br />
printf ( "The smallest number of coins for %d cents is:\n", A ) ;<br />
C = 0 ; while ( A &gt;= 25 ) { A -= 25 ; C ++ ; }<br />
print ( "%d Quarters and ", C ) ;<br />
C = 0 ; while ( A &gt;= 10 ) { A -= 10 ; C ++ ; }<br />
print ( "%d Dimes and ", C ) ;<br />
C = 0 ; while ( A &gt;= 5 ) { A -= 25 ; C ++ ; }<br />
print ( "%d Nickels and ", C ) ;<br />
C = 0 ; while ( A &gt;= 1 ) { A -= 1 ; C ++ ; }<br />
print ( "%d Pennies.", C ) ;<br />
}<br />
<br />
</pre><br />
== Robots - and onward towards LOGO ==<br />
You can add another child to the team - the ROBOT. This robot has a SPARK computer in it's head<br />
that tell it what to do. Add new instructions on file cards to say things like "Tell ROBOT to<br />
turn left by 90 degrees", "Tell ROBOT to take 5 steps forward"...and so on. This 'Robot' is<br />
now controllable just like the 'Turtle' in LOGO. Kids who have written HICCUP programs to drive<br />
the robot will be well placed to slip into LOGO programming.<br />
<br />
Once the children have the idea of how the HICCUP setup works, they can probably work in pairs,<br />
one playing the robot and the other one running the program. When children write LOGO programs,<br />
they have to learn how to 'Play Turtle' in order to imagine what their program will do when<br />
they are in the process of writing it - and also in order to see what goes wrong when their<br />
programs have bugs in them.<br />
<br />
== A DEEP Conclusion ==<br />
The in 1997, the computer 'DEEP BLUE' beat Kasparov - who was the best<br />
chess player in the whole world at the time. (Arguably, he remains the<br />
best chess player who ever lived). If we rewrote DEEP BLUE's program<br />
in HICCUP (which would be quite easy to do) then SPARK could beat<br />
Kasparov. But hold on. SPARK is just a handful of school children<br />
following some simple rules. The kids might not even know the rules<br />
of chess.<br />
<br />
Could six kids who don't play chess really beat Kasparov?<br />
<br />
The answer is a conditional YES!<br />
<br />
Our kids could play world class chess and beat the best chess player<br />
in the world if they had enough time and a lot of matchboxes. The number<br />
of matchboxes needed would cover several acres of land - and it's doubtful<br />
that the kids would manage to read enough HICCUP instructions to work<br />
out their first move before they graduated from college - but that's<br />
not really the point - in theory, they could do it. So, we must conclude<br />
that the thing that beat Kasparov wasn't the super-powerful IBM computer,<br />
it was the SOFTWARE that ran on the computer.<br />
<br />
: Aside: Deep Blue can probably run though 10,000,000,000 instructions in<br />
a second, and probably took 10 seconds working out what move it should<br />
play. If SPARK could run one instruction per second, it would take those<br />
kids 10,000 years (working 8 hours a day) to make that first move. If they<br />
made one single mistake in all that time then Deep-SPARK's first move<br />
might turn out to be "Eat At Joes" instead of "b2-b4".<br />
<br />
How did the skills to play chess so well get into the computer? It was<br />
in the PROGRAM. How did the skills get into the Program then? Well,<br />
some person wrote the program that DEEP BLUE uses. We could explain what<br />
happened if that person had all the skills needed to beat Kasparov and<br />
just passed them on to the computer.<br />
<br />
Well, that can't be so - if he was that good at chess, he would be<br />
able to beat Kasparov and we know he can't do that or HE would be<br />
the world champion.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=HICCUP&diff=2239HICCUP2015-08-05T16:39:22Z<p>SteveBaker: /* Work to do before Starting SPARK */</p>
<hr />
<div>== Hiccup - Introducing Computer Programming to Little Kids ==<br />
: ''by Steve Baker.<br />
== Introduction for the Teacher ==<br />
This work is designed to teach very young children<br />
something that most adults never<br />
learn. How a computer works and how to program it. We do<br />
this without the need to use a real computer.<br />
<br />
This is achieved by having a group of children act out<br />
the various parts of an imaginary computer called SPARK (Small<br />
Programs And Real Kids). SPARK is made from odds and ends<br />
that you might find in a classroom like matchboxes, 3x5 file cards<br />
and a half dozen children. A calculator might<br />
be a useful accessory - but purists may want to omit it if<br />
the class has some children with sufficiently good arithmetic<br />
skills.<br />
<br />
The activity will require simple reading skills, some<br />
basic math and a lot of enthusiasm.<br />
<br />
The SPARK computer can run real computer programs written<br />
in a special programming language called 'HICCUP' which is<br />
quite like several real computer languages. SPARK computers<br />
run HICCUP programs - VERY SLOWLY. I present a couple of<br />
suitable programs in this book - but you can write more of<br />
your own. If your kids get into writing HICCUP then you<br />
can use a real computer to run them at a decent speed ('''THAT IMPLIES FORMALIZING HICCUP ENOUGH TO ENABLE ME TO<br />
WRITE A SIMPLE PARSER/INTERPRETER'''). Sizeable<br />
HICCUP programs can do real work and be useful (but not<br />
when run on SPARK because the kids get bored and make lots<br />
of mistakes).<br />
<br />
The basic SPARK computer is very simple - but you can<br />
easily extend it with more kids - and add peripherals like<br />
a printer, colour graphics - and even a Robot.<br />
== Why Teach Programming? (An Aside) ==<br />
Computers are amazing machines - whilst they may not have<br />
made as much difference to people as some other machines (The car,<br />
the plow, the flint knife), they are undoubtedly the most astounding.<br />
<br />
What is surprising is that although a computer is really a fairly simple<br />
device, hardly anyone (outside of computer professionals) has the faintest<br />
idea of how a computer actually works. People are taught some<br />
incredibly low level stuff (Binary arithmetic) and some incredibly<br />
high level stuff (How to Surf the Web, How to Word-Process) - but<br />
hardly anyone understands the all important part in between.<br />
<br />
Computer programming is a very important thing to teach children.<br />
It is hard to teach a kid the equations of motion - not because those<br />
equations are particularly hard - but because they appear to have<br />
absolutely no relevance to real life. When did YOU last need to<br />
use those equations in your day-to-day life? Have you EVER needed<br />
those equations in day-to-day life?<br />
<br />
Think about this though - if you are trying to write a<br />
video game (something kids DO identify with) - and you want<br />
your character to jump over an obstacle in a realistic manner - you<br />
need to know the equations of motion! The idea of building<br />
virtual worlds in the computer is appealing - but forces kids<br />
to confront the mathematics of the real world. The computer<br />
can't do anything unless you tell it how - there is no way to<br />
bypass it. You HAVE to use math.<br />
<br />
Well, HICCUP isn't going to do all of that - but it's<br />
a good start. It will certainly get everyone's enthusiasm<br />
going - and could lead into a formal programming course using<br />
a computer programming language like LOGO or BASIC.<br />
== Work to do before Starting SPARK ==<br />
First, you need to get the kids thinking about what a computer is.<br />
<br />
Here are some questions to ask - and what I think the answers are:<br />
<br />
<TABLE border=1 cellpadding="2" cellspacing="1"><br />
<tr><td>Are computers smart?</td><br />
<td>Well, there are computers that<br />
can fly a plane or drive a car - there are computers that<br />
can play chess better than any human being alive today. On<br />
the other hand, they sometimes make incredibly stupid mistakes like<br />
sending you a bill for no dollars and no cents and demanding<br />
that you pay it immediately OR ELSE!<br />
</td><br />
</tr><br />
<tr><td>Do computers make mistakes?</td><br />
<td>They do - but very rarely. Computers are by far the most<br />
reliable machines that have ever been built. An average<br />
car would be unlikely to go for more than 100,000 miles without<br />
something on it breaking. At 50mph, that is 120,000 minutes.<br />
If the engine runs at 5,000rpm, it does about 600 million<br />
operations before it breaks. A computer has to do 600 million<br />
operations every SECOND without making a single mistake for years<br />
at a time.<br />
<p><br />
You often hear stories about computers making mistakes - but the<br />
mistake is almost always in the programs that people write for<br />
the computer to tell it what to do.<br />
</td><br />
</tr><br />
<tr><td>Are computers good at numbers?</td><br />
<td>Well, how about this - <br />
computers don't know all the numbers 0 through 9. They only<br />
really understand 0 and 1. This makes counting a bit difficult -<br />
try it. ONE, TWO - Oh, no, it can't do TWO can it? - only zeros<br />
and ones, what's the next number it could do then? 3,4,5,6,7,8,9 -<br />
no. The next number it can do is TEN! OK, let's try<br />
again. ONE, TEN!, ELEVEN, ...uh... ONE-HUNDRED!, ONE-HUNDRED-ONE,<br />
ONE-HUNDRED-TEN, ONE-HUNDRED-ELEVEN, ...oh-oh...ONE-THOUSAND!?!<br />
Try counting some objects in 'binary numbers'. It would be hard to<br />
work with computers if they counted like that all the time - so<br />
one of the first things we write programs for is to teach them<br />
to use ALL the numbers when they talk to us. Once we do that, we<br />
can talk to the computer using all the numbers - and it'll change<br />
them into zeros and ones so it can understand us. It will even<br />
change the zeros and ones back into ordinary numbers so that we<br />
can understand what the computer is telling us.<br />
</td><br />
</tr><br />
<tr><td>Can computers do anything else apart from just numbers?</td><br />
<td>No - not really. If the computer wants to use letters or make pictures<br />
or sounds, it has to use numbers for all those things. It could<br />
do letters by making '1' be 'A', '2' be 'B, '3' be 'C' and so<br />
on up to '26' for 'Z'. Real computers use '65' for 'A', '66' for<br />
'B' and so on - that's to leave enough spare numbers for all the<br />
other funny squiggles that computers need like '#' and '@'. This<br />
is called 'ASCII' (American Standard Code for Information Interchange).<br />
<p><br />
You can try writing your name using numbers.<br />
(Interesting side-topic about secret codes here too. Write a<br />
message, turn it into numbers, add something to all the numbers<br />
and then turn it back into letters again.) Pictures can also<br />
be turned into numbers. Colour your picture on squared paper,<br />
then turn each square (A picture element or 'pixel') into a number<br />
using '1' for Red, '2' for Green, etc. You can turn the numbers<br />
back into a picture again by using a box of crayons with the<br />
right numbers written on each crayon. Draw a simple picture<br />
on a 10x10 grid, code it into a long list of 100 numbers and<br />
see if anyone can decode it. What happens if you miss out one<br />
of the numbers near the beginning?<br />
</td><br />
</tr><br />
<tr><td> What can a computer DO?</td><br />
<td>Not Much: All it can do is follow a set of rules called a 'program'.<br />
Computers don't do ANYTHING without a program.<br />
</td><br />
</tr><br />
<tr><td>How fast is a computer?</td><br />
<td>When we run HICCUP programs on<br />
SPARK, most children never manage more than one instruction<br />
every ten seconds - a 2GHz PC such as you might have in<br />
your home or classroom is about 20,000,000,000 times faster<br />
than SPARK. That sounds pretty fast - but there are still<br />
things that humans can do faster than a computer. Recognising<br />
the face of someone you know would be a good example. Computers<br />
have been designed that can do that, but they take several seconds<br />
to do it - something that the human brain can do in a tiny fraction<br />
of a second.<br />
</td><br />
</tr><br />
<tr><td>How many computers does your family own?</td><br />
<td>None? One? Maybe two? Well, I bet there is at least one computer<br />
in your family car, another in the microwave, another in your TV<br />
and probably another one in the remote control, at least one in<br />
your DVD player, maybe one in your Air Conditioning controller, every<br />
pocket calculator or digital watch has a computer inside. Video<br />
games and cellphones are computers too. Even the big box you call "a computer"<br />
probably has three or four smaller computers inside it. Most<br />
families own a dozen or more computers without even knowing it.<br />
Think how hard it would be to go through a whole day without<br />
using a computer of some kind.<br />
</td><br />
</tr><br />
</table><br />
<br />
== Building SPARK ==<br />
SPARK is made from a number of separate parts - each one<br />
manned by either one or two kids. In order for HICCUP<br />
programs to 'run' correctly, the kids mustn't make even<br />
one mistake! Fortunately, the HICCUP language makes it<br />
quite hard for a mistake to happen - but it might be<br />
better to have two kids running each part so they can<br />
check up on each other.<br />
<br />
== The Parts ==<br />
Each part is manned by a child who has to follow simple instructions<br />
given to them by one of the other children. It might be nice if<br />
each child wore a paper hat with the name of their part written on it.<br />
<br />
Between 'runs' of a HICCUP program, it's a good idea to change the<br />
jobs of each of the children so they all get a turn at each of the<br />
jobs.<br />
=== The User ===<br />
This isn't strictly a part of SPARK - but someone has to actually use the<br />
SPARK computer to type in data and to respond to output from the<br />
screen. It might seem logical for the teacher to be the user - but that's<br />
probably not a good idea - we need someone 'in the know' to try to catch<br />
mistakes that the kids may make as the program is running.<br />
=== The Memory ===<br />
SPARK's memory consists of a number of small boxes (matchboxes would<br />
be ideal), each clearly labelled with a letter of the alphabet starting<br />
at 'A'. Most SPARK programs will need only four or five matchboxes,<br />
but some programs might need more. The 'memory' probably ought to have<br />
around 16 matchboxes just to get across the general idea. Adding more<br />
matchboxes is a 'Memory Upgrade' - real PC's with 16 Megabytes of memory<br />
have (in effect) 16 million matchboxes. SPARK is a VERY low tech computer.<br />
<br />
The child who is 'MEMORY' should have a pencil and a pile of small<br />
paper squares (large enough to write a number on - but small enough<br />
to put into a matchbox - PostIt notes will do quite well).<br />
<br />
Each box can only contain one number. If MEMORY is asked to put a number<br />
into a box that already has one, then throw the older number away first.<br />
=== The Math Processor ===<br />
The SPARK's math processor (called an 'Arithmetic/Logic unit' or ALU<br />
in a real computer) is just a person who does simple arithmetic<br />
when told to do so by one of the other parts of SPARK. It might<br />
be worth having a calculator at hand in case the arithmetic gets<br />
difficult. Some HICCUP programs need you to do division - and if<br />
so, then any fractional part (or 'remainder')of the result should<br />
be ignored. This is actually the case in real computers much<br />
of the time. 7 / 3 = 2 ! When computers need the fractional<br />
part of the result, they have to use techniques similar to<br />
the ones people use when doing long-division.<br />
<br />
The child who is 'MATH' also needs a supply of paper squares just like<br />
we gave to 'MEMORY'.<br />
=== The Screen ===<br />
This should either be a cardboard box with a screen-shaped hole<br />
in the front that the child can wear on his/her head - or a simple<br />
cutout panel that you can prop up with some books.<br />
<br />
The person who sits here either reads out (or writes on flash-cards)<br />
the output from SPARK so that the USER can 'read' what's on the screen.<br />
<br />
SCREEN is told to read out (or write down and flash) everything that<br />
anyone shows to him or her.<br />
=== The Keyboard ===<br />
The person who is the keyboard should have a number of 'keys' that the<br />
USER can push. They should also have a pencil and some more paper squares.<br />
<br />
Most HICCUP programs only need a few keys to make them work. A key marked<br />
'YES' and another marked 'NO' is important for most HICCUP programs.<br />
The program below needs '<', '>' and '=' keys.<br />
)It's quite amusing to use post-it notes with the key characters on<br />
them and to stick them onto the keyboard persons forehead, nose, fingers,<br />
etc. The USER's typing gets fairly amusing.)<br />
<br />
Whenever the USER pushes a key, the KEYBOARD person should write the<br />
key down on a paper slip and give it to INSTRUCTOR.<br />
=== The Instruction Decoder ===<br />
This is the most important job of all. Each instruction in the HICCUP<br />
program is written out on a 3x5 file card with a hole punched in one<br />
corner. To avoid getting the all-important instructions getting <br />
lost or muddled up, they are best stored on a key-ring.<br />
<br />
The INSTRUCTOR is told to read each card in turn - and to do whatever<br />
it says.<br />
<br />
In a real computer, these instructions are held in<br />
the memory - (one file card per matchbox) - but that gets a little<br />
confusing so HICCUP programs are stored on a keyring. Real computers<br />
also convert each kind of instruction into a different 'code' number<br />
- so that programs are themselves just long lists of numbers. Some<br />
older programmers remember when you had to type the numbers into the<br />
computer - that's why they sometimes talk about 'code' and 'coding'<br />
instead of 'program' and 'programming'.<br />
== A Sample HICCUP Program ==<br />
Each instruction is written on a 3x5 file card. Don't get them<br />
muddled up!<br />
<br />
This is a computer program to play the 'HiLo' game. The rules of 'HiLo'<br />
are that one person thinks of a number (bigger than 0 and smaller than<br />
30 in this game), and the other person has to guess that number by asking<br />
just five questions.<br />
<br />
Most children find it very hard to guess the number with so few questions,<br />
so they will be quite suprised to find they can do it right every time<br />
when they participate in SPARK. The program can guess numbers from 1 to<br />
anything you like - in as few questions as mathematically possible - just<br />
change the maximum number written on the very first file card. Beware though<br />
that every time you double the maximum number, you add around three to five<br />
minutes to the amount of time the children will take to find the answer.<br />
<br />
When playing with people, you can let someone guess a number between 1 and<br />
a million and try to guess it with just 20 questions.<br />
<br />
So, start at the first card...GO!<br />
<br />
# Tell MEMORY to write '30' on a paper slip and put it into box 'B'.<br />
# Tell MEMORY to write '1' on a paper slip and put it into box 'C'.<br />
# Show this to SCREEN: "Think of a number bigger than 0 and smaller than"<br />
# Tell MEMORY to show the slip in box 'B' to SCREEN<br />
# HELLO! (Go on to the next card)<br />
# Tell MEMORY to look inside box B, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add together the two numbers, write the answer down on a new paper slip.<br />
# Tell MATH to divide the new number by two (ignore any remainder).<br />
# Tell MATH to write the answer on another slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# TYPING! (Go on to the next card)<br />
# Show SCREEN this: "Is your number bigger, smaller or the same as "<br />
# Tell MEMORY to show the slip in box 'A' to SCREEN<br />
# Show SCREEN this: "Please type > for Bigger, < for Smaller or = for same."<br />
# Wait for KEYBOARD to pass you a slip of paper.<br />
# If it says '<' then skip on to the card marked "SMALLER!" - if not, carry on from here.<br />
# If it says '>' then skip on to the card marked "BIGGER!" - if not, carry on from here.<br />
# If it says '=' then skip on to the card marked "EQUAL!" - if not, carry on from here.<br />
# Go back to the card marked "TYPING!".<br />
# BIGGER! (Go on to the next card)<br />
# Tell MEMORY to copy the number from box A onto a new slip and to put it into box C (throw away whatever was in box C already).<br />
# Go back to the card marked "HELLO!".<br />
# SMALLER! (Go on to the next card)<br />
# Tell MEMORY to copy the number from box A onto a new slip and to put it into box B (throw away whatever was in box B already).<br />
# Go back to the card marked "HELLO!" and go on from there.<br />
# EQUAL! (Go on to the next card)<br />
# Show SCREEN this: "The number you were thinking of was"<br />
# Tell MEMORY to show the slip in 'A' to SCREEN.<br />
# Well done. Everybody Stop!<br />
<br />
So, what should happen is that the USER thinks of a number - and<br />
by asking a number of questions (at most 5 if nobody makes a mistake),<br />
the 'computer' should be able to correctly guess the number.<br />
<br />
This is interesting. The answer comes out right - but the 'computer'<br />
(ie the kids) have no idea how they did it! That's how come a<br />
computer can play world class chess - and yet still be a chunk of<br />
brainless silicon and copper. All the 'skill' was in the computer<br />
program - which in the case of our HICCUP program is just a bunch<br />
of inanimate 3x5 file cards.<br />
<br />
It takes about 15 HICCUP instruction cards to figure out which<br />
question to ask and it could take as many as five questions to solve<br />
the problem. It needs a total of around 80 cards to be read to get<br />
the problem solved (40 minutes at 30 seconds per card - '''I DON'T<br />
KNOW HOW FAST KIDS WILL BE ABLE TO WORK THESE CARDS - MAYBE FASTER<br />
THAN 30 SECONDS WITH PRACTICE'''). The PC in<br />
your classroom could do that in well under a millionth of a second.<br />
<br />
How long is a millionth of a second? Well, if you stood at one end<br />
of the school holding a flashlight, and turned the flashlight on<br />
at the same instant the computer started to run the program, the<br />
light from the flashlight would not have reached the other end of<br />
the school by the time the computer had finished working on the<br />
problem.<br />
<br />
I estimate that it could take a half hour to run this HICCUP program<br />
on a typical SPARK computer. If you want to cut it shorter than that<br />
then CHEAT! Pick an initial number that the program will guess more<br />
quickly. Alternatively, you could cut some time by reducing the initial<br />
value in box 'B' to 16 - although that's a lot less effective as a demo<br />
and probably only saves about 5 minutes. Here is a table of numbers and<br />
the number of guesses the program should need to get to that number<br />
(assuming 'B' is 30 as above):<br />
<center><br />
<TABLE border=1 cellpadding="2" cellspacing="1"><br />
<TR><TD>Your Number</TD><TD>Number of Guesses</TD></TR><br />
<TR><TD><center>1</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>2</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>3</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>4</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>5</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>6</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>7</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>8</center></TD><TD><center>2</center></TD></TR><br />
<TR><TD><center>9</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>10</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>11</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>12</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>13</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>14</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>15</center></TD><TD><center>1</center></TD></TR><br />
<TR><TD><center>16</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>17</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>18</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>19</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>20</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>21</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>22</center></TD><TD><center>2</center></TD></TR><br />
<TR><TD><center>23</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>24</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>25</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>26</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>27</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>28</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>29</center></TD><TD><center>5</center></TD></TR><br />
</TABLE><br />
</center><br />
<br />
Written in a more conventional programming language (like 'C'),<br />
the HiLo game program looks like this:<br />
<pre><br />
<br />
#include &lt;stdio.h&gt;<br />
<br />
void main ()<br />
{<br />
int A ;<br />
int B = 30 ;<br />
int C = 1 ;<br />
<br />
printf ( "Think of a number bigger than 0 and smaller than %d\n", B ) ;<br />
<br />
while ( 1 )<br />
{<br />
A = ( B + C ) / 2 ;<br />
<br />
printf ( "Is your number bigger, smaller or the same as %d\n", A ) ;<br />
printf ( "Please type &gt; for Bigger, &lt; for Smaller or = for same." ) ;<br />
<br />
switch ( getch () )<br />
{<br />
case '&gt;' : C = A ; break ;<br />
case '&lt;' : B = A ; break ;<br />
case '=' : printf ( "The number you were thinking of was %d\n", A ) ;<br />
exit ( 0 ) ;<br />
}<br />
}<br />
}<br />
<br />
</pre><br />
== Making Change ==<br />
What is the smallest number of coins it takes to make change for some amount of money?<br />
Write down the number of cents you want to make change for - and put that in MEMORY<br />
box 'A' before you start the program running. This program doesn't use the keyboard.<br />
<br />
Although the program is twice as long as HiLo, it runs fairly quickly for small amounts<br />
of change.<br />
<br />
# Show this to SCREEN: "The smallest number of coins for"<br />
# Tell MEMORY to show the slip in box 'A' to SCREEN<br />
# Show this to SCREEN: "cents is:"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# QUARTERS! (Go on to the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 25.<br />
# If it is then skip on to the card marked "DONE_QUARTERS!" - if not, carry on from here.<br />
# Tell MATH to subtract 25 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "QUARTERS"<br />
# DONE_QUARTERS! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Quarters and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# DIMES! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 10.<br />
# If it is then skip on to the card marked "DONE_DIMES!" - if not, carry on from here.<br />
# Tell MATH to subtract 10 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "DIMES!"<br />
# DONE_DIMES! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Dimes and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# NICKELS! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 5.<br />
# If it is then skip on to the card marked "DONE_NICKELS!" - if not, carry on from here.<br />
# Tell MATH to subtract 5 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "PENNIES!"<br />
# DONE_NICKELS! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Nickels and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# PENNIES! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 1.<br />
# If it is then skip on to the card marked "DONE_PENNIES!" - if not, carry on from here.<br />
# Tell MATH to subtract 1 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "PENNIES!"<br />
# DONE_PENNIES! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Pennies."<br />
# Well done. Everybody Stop!<br />
<br />
Here is that one again in 'C':<br />
<pre><br />
<br />
#include &lt;stdio.h&gt;<br />
<br />
int main ()<br />
{<br />
int A = 122 ;<br />
int C ;<br />
<br />
printf ( "The smallest number of coins for %d cents is:\n", A ) ;<br />
C = 0 ; while ( A &gt;= 25 ) { A -= 25 ; C ++ ; }<br />
print ( "%d Quarters and ", C ) ;<br />
C = 0 ; while ( A &gt;= 10 ) { A -= 10 ; C ++ ; }<br />
print ( "%d Dimes and ", C ) ;<br />
C = 0 ; while ( A &gt;= 5 ) { A -= 25 ; C ++ ; }<br />
print ( "%d Nickels and ", C ) ;<br />
C = 0 ; while ( A &gt;= 1 ) { A -= 1 ; C ++ ; }<br />
print ( "%d Pennies.", C ) ;<br />
}<br />
<br />
</pre><br />
== Robots - and onward towards LOGO ==<br />
You can add another child to the team - the ROBOT. This robot has a SPARK computer in it's head<br />
that tell it what to do. Add new instructions on file cards to say things like "Tell ROBOT to<br />
turn left by 90 degrees", "Tell ROBOT to take 5 steps forward"...and so on. This 'Robot' is<br />
now controllable just like the 'Turtle' in LOGO. Kids who have written HICCUP programs to drive<br />
the robot will be well placed to slip into LOGO programming.<br />
<br />
Once the children have the idea of how the HICCUP setup works, they can probably work in pairs,<br />
one playing the robot and the other one running the program. When children write LOGO programs,<br />
they have to learn how to 'Play Turtle' in order to imagine what their program will do when<br />
they are in the process of writing it - and also in order to see what goes wrong when their<br />
programs have bugs in them.<br />
<br />
== A DEEP Conclusion ==<br />
The in 1997, the computer 'DEEP BLUE' beat Kasparov - who was the best<br />
chess player in the whole world at the time. (Arguably, he remains the<br />
best chess player who ever lived). If we rewrote DEEP BLUE's program<br />
in HICCUP (which would be quite easy to do) then SPARK could beat<br />
Kasparov. But hold on. SPARK is just a handful of school children<br />
following some simple rules. The kids might not even know the rules<br />
of chess.<br />
<br />
Could six kids who don't play chess really beat Kasparov?<br />
<br />
The answer is a conditional YES!<br />
<br />
Our kids could play world class chess and beat the best chess player<br />
in the world if they had enough time and a lot of matchboxes. The number<br />
of matchboxes needed would cover several acres of land - and it's doubtful<br />
that the kids would manage to read enough HICCUP instructions to work<br />
out their first move before they graduated from college - but that's<br />
not really the point - in theory, they could do it. So, we must conclude<br />
that the thing that beat Kasparov wasn't the super-powerful IBM computer,<br />
it was the SOFTWARE that ran on the computer.<br />
<br />
: Aside: Deep Blue can probably run though 10,000,000,000 instructions in<br />
a second, and probably took 10 seconds working out what move it should<br />
play. If SPARK could run one instruction per second, it would take those<br />
kids 10,000 years (working 8 hours a day) to make that first move. If they<br />
made one single mistake in all that time then Deep-SPARK's first move<br />
might turn out to be "Eat At Joes" instead of "b2-b4".<br />
<br />
How did the skills to play chess so well get into the computer? It was<br />
in the PROGRAM. How did the skills get into the Program then? Well,<br />
some person wrote the program that DEEP BLUE uses. We could explain what<br />
happened if that person had all the skills needed to beat Kasparov and<br />
just passed them on to the computer.<br />
<br />
Well, that can't be so - if he was that good at chess, he would be<br />
able to beat Kasparov and we know he can't do that or HE would be<br />
the world champion.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=HICCUP&diff=2238HICCUP2015-08-05T15:29:12Z<p>SteveBaker: Created page with "== Hiccup - Introducing Computer Programming to Little Kids == : ''by Steve Baker. == Introduction for the Teacher == This work is designed to teach very young children someth..."</p>
<hr />
<div>== Hiccup - Introducing Computer Programming to Little Kids ==<br />
: ''by Steve Baker.<br />
== Introduction for the Teacher ==<br />
This work is designed to teach very young children<br />
something that most adults never<br />
learn. How a computer works and how to program it. We do<br />
this without the need to use a real computer.<br />
<br />
This is achieved by having a group of children act out<br />
the various parts of an imaginary computer called SPARK (Small<br />
Programs And Real Kids). SPARK is made from odds and ends<br />
that you might find in a classroom like matchboxes, 3x5 file cards<br />
and a half dozen children. A calculator might<br />
be a useful accessory - but purists may want to omit it if<br />
the class has some children with sufficiently good arithmetic<br />
skills.<br />
<br />
The activity will require simple reading skills, some<br />
basic math and a lot of enthusiasm.<br />
<br />
The SPARK computer can run real computer programs written<br />
in a special programming language called 'HICCUP' which is<br />
quite like several real computer languages. SPARK computers<br />
run HICCUP programs - VERY SLOWLY. I present a couple of<br />
suitable programs in this book - but you can write more of<br />
your own. If your kids get into writing HICCUP then you<br />
can use a real computer to run them at a decent speed ('''THAT IMPLIES FORMALIZING HICCUP ENOUGH TO ENABLE ME TO<br />
WRITE A SIMPLE PARSER/INTERPRETER'''). Sizeable<br />
HICCUP programs can do real work and be useful (but not<br />
when run on SPARK because the kids get bored and make lots<br />
of mistakes).<br />
<br />
The basic SPARK computer is very simple - but you can<br />
easily extend it with more kids - and add peripherals like<br />
a printer, colour graphics - and even a Robot.<br />
== Why Teach Programming? (An Aside) ==<br />
Computers are amazing machines - whilst they may not have<br />
made as much difference to people as some other machines (The car,<br />
the plow, the flint knife), they are undoubtedly the most astounding.<br />
<br />
What is surprising is that although a computer is really a fairly simple<br />
device, hardly anyone (outside of computer professionals) has the faintest<br />
idea of how a computer actually works. People are taught some<br />
incredibly low level stuff (Binary arithmetic) and some incredibly<br />
high level stuff (How to Surf the Web, How to Word-Process) - but<br />
hardly anyone understands the all important part in between.<br />
<br />
Computer programming is a very important thing to teach children.<br />
It is hard to teach a kid the equations of motion - not because those<br />
equations are particularly hard - but because they appear to have<br />
absolutely no relevance to real life. When did YOU last need to<br />
use those equations in your day-to-day life? Have you EVER needed<br />
those equations in day-to-day life?<br />
<br />
Think about this though - if you are trying to write a<br />
video game (something kids DO identify with) - and you want<br />
your character to jump over an obstacle in a realistic manner - you<br />
need to know the equations of motion! The idea of building<br />
virtual worlds in the computer is appealing - but forces kids<br />
to confront the mathematics of the real world. The computer<br />
can't do anything unless you tell it how - there is no way to<br />
bypass it. You HAVE to use math.<br />
<br />
Well, HICCUP isn't going to do all of that - but it's<br />
a good start. It will certainly get everyone's enthusiasm<br />
going - and could lead into a formal programming course using<br />
a computer programming language like LOGO or BASIC.<br />
== Work to do before Starting SPARK ==<br />
First, you need to get the kids thinking about what a computer is.<br />
<br />
Here are some questions to ask - and what I think the answers are:<br />
<br />
<TABLE border=1 cellpadding="2" cellspacing="1"><br />
<tr><td>Are computers smart?</td><br />
<td>Well, there are computers that<br />
can fly a plane or drive a car - there are computers that<br />
can play chess better than any human being alive today. On<br />
the other hand, they sometimes make incredibly stupid mistakes like<br />
sending you a bill for no dollars and no cents and demanding<br />
that you pay it immediately OR ELSE!<br />
</td><br />
</tr><br />
<tr><td>Do computers make mistakes?</td><br />
<td>They do - but very rarely. Computers are by far the most<br />
reliable machines that have ever been built. An average<br />
car would be unlikely to go for more than 100,000 miles without<br />
something on it breaking. At 50mph, that is 120,000 minutes.<br />
If the engine runs at 5,000rpm, it does about 600 million<br />
operations before it breaks. A computer has to do 600 million<br />
operations every SECOND without making a single mistake for years<br />
at a time.<br />
<p><br />
You often hear stories about computers making mistakes - but the<br />
mistake is almost always in the programs that people write for<br />
the computer to tell it what to do.<br />
<tr><td>Are computers good at numbers?</td><br />
<td>Well, how about this - <br />
computers don't know all the numbers 0 through 9. They only<br />
really understand 0 and 1. This makes counting a bit difficult -<br />
try it. ONE, TWO - Oh, no, it can't do TWO can it? - only zeros<br />
and ones, what's the next number it could do then? 3,4,5,6,7,8,9 -<br />
no. The next number it can do is TEN! OK, let's try<br />
again. ONE, TEN!, ELEVEN, ...uh... ONE-HUNDRED!, ONE-HUNDRED-ONE,<br />
ONE-HUNDRED-TEN, ONE-HUNDRED-ELEVEN, ...oh-oh...ONE-THOUSAND!?!<br />
Try counting some objects in 'binary numbers'. It would be hard to<br />
work with computers if they counted like that all the time - so<br />
one of the first things we write programs for is to teach them<br />
to use ALL the numbers when they talk to us. Once we do that, we<br />
can talk to the computer using all the numbers - and it'll change<br />
them into zeros and ones so it can understand us. It will even<br />
change the zeros and ones back into ordinary numbers so that we<br />
can understand what the computer is telling us.<br />
</td><br />
</tr><br />
<tr><td>Can computers do anything else apart from just numbers?</td><br />
<td>No - not really. If the computer wants to use letters or make pictures<br />
or sounds, it has to use numbers for all those things. It could<br />
do letters by making '1' be 'A', '2' be 'B, '3' be 'C' and so<br />
on up to '26' for 'Z'. Real computers use '65' for 'A', '66' for<br />
'B' and so on - that's to leave enough spare numbers for all the<br />
other funny squiggles that computers need like '#' and '@'. This<br />
is called 'ASCII' (American Standard Code for Information Interchange).<br />
<p><br />
You can try writing your name using numbers.<br />
(Interesting side-topic about secret codes here too. Write a<br />
message, turn it into numbers, add something to all the numbers<br />
and then turn it back into letters again.) Pictures can also<br />
be turned into numbers. Colour your picture on squared paper,<br />
then turn each square (A picture element or 'pixel') into a number<br />
using '1' for Red, '2' for Green, etc. You can turn the numbers<br />
back into a picture again by using a box of crayons with the<br />
right numbers written on each crayon. Draw a simple picture<br />
on a 10x10 grid, code it into a long list of 100 numbers and<br />
see if anyone can decode it. What happens if you miss out one<br />
of the numbers near the beginning?<br />
</td><br />
</tr><br />
<tr><td> What can a computer DO?</td><br />
<td>Not Much: All it can do is follow a set of rules called a 'program'.<br />
Computers don't do ANYTHING without a program.<br />
</td><br />
</tr><br />
<tr><td>How fast is a computer?</td><br />
<td>When we run HICCUP programs on<br />
SPARK, most children never manage more than one instruction<br />
every ten seconds - a 200MHz PC such as you might have in<br />
your home or classroom is about 2,000,000,000 times faster<br />
than SPARK. That sounds pretty fast - but there are still<br />
things that humans can do faster than a computer. Recognising<br />
the face of someone you know would be a good example. Computers<br />
have been designed that can do that, but they take several seconds<br />
to do it - something that the human brain can do in a tiny fraction<br />
of a second.<br />
</td><br />
</tr><br />
<tr><td>How many computers does your family own?</td><br />
<td>None? One? Maybe two? Well, I bet there is at least one computer<br />
in your family car, another in the microwave, another in your TV<br />
and probably another one in the remote control, at least one in<br />
your VCR, maybe one in your Air Conditioning controller, every<br />
pocket calculator or digital watch has a computer inside. Video<br />
games are computers too. Even the big box you call "a computer"<br />
probably has three or four smaller computers inside it. Most<br />
families own a dozen or more computers without even knowing it.<br />
Think how hard it would be to go through a whole day without<br />
using a computer of some kind.<br />
</td><br />
</tr><br />
</table><br />
<br />
== Building SPARK ==<br />
SPARK is made from a number of separate parts - each one<br />
manned by either one or two kids. In order for HICCUP<br />
programs to 'run' correctly, the kids mustn't make even<br />
one mistake! Fortunately, the HICCUP language makes it<br />
quite hard for a mistake to happen - but it might be<br />
better to have two kids running each part so they can<br />
check up on each other.<br />
<br />
== The Parts ==<br />
Each part is manned by a child who has to follow simple instructions<br />
given to them by one of the other children. It might be nice if<br />
each child wore a paper hat with the name of their part written on it.<br />
<br />
Between 'runs' of a HICCUP program, it's a good idea to change the<br />
jobs of each of the children so they all get a turn at each of the<br />
jobs.<br />
=== The User ===<br />
This isn't strictly a part of SPARK - but someone has to actually use the<br />
SPARK computer to type in data and to respond to output from the<br />
screen. It might seem logical for the teacher to be the user - but that's<br />
probably not a good idea - we need someone 'in the know' to try to catch<br />
mistakes that the kids may make as the program is running.<br />
=== The Memory ===<br />
SPARK's memory consists of a number of small boxes (matchboxes would<br />
be ideal), each clearly labelled with a letter of the alphabet starting<br />
at 'A'. Most SPARK programs will need only four or five matchboxes,<br />
but some programs might need more. The 'memory' probably ought to have<br />
around 16 matchboxes just to get across the general idea. Adding more<br />
matchboxes is a 'Memory Upgrade' - real PC's with 16 Megabytes of memory<br />
have (in effect) 16 million matchboxes. SPARK is a VERY low tech computer.<br />
<br />
The child who is 'MEMORY' should have a pencil and a pile of small<br />
paper squares (large enough to write a number on - but small enough<br />
to put into a matchbox - PostIt notes will do quite well).<br />
<br />
Each box can only contain one number. If MEMORY is asked to put a number<br />
into a box that already has one, then throw the older number away first.<br />
=== The Math Processor ===<br />
The SPARK's math processor (called an 'Arithmetic/Logic unit' or ALU<br />
in a real computer) is just a person who does simple arithmetic<br />
when told to do so by one of the other parts of SPARK. It might<br />
be worth having a calculator at hand in case the arithmetic gets<br />
difficult. Some HICCUP programs need you to do division - and if<br />
so, then any fractional part (or 'remainder')of the result should<br />
be ignored. This is actually the case in real computers much<br />
of the time. 7 / 3 = 2 ! When computers need the fractional<br />
part of the result, they have to use techniques similar to<br />
the ones people use when doing long-division.<br />
<br />
The child who is 'MATH' also needs a supply of paper squares just like<br />
we gave to 'MEMORY'.<br />
=== The Screen ===<br />
This should either be a cardboard box with a screen-shaped hole<br />
in the front that the child can wear on his/her head - or a simple<br />
cutout panel that you can prop up with some books.<br />
<br />
The person who sits here either reads out (or writes on flash-cards)<br />
the output from SPARK so that the USER can 'read' what's on the screen.<br />
<br />
SCREEN is told to read out (or write down and flash) everything that<br />
anyone shows to him or her.<br />
=== The Keyboard ===<br />
The person who is the keyboard should have a number of 'keys' that the<br />
USER can push. They should also have a pencil and some more paper squares.<br />
<br />
Most HICCUP programs only need a few keys to make them work. A key marked<br />
'YES' and another marked 'NO' is important for most HICCUP programs.<br />
The program below needs '<', '>' and '=' keys.<br />
)It's quite amusing to use post-it notes with the key characters on<br />
them and to stick them onto the keyboard persons forehead, nose, fingers,<br />
etc. The USER's typing gets fairly amusing.)<br />
<br />
Whenever the USER pushes a key, the KEYBOARD person should write the<br />
key down on a paper slip and give it to INSTRUCTOR.<br />
=== The Instruction Decoder ===<br />
This is the most important job of all. Each instruction in the HICCUP<br />
program is written out on a 3x5 file card with a hole punched in one<br />
corner. To avoid getting the all-important instructions getting <br />
lost or muddled up, they are best stored on a key-ring.<br />
<br />
The INSTRUCTOR is told to read each card in turn - and to do whatever<br />
it says.<br />
<br />
In a real computer, these instructions are held in<br />
the memory - (one file card per matchbox) - but that gets a little<br />
confusing so HICCUP programs are stored on a keyring. Real computers<br />
also convert each kind of instruction into a different 'code' number<br />
- so that programs are themselves just long lists of numbers. Some<br />
older programmers remember when you had to type the numbers into the<br />
computer - that's why they sometimes talk about 'code' and 'coding'<br />
instead of 'program' and 'programming'.<br />
== A Sample HICCUP Program ==<br />
Each instruction is written on a 3x5 file card. Don't get them<br />
muddled up!<br />
<br />
This is a computer program to play the 'HiLo' game. The rules of 'HiLo'<br />
are that one person thinks of a number (bigger than 0 and smaller than<br />
30 in this game), and the other person has to guess that number by asking<br />
just five questions.<br />
<br />
Most children find it very hard to guess the number with so few questions,<br />
so they will be quite suprised to find they can do it right every time<br />
when they participate in SPARK. The program can guess numbers from 1 to<br />
anything you like - in as few questions as mathematically possible - just<br />
change the maximum number written on the very first file card. Beware though<br />
that every time you double the maximum number, you add around three to five<br />
minutes to the amount of time the children will take to find the answer.<br />
<br />
When playing with people, you can let someone guess a number between 1 and<br />
a million and try to guess it with just 20 questions.<br />
<br />
So, start at the first card...GO!<br />
<br />
# Tell MEMORY to write '30' on a paper slip and put it into box 'B'.<br />
# Tell MEMORY to write '1' on a paper slip and put it into box 'C'.<br />
# Show this to SCREEN: "Think of a number bigger than 0 and smaller than"<br />
# Tell MEMORY to show the slip in box 'B' to SCREEN<br />
# HELLO! (Go on to the next card)<br />
# Tell MEMORY to look inside box B, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add together the two numbers, write the answer down on a new paper slip.<br />
# Tell MATH to divide the new number by two (ignore any remainder).<br />
# Tell MATH to write the answer on another slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# TYPING! (Go on to the next card)<br />
# Show SCREEN this: "Is your number bigger, smaller or the same as "<br />
# Tell MEMORY to show the slip in box 'A' to SCREEN<br />
# Show SCREEN this: "Please type > for Bigger, < for Smaller or = for same."<br />
# Wait for KEYBOARD to pass you a slip of paper.<br />
# If it says '<' then skip on to the card marked "SMALLER!" - if not, carry on from here.<br />
# If it says '>' then skip on to the card marked "BIGGER!" - if not, carry on from here.<br />
# If it says '=' then skip on to the card marked "EQUAL!" - if not, carry on from here.<br />
# Go back to the card marked "TYPING!".<br />
# BIGGER! (Go on to the next card)<br />
# Tell MEMORY to copy the number from box A onto a new slip and to put it into box C (throw away whatever was in box C already).<br />
# Go back to the card marked "HELLO!".<br />
# SMALLER! (Go on to the next card)<br />
# Tell MEMORY to copy the number from box A onto a new slip and to put it into box B (throw away whatever was in box B already).<br />
# Go back to the card marked "HELLO!" and go on from there.<br />
# EQUAL! (Go on to the next card)<br />
# Show SCREEN this: "The number you were thinking of was"<br />
# Tell MEMORY to show the slip in 'A' to SCREEN.<br />
# Well done. Everybody Stop!<br />
<br />
So, what should happen is that the USER thinks of a number - and<br />
by asking a number of questions (at most 5 if nobody makes a mistake),<br />
the 'computer' should be able to correctly guess the number.<br />
<br />
This is interesting. The answer comes out right - but the 'computer'<br />
(ie the kids) have no idea how they did it! That's how come a<br />
computer can play world class chess - and yet still be a chunk of<br />
brainless silicon and copper. All the 'skill' was in the computer<br />
program - which in the case of our HICCUP program is just a bunch<br />
of inanimate 3x5 file cards.<br />
<br />
It takes about 15 HICCUP instruction cards to figure out which<br />
question to ask and it could take as many as five questions to solve<br />
the problem. It needs a total of around 80 cards to be read to get<br />
the problem solved (40 minutes at 30 seconds per card - '''I DON'T<br />
KNOW HOW FAST KIDS WILL BE ABLE TO WORK THESE CARDS - MAYBE FASTER<br />
THAN 30 SECONDS WITH PRACTICE'''). The PC in<br />
your classroom could do that in well under a millionth of a second.<br />
<br />
How long is a millionth of a second? Well, if you stood at one end<br />
of the school holding a flashlight, and turned the flashlight on<br />
at the same instant the computer started to run the program, the<br />
light from the flashlight would not have reached the other end of<br />
the school by the time the computer had finished working on the<br />
problem.<br />
<br />
I estimate that it could take a half hour to run this HICCUP program<br />
on a typical SPARK computer. If you want to cut it shorter than that<br />
then CHEAT! Pick an initial number that the program will guess more<br />
quickly. Alternatively, you could cut some time by reducing the initial<br />
value in box 'B' to 16 - although that's a lot less effective as a demo<br />
and probably only saves about 5 minutes. Here is a table of numbers and<br />
the number of guesses the program should need to get to that number<br />
(assuming 'B' is 30 as above):<br />
<center><br />
<TABLE border=1 cellpadding="2" cellspacing="1"><br />
<TR><TD>Your Number</TD><TD>Number of Guesses</TD></TR><br />
<TR><TD><center>1</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>2</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>3</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>4</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>5</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>6</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>7</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>8</center></TD><TD><center>2</center></TD></TR><br />
<TR><TD><center>9</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>10</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>11</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>12</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>13</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>14</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>15</center></TD><TD><center>1</center></TD></TR><br />
<TR><TD><center>16</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>17</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>18</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>19</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>20</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>21</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>22</center></TD><TD><center>2</center></TD></TR><br />
<TR><TD><center>23</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>24</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>25</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>26</center></TD><TD><center>3</center></TD></TR><br />
<TR><TD><center>27</center></TD><TD><center>5</center></TD></TR><br />
<TR><TD><center>28</center></TD><TD><center>4</center></TD></TR><br />
<TR><TD><center>29</center></TD><TD><center>5</center></TD></TR><br />
</TABLE><br />
</center><br />
<br />
Written in a more conventional programming language (like 'C'),<br />
the HiLo game program looks like this:<br />
<pre><br />
<br />
#include &lt;stdio.h&gt;<br />
<br />
void main ()<br />
{<br />
int A ;<br />
int B = 30 ;<br />
int C = 1 ;<br />
<br />
printf ( "Think of a number bigger than 0 and smaller than %d\n", B ) ;<br />
<br />
while ( 1 )<br />
{<br />
A = ( B + C ) / 2 ;<br />
<br />
printf ( "Is your number bigger, smaller or the same as %d\n", A ) ;<br />
printf ( "Please type &gt; for Bigger, &lt; for Smaller or = for same." ) ;<br />
<br />
switch ( getch () )<br />
{<br />
case '&gt;' : C = A ; break ;<br />
case '&lt;' : B = A ; break ;<br />
case '=' : printf ( "The number you were thinking of was %d\n", A ) ;<br />
exit ( 0 ) ;<br />
}<br />
}<br />
}<br />
<br />
</pre><br />
== Making Change ==<br />
What is the smallest number of coins it takes to make change for some amount of money?<br />
Write down the number of cents you want to make change for - and put that in MEMORY<br />
box 'A' before you start the program running. This program doesn't use the keyboard.<br />
<br />
Although the program is twice as long as HiLo, it runs fairly quickly for small amounts<br />
of change.<br />
<br />
# Show this to SCREEN: "The smallest number of coins for"<br />
# Tell MEMORY to show the slip in box 'A' to SCREEN<br />
# Show this to SCREEN: "cents is:"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# QUARTERS! (Go on to the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 25.<br />
# If it is then skip on to the card marked "DONE_QUARTERS!" - if not, carry on from here.<br />
# Tell MATH to subtract 25 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "QUARTERS"<br />
# DONE_QUARTERS! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Quarters and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# DIMES! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 10.<br />
# If it is then skip on to the card marked "DONE_DIMES!" - if not, carry on from here.<br />
# Tell MATH to subtract 10 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "DIMES!"<br />
# DONE_DIMES! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Dimes and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# NICKELS! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 5.<br />
# If it is then skip on to the card marked "DONE_NICKELS!" - if not, carry on from here.<br />
# Tell MATH to subtract 5 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "PENNIES!"<br />
# DONE_NICKELS! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Nickels and"<br />
# Tell MEMORY to write '0' on a paper slip and put it into box 'C'.<br />
# PENNIES! (Go onto the next card)<br />
# Tell MEMORY to look inside box A, copy the number onto a slip of paper and pass it to MATH.<br />
# Ask MATH if that number is smaller than 1.<br />
# If it is then skip on to the card marked "DONE_PENNIES!" - if not, carry on from here.<br />
# Tell MATH to subtract 1 from the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'A'.<br />
# Tell MEMORY to look inside box C, copy the number onto a slip of paper and pass it to MATH.<br />
# Tell MATH to add one to the number, to write the answer down on a new slip of paper and pass it to MEMORY.<br />
# Tell MEMORY to put the slip into box 'C'.<br />
# Go back to the card marked "PENNIES!"<br />
# DONE_PENNIES! (Go on to the next card)<br />
# Tell MEMORY to show the slip in box 'C' to SCREEN<br />
# Show this to SCREEN: "Pennies."<br />
# Well done. Everybody Stop!<br />
<br />
Here is that one again in 'C':<br />
<pre><br />
<br />
#include &lt;stdio.h&gt;<br />
<br />
int main ()<br />
{<br />
int A = 122 ;<br />
int C ;<br />
<br />
printf ( "The smallest number of coins for %d cents is:\n", A ) ;<br />
C = 0 ; while ( A &gt;= 25 ) { A -= 25 ; C ++ ; }<br />
print ( "%d Quarters and ", C ) ;<br />
C = 0 ; while ( A &gt;= 10 ) { A -= 10 ; C ++ ; }<br />
print ( "%d Dimes and ", C ) ;<br />
C = 0 ; while ( A &gt;= 5 ) { A -= 25 ; C ++ ; }<br />
print ( "%d Nickels and ", C ) ;<br />
C = 0 ; while ( A &gt;= 1 ) { A -= 1 ; C ++ ; }<br />
print ( "%d Pennies.", C ) ;<br />
}<br />
<br />
</pre><br />
== Robots - and onward towards LOGO ==<br />
You can add another child to the team - the ROBOT. This robot has a SPARK computer in it's head<br />
that tell it what to do. Add new instructions on file cards to say things like "Tell ROBOT to<br />
turn left by 90 degrees", "Tell ROBOT to take 5 steps forward"...and so on. This 'Robot' is<br />
now controllable just like the 'Turtle' in LOGO. Kids who have written HICCUP programs to drive<br />
the robot will be well placed to slip into LOGO programming.<br />
<br />
Once the children have the idea of how the HICCUP setup works, they can probably work in pairs,<br />
one playing the robot and the other one running the program. When children write LOGO programs,<br />
they have to learn how to 'Play Turtle' in order to imagine what their program will do when<br />
they are in the process of writing it - and also in order to see what goes wrong when their<br />
programs have bugs in them.<br />
<br />
== A DEEP Conclusion ==<br />
The in 1997, the computer 'DEEP BLUE' beat Kasparov - who was the best<br />
chess player in the whole world at the time. (Arguably, he remains the<br />
best chess player who ever lived). If we rewrote DEEP BLUE's program<br />
in HICCUP (which would be quite easy to do) then SPARK could beat<br />
Kasparov. But hold on. SPARK is just a handful of school children<br />
following some simple rules. The kids might not even know the rules<br />
of chess.<br />
<br />
Could six kids who don't play chess really beat Kasparov?<br />
<br />
The answer is a conditional YES!<br />
<br />
Our kids could play world class chess and beat the best chess player<br />
in the world if they had enough time and a lot of matchboxes. The number<br />
of matchboxes needed would cover several acres of land - and it's doubtful<br />
that the kids would manage to read enough HICCUP instructions to work<br />
out their first move before they graduated from college - but that's<br />
not really the point - in theory, they could do it. So, we must conclude<br />
that the thing that beat Kasparov wasn't the super-powerful IBM computer,<br />
it was the SOFTWARE that ran on the computer.<br />
<br />
: Aside: Deep Blue can probably run though 10,000,000,000 instructions in<br />
a second, and probably took 10 seconds working out what move it should<br />
play. If SPARK could run one instruction per second, it would take those<br />
kids 10,000 years (working 8 hours a day) to make that first move. If they<br />
made one single mistake in all that time then Deep-SPARK's first move<br />
might turn out to be "Eat At Joes" instead of "b2-b4".<br />
<br />
How did the skills to play chess so well get into the computer? It was<br />
in the PROGRAM. How did the skills get into the Program then? Well,<br />
some person wrote the program that DEEP BLUE uses. We could explain what<br />
happened if that person had all the skills needed to beat Kasparov and<br />
just passed them on to the computer.<br />
<br />
Well, that can't be so - if he was that good at chess, he would be<br />
able to beat Kasparov and we know he can't do that or HE would be<br />
the world champion.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Matrices_can_be_your_friends&diff=2237Matrices can be your friends2015-06-10T19:37:12Z<p>SteveBaker: Created page with "=== By Steve Baker === What stops most novice graphics programmers from getting friendly with matrices is that they look like 16 utterly random numbers. However, a little ment..."</p>
<hr />
<div>=== By Steve Baker ===<br />
What stops most novice graphics programmers from getting friendly with matrices is that they look like 16 utterly random numbers. However, a little mental picture that I have seems to help most people to make sense of what's going on. Most programmers are visual thinkers and don't take kindly to piles of abstract math.<br />
<br />
Take an OpenGL matrix:<br />
<br />
float m [ 16 ] ;<br />
<br />
Consider this as a 4x4 array with it's elements laid out into four columns like this:<br />
<br />
m[0] m[4] m[ 8] m[12]<br />
m[1] m[5] m[ 9] m[13]<br />
m[2] m[6] m[10] m[14]<br />
m[3] m[7] m[11] m[15]<br />
<br />
'''WARNING''': Mathematicians like to see their matrices laid out on paper this way (with the array indices increasing down the columns instead of across the rows as a programmer would usually write them). Look CAREFULLY at the order of the matrix elements in the layout above!<br />
...but we are OpenGL programmers - not mathematicians - right?! The reason OpenGL arrays are laid out in what some people would consider to be the opposite direction to mathematical convention is somewhat lost in the mists of time. However, it turns out to be a happy accident as we will see later.<br />
<br />
If you are dealing with a matrix which only deals with rigid bodies (ie no scale, shear, squash, etc) then the last row (array elements 3,7,11 and 15) are always 0,0,0 and 1 respectively and so long as they always maintain those values, we can safely forget about them for now.<br />
<br />
The first three elements of the rightmost column of the matrix is just the overall translation. If you imagine some kind of neat little compact object (like a teapot), then array elements 12,13 and 14 tell you where it is in the world. It doesn't matter what combinations of rotations and translations it took to produce the matrix, the rightmost column tells you where the object basically is. It is often fortunate that the OpenGL matrix array is laid out the way it is because it results in those three elements being consecutive in memory.<br />
<br />
OK, so now we are down to only nine random-looking numbers. These are the top three elements of each of the first three columns - and collectively they represent the rotation of the object.<br />
<br />
The easy way to decode those numbers is to imagine what happens to four points near to the origin after they are transformed by the matrix:<br />
<br />
<br />
(0,1,0)<br />
| /(0,0,1)<br />
| /<br />
|/___(1,0,0)<br />
(0,0,0)<br />
<br />
These are four vertices on a 1x1x1 cube that has one corner at the origin.<br />
After the matrix has transformed this cube, where does it end up?<br />
<br />
Well, if we neglect the translation part (the bottom row), then the pure rotation part simply describes the new location of the points on the cube:<br />
<br />
<br />
(1,0,0) ---> ( m[0], m[1], m[2] )<br />
(0,1,0) ---> ( m[4], m[5], m[6] )<br />
(0,0,1) ---> ( m[8], m[9], m[10])<br />
(0,0,0) ---> ( 0, 0, 0 )<br />
<br />
After that, you just add the translation onto each point so that:<br />
<br />
(1,0,0) ---> ( m[0], m[1], m[2] ) + ( m[12], m[13], m[14] )<br />
(0,1,0) ---> ( m[4], m[5], m[6] ) + ( m[12], m[13], m[14] )<br />
(0,0,1) ---> ( m[8], m[9], m[10]) + ( m[12], m[13], m[14] )<br />
(0,0,0) ---> ( 0, 0, 0 ) + ( m[12], m[13], m[14] )<br />
<br />
Once you know this, it becomes quite easy to use matrices to position objects exactly where you need them without messing around with multiple calls to glRotate.<br />
Just imagine a little cube at the origin - pretend it's firmly attached to your model. Think about where the cube ends up as the model moves - write down where it's vertices would end up and there is your matrix.<br />
<br />
So, if I gave you this matrix:<br />
<br />
<br />
0.707, -0.707, 0, 10<br />
0.707, 0.707, 0, 10<br />
0 , 0 , 1, 0<br />
0 , 0 , 0, 1<br />
<br />
...you could easily see that the X axis of that little cube is now pointing somewhere between the X and Y axes, the Y axis is pointing somewhere between Y and negative X and the Z axis is unchanged. The entire cube has been moved 10 units off in X and Y. This is a 45 degree rotation about Z and a 10,10,0 translation! You didn't need any hard math - just a mental picture of what the little cube did - and no concerns about the order of operations or anything hard like that. What would have happened to something out at 100,100,0? Well, just imagine it was glued to the cube (on the end of a long stick)...as the cube rotated, the thing at 100,100 would have moved quite a bit too - in fact, you can see that the rotation would put it onto the Y axis and the translation would have moved it 10 units up and to the right.<br />
With practice, you can figure out what that last row of numbers does to the little cube too.<br />
<br />
So, would you like to know how to use a matrix to squash, stretch, shear, etc? Just think about where the axes of that little cube end up - write them down and you are done. What does a cube of jello look like when there is a strong wind blowing from X=-infinity?<br />
<br />
<br />
1, 0.3, 0, 0<br />
0, 0.9, 0, 0<br />
0, 0 , 1, 0<br />
0, 0 , 0, 1<br />
<br />
Look - the Y axis is leaning a third of a unit to the right and the cube got a bit shorter.<br />
Suppose your cartoon character is going to jump vertically, and you want to do a bit of pre-squash before the jump... and post-stretch during the jump. Just gradually vary the matrix from:<br />
<br />
<br />
1 , 0 , 0, 0 1 , 0 , 0, 0<br />
0 , 0.8, 0, 0 0 , 1.2, 0, 0<br />
0 , 0 , 1, 0 ===> 0 , 0 , 1, 0<br />
0 , 0 , 0, 1 0 , 0 , 0, 1<br />
<br />
Not bad - he got shorter then longer - how about getting a bit fatter too (conservation of cartoon volume) ?<br />
<br />
1.2, 0 , 0 , 0 0.9,0 , 0 , 0<br />
0 , 0.8, 0 , 0 0 ,1.2, 0 , 0<br />
0 , 0 , 1.2, 0 ===> 0 ,0 ,0.9, 0<br />
0 , 0 , 0 , 1 0 ,0 , 0 , 1<br />
<br />
Now the cube got smaller in Y and bigger in X and Z then got bigger in Y and smaller in X/Z...easy!<br />
Not only is it easier to think transforms out this way, but it's invariably more efficient too. By seeing the entire transformation as one whole operation on a unit cube, you save a long sequence of glRotate/glTranslate/glScale commands - which each imply a complicated set of multiply/add steps to concatenate the new transform with whatever is on the top of the stack.<br />
<br />
Finally, there is one matrix that we all need to know - the "Identity" matrix:<br />
<br />
<br />
1, 0, 0, 0<br />
0, 1, 0, 0<br />
0, 0, 1, 0<br />
0, 0, 0, 1<br />
<br />
As you can see, this matrix leaves all the axes completely alone and performs no translation. This is a "do nothing" matrix.<br />
Matrices are really easy - it's just a matter of looking at them pictorially.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Main_Page&diff=2236Main Page2015-06-10T19:36:01Z<p>SteveBaker: /* Welcome to Wikiid! */</p>
<hr />
<div>__NOTOC__<br />
[[Image:Bakercoat lowcontrast.png|right]]<br />
[[Image:Bakercoat lowcontrast.png|left]]<br />
[[Image:Welcome.png|center]]<br />
<br />
== Welcome to Wikiid! ==<br />
<br style="clear:both" /><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; <br />
font-weight:bold;">Guides and FAQ's</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW GUIDE/FAQ PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Wikiid templates|The Wikiid Site Map]]<br />
: [[The simplest possible guide to writing HTML]].<br />
: [[The simplest possible guide to writing MediaWiki]].<br />
: [[SVN server|The simplest possible guide to SVN]]<br />
: [[Makefile|The simplest possible guide to 'make' and Makefiles]]<br />
: [[C++: multiple source files|A simple guide to having multiple source files in C++]]<br />
: [[A Short Guide to C++ Pointers]]<br />
: [[A Short Guide to C++ class inheritance]]<br />
: [[A Short Guide to Data Structures]]<br />
: [[A Short Guide to 3D Graphics Performance testing]]<br />
: [[A Short Guide to writing server-side CGI programs in C++]]<br />
: [[A Short Guide to understanding C++ compiler errors]]<br />
: [[A Short Guide to AJAX programming]]<br />
: [[An Engineer's guide to Scrum]]<br />
: [[JavaScript notes]]<br />
: [[Matrices can be your friends]]<br />
: [[GLSL shaders|The simplest possible guide to GLSL shaders]]<br />
: [[Android Phone development from the Linux command-line]]<br />
: [[List of OpenSource software Steve has Worked On]]<br />
: [[List of FAQ's that Steve maintains]]<br />
: [[Tutorials for Kids]]<br />
: [[Concise Cg built-in function table]]<br />
: [http://gnosis.cx/publish/programming/sockets.html|David Mertz' socket programming guide]<br />
<!---------------------------------------------><br />
<!---------- END OF GUIDE/FAQ PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">OpenSource Game/Technical Pages</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW TECHNICAL PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Canvas 3D]]<br />
: [[Realistic Space Game]]<br />
: [http://www.oliverbaker.org/HamperBall HamperBall - A game we wrote in 10 days as a present for Tracy]<br />
: [http://www.sjbaker.org/tfog The Foot of God]<br />
: [[Unification]]<br />
: [[Lemur of Lima]]<br />
: [[gameTools]]<br />
: [[PLIB2|PLIB 2.0]]<br />
: [[videoTools]]<br />
: [[JavaScript in Wiki]]<br />
: [[A Simple 3D Scanner]]<br />
: [[MIDIfile player library]]<br />
: [[Arduino]]<br />
: [[Audio for Browser-based games]]<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF TECHNICAL PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Steve's Fun Stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!----------- ADD STEVES STUFF HERE -----------><br />
<!---------------------------------------------><br />
: [[Pencil and paper games]]<br />
: [[Optical illusions]]<br />
: [[Measuring hard things with easy experiments]]<br />
: [[Collected Answers from the Wikipedia Reference Desk]]<br />
: [[Minipedia]] -- A place for Mini owners to share information.<br />
: [[Creative approaches to SPAM control]]<br />
: [[The History of The Teapot]]<br />
: [[The History of Tux the Linux Penguin]]<br />
: [[Cool Code list]]<br />
: [[Cruel Code list]]<br />
: [[Administrivia]]<br />
<!---------------------------------------------><br />
<!------------ END OF STEVES STUFF -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Oliver's stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!---------- ADD OLIVERS STUFF BELOW ----------><br />
<!---------------------------------------------><br />
: [[Oliver's Tips'n'Tricks]]<br />
: [[Oliver's Video Games]]<br />
: [[HTML/CSS for Myspace Documentation]]<br />
: [[Oliver's Graduation Photos]]<br />
<!---------------------------------------------><br />
<!----------- END OF OLIVERS STUFF ------------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center><br />
<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #abd5f5; background-color:#f5d0d0; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things yet to be Wikiized</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-------- ADD NOT-WIKIIZED STUFF HERE --------><br />
<!---------------------------------------------><br />
* [http://www.sjbaker.org The main website]<br />
* [http://www.oliverbaker.org Oliver Baker's Home Page]<br />
* [http://www.sjbaker.org/telamom The Even Less Authorized MINI Owner's Manual]<br />
* [http://www.sjbaker.org/humor The Humor Section]<br />
* [http://www.sjbaker.org/wordsearch-o-matic WordSearch-O-Matic]<br />
* [http://www.sjbaker.org/colortalk/index.html Black is white, Magenta is a shade of Green and Yellow isn't necessarily Yellow]<br />
* [http://www.sjbaker.org/devcon5/talk.html WebGL talk, given at DefCon5 converence in Austin] (see also [http://www.khronos.org/webgl/wiki_1_15/images/Devcon5_Trevett_WebGL_Ecosystem_and_Overview_Sep11.pdf]).<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things that aren't those things.</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!------------ ADD MISC STUFF HERE ------------><br />
<!---------------------------------------------><br />
* [[The sad demise of Chubb-Chubb the MINI]]<br />
* [[Family Photos 2013]]<br />
* [[Family History]]<br />
* [[WildlifeRanch 2015]]<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=WildlifeRanch_2015&diff=2235WildlifeRanch 20152015-05-17T04:22:20Z<p>SteveBaker: Created page with "<gallery> File:WildlifeRanch_2015_001.jpg File:WildlifeRanch_2015_002.jpg File:WildlifeRanch_2015_003.jpg File:WildlifeRanch_2015_004.jpg File:WildlifeRanch_2015_005.jpg File:..."</p>
<hr />
<div><gallery><br />
File:WildlifeRanch_2015_001.jpg<br />
File:WildlifeRanch_2015_002.jpg<br />
File:WildlifeRanch_2015_003.jpg<br />
File:WildlifeRanch_2015_004.jpg<br />
File:WildlifeRanch_2015_005.jpg<br />
File:WildlifeRanch_2015_006.jpg<br />
File:WildlifeRanch_2015_007.jpg<br />
File:WildlifeRanch_2015_008.jpg<br />
File:WildlifeRanch_2015_009.jpg<br />
File:WildlifeRanch_2015_010.jpg<br />
File:WildlifeRanch_2015_011.jpg<br />
File:WildlifeRanch_2015_012.jpg<br />
File:WildlifeRanch_2015_013.jpg<br />
File:WildlifeRanch_2015_014.jpg<br />
File:WildlifeRanch_2015_015.jpg<br />
File:WildlifeRanch_2015_016.jpg<br />
File:WildlifeRanch_2015_017.jpg<br />
File:WildlifeRanch_2015_018.jpg<br />
File:WildlifeRanch_2015_019.jpg<br />
File:WildlifeRanch_2015_020.jpg<br />
File:WildlifeRanch_2015_021.jpg<br />
File:WildlifeRanch_2015_022.jpg<br />
File:WildlifeRanch_2015_023.jpg<br />
File:WildlifeRanch_2015_024.jpg<br />
File:WildlifeRanch_2015_025.jpg<br />
File:WildlifeRanch_2015_026.jpg<br />
File:WildlifeRanch_2015_027.jpg<br />
File:WildlifeRanch_2015_028.jpg<br />
File:WildlifeRanch_2015_029.jpg<br />
File:WildlifeRanch_2015_030.jpg<br />
File:WildlifeRanch_2015_031.jpg<br />
File:WildlifeRanch_2015_032.jpg<br />
File:WildlifeRanch_2015_033.jpg<br />
File:WildlifeRanch_2015_034.jpg<br />
File:WildlifeRanch_2015_035.jpg<br />
File:WildlifeRanch_2015_036.jpg<br />
File:WildlifeRanch_2015_037.jpg<br />
File:WildlifeRanch_2015_038.jpg<br />
File:WildlifeRanch_2015_039.jpg<br />
File:WildlifeRanch_2015_040.jpg<br />
File:WildlifeRanch_2015_041.jpg<br />
File:WildlifeRanch_2015_042.jpg<br />
File:WildlifeRanch_2015_043.jpg<br />
File:WildlifeRanch_2015_044.jpg<br />
File:WildlifeRanch_2015_045.jpg<br />
File:WildlifeRanch_2015_046.jpg<br />
File:WildlifeRanch_2015_047.jpg<br />
File:WildlifeRanch_2015_048.jpg<br />
File:WildlifeRanch_2015_049.jpg<br />
File:WildlifeRanch_2015_050.jpg<br />
File:WildlifeRanch_2015_051.jpg<br />
File:WildlifeRanch_2015_052.jpg<br />
File:WildlifeRanch_2015_053.jpg<br />
File:WildlifeRanch_2015_054.jpg<br />
File:WildlifeRanch_2015_055.jpg<br />
File:WildlifeRanch_2015_056.jpg<br />
File:WildlifeRanch_2015_057.jpg<br />
File:WildlifeRanch_2015_058.jpg<br />
File:WildlifeRanch_2015_059.jpg<br />
</gallery></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Main_Page&diff=2234Main Page2015-05-17T04:21:50Z<p>SteveBaker: /* Welcome to Wikiid! */</p>
<hr />
<div>__NOTOC__<br />
[[Image:Bakercoat lowcontrast.png|right]]<br />
[[Image:Bakercoat lowcontrast.png|left]]<br />
[[Image:Welcome.png|center]]<br />
<br />
== Welcome to Wikiid! ==<br />
<br style="clear:both" /><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; <br />
font-weight:bold;">Guides and FAQ's</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW GUIDE/FAQ PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Wikiid templates|The Wikiid Site Map]]<br />
: [[The simplest possible guide to writing HTML]].<br />
: [[The simplest possible guide to writing MediaWiki]].<br />
: [[SVN server|The simplest possible guide to SVN]]<br />
: [[Makefile|The simplest possible guide to 'make' and Makefiles]]<br />
: [[C++: multiple source files|A simple guide to having multiple source files in C++]]<br />
: [[A Short Guide to C++ Pointers]]<br />
: [[A Short Guide to C++ class inheritance]]<br />
: [[A Short Guide to Data Structures]]<br />
: [[A Short Guide to 3D Graphics Performance testing]]<br />
: [[A Short Guide to writing server-side CGI programs in C++]]<br />
: [[A Short Guide to understanding C++ compiler errors]]<br />
: [[A Short Guide to AJAX programming]]<br />
: [[An Engineer's guide to Scrum]]<br />
: [[JavaScript notes]]<br />
: [[GLSL shaders|The simplest possible guide to GLSL shaders]]<br />
: [[Android Phone development from the Linux command-line]]<br />
: [[List of OpenSource software Steve has Worked On]]<br />
: [[List of FAQ's that Steve maintains]]<br />
: [[Tutorials for Kids]]<br />
: [[Concise Cg built-in function table]]<br />
: [http://gnosis.cx/publish/programming/sockets.html|David Mertz' socket programming guide]<br />
<!---------------------------------------------><br />
<!---------- END OF GUIDE/FAQ PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">OpenSource Game/Technical Pages</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW TECHNICAL PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Canvas 3D]]<br />
: [[Realistic Space Game]]<br />
: [http://www.oliverbaker.org/HamperBall HamperBall - A game we wrote in 10 days as a present for Tracy]<br />
: [http://www.sjbaker.org/tfog The Foot of God]<br />
: [[Unification]]<br />
: [[Lemur of Lima]]<br />
: [[gameTools]]<br />
: [[PLIB2|PLIB 2.0]]<br />
: [[videoTools]]<br />
: [[JavaScript in Wiki]]<br />
: [[A Simple 3D Scanner]]<br />
: [[MIDIfile player library]]<br />
: [[Arduino]]<br />
: [[Audio for Browser-based games]]<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF TECHNICAL PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Steve's Fun Stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!----------- ADD STEVES STUFF HERE -----------><br />
<!---------------------------------------------><br />
: [[Pencil and paper games]]<br />
: [[Optical illusions]]<br />
: [[Measuring hard things with easy experiments]]<br />
: [[Collected Answers from the Wikipedia Reference Desk]]<br />
: [[Minipedia]] -- A place for Mini owners to share information.<br />
: [[Creative approaches to SPAM control]]<br />
: [[The History of The Teapot]]<br />
: [[The History of Tux the Linux Penguin]]<br />
: [[Cool Code list]]<br />
: [[Cruel Code list]]<br />
: [[Administrivia]]<br />
<!---------------------------------------------><br />
<!------------ END OF STEVES STUFF -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Oliver's stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!---------- ADD OLIVERS STUFF BELOW ----------><br />
<!---------------------------------------------><br />
: [[Oliver's Tips'n'Tricks]]<br />
: [[Oliver's Video Games]]<br />
: [[HTML/CSS for Myspace Documentation]]<br />
: [[Oliver's Graduation Photos]]<br />
<!---------------------------------------------><br />
<!----------- END OF OLIVERS STUFF ------------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center><br />
<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #abd5f5; background-color:#f5d0d0; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things yet to be Wikiized</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-------- ADD NOT-WIKIIZED STUFF HERE --------><br />
<!---------------------------------------------><br />
* [http://www.sjbaker.org The main website]<br />
* [http://www.oliverbaker.org Oliver Baker's Home Page]<br />
* [http://www.sjbaker.org/telamom The Even Less Authorized MINI Owner's Manual]<br />
* [http://www.sjbaker.org/humor The Humor Section]<br />
* [http://www.sjbaker.org/wordsearch-o-matic WordSearch-O-Matic]<br />
* [http://www.sjbaker.org/colortalk/index.html Black is white, Magenta is a shade of Green and Yellow isn't necessarily Yellow]<br />
* [http://www.sjbaker.org/devcon5/talk.html WebGL talk, given at DefCon5 converence in Austin] (see also [http://www.khronos.org/webgl/wiki_1_15/images/Devcon5_Trevett_WebGL_Ecosystem_and_Overview_Sep11.pdf]).<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things that aren't those things.</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!------------ ADD MISC STUFF HERE ------------><br />
<!---------------------------------------------><br />
* [[The sad demise of Chubb-Chubb the MINI]]<br />
* [[Family Photos 2013]]<br />
* [[Family History]]<br />
* [[WildlifeRanch 2015]]<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Oliver%27s_Graduation_Photos&diff=2174Oliver's Graduation Photos2015-05-16T02:21:29Z<p>SteveBaker: Created page with "<gallery> File:OliverGraduation_001.jpg File:OliverGraduation_002.jpg File:OliverGraduation_003.jpg File:OliverGraduation_004.jpg File:OliverGraduation_005.jpg File:OliverGrad..."</p>
<hr />
<div><gallery><br />
File:OliverGraduation_001.jpg<br />
File:OliverGraduation_002.jpg<br />
File:OliverGraduation_003.jpg<br />
File:OliverGraduation_004.jpg<br />
File:OliverGraduation_005.jpg<br />
File:OliverGraduation_006.jpg<br />
File:OliverGraduation_007.jpg<br />
File:OliverGraduation_008.jpg<br />
File:OliverGraduation_009.jpg<br />
File:OliverGraduation_010.jpg<br />
File:OliverGraduation_011.jpg<br />
File:OliverGraduation_012.jpg<br />
File:OliverGraduation_013.jpg<br />
File:OliverGraduation_014.jpg<br />
File:OliverGraduation_015.jpg<br />
File:OliverGraduation_016.jpg<br />
File:OliverGraduation_017.jpg<br />
File:OliverGraduation_018.jpg<br />
File:OliverGraduation_019.jpg<br />
File:OliverGraduation_020.jpg<br />
File:OliverGraduation_021.jpg<br />
File:OliverGraduation_022.jpg<br />
File:OliverGraduation_023.jpg<br />
File:OliverGraduation_024.jpg<br />
File:OliverGraduation_025.jpg<br />
File:OliverGraduation_026.jpg<br />
File:OliverGraduation_027.jpg<br />
File:OliverGraduation_028.jpg<br />
File:OliverGraduation_029.jpg<br />
File:OliverGraduation_030.jpg<br />
File:OliverGraduation_031.jpg<br />
File:OliverGraduation_032.jpg<br />
File:OliverGraduation_033.jpg<br />
File:OliverGraduation_034.jpg<br />
File:OliverGraduation_035.jpg<br />
File:OliverGraduation_036.jpg<br />
File:OliverGraduation_037.jpg<br />
File:OliverGraduation_038.jpg<br />
File:OliverGraduation_039.jpg<br />
File:OliverGraduation_040.jpg<br />
File:OliverGraduation_041.jpg<br />
File:OliverGraduation_042.jpg<br />
File:OliverGraduation_043.jpg<br />
File:OliverGraduation_044.jpg<br />
File:OliverGraduation_045.jpg<br />
File:OliverGraduation_046.jpg<br />
File:OliverGraduation_047.jpg<br />
File:OliverGraduation_048.jpg<br />
File:OliverGraduation_049.jpg<br />
File:OliverGraduation_050.jpg<br />
File:OliverGraduation_051.jpg<br />
File:OliverGraduation_052.jpg<br />
File:OliverGraduation_053.jpg<br />
File:OliverGraduation_054.jpg<br />
File:OliverGraduation_055.jpg<br />
File:OliverGraduation_056.jpg<br />
File:OliverGraduation_057.jpg<br />
File:OliverGraduation_058.jpg<br />
File:OliverGraduation_059.jpg<br />
File:OliverGraduation_060.jpg<br />
File:OliverGraduation_061.jpg<br />
File:OliverGraduation_062.jpg<br />
File:OliverGraduation_063.jpg<br />
File:OliverGraduation_064.jpg<br />
File:OliverGraduation_065.jpg<br />
File:OliverGraduation_066.jpg<br />
File:OliverGraduation_067.jpg<br />
File:OliverGraduation_068.jpg<br />
File:OliverGraduation_069.jpg<br />
File:OliverGraduation_070.jpg<br />
File:OliverGraduation_071.jpg<br />
File:OliverGraduation_072.jpg<br />
File:OliverGraduation_073.jpg<br />
File:OliverGraduation_074.jpg<br />
File:OliverGraduation_075.jpg<br />
File:OliverGraduation_076.jpg<br />
File:OliverGraduation_077.jpg<br />
File:OliverGraduation_078.jpg<br />
File:OliverGraduation_079.jpg<br />
File:OliverGraduation_080.jpg<br />
File:OliverGraduation_081.jpg<br />
File:OliverGraduation_082.jpg<br />
File:OliverGraduation_083.jpg<br />
File:OliverGraduation_084.jpg<br />
File:OliverGraduation_085.jpg<br />
File:OliverGraduation_086.jpg<br />
File:OliverGraduation_087.jpg<br />
File:OliverGraduation_088.jpg<br />
File:OliverGraduation_089.jpg<br />
File:OliverGraduation_090.jpg<br />
</gallery></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Main_Page&diff=2083Main Page2015-05-16T02:20:14Z<p>SteveBaker: /* Welcome to Wikiid! */</p>
<hr />
<div>__NOTOC__<br />
[[Image:Bakercoat lowcontrast.png|right]]<br />
[[Image:Bakercoat lowcontrast.png|left]]<br />
[[Image:Welcome.png|center]]<br />
<br />
== Welcome to Wikiid! ==<br />
<br style="clear:both" /><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; <br />
font-weight:bold;">Guides and FAQ's</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW GUIDE/FAQ PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Wikiid templates|The Wikiid Site Map]]<br />
: [[The simplest possible guide to writing HTML]].<br />
: [[The simplest possible guide to writing MediaWiki]].<br />
: [[SVN server|The simplest possible guide to SVN]]<br />
: [[Makefile|The simplest possible guide to 'make' and Makefiles]]<br />
: [[C++: multiple source files|A simple guide to having multiple source files in C++]]<br />
: [[A Short Guide to C++ Pointers]]<br />
: [[A Short Guide to C++ class inheritance]]<br />
: [[A Short Guide to Data Structures]]<br />
: [[A Short Guide to 3D Graphics Performance testing]]<br />
: [[A Short Guide to writing server-side CGI programs in C++]]<br />
: [[A Short Guide to understanding C++ compiler errors]]<br />
: [[A Short Guide to AJAX programming]]<br />
: [[An Engineer's guide to Scrum]]<br />
: [[JavaScript notes]]<br />
: [[GLSL shaders|The simplest possible guide to GLSL shaders]]<br />
: [[Android Phone development from the Linux command-line]]<br />
: [[List of OpenSource software Steve has Worked On]]<br />
: [[List of FAQ's that Steve maintains]]<br />
: [[Tutorials for Kids]]<br />
: [[Concise Cg built-in function table]]<br />
: [http://gnosis.cx/publish/programming/sockets.html|David Mertz' socket programming guide]<br />
<!---------------------------------------------><br />
<!---------- END OF GUIDE/FAQ PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">OpenSource Game/Technical Pages</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW TECHNICAL PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Canvas 3D]]<br />
: [[Realistic Space Game]]<br />
: [http://www.oliverbaker.org/HamperBall HamperBall - A game we wrote in 10 days as a present for Tracy]<br />
: [http://www.sjbaker.org/tfog The Foot of God]<br />
: [[Unification]]<br />
: [[Lemur of Lima]]<br />
: [[gameTools]]<br />
: [[PLIB2|PLIB 2.0]]<br />
: [[videoTools]]<br />
: [[JavaScript in Wiki]]<br />
: [[A Simple 3D Scanner]]<br />
: [[MIDIfile player library]]<br />
: [[Arduino]]<br />
: [[Audio for Browser-based games]]<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF TECHNICAL PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Steve's Fun Stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!----------- ADD STEVES STUFF HERE -----------><br />
<!---------------------------------------------><br />
: [[Pencil and paper games]]<br />
: [[Optical illusions]]<br />
: [[Measuring hard things with easy experiments]]<br />
: [[Collected Answers from the Wikipedia Reference Desk]]<br />
: [[Minipedia]] -- A place for Mini owners to share information.<br />
: [[Creative approaches to SPAM control]]<br />
: [[The History of The Teapot]]<br />
: [[The History of Tux the Linux Penguin]]<br />
: [[Cool Code list]]<br />
: [[Cruel Code list]]<br />
: [[Administrivia]]<br />
<!---------------------------------------------><br />
<!------------ END OF STEVES STUFF -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Oliver's stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!---------- ADD OLIVERS STUFF BELOW ----------><br />
<!---------------------------------------------><br />
: [[Oliver's Tips'n'Tricks]]<br />
: [[Oliver's Video Games]]<br />
: [[HTML/CSS for Myspace Documentation]]<br />
: [[Oliver's Graduation Photos]]<br />
<!---------------------------------------------><br />
<!----------- END OF OLIVERS STUFF ------------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center><br />
<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #abd5f5; background-color:#f5d0d0; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things yet to be Wikiized</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-------- ADD NOT-WIKIIZED STUFF HERE --------><br />
<!---------------------------------------------><br />
* [http://www.sjbaker.org The main website]<br />
* [http://www.oliverbaker.org Oliver Baker's Home Page]<br />
* [http://www.sjbaker.org/telamom The Even Less Authorized MINI Owner's Manual]<br />
* [http://www.sjbaker.org/humor The Humor Section]<br />
* [http://www.sjbaker.org/wordsearch-o-matic WordSearch-O-Matic]<br />
* [http://www.sjbaker.org/colortalk/index.html Black is white, Magenta is a shade of Green and Yellow isn't necessarily Yellow]<br />
* [http://www.sjbaker.org/devcon5/talk.html WebGL talk, given at DefCon5 converence in Austin] (see also [http://www.khronos.org/webgl/wiki_1_15/images/Devcon5_Trevett_WebGL_Ecosystem_and_Overview_Sep11.pdf]).<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things that aren't those things.</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!------------ ADD MISC STUFF HERE ------------><br />
<!---------------------------------------------><br />
* [[The sad demise of Chubb-Chubb the MINI]]<br />
* [[Family Photos 2013]]<br />
* [[Family History]]<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Main_Page&diff=2082Main Page2015-05-16T02:19:54Z<p>SteveBaker: /* Welcome to Wikiid! */</p>
<hr />
<div>__NOTOC__<br />
[[Image:Bakercoat lowcontrast.png|right]]<br />
[[Image:Bakercoat lowcontrast.png|left]]<br />
[[Image:Welcome.png|center]]<br />
<br />
== Welcome to Wikiid! ==<br />
<br style="clear:both" /><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; <br />
font-weight:bold;">Guides and FAQ's</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW GUIDE/FAQ PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Wikiid templates|The Wikiid Site Map]]<br />
: [[The simplest possible guide to writing HTML]].<br />
: [[The simplest possible guide to writing MediaWiki]].<br />
: [[SVN server|The simplest possible guide to SVN]]<br />
: [[Makefile|The simplest possible guide to 'make' and Makefiles]]<br />
: [[C++: multiple source files|A simple guide to having multiple source files in C++]]<br />
: [[A Short Guide to C++ Pointers]]<br />
: [[A Short Guide to C++ class inheritance]]<br />
: [[A Short Guide to Data Structures]]<br />
: [[A Short Guide to 3D Graphics Performance testing]]<br />
: [[A Short Guide to writing server-side CGI programs in C++]]<br />
: [[A Short Guide to understanding C++ compiler errors]]<br />
: [[A Short Guide to AJAX programming]]<br />
: [[An Engineer's guide to Scrum]]<br />
: [[JavaScript notes]]<br />
: [[GLSL shaders|The simplest possible guide to GLSL shaders]]<br />
: [[Android Phone development from the Linux command-line]]<br />
: [[List of OpenSource software Steve has Worked On]]<br />
: [[List of FAQ's that Steve maintains]]<br />
: [[Tutorials for Kids]]<br />
: [[Concise Cg built-in function table]]<br />
: [http://gnosis.cx/publish/programming/sockets.html|David Mertz' socket programming guide]<br />
<!---------------------------------------------><br />
<!---------- END OF GUIDE/FAQ PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">OpenSource Game/Technical Pages</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW TECHNICAL PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Canvas 3D]]<br />
: [[Realistic Space Game]]<br />
: [http://www.oliverbaker.org/HamperBall HamperBall - A game we wrote in 10 days as a present for Tracy]<br />
: [http://www.sjbaker.org/tfog The Foot of God]<br />
: [[Unification]]<br />
: [[Lemur of Lima]]<br />
: [[gameTools]]<br />
: [[PLIB2|PLIB 2.0]]<br />
: [[videoTools]]<br />
: [[JavaScript in Wiki]]<br />
: [[A Simple 3D Scanner]]<br />
: [[MIDIfile player library]]<br />
: [[Arduino]]<br />
: [[Audio for Browser-based games]]<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF TECHNICAL PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Steve's Fun Stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!----------- ADD STEVES STUFF HERE -----------><br />
<!---------------------------------------------><br />
: [[Pencil and paper games]]<br />
: [[Optical illusions]]<br />
: [[Measuring hard things with easy experiments]]<br />
: [[Collected Answers from the Wikipedia Reference Desk]]<br />
: [[Minipedia]] -- A place for Mini owners to share information.<br />
: [[Creative approaches to SPAM control]]<br />
: [[The History of The Teapot]]<br />
: [[The History of Tux the Linux Penguin]]<br />
: [[Cool Code list]]<br />
: [[Cruel Code list]]<br />
: [[Administrivia]]<br />
<!---------------------------------------------><br />
<!------------ END OF STEVES STUFF -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Oliver's stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!---------- ADD OLIVERS STUFF BELOW ----------><br />
<!---------------------------------------------><br />
: [[Oliver's Tips'n'Tricks]]<br />
: [[Oliver's Video Games]]<br />
: [[HTML/CSS for Myspace Documentation]]<br />
: [[Graduation Photos]]<br />
<!---------------------------------------------><br />
<!----------- END OF OLIVERS STUFF ------------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center><br />
<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #abd5f5; background-color:#f5d0d0; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things yet to be Wikiized</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-------- ADD NOT-WIKIIZED STUFF HERE --------><br />
<!---------------------------------------------><br />
* [http://www.sjbaker.org The main website]<br />
* [http://www.oliverbaker.org Oliver Baker's Home Page]<br />
* [http://www.sjbaker.org/telamom The Even Less Authorized MINI Owner's Manual]<br />
* [http://www.sjbaker.org/humor The Humor Section]<br />
* [http://www.sjbaker.org/wordsearch-o-matic WordSearch-O-Matic]<br />
* [http://www.sjbaker.org/colortalk/index.html Black is white, Magenta is a shade of Green and Yellow isn't necessarily Yellow]<br />
* [http://www.sjbaker.org/devcon5/talk.html WebGL talk, given at DefCon5 converence in Austin] (see also [http://www.khronos.org/webgl/wiki_1_15/images/Devcon5_Trevett_WebGL_Ecosystem_and_Overview_Sep11.pdf]).<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things that aren't those things.</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!------------ ADD MISC STUFF HERE ------------><br />
<!---------------------------------------------><br />
* [[The sad demise of Chubb-Chubb the MINI]]<br />
* [[Family Photos 2013]]<br />
* [[Family History]]<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Main_Page&diff=2081Main Page2015-01-23T21:46:40Z<p>SteveBaker: </p>
<hr />
<div>__NOTOC__<br />
[[Image:Bakercoat lowcontrast.png|right]]<br />
[[Image:Bakercoat lowcontrast.png|left]]<br />
[[Image:Welcome.png|center]]<br />
<br />
== Welcome to Wikiid! ==<br />
<br style="clear:both" /><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; <br />
font-weight:bold;">Guides and FAQ's</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW GUIDE/FAQ PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Wikiid templates|The Wikiid Site Map]]<br />
: [[The simplest possible guide to writing HTML]].<br />
: [[The simplest possible guide to writing MediaWiki]].<br />
: [[SVN server|The simplest possible guide to SVN]]<br />
: [[Makefile|The simplest possible guide to 'make' and Makefiles]]<br />
: [[C++: multiple source files|A simple guide to having multiple source files in C++]]<br />
: [[A Short Guide to C++ Pointers]]<br />
: [[A Short Guide to C++ class inheritance]]<br />
: [[A Short Guide to Data Structures]]<br />
: [[A Short Guide to 3D Graphics Performance testing]]<br />
: [[A Short Guide to writing server-side CGI programs in C++]]<br />
: [[A Short Guide to understanding C++ compiler errors]]<br />
: [[A Short Guide to AJAX programming]]<br />
: [[An Engineer's guide to Scrum]]<br />
: [[JavaScript notes]]<br />
: [[GLSL shaders|The simplest possible guide to GLSL shaders]]<br />
: [[Android Phone development from the Linux command-line]]<br />
: [[List of OpenSource software Steve has Worked On]]<br />
: [[List of FAQ's that Steve maintains]]<br />
: [[Tutorials for Kids]]<br />
: [[Concise Cg built-in function table]]<br />
: [http://gnosis.cx/publish/programming/sockets.html|David Mertz' socket programming guide]<br />
<!---------------------------------------------><br />
<!---------- END OF GUIDE/FAQ PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">OpenSource Game/Technical Pages</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW TECHNICAL PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Canvas 3D]]<br />
: [[Realistic Space Game]]<br />
: [http://www.oliverbaker.org/HamperBall HamperBall - A game we wrote in 10 days as a present for Tracy]<br />
: [http://www.sjbaker.org/tfog The Foot of God]<br />
: [[Unification]]<br />
: [[Lemur of Lima]]<br />
: [[gameTools]]<br />
: [[PLIB2|PLIB 2.0]]<br />
: [[videoTools]]<br />
: [[JavaScript in Wiki]]<br />
: [[A Simple 3D Scanner]]<br />
: [[MIDIfile player library]]<br />
: [[Arduino]]<br />
: [[Audio for Browser-based games]]<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF TECHNICAL PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Steve's Fun Stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!----------- ADD STEVES STUFF HERE -----------><br />
<!---------------------------------------------><br />
: [[Pencil and paper games]]<br />
: [[Optical illusions]]<br />
: [[Measuring hard things with easy experiments]]<br />
: [[Collected Answers from the Wikipedia Reference Desk]]<br />
: [[Minipedia]] -- A place for Mini owners to share information.<br />
: [[Creative approaches to SPAM control]]<br />
: [[The History of The Teapot]]<br />
: [[The History of Tux the Linux Penguin]]<br />
: [[Cool Code list]]<br />
: [[Cruel Code list]]<br />
: [[Administrivia]]<br />
<!---------------------------------------------><br />
<!------------ END OF STEVES STUFF -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Oliver's stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!---------- ADD OLIVERS STUFF BELOW ----------><br />
<!---------------------------------------------><br />
: [[Oliver's Tips'n'Tricks]]<br />
: [[Oliver's Video Games]]<br />
: [[HTML/CSS for Myspace Documentation]]<br />
<!---------------------------------------------><br />
<!----------- END OF OLIVERS STUFF ------------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center><br />
<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #abd5f5; background-color:#f5d0d0; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things yet to be Wikiized</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-------- ADD NOT-WIKIIZED STUFF HERE --------><br />
<!---------------------------------------------><br />
* [http://www.sjbaker.org The main website]<br />
* [http://www.oliverbaker.org Oliver Baker's Home Page]<br />
* [http://www.sjbaker.org/telamom The Even Less Authorized MINI Owner's Manual]<br />
* [http://www.sjbaker.org/humor The Humor Section]<br />
* [http://www.sjbaker.org/wordsearch-o-matic WordSearch-O-Matic]<br />
* [http://www.sjbaker.org/colortalk/index.html Black is white, Magenta is a shade of Green and Yellow isn't necessarily Yellow]<br />
* [http://www.sjbaker.org/devcon5/talk.html WebGL talk, given at DefCon5 converence in Austin] (see also [http://www.khronos.org/webgl/wiki_1_15/images/Devcon5_Trevett_WebGL_Ecosystem_and_Overview_Sep11.pdf]).<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things that aren't those things.</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!------------ ADD MISC STUFF HERE ------------><br />
<!---------------------------------------------><br />
* [[The sad demise of Chubb-Chubb the MINI]]<br />
* [[Family Photos 2013]]<br />
* [[Family History]]<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Main_Page&diff=2080Main Page2015-01-21T20:39:02Z<p>SteveBaker: </p>
<hr />
<div>__NOTOC__<br />
[[Image:Bakercoat lowcontrast.png|right]]<br />
[[Image:Bakercoat lowcontrast.png|left]]<br />
[[Image:Welcome.png|center]]<br />
<br />
== Welcome to Wikiid! ==<br />
<br style="clear:both" /><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; <br />
font-weight:bold;">Guides and FAQ's</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW GUIDE/FAQ PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Wikiid templates|The Wikiid Site Map]]<br />
: [[The simplest possible guide to writing HTML]].<br />
: [[The simplest possible guide to writing MediaWiki]].<br />
: [[SVN server|The simplest possible guide to SVN]]<br />
: [[Makefile|The simplest possible guide to 'make' and Makefiles]]<br />
: [[C++: multiple source files|A simple guide to having multiple source files in C++]]<br />
: [[A Short Guide to C++ Pointers]]<br />
: [[A Short Guide to C++ class inheritance]]<br />
: [[A Short Guide to Data Structures]]<br />
: [[A Short Guide to 3D Graphics Performance testing]]<br />
: [[A Short Guide to writing server-side CGI programs in C++]]<br />
: [[A Short Guide to understanding C++ compiler errors]]<br />
: [[A Short Guide to AJAX programming]]<br />
: [[An Engineer's guide to Scrum]]<br />
: [[JavaScript notes]]<br />
: [[GLSL shaders|The simplest possible guide to GLSL shaders]]<br />
: [[Android Phone development from the Linux command-line]]<br />
: [[List of OpenSource software Steve has Worked On]]<br />
: [[List of FAQ's that Steve maintains]]<br />
: [[Tutorials for Kids]]<br />
: [[Concise Cg built-in function table]]<br />
: [http://gnosis.cx/publish/programming/sockets.html|David Mertz' socket programming guide]<br />
<!---------------------------------------------><br />
<!---------- END OF GUIDE/FAQ PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">OpenSource Game/Technical Pages</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW TECHNICAL PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Canvas 3D]]<br />
: [[Realistic Space Game]]<br />
: [http://www.oliverbaker.org/HamperBall HamperBall - A game we wrote in 10 days as a present for Tracy]<br />
: [http://www.sjbaker.org/tfog The Foot of God]<br />
: [[Unification]]<br />
: [[Lemur of Lima]]<br />
: [[gameTools]]<br />
: [[PLIB2|PLIB 2.0]]<br />
: [[videoTools]]<br />
: [[JavaScript in Wiki]]<br />
: [[A Simple 3D Scanner]]<br />
: [[MIDIfile player library]]<br />
: [[Arduino]]<br />
: [[Audio for Browser-based games]]<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF TECHNICAL PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Steve's Fun Stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!----------- ADD STEVES STUFF HERE -----------><br />
<!---------------------------------------------><br />
: [[Pencil and paper games]]<br />
: [[Optical illusions]]<br />
: [[Measuring hard things with easy experiments]]<br />
: [[Collected Answers from the Wikipedia Reference Desk]]<br />
: [[Minipedia]] -- A place for Mini owners to share information.<br />
: [[Creative approaches to SPAM control]]<br />
: [[The History of The Teapot]]<br />
: [[The History of Tux the Linux Penguin]]<br />
: [[Cool Code list]]<br />
: [[Cruel Code list]]<br />
: [[Administrivia]]<br />
<!---------------------------------------------><br />
<!------------ END OF STEVES STUFF -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Oliver's stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!---------- ADD OLIVERS STUFF BELOW ----------><br />
<!---------------------------------------------><br />
: [[Oliver's Tips'n'Tricks]]<br />
: [[Oliver's Video Games]]<br />
: [[HTML/CSS for Myspace Documentation]]<br />
<!---------------------------------------------><br />
<!----------- END OF OLIVERS STUFF ------------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center><br />
<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #abd5f5; background-color:#f5d0d0; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things yet to be Wikiized</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-------- ADD NOT-WIKIIZED STUFF HERE --------><br />
<!---------------------------------------------><br />
* [http://www.sjbaker.org The main website]<br />
* [http://www.oliverbaker.org Oliver Baker's Home Page]<br />
* [http://www.sjbaker.org/geocache Fun with GeoCaching]<br />
* [http://www.sjbaker.org/telamom The Even Less Authorized MINI Owner's Manual]<br />
* [http://www.sjbaker.org/humor The Humor Section]<br />
* [http://www.sjbaker.org/wordsearch-o-matic WordSearch-O-Matic]<br />
* [http://www.sjbaker.org/colortalk/index.html Black is white, Magenta is a shade of Green and Yellow isn't necessarily Yellow]<br />
* [http://www.sjbaker.org/devcon5/talk.html WebGL talk, given at DefCon5 converence in Austin] (see also [http://www.khronos.org/webgl/wiki_1_15/images/Devcon5_Trevett_WebGL_Ecosystem_and_Overview_Sep11.pdf]).<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things that aren't those things.</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!------------ ADD MISC STUFF HERE ------------><br />
<!---------------------------------------------><br />
* [[The sad demise of Chubb-Chubb the MINI]]<br />
* [[Family Photos 2013]]<br />
* [[Family History]]<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Main_Page&diff=2079Main Page2015-01-21T20:36:54Z<p>SteveBaker: /* Welcome to Wikiid! */</p>
<hr />
<div>__NOTOC__<br />
[[Image:Bakercoat lowcontrast.png|right]]<br />
[[Image:Bakercoat lowcontrast.png|left]]<br />
[[Image:Welcome.png|center]]<br />
<br />
== Welcome to Wikiid! ==<br />
<br style="clear:both" /><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; <br />
font-weight:bold;">Guides and FAQ's</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW GUIDE/FAQ PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Wikiid templates|The Wikiid Site Map]]<br />
: [[The simplest possible guide to writing HTML]].<br />
: [[The simplest possible guide to writing MediaWiki]].<br />
: [[SVN server|The simplest possible guide to SVN]]<br />
: [[Makefile|The simplest possible guide to 'make' and Makefiles]]<br />
: [[C++: multiple source files|A simple guide to having multiple source files in C++]]<br />
: [[A Short Guide to C++ Pointers]]<br />
: [[A Short Guide to C++ class inheritance]]<br />
: [[A Short Guide to Data Structures]]<br />
: [[A Short Guide to 3D Graphics Performance testing]]<br />
: [[A Short Guide to writing server-side CGI programs in C++]]<br />
: [[A Short Guide to understanding C++ compiler errors]]<br />
: [[A Short Guide to AJAX programming]]<br />
: [[An Engineer's guide to Scrum]]<br />
: [[JavaScript notes]]<br />
: [[GLSL shaders|The simplest possible guide to GLSL shaders]]<br />
: [[Android Phone development from the Linux command-line]]<br />
: [[List of OpenSource software Steve has Worked On]]<br />
: [[List of FAQ's that Steve maintains]]<br />
: [[Tutorials for Kids]]<br />
: [[Concise Cg built-in function table]]<br />
: [http://gnosis.cx/publish/programming/sockets.html|David Mertz' socket programming guide]<br />
<!---------------------------------------------><br />
<!---------- END OF GUIDE/FAQ PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">OpenSource Game/Technical Pages</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW TECHNICAL PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Canvas 3D]]<br />
: [[Realistic Space Game]]<br />
: [http://www.oliverbaker.org/HamperBall HamperBall - A game we wrote in 10 days as a present for Tracy]<br />
: [http://www.sjbaker.org/tfog The Foot of God]<br />
: [[Unification]]<br />
: [[Lemur of Lima]]<br />
: [[gameTools]]<br />
: [[PLIB2|PLIB 2.0]]<br />
: [[videoTools]]<br />
: [[JavaScript in Wiki]]<br />
: [[A Simple 3D Scanner]]<br />
: [[MIDIfile player library]]<br />
: [[Arduino]]<br />
: [[Audio for Browser-based games]]<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF TECHNICAL PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Steve's Fun Stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!----------- ADD STEVES STUFF HERE -----------><br />
<!---------------------------------------------><br />
: [[Pencil and paper games]]<br />
: [[Optical illusions]]<br />
: [[Measuring hard things with easy experiments]]<br />
: [[Collected Answers from the Wikipedia Reference Desk]]<br />
: [[Minipedia]] -- A place for Mini owners to share information.<br />
: [[Creative approaches to SPAM control]]<br />
: [[The History of The Teapot]]<br />
: [[The History of Tux the Linux Penguin]]<br />
: [[Cool Code list]]<br />
: [[Cruel Code list]]<br />
: [[Administrivia]]<br />
<!---------------------------------------------><br />
<!------------ END OF STEVES STUFF -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Oliver's stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!---------- ADD OLIVERS STUFF BELOW ----------><br />
<!---------------------------------------------><br />
: [[Oliver's Tips'n'Tricks]]<br />
: [[Oliver's Video Games]]<br />
: [[HTML/CSS for Myspace Documentation]]<br />
<!---------------------------------------------><br />
<!----------- END OF OLIVERS STUFF ------------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center><br />
<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #abd5f5; background-color:#f5d0d0; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things yet to be Wikiized</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-------- ADD NOT-WIKIIZED STUFF HERE --------><br />
<!---------------------------------------------><br />
* [http://www.sjbaker.org The main website]<br />
* [http://www.oliverbaker.org Oliver Baker's Home Page]<br />
* [http://www.sjbaker.org/geocache Fun with GeoCaching]<br />
* [http://www.sjbaker.org/telamom The Even Less Authorized MINI Owner's Manual]<br />
* [http://www.sjbaker.org/humor The Humor Section]<br />
* [http://www.sjbaker.org/wordsearch-o-matic WordSearch-O-Matic]<br />
* [http://www.sjbaker.org/colortalk/index.html Black is white, Magenta is a shade of Green and Yellow isn't necessarily Yellow]<br />
* [http://www.sjbaker.org/devcon5/talk.html WebGL talk, given at DefCon5 converence in Austin] (see also [http://www.khronos.org/webgl/wiki_1_15/images/Devcon5_Trevett_WebGL_Ecosystem_and_Overview_Sep11.pdf]).<br />
* [http://botzilla.sf.net The botZilla Game]<br />
* [http://tuxaqfh.sf.net Tux - A Quest for Herring]<br />
* [http://tuxkart.sf.net TuxKart]<br />
* [http://plib.sf.net PLIB - A Portable Games Library]<br />
* [http://triereis.sf.net The Triereis Project]<br />
* [http://sjbaker.org/steve/toys/index.html Some GPL'ed Software Toys]<br />
* [http://freeglut.sf.net The freeglut Library]<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things that aren't those things.</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!------------ ADD MISC STUFF HERE ------------><br />
<!---------------------------------------------><br />
* [[The sad demise of Chubb-Chubb the MINI]]<br />
* [[Family Photos 2013]]<br />
* [[Family History]]<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=File:SmartMakerGoodies.jpg&diff=2078File:SmartMakerGoodies.jpg2014-05-07T19:22:30Z<p>SteveBaker: </p>
<hr />
<div></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=An_Engineer%27s_guide_to_Scrum&diff=2077An Engineer's guide to Scrum2014-04-02T13:41:34Z<p>SteveBaker: /* Post-its */</p>
<hr />
<div>'''Agile development''', or '''Scrum''' is a management technique that's become very popular in software companies...especially game software companies.<br />
<br />
== Teams and Sprints ==<br />
The company is split into teams of between maybe 4 and perhaps at most 10 people. Life proceeds in "Sprints" of between 2 and 4 weeks - longer when you're in long-term development cycles, shorter when you approach a deliverable. People may move from one team to another from sprint to the next - but generally, we try not to do that too much. A sprint is a self-contained event - we take in "Stories" at the beginning, we finish them and produce releasable, essentially bug-free, working code at the end.<br />
<br />
Each sprint has a pattern - with some ritualized meetings.<br />
<br />
== Stories ==<br />
Everything starts with the "Stake holders" (marketing people, senior managers, product managers) writing "Stories" describing the things they want to be able to do with the product. These are kinda formulaic and are supposed to fit on a half sheet of paper:<br />
<br />
:As a user of WonderProduct2000, I need the ability for the spreadsheet component to bake bread.<br />
:SUCH THAT:<br />
:* The bread is light and fluffy.<br />
:* Spreadsheet processing is not degraded while baking.<br />
:* There is a pleasant "BING!" sound when it's done.<br />
:CONDITIONS OF SATISFACTION:<br />
:* Bread fluffy-ometer readings of 0.4 or above are obtained.<br />
:* Bread is not burned.<br />
:* BING! Sound makes small children yell "Mommy, mommy, can I have some?"<br />
:BONUS FEATURES:<br />
:* Bagles.<br />
<br />
Stories are supposed to describe desired results - they should never describe the method by which the result is to be achieved.<br />
<br />
Some stories are just investigation tasks - with conditions of satisfaction (COS) that include documentation - maybe a stand-up presentation and a sign-off from some committee or other. Most result in a concrete "thing" - code, documentation, art, audio. Something that can be demonstrated as meeting it's COS.<br />
<br />
Other stories are too big for the team to complete within one sprint - but it's a rule that those have to be broken down into smaller sub-stories. Stories are thus heirarchical in nature. "Epic" stories may embody the guiding principles for an entire multi-year development cycle, but the process of recursive sub-division must always result in stories that are one sprint or less in duration.<br />
<br />
Generally, the COS should be designed to be testable - preferably by the QA department and/or by a demonstration at the sprint retrospective meeting. A research story might end up with there being a document - and the COS might include "* Eric has read the final document and is happy with it."<br />
<br />
== Planning Monday ==<br />
(Which may in fact happen on the preceding Friday...)<br />
<br />
At the start of the sprint, the team and their immediate manager spend half a day going through the stories - some of which are new and urgent - some are old and dusty (the "Product backlog"). We discuss how we're going to implement each new one and briefly ensure that nothing has changed about the old ones (maybe they've become moot - or need to be rewritten in some way) - and for each new or revised one, we estimate the complexity of the chosen approach. <br />
<br />
In small or skill-diverse teams, the person who will be working on the job can do a complexity estimation directly in man-hours. This is emphatically NOT a managerial role. When the engineer says "this is a 16 man-hour job" - they are effectively entering a promise to complete the work in that amount of time.<br />
<br />
Larger, more skill-uniform teams use "Planning Poker" (I kid you not!). We have a hand of special "planning poker" playing cards for each engineer (they have goats on them!) - they are marked with numbers in the corners. The numbers are in units of "difficulty" - which is an abstract quantity that doesn't relate to "effort" or "man-hours" (well, not directly). We have a handful of old "benchmark" stories that we can compare to. We have a gut feel for what is a 10 point story, what is a 3 pointer and so on.<br />
<br />
Each person with the skill-set to work on the story places a card face-down on the table representing his/her estimate for the difficulty of the task and on the count of three we all show our estimates. If everyone more or less agrees - we write that estimate into the story and move quickly along to the next one. If we don't agree then the highest and lowest outliers explain why they disagree with the majority...and we play another round of cards. Pretty soon we more or less agree. If someone digs their heels in for a low-ball number - then they can expect to be doing the work! But generally, the resulting estimate should be such that all of the people involved would feel happy to pick up the task and complete it at that estimate.<br />
<br />
Repeat until all new stories are scored. Stories carried over from previous sprints may need to be re-visited if conditions surrounding their implementation has changed. But by the end, we have good estimates for all of the stories. Big stories that will need to be broken down later will have more approximate estimates - but those can be updated as their component stories emerge and can be accurately estimated.<br />
<br />
Now, management can put together the estimates and pick a selection of high priority ones that should be worked on this sprint. Engineers then take these stories and break them down into individual "tasks" - atoms of work - generally between 4 and 16 hours each. These are written on yellow post-it notes in fat black "sharpie" pens to guarantee that the task can be described in just a few words...with the hourly estimate written in the bottom-right corner.<br />
<br />
This discipline of breaking into bite sized chunks seems to help with estimating. Using a black sharpie and a post-it note ensures that we have bite-sized descriptions.<br />
<br />
Now, after lunch, usually, we take another look at the total workload for the sprint - we may adjust the hours, split some tasks up into sub-stories. If, after detailed estimation, we don't think we can get all of the stories done - then we take the lowest priority stories and transfer them onto pink post-its to indicate that these are "BONUS" tasks - or maybe bump the story out of the sprint altogether.<br />
<br />
If we think we can do more work than we estimated in poker, then we grab new stories and task them out onto pink BONUS post-its too.<br />
<br />
Nobody leaves the meeting until every one of the engineers agrees that the yellow tasks can and WILL be completed in the upcoming sprint. This is VITALLY important. If you agree - then you've made a personal commitment to finishing that story. If you don't agree - then even the lowliest engineer can force a story out of the sprint in the face of any amount of management insistence...it's a rule. If managers don't like that - then it's their job to modify the stories, maybe split a big story into smaller ones - maybe shift priorities, get more staff...the one thing they cannot do is to cajole an engineer into accepting a lower estimate...not EVER.<br />
<br />
We stick all of the yellow and pink post-its onto a whiteboard out in the corridor outside our office...someplace public, uncomfortable, and with no chairs! Planning monday is over.<br />
<br />
== Post-its ==<br />
[[File:ScrumTask.jpg|right|200px]]<br />
The post-it note ends up being an "atom" of work. There are many variations on how to lay it out - but generally the name of the task is in the middle, in the top-right corner is the number of the story that it belongs to, the top left corner is initially left blank - but is filled in with the name/initials of the person who is working on it. The bottom-left corner is the time-estimate for the task and the bottom-right is the amount of time left until the task will be complete.<br />
<br />
== The Scrum Board ==<br />
OK - to the "SCUM BOARD"!<br />
<br />
The Scrum board is laid out in several columns with boxes at the bottom marked "MOOT" and "BLOCKED".<br />
<br />
Different projects and different companies have different layouts: I've seen 5 columns: "PENDING", "IN PROGRESS", "IN CODE-REVIEW", "IN QA" and "COMPLETE" representing the life-cycle of a task. But "PENDING", "WORKING", "COMMITTED", "IN QA" and "COMPLETE" is another option...whatever works. Art projects will have different setups...maybe "MESH-COMPLETE", "TEXTURE COMPLETE", "ANIMATION RIGGED", etc. There should always be a "PENDING", a "COMPLETE" and one or two 'working' columns.<br />
<br />
Tasks start in PENDING and work their way across to COMPLETE over the life of the sprint. By the end of the sprint, every single yellow post it '''MUST''' be in the right-hand column. The only way out is for the task to be considered "MOOT" (we decided that this wasn't necessary in order to complete the story because we found an easier way) - or to be "BLOCKED" by some external issue that's beyond our control (my hard drive exploded, Fred who works in our other office didn't do what he promised - and we relied on that for our estimates).<br />
<br />
BLOCKED tasks are a monumental issue - it is the task of the 'Scrum Master' to find out why tasks are blocked and what can be done to unblock them. It is super-rare for a task to stay blocked past the end of the sprint.<br />
<br />
When stories don't make it into the final column, hard questions must be asked. Did someone get sick? Did the estimate prove to be wildly wrong...and why? Is there something wrong with our process? These bad stories must be carried over into the next sprint - but that's a failure of the team...it's not supposed to happen, and if it happens often, then management need to step in and figure out what's broken.<br />
<br />
Another thing is that the scrum board is "owned" by the team. If one story isn't making it - the people who aren't working on it should be asking themselves if they have the time/ability to help out the engineer who's struggling. The TEAM is responsible for pushing the stories over the line - and if one person isn't getting things done, they'll notice and peer-pressure should kick in.<br />
<br />
== The Scrum Master ==<br />
The scrum master shouldn't be a managment position - it's generally a part-time job and it doesn't come with ANY authority. It's purely an administrative job.<br />
<br />
Some teams have their lead engineer do the job - or maybe even a QA guy - for a while we took it in turns to be scrum master with a different person taking the job each sprint. Some companies actually employ someone specifically to do this job.<br />
<br />
== Scrum ==<br />
Now, at a fixed time - typically early each morning - all of the engineers on the team and their "Scrum Master" (and anyone else who cares to come along to listen) meets up at the scrum board. The engineers are called "Pigs" and the other people "Chickens". There is an old joke that explains these names (When you have ham and eggs for breakfast, the chicken is involved but the pig is committed!). If you are late by even a second for the kick-off - it costs you a dollar. People who are working from home or at remote locations can attend the session via Skype or Google hangouts or something...but if they have connection problems, broken camera/mike...it's gonna cost them a buck.<br />
<br />
The scrum has rules. Only pigs are allowed to speak - chickens keep quiet unless asked to contribute (which is rare). The scrum is FAST - 10 minutes is too long...hence doing it out in the corridor - with no chairs!<br />
<br />
Each pig takes a turn to stand up in front of the board, '''briefly''' explain what they did during the previous day - cross off hours from the post-it notes on to show how much work they estimate is left to do on the task(s) they worked on. That number can go up or down or stay the same...it's an estimate of what's left - not an indication of the number of hours you spent working on it...nobody cares about that!<br />
<br />
If there is less than 8 hours left on the current task - or if the task is finished, they pick another yellow post-it from the board and initial it to indicate that they have taken responsibility for doing it. In some larger/less-diverse teams (and especially in bug-fix sprints) people can grab any task they fancy - but in many cases, we put each person in charge of a complete story that they work from start to finish - and in small or skill-diverse teams, it is a brave person who picks up a task that lies outside of their skill area because they are still expected to complete it in the time allocated.<br />
<br />
When we run out of yellow (and blue!) post-its - we start in on the pink "BONUS" stories.<br />
<br />
When a task is done, the post-it moves on to the next column - so it gets peer-reviewed, QA'ed, Documented, whatever. At some point (depending on company policy) it crosses a line that requires it to be checked into the source repository. When it reaches the right-hand column, the code will have been checked in, tested, documented and it's done, completely, utterly '''DONE''' - with all of the COA's completed and checked for completeness!<br />
<br />
If you are BLOCKED for some reason, it is CRITICAL that you explain this at the scrum-board. If everyone agrees that you are stuck - you put the post-it into the BLOCKED box and find another one to work on. Scrum finishes with everyone discussing how to un-block the tasks in the BLOCKED box...this is very important.<br />
<br />
Some tasks are occasionally found to be MOOT - events have changed so that the story shouldn't be attempted - maybe it's not needed anymore - or maybe the completion of some other story caused it to get done as a side effect (eg, you delete a bunch of code that contained a bug that you no longer need to fix). These stories are moved to the MOOT box...which (in effect) means that they are COMPLETE.<br />
<br />
== The Burn Down Chart ==<br />
After scrum, the scrum-master writes down the number of hours that were crossed off and updates a "Burn Down" graph - we keep a spread-sheet, but some people just draw it on paper. The graph is taped to the scrum board so anyone wandering down the corridor can see at a glance whether the team is performing on target.<br />
<br />
At it's simplest, this graph has "DAYS" on the X axis and "HOURS" on the Y. There are two curves - one is a straight line that goes from (8 hours)*(sprint_length_in_days-2)*(number_of_engineers) on day #1 (day #0 was planning day) down to zero on the last day of the sprint - this is what we hope will happen. The other curve shows the total number of hours left in tasks that aren't in the FINISHED column on each day of the sprint - it shows what's actually happening! If the second curve is higher than the first one...everyone works harder...stays late! If we're a little below the first curve, we feel comfortable. If we're too far below the curve, management asks why we underestimated our tasks - but that doesn't give them license to drop new tasks onto the team in mid-sprint. That's a huge "No-no".<br />
<br />
== "Found" tasks ==<br />
If a "quick popup task" arrives mid-sprint (like a nasty bug or something) - we call it a "found task" - we estimate the hours and write it on a blue post-it note. The team has to make a snap decision to either agree to somehow fit it in with the other tasks - or to punt it off into the next sprint. If you're above the line on the burndown chart - you should probably punt it. If you're under the line, you can see if you have the capacity to add it to this sprint.<br />
<br />
Nobody other than the engineers is empowered to put a blue post-it onto the board. But once it's there - it has to make it down to the end with all the others...when the engineers make a commitment - they are expected to make it.<br />
<br />
== Mid-sprint ==<br />
If it's a long sprint, we might spend an hour in a "mid-sprint review" - where we identify any problems if we're "above the line" on the sprint. Maybe reshuffle some tasks between people if one person is behind and another ahead.<br />
<br />
== Sprint Retrospective Friday ==<br />
At the end of the sprint - hopefully - all of the tasks are done, and with luck, we have some pink "BONUS" and blue "FOUND TASK" post-it's down there too.<br />
<br />
On the last day, we have two more meetings - one is spent convincing each other (and management) that we met the "CONDITIONS OF SATISFACTION" of the stories. This entails live demonstrations, display of screenshots, pointing to documentation on the Wiki...that kind of thing. There are cheers and applause when people stand up and explain what they did.<br />
<br />
We lock down the repository, make a release with the resulting code and branch the version control system ready to start again on the first Monday of the next sprint.<br />
<br />
The second meeting is "Sprint retrospective" where we ask (and answer) the three ritual questions: "What did we do right? What did we do wrong? What didn't we do?"...after a bad sprint, this is a long, painful meeting. After a good one, it's a lot of fun.<br />
<br />
We often have an end-of-sprint party...free food, etc. Sadly, the government frowned on us spending their money on beer - so we don't do that anymore! :-(<br />
<br />
== Rhythm of Life ==<br />
The sprint cycle is an interesting one - it starts off (hopefully) with excitement about being able to pick up new tasks, choose new stories for the future. see what's coming up in the future from other parts of the company). Over the next few days, we settle into the routine of development - with a quickening sense of urgency as we approach the end. The sprint wrap-up meeting is a time to celebrate (if we succeeded) or chew the fat over why we didn't. It marks an end, and you can go home for the weekend without having to think about work because your new tasks don't impinge until the following Monday.<br />
<br />
I found that my family were in tune with the sprint cycle. My wife would ask whether the sprint is going well and try to keep my "honey-do" list short when we're close to the end and not making it. Family outings were generally better when taken in the "between sprints" weekends than in the "mid-sprint" times - just because I'd have a clearer head.<br />
<br />
== Other stuff ==<br />
That's the basics from an engineers' point of view. There is more to it than this though. Managers may have "Epic" Stories that are "above the pay grade" of engineers, that contain things that are not ready for wide-spread consumption...stories that are broken down into lesser stories and then released to engineering in smaller chunks. Engineers can also write stories - either simple ones describing a bug fix - larger ones describing things that we know we need to get done - but which are "invisible" to managers...code refactoring, that kind of thing - even Epic ones if we have some major new idea to put forward.<br />
<br />
When there are lots of teams - and lots of scrums, the scrum-masters get together once a day and have a "Scrum of scrums" where they describe what their teams are doing, how it's going, what the cross-team blockers are, etc. Similarly, they have scrum-of-scrum planning, scrum-of-scrum sprint retrospectives, etc. In a giant company, there might even be scrum-of-scrum-of-scrum levels.<br />
<br />
Scrum-of-scrums deal with epic stories and stories that span across multiple teams - their blockers may be on a larger scale - where one entire team is blocking another. The stories are tracked by the completion of their sub-stories in the lower scrum levels...but the principle is much the same.<br />
<br />
Remember the rule about Pigs and Chickens...anyone can be a chicken at a Scrum-of-scrums if they need visibility at cross-team levels. It is also common for a team member from one team to be invited to attend another team's scrum (as a chicken) - and may be asked to report on progress there.<br />
<br />
== Isn't it a little...um...silly? ==<br />
<br />
The ritualized, post-it notes and sharpies, pigs and chickens, planning poker?! Sometimes the process seems a little crazy - but it works! It's like magic. The necessity of standing up in front of your team-mates and explaining what you did yesterday is a strong incentive not to goof-off. If you read email, surfed the web, ate junk food in the kitchen and talked to your buddies all day - then when you come to stand at the scrum board the next day and can only cross 2 hours off an 8 hour task...you really feel the pain...and you can see at a glance that you've got to pull it back by staying on-task.<br />
<br />
I get a real high from showing off my latest stuff at the end-of-sprint meeting.<br />
<br />
You get into the rhythm of sprint cycles - we mostly have 3 week sprints and the pressure towards the end is balanced by the relatively relaxation at start of the next.<br />
<br />
People seem to be VASTLY more productive in a scrum system. Also, people feel more empowered. The system doesn't allow managers to pressure you into taking on more work than you can manage. The responsibility to make deadlines is entirely of your own making - so when things go wrong, you have nobody to blame but yourself. Of course, if you habitually quote high numbers of hours to do work then that's noticable from the ratio of planning poker points to hours estimated. It's no protection against you getting a crappy annual review! But it's hard to be a slacker when it's your peers who are seeing your estimates and sharing the pain when you fail.<br />
<br />
If you don't make the work by the end of the sprint, you have NOBODY to blame but yourself. It's a horrible feeling. People work extra hours just to avoid that happening...nobody forces them to crunch - they do it because they feel bad about making a promise and not meeting it. You said how long it would take you - you swore on a pile of post-it notes that your estimate was good - and you discussed it with everyone else. You could have chosen to do less. The pressure not to overrun is gigantic...and when you do overrun, you rapidly learn to make smaller estimates next time!<br />
<br />
NOBODY can derail a story once it's started - NOBODY can inject a new "Panic" story in mid-sprint. Life is calmer, more measured.<br />
<br />
== Agility == <br />
Despite that seeming-rigidity, the system is "AGILE" because managers can inject new stories and redirect the team at 2 to 4 weeks notice. They know that the team will become free to consider new stories at the end of the sprint. They know to the day when their new requirement will be met.<br />
<br />
They can plan ahead very accurately because they have the stories in the queue, marked by "difficulty" from the planning poker - and the stories that have been completed - along with their difficulty scores AND the actual number of man-hours the team took to complete them. They can use statistics to track the ratio between the difficulty number and the man-hours to get a pretty good idea of how long some major new "Epic" story/feature will take to become a reality. (They talk about "team momentum"). They can also note when the ratio of hours consumed to difficulty-estimated gets worse - that something is going wrong with the team - a morale issue maybe? Someone on the team not pulling their weight perhaps.<br />
<br />
Since each sprint is atomic - you (theoretically) have a releasable product at the end of each sprint cycle (although in practice, we generally insert a 2-week mini-sprint before each release - and in those sprints, the only stories we work are bug fixes).<br />
<br />
Releases always happen on-time - although they may not have all of the features ("stories") you wanted them to have.<br />
<br />
== Conclusion - Does It Work? ==<br />
I honestly believe in this system. Having worked this way in two companies, it's MAGICAL. Everyone loves it, we're happier, we get more work done, management are happy. It just works! People who come for job interviews often ask "Do you guys do scrum?" and they're very happy when you say "Yes!". Lots of people (myself included) would never consider going back to the bad old days.<br />
<br />
What I describe here is pretty much the standard flavor of scrum...but there are other variations.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=An_Engineer%27s_guide_to_Scrum&diff=2076An Engineer's guide to Scrum2014-04-02T13:41:07Z<p>SteveBaker: /* Planning Monday */</p>
<hr />
<div>'''Agile development''', or '''Scrum''' is a management technique that's become very popular in software companies...especially game software companies.<br />
<br />
== Teams and Sprints ==<br />
The company is split into teams of between maybe 4 and perhaps at most 10 people. Life proceeds in "Sprints" of between 2 and 4 weeks - longer when you're in long-term development cycles, shorter when you approach a deliverable. People may move from one team to another from sprint to the next - but generally, we try not to do that too much. A sprint is a self-contained event - we take in "Stories" at the beginning, we finish them and produce releasable, essentially bug-free, working code at the end.<br />
<br />
Each sprint has a pattern - with some ritualized meetings.<br />
<br />
== Stories ==<br />
Everything starts with the "Stake holders" (marketing people, senior managers, product managers) writing "Stories" describing the things they want to be able to do with the product. These are kinda formulaic and are supposed to fit on a half sheet of paper:<br />
<br />
:As a user of WonderProduct2000, I need the ability for the spreadsheet component to bake bread.<br />
:SUCH THAT:<br />
:* The bread is light and fluffy.<br />
:* Spreadsheet processing is not degraded while baking.<br />
:* There is a pleasant "BING!" sound when it's done.<br />
:CONDITIONS OF SATISFACTION:<br />
:* Bread fluffy-ometer readings of 0.4 or above are obtained.<br />
:* Bread is not burned.<br />
:* BING! Sound makes small children yell "Mommy, mommy, can I have some?"<br />
:BONUS FEATURES:<br />
:* Bagles.<br />
<br />
Stories are supposed to describe desired results - they should never describe the method by which the result is to be achieved.<br />
<br />
Some stories are just investigation tasks - with conditions of satisfaction (COS) that include documentation - maybe a stand-up presentation and a sign-off from some committee or other. Most result in a concrete "thing" - code, documentation, art, audio. Something that can be demonstrated as meeting it's COS.<br />
<br />
Other stories are too big for the team to complete within one sprint - but it's a rule that those have to be broken down into smaller sub-stories. Stories are thus heirarchical in nature. "Epic" stories may embody the guiding principles for an entire multi-year development cycle, but the process of recursive sub-division must always result in stories that are one sprint or less in duration.<br />
<br />
Generally, the COS should be designed to be testable - preferably by the QA department and/or by a demonstration at the sprint retrospective meeting. A research story might end up with there being a document - and the COS might include "* Eric has read the final document and is happy with it."<br />
<br />
== Planning Monday ==<br />
(Which may in fact happen on the preceding Friday...)<br />
<br />
At the start of the sprint, the team and their immediate manager spend half a day going through the stories - some of which are new and urgent - some are old and dusty (the "Product backlog"). We discuss how we're going to implement each new one and briefly ensure that nothing has changed about the old ones (maybe they've become moot - or need to be rewritten in some way) - and for each new or revised one, we estimate the complexity of the chosen approach. <br />
<br />
In small or skill-diverse teams, the person who will be working on the job can do a complexity estimation directly in man-hours. This is emphatically NOT a managerial role. When the engineer says "this is a 16 man-hour job" - they are effectively entering a promise to complete the work in that amount of time.<br />
<br />
Larger, more skill-uniform teams use "Planning Poker" (I kid you not!). We have a hand of special "planning poker" playing cards for each engineer (they have goats on them!) - they are marked with numbers in the corners. The numbers are in units of "difficulty" - which is an abstract quantity that doesn't relate to "effort" or "man-hours" (well, not directly). We have a handful of old "benchmark" stories that we can compare to. We have a gut feel for what is a 10 point story, what is a 3 pointer and so on.<br />
<br />
Each person with the skill-set to work on the story places a card face-down on the table representing his/her estimate for the difficulty of the task and on the count of three we all show our estimates. If everyone more or less agrees - we write that estimate into the story and move quickly along to the next one. If we don't agree then the highest and lowest outliers explain why they disagree with the majority...and we play another round of cards. Pretty soon we more or less agree. If someone digs their heels in for a low-ball number - then they can expect to be doing the work! But generally, the resulting estimate should be such that all of the people involved would feel happy to pick up the task and complete it at that estimate.<br />
<br />
Repeat until all new stories are scored. Stories carried over from previous sprints may need to be re-visited if conditions surrounding their implementation has changed. But by the end, we have good estimates for all of the stories. Big stories that will need to be broken down later will have more approximate estimates - but those can be updated as their component stories emerge and can be accurately estimated.<br />
<br />
Now, management can put together the estimates and pick a selection of high priority ones that should be worked on this sprint. Engineers then take these stories and break them down into individual "tasks" - atoms of work - generally between 4 and 16 hours each. These are written on yellow post-it notes in fat black "sharpie" pens to guarantee that the task can be described in just a few words...with the hourly estimate written in the bottom-right corner.<br />
<br />
This discipline of breaking into bite sized chunks seems to help with estimating. Using a black sharpie and a post-it note ensures that we have bite-sized descriptions.<br />
<br />
Now, after lunch, usually, we take another look at the total workload for the sprint - we may adjust the hours, split some tasks up into sub-stories. If, after detailed estimation, we don't think we can get all of the stories done - then we take the lowest priority stories and transfer them onto pink post-its to indicate that these are "BONUS" tasks - or maybe bump the story out of the sprint altogether.<br />
<br />
If we think we can do more work than we estimated in poker, then we grab new stories and task them out onto pink BONUS post-its too.<br />
<br />
Nobody leaves the meeting until every one of the engineers agrees that the yellow tasks can and WILL be completed in the upcoming sprint. This is VITALLY important. If you agree - then you've made a personal commitment to finishing that story. If you don't agree - then even the lowliest engineer can force a story out of the sprint in the face of any amount of management insistence...it's a rule. If managers don't like that - then it's their job to modify the stories, maybe split a big story into smaller ones - maybe shift priorities, get more staff...the one thing they cannot do is to cajole an engineer into accepting a lower estimate...not EVER.<br />
<br />
We stick all of the yellow and pink post-its onto a whiteboard out in the corridor outside our office...someplace public, uncomfortable, and with no chairs! Planning monday is over.<br />
<br />
== Post-its ==<br />
[[File:ScrumTask.jpg|right|400px]]<br />
The post-it note ends up being an "atom" of work. There are many variations on how to lay it out - but generally the name of the task is in the middle, in the top-right corner is the number of the story that it belongs to, the top left corner is initially left blank - but is filled in with the name/initials of the person who is working on it. The bottom-left corner is the time-estimate for the task and the bottom-right is the amount of time left until the task will be complete.<br />
<br />
== The Scrum Board ==<br />
OK - to the "SCUM BOARD"!<br />
<br />
The Scrum board is laid out in several columns with boxes at the bottom marked "MOOT" and "BLOCKED".<br />
<br />
Different projects and different companies have different layouts: I've seen 5 columns: "PENDING", "IN PROGRESS", "IN CODE-REVIEW", "IN QA" and "COMPLETE" representing the life-cycle of a task. But "PENDING", "WORKING", "COMMITTED", "IN QA" and "COMPLETE" is another option...whatever works. Art projects will have different setups...maybe "MESH-COMPLETE", "TEXTURE COMPLETE", "ANIMATION RIGGED", etc. There should always be a "PENDING", a "COMPLETE" and one or two 'working' columns.<br />
<br />
Tasks start in PENDING and work their way across to COMPLETE over the life of the sprint. By the end of the sprint, every single yellow post it '''MUST''' be in the right-hand column. The only way out is for the task to be considered "MOOT" (we decided that this wasn't necessary in order to complete the story because we found an easier way) - or to be "BLOCKED" by some external issue that's beyond our control (my hard drive exploded, Fred who works in our other office didn't do what he promised - and we relied on that for our estimates).<br />
<br />
BLOCKED tasks are a monumental issue - it is the task of the 'Scrum Master' to find out why tasks are blocked and what can be done to unblock them. It is super-rare for a task to stay blocked past the end of the sprint.<br />
<br />
When stories don't make it into the final column, hard questions must be asked. Did someone get sick? Did the estimate prove to be wildly wrong...and why? Is there something wrong with our process? These bad stories must be carried over into the next sprint - but that's a failure of the team...it's not supposed to happen, and if it happens often, then management need to step in and figure out what's broken.<br />
<br />
Another thing is that the scrum board is "owned" by the team. If one story isn't making it - the people who aren't working on it should be asking themselves if they have the time/ability to help out the engineer who's struggling. The TEAM is responsible for pushing the stories over the line - and if one person isn't getting things done, they'll notice and peer-pressure should kick in.<br />
<br />
== The Scrum Master ==<br />
The scrum master shouldn't be a managment position - it's generally a part-time job and it doesn't come with ANY authority. It's purely an administrative job.<br />
<br />
Some teams have their lead engineer do the job - or maybe even a QA guy - for a while we took it in turns to be scrum master with a different person taking the job each sprint. Some companies actually employ someone specifically to do this job.<br />
<br />
== Scrum ==<br />
Now, at a fixed time - typically early each morning - all of the engineers on the team and their "Scrum Master" (and anyone else who cares to come along to listen) meets up at the scrum board. The engineers are called "Pigs" and the other people "Chickens". There is an old joke that explains these names (When you have ham and eggs for breakfast, the chicken is involved but the pig is committed!). If you are late by even a second for the kick-off - it costs you a dollar. People who are working from home or at remote locations can attend the session via Skype or Google hangouts or something...but if they have connection problems, broken camera/mike...it's gonna cost them a buck.<br />
<br />
The scrum has rules. Only pigs are allowed to speak - chickens keep quiet unless asked to contribute (which is rare). The scrum is FAST - 10 minutes is too long...hence doing it out in the corridor - with no chairs!<br />
<br />
Each pig takes a turn to stand up in front of the board, '''briefly''' explain what they did during the previous day - cross off hours from the post-it notes on to show how much work they estimate is left to do on the task(s) they worked on. That number can go up or down or stay the same...it's an estimate of what's left - not an indication of the number of hours you spent working on it...nobody cares about that!<br />
<br />
If there is less than 8 hours left on the current task - or if the task is finished, they pick another yellow post-it from the board and initial it to indicate that they have taken responsibility for doing it. In some larger/less-diverse teams (and especially in bug-fix sprints) people can grab any task they fancy - but in many cases, we put each person in charge of a complete story that they work from start to finish - and in small or skill-diverse teams, it is a brave person who picks up a task that lies outside of their skill area because they are still expected to complete it in the time allocated.<br />
<br />
When we run out of yellow (and blue!) post-its - we start in on the pink "BONUS" stories.<br />
<br />
When a task is done, the post-it moves on to the next column - so it gets peer-reviewed, QA'ed, Documented, whatever. At some point (depending on company policy) it crosses a line that requires it to be checked into the source repository. When it reaches the right-hand column, the code will have been checked in, tested, documented and it's done, completely, utterly '''DONE''' - with all of the COA's completed and checked for completeness!<br />
<br />
If you are BLOCKED for some reason, it is CRITICAL that you explain this at the scrum-board. If everyone agrees that you are stuck - you put the post-it into the BLOCKED box and find another one to work on. Scrum finishes with everyone discussing how to un-block the tasks in the BLOCKED box...this is very important.<br />
<br />
Some tasks are occasionally found to be MOOT - events have changed so that the story shouldn't be attempted - maybe it's not needed anymore - or maybe the completion of some other story caused it to get done as a side effect (eg, you delete a bunch of code that contained a bug that you no longer need to fix). These stories are moved to the MOOT box...which (in effect) means that they are COMPLETE.<br />
<br />
== The Burn Down Chart ==<br />
After scrum, the scrum-master writes down the number of hours that were crossed off and updates a "Burn Down" graph - we keep a spread-sheet, but some people just draw it on paper. The graph is taped to the scrum board so anyone wandering down the corridor can see at a glance whether the team is performing on target.<br />
<br />
At it's simplest, this graph has "DAYS" on the X axis and "HOURS" on the Y. There are two curves - one is a straight line that goes from (8 hours)*(sprint_length_in_days-2)*(number_of_engineers) on day #1 (day #0 was planning day) down to zero on the last day of the sprint - this is what we hope will happen. The other curve shows the total number of hours left in tasks that aren't in the FINISHED column on each day of the sprint - it shows what's actually happening! If the second curve is higher than the first one...everyone works harder...stays late! If we're a little below the first curve, we feel comfortable. If we're too far below the curve, management asks why we underestimated our tasks - but that doesn't give them license to drop new tasks onto the team in mid-sprint. That's a huge "No-no".<br />
<br />
== "Found" tasks ==<br />
If a "quick popup task" arrives mid-sprint (like a nasty bug or something) - we call it a "found task" - we estimate the hours and write it on a blue post-it note. The team has to make a snap decision to either agree to somehow fit it in with the other tasks - or to punt it off into the next sprint. If you're above the line on the burndown chart - you should probably punt it. If you're under the line, you can see if you have the capacity to add it to this sprint.<br />
<br />
Nobody other than the engineers is empowered to put a blue post-it onto the board. But once it's there - it has to make it down to the end with all the others...when the engineers make a commitment - they are expected to make it.<br />
<br />
== Mid-sprint ==<br />
If it's a long sprint, we might spend an hour in a "mid-sprint review" - where we identify any problems if we're "above the line" on the sprint. Maybe reshuffle some tasks between people if one person is behind and another ahead.<br />
<br />
== Sprint Retrospective Friday ==<br />
At the end of the sprint - hopefully - all of the tasks are done, and with luck, we have some pink "BONUS" and blue "FOUND TASK" post-it's down there too.<br />
<br />
On the last day, we have two more meetings - one is spent convincing each other (and management) that we met the "CONDITIONS OF SATISFACTION" of the stories. This entails live demonstrations, display of screenshots, pointing to documentation on the Wiki...that kind of thing. There are cheers and applause when people stand up and explain what they did.<br />
<br />
We lock down the repository, make a release with the resulting code and branch the version control system ready to start again on the first Monday of the next sprint.<br />
<br />
The second meeting is "Sprint retrospective" where we ask (and answer) the three ritual questions: "What did we do right? What did we do wrong? What didn't we do?"...after a bad sprint, this is a long, painful meeting. After a good one, it's a lot of fun.<br />
<br />
We often have an end-of-sprint party...free food, etc. Sadly, the government frowned on us spending their money on beer - so we don't do that anymore! :-(<br />
<br />
== Rhythm of Life ==<br />
The sprint cycle is an interesting one - it starts off (hopefully) with excitement about being able to pick up new tasks, choose new stories for the future. see what's coming up in the future from other parts of the company). Over the next few days, we settle into the routine of development - with a quickening sense of urgency as we approach the end. The sprint wrap-up meeting is a time to celebrate (if we succeeded) or chew the fat over why we didn't. It marks an end, and you can go home for the weekend without having to think about work because your new tasks don't impinge until the following Monday.<br />
<br />
I found that my family were in tune with the sprint cycle. My wife would ask whether the sprint is going well and try to keep my "honey-do" list short when we're close to the end and not making it. Family outings were generally better when taken in the "between sprints" weekends than in the "mid-sprint" times - just because I'd have a clearer head.<br />
<br />
== Other stuff ==<br />
That's the basics from an engineers' point of view. There is more to it than this though. Managers may have "Epic" Stories that are "above the pay grade" of engineers, that contain things that are not ready for wide-spread consumption...stories that are broken down into lesser stories and then released to engineering in smaller chunks. Engineers can also write stories - either simple ones describing a bug fix - larger ones describing things that we know we need to get done - but which are "invisible" to managers...code refactoring, that kind of thing - even Epic ones if we have some major new idea to put forward.<br />
<br />
When there are lots of teams - and lots of scrums, the scrum-masters get together once a day and have a "Scrum of scrums" where they describe what their teams are doing, how it's going, what the cross-team blockers are, etc. Similarly, they have scrum-of-scrum planning, scrum-of-scrum sprint retrospectives, etc. In a giant company, there might even be scrum-of-scrum-of-scrum levels.<br />
<br />
Scrum-of-scrums deal with epic stories and stories that span across multiple teams - their blockers may be on a larger scale - where one entire team is blocking another. The stories are tracked by the completion of their sub-stories in the lower scrum levels...but the principle is much the same.<br />
<br />
Remember the rule about Pigs and Chickens...anyone can be a chicken at a Scrum-of-scrums if they need visibility at cross-team levels. It is also common for a team member from one team to be invited to attend another team's scrum (as a chicken) - and may be asked to report on progress there.<br />
<br />
== Isn't it a little...um...silly? ==<br />
<br />
The ritualized, post-it notes and sharpies, pigs and chickens, planning poker?! Sometimes the process seems a little crazy - but it works! It's like magic. The necessity of standing up in front of your team-mates and explaining what you did yesterday is a strong incentive not to goof-off. If you read email, surfed the web, ate junk food in the kitchen and talked to your buddies all day - then when you come to stand at the scrum board the next day and can only cross 2 hours off an 8 hour task...you really feel the pain...and you can see at a glance that you've got to pull it back by staying on-task.<br />
<br />
I get a real high from showing off my latest stuff at the end-of-sprint meeting.<br />
<br />
You get into the rhythm of sprint cycles - we mostly have 3 week sprints and the pressure towards the end is balanced by the relatively relaxation at start of the next.<br />
<br />
People seem to be VASTLY more productive in a scrum system. Also, people feel more empowered. The system doesn't allow managers to pressure you into taking on more work than you can manage. The responsibility to make deadlines is entirely of your own making - so when things go wrong, you have nobody to blame but yourself. Of course, if you habitually quote high numbers of hours to do work then that's noticable from the ratio of planning poker points to hours estimated. It's no protection against you getting a crappy annual review! But it's hard to be a slacker when it's your peers who are seeing your estimates and sharing the pain when you fail.<br />
<br />
If you don't make the work by the end of the sprint, you have NOBODY to blame but yourself. It's a horrible feeling. People work extra hours just to avoid that happening...nobody forces them to crunch - they do it because they feel bad about making a promise and not meeting it. You said how long it would take you - you swore on a pile of post-it notes that your estimate was good - and you discussed it with everyone else. You could have chosen to do less. The pressure not to overrun is gigantic...and when you do overrun, you rapidly learn to make smaller estimates next time!<br />
<br />
NOBODY can derail a story once it's started - NOBODY can inject a new "Panic" story in mid-sprint. Life is calmer, more measured.<br />
<br />
== Agility == <br />
Despite that seeming-rigidity, the system is "AGILE" because managers can inject new stories and redirect the team at 2 to 4 weeks notice. They know that the team will become free to consider new stories at the end of the sprint. They know to the day when their new requirement will be met.<br />
<br />
They can plan ahead very accurately because they have the stories in the queue, marked by "difficulty" from the planning poker - and the stories that have been completed - along with their difficulty scores AND the actual number of man-hours the team took to complete them. They can use statistics to track the ratio between the difficulty number and the man-hours to get a pretty good idea of how long some major new "Epic" story/feature will take to become a reality. (They talk about "team momentum"). They can also note when the ratio of hours consumed to difficulty-estimated gets worse - that something is going wrong with the team - a morale issue maybe? Someone on the team not pulling their weight perhaps.<br />
<br />
Since each sprint is atomic - you (theoretically) have a releasable product at the end of each sprint cycle (although in practice, we generally insert a 2-week mini-sprint before each release - and in those sprints, the only stories we work are bug fixes).<br />
<br />
Releases always happen on-time - although they may not have all of the features ("stories") you wanted them to have.<br />
<br />
== Conclusion - Does It Work? ==<br />
I honestly believe in this system. Having worked this way in two companies, it's MAGICAL. Everyone loves it, we're happier, we get more work done, management are happy. It just works! People who come for job interviews often ask "Do you guys do scrum?" and they're very happy when you say "Yes!". Lots of people (myself included) would never consider going back to the bad old days.<br />
<br />
What I describe here is pretty much the standard flavor of scrum...but there are other variations.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=File:ScrumTask.jpg&diff=2075File:ScrumTask.jpg2014-04-02T13:35:07Z<p>SteveBaker: </p>
<hr />
<div></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=An_Engineer%27s_guide_to_Scrum&diff=2074An Engineer's guide to Scrum2014-04-02T13:27:30Z<p>SteveBaker: /* Other stuff */</p>
<hr />
<div>'''Agile development''', or '''Scrum''' is a management technique that's become very popular in software companies...especially game software companies.<br />
<br />
== Teams and Sprints ==<br />
The company is split into teams of between maybe 4 and perhaps at most 10 people. Life proceeds in "Sprints" of between 2 and 4 weeks - longer when you're in long-term development cycles, shorter when you approach a deliverable. People may move from one team to another from sprint to the next - but generally, we try not to do that too much. A sprint is a self-contained event - we take in "Stories" at the beginning, we finish them and produce releasable, essentially bug-free, working code at the end.<br />
<br />
Each sprint has a pattern - with some ritualized meetings.<br />
<br />
== Stories ==<br />
Everything starts with the "Stake holders" (marketing people, senior managers, product managers) writing "Stories" describing the things they want to be able to do with the product. These are kinda formulaic and are supposed to fit on a half sheet of paper:<br />
<br />
:As a user of WonderProduct2000, I need the ability for the spreadsheet component to bake bread.<br />
:SUCH THAT:<br />
:* The bread is light and fluffy.<br />
:* Spreadsheet processing is not degraded while baking.<br />
:* There is a pleasant "BING!" sound when it's done.<br />
:CONDITIONS OF SATISFACTION:<br />
:* Bread fluffy-ometer readings of 0.4 or above are obtained.<br />
:* Bread is not burned.<br />
:* BING! Sound makes small children yell "Mommy, mommy, can I have some?"<br />
:BONUS FEATURES:<br />
:* Bagles.<br />
<br />
Stories are supposed to describe desired results - they should never describe the method by which the result is to be achieved.<br />
<br />
Some stories are just investigation tasks - with conditions of satisfaction (COS) that include documentation - maybe a stand-up presentation and a sign-off from some committee or other. Most result in a concrete "thing" - code, documentation, art, audio. Something that can be demonstrated as meeting it's COS.<br />
<br />
Other stories are too big for the team to complete within one sprint - but it's a rule that those have to be broken down into smaller sub-stories. Stories are thus heirarchical in nature. "Epic" stories may embody the guiding principles for an entire multi-year development cycle, but the process of recursive sub-division must always result in stories that are one sprint or less in duration.<br />
<br />
Generally, the COS should be designed to be testable - preferably by the QA department and/or by a demonstration at the sprint retrospective meeting. A research story might end up with there being a document - and the COS might include "* Eric has read the final document and is happy with it."<br />
<br />
== Planning Monday ==<br />
(Which may in fact happen on the preceding Friday...)<br />
<br />
At the start of the sprint, the team and their immediate manager spend half a day going through the stories - some of which are new and urgent - some are old and dusty (the "Product backlog"). We discuss how we're going to implement each new one and briefly ensure that nothing has changed about the old ones (maybe they've become moot - or need to be rewritten in some way) - and for each new or revised one, we estimate the complexity of the chosen approach. <br />
<br />
In small or skill-diverse teams, the person who will be working on the job can do a complexity estimation directly in man-hours. This is emphatically NOT a managerial role. When the engineer says "this is a 16 man-hour job" - they are effectively entering a promise to complete the work in that amount of time.<br />
<br />
Larger, more skill-uniform teams use "Planning Poker" (I kid you not!). We have a hand of special "planning poker" playing cards for each engineer (they have goats on them!) - they are marked with numbers in the corners. The numbers are in units of "difficulty" - which is an abstract quantity that doesn't relate to "effort" or "man-hours" (well, not directly). We have a handful of old "benchmark" stories that we can compare to. We have a gut feel for what is a 10 point story, what is a 3 pointer and so on.<br />
<br />
Each person with the skill-set to work on the story places a card face-down on the table representing his/her estimate for the difficulty of the task and on the count of three we all show our estimates. If everyone more or less agrees - we write that estimate into the story and move quickly along to the next one. If we don't agree then the highest and lowest outliers explain why they disagree with the majority...and we play another round of cards. Pretty soon we more or less agree. If someone digs their heels in for a low-ball number - then they can expect to be doing the work! But generally, the resulting estimate should be such that all of the people involved would feel happy to pick up the task and complete it at that estimate.<br />
<br />
Repeat until all new stories are scored. Stories carried over from previous sprints may need to be re-visited if conditions surrounding their implementation has changed. But by the end, we have good estimates for all of the stories. Big stories that will need to be broken down later will have more approximate estimates - but those can be updated as their component stories emerge and can be accurately estimated.<br />
<br />
Now, management can put together the estimates and pick a selection of high priority ones that should be worked on this sprint. Engineers then take these stories and break them down into individual "tasks" - atoms of work - generally between 4 and 16 hours each. These are written on yellow post-it notes in fat black "sharpie" pens to guarantee that the task can be described in just a few words...with the hourly estimate written in the bottom-right corner.<br />
<br />
This discipline of breaking into bite sized chunks seems to help with estimating. Using a black sharpie and a post-it note ensures that we have bite-sized descriptions.<br />
<br />
Now, after lunch, usually, we take another look at the total workload for the sprint - we may adjust the hours, split some tasks up into sub-stories. If, after detailed estimation, we don't think we can get all of the stories done - then we take the lowest priority stories and transfer them onto pink post-its to indicate that these are "BONUS" tasks - or maybe bump the story out of the sprint altogether.<br />
<br />
If we think we can do more work than we estimated in poker, then we grab new stories and task them out onto pink BONUS post-its too.<br />
<br />
Nobody leaves the meeting until every one of the engineers agrees that the yellow tasks can and WILL be completed in the upcoming sprint. This is VITALLY important. If you agree - then you've made a personal commitment to finishing that story. If you don't agree - then even the lowliest engineer can force a story out of the sprint in the face of any amount of management insistence...it's a rule. If managers don't like that - then it's their job to modify the stories, maybe split a big story into smaller ones - maybe shift priorities, get more staff...the one thing they cannot do is to cajole an engineer into accepting a lower estimate...not EVER.<br />
<br />
We stick all of the yellow and pink post-its onto a whiteboard out in the corridor outside our office...someplace public, uncomfortable, and with no chairs! Planning monday is over.<br />
<br />
== The Scrum Board ==<br />
OK - to the "SCUM BOARD"!<br />
<br />
The Scrum board is laid out in several columns with boxes at the bottom marked "MOOT" and "BLOCKED".<br />
<br />
Different projects and different companies have different layouts: I've seen 5 columns: "PENDING", "IN PROGRESS", "IN CODE-REVIEW", "IN QA" and "COMPLETE" representing the life-cycle of a task. But "PENDING", "WORKING", "COMMITTED", "IN QA" and "COMPLETE" is another option...whatever works. Art projects will have different setups...maybe "MESH-COMPLETE", "TEXTURE COMPLETE", "ANIMATION RIGGED", etc. There should always be a "PENDING", a "COMPLETE" and one or two 'working' columns.<br />
<br />
Tasks start in PENDING and work their way across to COMPLETE over the life of the sprint. By the end of the sprint, every single yellow post it '''MUST''' be in the right-hand column. The only way out is for the task to be considered "MOOT" (we decided that this wasn't necessary in order to complete the story because we found an easier way) - or to be "BLOCKED" by some external issue that's beyond our control (my hard drive exploded, Fred who works in our other office didn't do what he promised - and we relied on that for our estimates).<br />
<br />
BLOCKED tasks are a monumental issue - it is the task of the 'Scrum Master' to find out why tasks are blocked and what can be done to unblock them. It is super-rare for a task to stay blocked past the end of the sprint.<br />
<br />
When stories don't make it into the final column, hard questions must be asked. Did someone get sick? Did the estimate prove to be wildly wrong...and why? Is there something wrong with our process? These bad stories must be carried over into the next sprint - but that's a failure of the team...it's not supposed to happen, and if it happens often, then management need to step in and figure out what's broken.<br />
<br />
Another thing is that the scrum board is "owned" by the team. If one story isn't making it - the people who aren't working on it should be asking themselves if they have the time/ability to help out the engineer who's struggling. The TEAM is responsible for pushing the stories over the line - and if one person isn't getting things done, they'll notice and peer-pressure should kick in.<br />
<br />
== The Scrum Master ==<br />
The scrum master shouldn't be a managment position - it's generally a part-time job and it doesn't come with ANY authority. It's purely an administrative job.<br />
<br />
Some teams have their lead engineer do the job - or maybe even a QA guy - for a while we took it in turns to be scrum master with a different person taking the job each sprint. Some companies actually employ someone specifically to do this job.<br />
<br />
== Scrum ==<br />
Now, at a fixed time - typically early each morning - all of the engineers on the team and their "Scrum Master" (and anyone else who cares to come along to listen) meets up at the scrum board. The engineers are called "Pigs" and the other people "Chickens". There is an old joke that explains these names (When you have ham and eggs for breakfast, the chicken is involved but the pig is committed!). If you are late by even a second for the kick-off - it costs you a dollar. People who are working from home or at remote locations can attend the session via Skype or Google hangouts or something...but if they have connection problems, broken camera/mike...it's gonna cost them a buck.<br />
<br />
The scrum has rules. Only pigs are allowed to speak - chickens keep quiet unless asked to contribute (which is rare). The scrum is FAST - 10 minutes is too long...hence doing it out in the corridor - with no chairs!<br />
<br />
Each pig takes a turn to stand up in front of the board, '''briefly''' explain what they did during the previous day - cross off hours from the post-it notes on to show how much work they estimate is left to do on the task(s) they worked on. That number can go up or down or stay the same...it's an estimate of what's left - not an indication of the number of hours you spent working on it...nobody cares about that!<br />
<br />
If there is less than 8 hours left on the current task - or if the task is finished, they pick another yellow post-it from the board and initial it to indicate that they have taken responsibility for doing it. In some larger/less-diverse teams (and especially in bug-fix sprints) people can grab any task they fancy - but in many cases, we put each person in charge of a complete story that they work from start to finish - and in small or skill-diverse teams, it is a brave person who picks up a task that lies outside of their skill area because they are still expected to complete it in the time allocated.<br />
<br />
When we run out of yellow (and blue!) post-its - we start in on the pink "BONUS" stories.<br />
<br />
When a task is done, the post-it moves on to the next column - so it gets peer-reviewed, QA'ed, Documented, whatever. At some point (depending on company policy) it crosses a line that requires it to be checked into the source repository. When it reaches the right-hand column, the code will have been checked in, tested, documented and it's done, completely, utterly '''DONE''' - with all of the COA's completed and checked for completeness!<br />
<br />
If you are BLOCKED for some reason, it is CRITICAL that you explain this at the scrum-board. If everyone agrees that you are stuck - you put the post-it into the BLOCKED box and find another one to work on. Scrum finishes with everyone discussing how to un-block the tasks in the BLOCKED box...this is very important.<br />
<br />
Some tasks are occasionally found to be MOOT - events have changed so that the story shouldn't be attempted - maybe it's not needed anymore - or maybe the completion of some other story caused it to get done as a side effect (eg, you delete a bunch of code that contained a bug that you no longer need to fix). These stories are moved to the MOOT box...which (in effect) means that they are COMPLETE.<br />
<br />
== The Burn Down Chart ==<br />
After scrum, the scrum-master writes down the number of hours that were crossed off and updates a "Burn Down" graph - we keep a spread-sheet, but some people just draw it on paper. The graph is taped to the scrum board so anyone wandering down the corridor can see at a glance whether the team is performing on target.<br />
<br />
At it's simplest, this graph has "DAYS" on the X axis and "HOURS" on the Y. There are two curves - one is a straight line that goes from (8 hours)*(sprint_length_in_days-2)*(number_of_engineers) on day #1 (day #0 was planning day) down to zero on the last day of the sprint - this is what we hope will happen. The other curve shows the total number of hours left in tasks that aren't in the FINISHED column on each day of the sprint - it shows what's actually happening! If the second curve is higher than the first one...everyone works harder...stays late! If we're a little below the first curve, we feel comfortable. If we're too far below the curve, management asks why we underestimated our tasks - but that doesn't give them license to drop new tasks onto the team in mid-sprint. That's a huge "No-no".<br />
<br />
== "Found" tasks ==<br />
If a "quick popup task" arrives mid-sprint (like a nasty bug or something) - we call it a "found task" - we estimate the hours and write it on a blue post-it note. The team has to make a snap decision to either agree to somehow fit it in with the other tasks - or to punt it off into the next sprint. If you're above the line on the burndown chart - you should probably punt it. If you're under the line, you can see if you have the capacity to add it to this sprint.<br />
<br />
Nobody other than the engineers is empowered to put a blue post-it onto the board. But once it's there - it has to make it down to the end with all the others...when the engineers make a commitment - they are expected to make it.<br />
<br />
== Mid-sprint ==<br />
If it's a long sprint, we might spend an hour in a "mid-sprint review" - where we identify any problems if we're "above the line" on the sprint. Maybe reshuffle some tasks between people if one person is behind and another ahead.<br />
<br />
== Sprint Retrospective Friday ==<br />
At the end of the sprint - hopefully - all of the tasks are done, and with luck, we have some pink "BONUS" and blue "FOUND TASK" post-it's down there too.<br />
<br />
On the last day, we have two more meetings - one is spent convincing each other (and management) that we met the "CONDITIONS OF SATISFACTION" of the stories. This entails live demonstrations, display of screenshots, pointing to documentation on the Wiki...that kind of thing. There are cheers and applause when people stand up and explain what they did.<br />
<br />
We lock down the repository, make a release with the resulting code and branch the version control system ready to start again on the first Monday of the next sprint.<br />
<br />
The second meeting is "Sprint retrospective" where we ask (and answer) the three ritual questions: "What did we do right? What did we do wrong? What didn't we do?"...after a bad sprint, this is a long, painful meeting. After a good one, it's a lot of fun.<br />
<br />
We often have an end-of-sprint party...free food, etc. Sadly, the government frowned on us spending their money on beer - so we don't do that anymore! :-(<br />
<br />
== Rhythm of Life ==<br />
The sprint cycle is an interesting one - it starts off (hopefully) with excitement about being able to pick up new tasks, choose new stories for the future. see what's coming up in the future from other parts of the company). Over the next few days, we settle into the routine of development - with a quickening sense of urgency as we approach the end. The sprint wrap-up meeting is a time to celebrate (if we succeeded) or chew the fat over why we didn't. It marks an end, and you can go home for the weekend without having to think about work because your new tasks don't impinge until the following Monday.<br />
<br />
I found that my family were in tune with the sprint cycle. My wife would ask whether the sprint is going well and try to keep my "honey-do" list short when we're close to the end and not making it. Family outings were generally better when taken in the "between sprints" weekends than in the "mid-sprint" times - just because I'd have a clearer head.<br />
<br />
== Other stuff ==<br />
That's the basics from an engineers' point of view. There is more to it than this though. Managers may have "Epic" Stories that are "above the pay grade" of engineers, that contain things that are not ready for wide-spread consumption...stories that are broken down into lesser stories and then released to engineering in smaller chunks. Engineers can also write stories - either simple ones describing a bug fix - larger ones describing things that we know we need to get done - but which are "invisible" to managers...code refactoring, that kind of thing - even Epic ones if we have some major new idea to put forward.<br />
<br />
When there are lots of teams - and lots of scrums, the scrum-masters get together once a day and have a "Scrum of scrums" where they describe what their teams are doing, how it's going, what the cross-team blockers are, etc. Similarly, they have scrum-of-scrum planning, scrum-of-scrum sprint retrospectives, etc. In a giant company, there might even be scrum-of-scrum-of-scrum levels.<br />
<br />
Scrum-of-scrums deal with epic stories and stories that span across multiple teams - their blockers may be on a larger scale - where one entire team is blocking another. The stories are tracked by the completion of their sub-stories in the lower scrum levels...but the principle is much the same.<br />
<br />
Remember the rule about Pigs and Chickens...anyone can be a chicken at a Scrum-of-scrums if they need visibility at cross-team levels. It is also common for a team member from one team to be invited to attend another team's scrum (as a chicken) - and may be asked to report on progress there.<br />
<br />
== Isn't it a little...um...silly? ==<br />
<br />
The ritualized, post-it notes and sharpies, pigs and chickens, planning poker?! Sometimes the process seems a little crazy - but it works! It's like magic. The necessity of standing up in front of your team-mates and explaining what you did yesterday is a strong incentive not to goof-off. If you read email, surfed the web, ate junk food in the kitchen and talked to your buddies all day - then when you come to stand at the scrum board the next day and can only cross 2 hours off an 8 hour task...you really feel the pain...and you can see at a glance that you've got to pull it back by staying on-task.<br />
<br />
I get a real high from showing off my latest stuff at the end-of-sprint meeting.<br />
<br />
You get into the rhythm of sprint cycles - we mostly have 3 week sprints and the pressure towards the end is balanced by the relatively relaxation at start of the next.<br />
<br />
People seem to be VASTLY more productive in a scrum system. Also, people feel more empowered. The system doesn't allow managers to pressure you into taking on more work than you can manage. The responsibility to make deadlines is entirely of your own making - so when things go wrong, you have nobody to blame but yourself. Of course, if you habitually quote high numbers of hours to do work then that's noticable from the ratio of planning poker points to hours estimated. It's no protection against you getting a crappy annual review! But it's hard to be a slacker when it's your peers who are seeing your estimates and sharing the pain when you fail.<br />
<br />
If you don't make the work by the end of the sprint, you have NOBODY to blame but yourself. It's a horrible feeling. People work extra hours just to avoid that happening...nobody forces them to crunch - they do it because they feel bad about making a promise and not meeting it. You said how long it would take you - you swore on a pile of post-it notes that your estimate was good - and you discussed it with everyone else. You could have chosen to do less. The pressure not to overrun is gigantic...and when you do overrun, you rapidly learn to make smaller estimates next time!<br />
<br />
NOBODY can derail a story once it's started - NOBODY can inject a new "Panic" story in mid-sprint. Life is calmer, more measured.<br />
<br />
== Agility == <br />
Despite that seeming-rigidity, the system is "AGILE" because managers can inject new stories and redirect the team at 2 to 4 weeks notice. They know that the team will become free to consider new stories at the end of the sprint. They know to the day when their new requirement will be met.<br />
<br />
They can plan ahead very accurately because they have the stories in the queue, marked by "difficulty" from the planning poker - and the stories that have been completed - along with their difficulty scores AND the actual number of man-hours the team took to complete them. They can use statistics to track the ratio between the difficulty number and the man-hours to get a pretty good idea of how long some major new "Epic" story/feature will take to become a reality. (They talk about "team momentum"). They can also note when the ratio of hours consumed to difficulty-estimated gets worse - that something is going wrong with the team - a morale issue maybe? Someone on the team not pulling their weight perhaps.<br />
<br />
Since each sprint is atomic - you (theoretically) have a releasable product at the end of each sprint cycle (although in practice, we generally insert a 2-week mini-sprint before each release - and in those sprints, the only stories we work are bug fixes).<br />
<br />
Releases always happen on-time - although they may not have all of the features ("stories") you wanted them to have.<br />
<br />
== Conclusion - Does It Work? ==<br />
I honestly believe in this system. Having worked this way in two companies, it's MAGICAL. Everyone loves it, we're happier, we get more work done, management are happy. It just works! People who come for job interviews often ask "Do you guys do scrum?" and they're very happy when you say "Yes!". Lots of people (myself included) would never consider going back to the bad old days.<br />
<br />
What I describe here is pretty much the standard flavor of scrum...but there are other variations.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=An_Engineer%27s_guide_to_Scrum&diff=2073An Engineer's guide to Scrum2014-04-02T13:22:05Z<p>SteveBaker: /* End of sprint */</p>
<hr />
<div>'''Agile development''', or '''Scrum''' is a management technique that's become very popular in software companies...especially game software companies.<br />
<br />
== Teams and Sprints ==<br />
The company is split into teams of between maybe 4 and perhaps at most 10 people. Life proceeds in "Sprints" of between 2 and 4 weeks - longer when you're in long-term development cycles, shorter when you approach a deliverable. People may move from one team to another from sprint to the next - but generally, we try not to do that too much. A sprint is a self-contained event - we take in "Stories" at the beginning, we finish them and produce releasable, essentially bug-free, working code at the end.<br />
<br />
Each sprint has a pattern - with some ritualized meetings.<br />
<br />
== Stories ==<br />
Everything starts with the "Stake holders" (marketing people, senior managers, product managers) writing "Stories" describing the things they want to be able to do with the product. These are kinda formulaic and are supposed to fit on a half sheet of paper:<br />
<br />
:As a user of WonderProduct2000, I need the ability for the spreadsheet component to bake bread.<br />
:SUCH THAT:<br />
:* The bread is light and fluffy.<br />
:* Spreadsheet processing is not degraded while baking.<br />
:* There is a pleasant "BING!" sound when it's done.<br />
:CONDITIONS OF SATISFACTION:<br />
:* Bread fluffy-ometer readings of 0.4 or above are obtained.<br />
:* Bread is not burned.<br />
:* BING! Sound makes small children yell "Mommy, mommy, can I have some?"<br />
:BONUS FEATURES:<br />
:* Bagles.<br />
<br />
Stories are supposed to describe desired results - they should never describe the method by which the result is to be achieved.<br />
<br />
Some stories are just investigation tasks - with conditions of satisfaction (COS) that include documentation - maybe a stand-up presentation and a sign-off from some committee or other. Most result in a concrete "thing" - code, documentation, art, audio. Something that can be demonstrated as meeting it's COS.<br />
<br />
Other stories are too big for the team to complete within one sprint - but it's a rule that those have to be broken down into smaller sub-stories. Stories are thus heirarchical in nature. "Epic" stories may embody the guiding principles for an entire multi-year development cycle, but the process of recursive sub-division must always result in stories that are one sprint or less in duration.<br />
<br />
Generally, the COS should be designed to be testable - preferably by the QA department and/or by a demonstration at the sprint retrospective meeting. A research story might end up with there being a document - and the COS might include "* Eric has read the final document and is happy with it."<br />
<br />
== Planning Monday ==<br />
(Which may in fact happen on the preceding Friday...)<br />
<br />
At the start of the sprint, the team and their immediate manager spend half a day going through the stories - some of which are new and urgent - some are old and dusty (the "Product backlog"). We discuss how we're going to implement each new one and briefly ensure that nothing has changed about the old ones (maybe they've become moot - or need to be rewritten in some way) - and for each new or revised one, we estimate the complexity of the chosen approach. <br />
<br />
In small or skill-diverse teams, the person who will be working on the job can do a complexity estimation directly in man-hours. This is emphatically NOT a managerial role. When the engineer says "this is a 16 man-hour job" - they are effectively entering a promise to complete the work in that amount of time.<br />
<br />
Larger, more skill-uniform teams use "Planning Poker" (I kid you not!). We have a hand of special "planning poker" playing cards for each engineer (they have goats on them!) - they are marked with numbers in the corners. The numbers are in units of "difficulty" - which is an abstract quantity that doesn't relate to "effort" or "man-hours" (well, not directly). We have a handful of old "benchmark" stories that we can compare to. We have a gut feel for what is a 10 point story, what is a 3 pointer and so on.<br />
<br />
Each person with the skill-set to work on the story places a card face-down on the table representing his/her estimate for the difficulty of the task and on the count of three we all show our estimates. If everyone more or less agrees - we write that estimate into the story and move quickly along to the next one. If we don't agree then the highest and lowest outliers explain why they disagree with the majority...and we play another round of cards. Pretty soon we more or less agree. If someone digs their heels in for a low-ball number - then they can expect to be doing the work! But generally, the resulting estimate should be such that all of the people involved would feel happy to pick up the task and complete it at that estimate.<br />
<br />
Repeat until all new stories are scored. Stories carried over from previous sprints may need to be re-visited if conditions surrounding their implementation has changed. But by the end, we have good estimates for all of the stories. Big stories that will need to be broken down later will have more approximate estimates - but those can be updated as their component stories emerge and can be accurately estimated.<br />
<br />
Now, management can put together the estimates and pick a selection of high priority ones that should be worked on this sprint. Engineers then take these stories and break them down into individual "tasks" - atoms of work - generally between 4 and 16 hours each. These are written on yellow post-it notes in fat black "sharpie" pens to guarantee that the task can be described in just a few words...with the hourly estimate written in the bottom-right corner.<br />
<br />
This discipline of breaking into bite sized chunks seems to help with estimating. Using a black sharpie and a post-it note ensures that we have bite-sized descriptions.<br />
<br />
Now, after lunch, usually, we take another look at the total workload for the sprint - we may adjust the hours, split some tasks up into sub-stories. If, after detailed estimation, we don't think we can get all of the stories done - then we take the lowest priority stories and transfer them onto pink post-its to indicate that these are "BONUS" tasks - or maybe bump the story out of the sprint altogether.<br />
<br />
If we think we can do more work than we estimated in poker, then we grab new stories and task them out onto pink BONUS post-its too.<br />
<br />
Nobody leaves the meeting until every one of the engineers agrees that the yellow tasks can and WILL be completed in the upcoming sprint. This is VITALLY important. If you agree - then you've made a personal commitment to finishing that story. If you don't agree - then even the lowliest engineer can force a story out of the sprint in the face of any amount of management insistence...it's a rule. If managers don't like that - then it's their job to modify the stories, maybe split a big story into smaller ones - maybe shift priorities, get more staff...the one thing they cannot do is to cajole an engineer into accepting a lower estimate...not EVER.<br />
<br />
We stick all of the yellow and pink post-its onto a whiteboard out in the corridor outside our office...someplace public, uncomfortable, and with no chairs! Planning monday is over.<br />
<br />
== The Scrum Board ==<br />
OK - to the "SCUM BOARD"!<br />
<br />
The Scrum board is laid out in several columns with boxes at the bottom marked "MOOT" and "BLOCKED".<br />
<br />
Different projects and different companies have different layouts: I've seen 5 columns: "PENDING", "IN PROGRESS", "IN CODE-REVIEW", "IN QA" and "COMPLETE" representing the life-cycle of a task. But "PENDING", "WORKING", "COMMITTED", "IN QA" and "COMPLETE" is another option...whatever works. Art projects will have different setups...maybe "MESH-COMPLETE", "TEXTURE COMPLETE", "ANIMATION RIGGED", etc. There should always be a "PENDING", a "COMPLETE" and one or two 'working' columns.<br />
<br />
Tasks start in PENDING and work their way across to COMPLETE over the life of the sprint. By the end of the sprint, every single yellow post it '''MUST''' be in the right-hand column. The only way out is for the task to be considered "MOOT" (we decided that this wasn't necessary in order to complete the story because we found an easier way) - or to be "BLOCKED" by some external issue that's beyond our control (my hard drive exploded, Fred who works in our other office didn't do what he promised - and we relied on that for our estimates).<br />
<br />
BLOCKED tasks are a monumental issue - it is the task of the 'Scrum Master' to find out why tasks are blocked and what can be done to unblock them. It is super-rare for a task to stay blocked past the end of the sprint.<br />
<br />
When stories don't make it into the final column, hard questions must be asked. Did someone get sick? Did the estimate prove to be wildly wrong...and why? Is there something wrong with our process? These bad stories must be carried over into the next sprint - but that's a failure of the team...it's not supposed to happen, and if it happens often, then management need to step in and figure out what's broken.<br />
<br />
Another thing is that the scrum board is "owned" by the team. If one story isn't making it - the people who aren't working on it should be asking themselves if they have the time/ability to help out the engineer who's struggling. The TEAM is responsible for pushing the stories over the line - and if one person isn't getting things done, they'll notice and peer-pressure should kick in.<br />
<br />
== The Scrum Master ==<br />
The scrum master shouldn't be a managment position - it's generally a part-time job and it doesn't come with ANY authority. It's purely an administrative job.<br />
<br />
Some teams have their lead engineer do the job - or maybe even a QA guy - for a while we took it in turns to be scrum master with a different person taking the job each sprint. Some companies actually employ someone specifically to do this job.<br />
<br />
== Scrum ==<br />
Now, at a fixed time - typically early each morning - all of the engineers on the team and their "Scrum Master" (and anyone else who cares to come along to listen) meets up at the scrum board. The engineers are called "Pigs" and the other people "Chickens". There is an old joke that explains these names (When you have ham and eggs for breakfast, the chicken is involved but the pig is committed!). If you are late by even a second for the kick-off - it costs you a dollar. People who are working from home or at remote locations can attend the session via Skype or Google hangouts or something...but if they have connection problems, broken camera/mike...it's gonna cost them a buck.<br />
<br />
The scrum has rules. Only pigs are allowed to speak - chickens keep quiet unless asked to contribute (which is rare). The scrum is FAST - 10 minutes is too long...hence doing it out in the corridor - with no chairs!<br />
<br />
Each pig takes a turn to stand up in front of the board, '''briefly''' explain what they did during the previous day - cross off hours from the post-it notes on to show how much work they estimate is left to do on the task(s) they worked on. That number can go up or down or stay the same...it's an estimate of what's left - not an indication of the number of hours you spent working on it...nobody cares about that!<br />
<br />
If there is less than 8 hours left on the current task - or if the task is finished, they pick another yellow post-it from the board and initial it to indicate that they have taken responsibility for doing it. In some larger/less-diverse teams (and especially in bug-fix sprints) people can grab any task they fancy - but in many cases, we put each person in charge of a complete story that they work from start to finish - and in small or skill-diverse teams, it is a brave person who picks up a task that lies outside of their skill area because they are still expected to complete it in the time allocated.<br />
<br />
When we run out of yellow (and blue!) post-its - we start in on the pink "BONUS" stories.<br />
<br />
When a task is done, the post-it moves on to the next column - so it gets peer-reviewed, QA'ed, Documented, whatever. At some point (depending on company policy) it crosses a line that requires it to be checked into the source repository. When it reaches the right-hand column, the code will have been checked in, tested, documented and it's done, completely, utterly '''DONE''' - with all of the COA's completed and checked for completeness!<br />
<br />
If you are BLOCKED for some reason, it is CRITICAL that you explain this at the scrum-board. If everyone agrees that you are stuck - you put the post-it into the BLOCKED box and find another one to work on. Scrum finishes with everyone discussing how to un-block the tasks in the BLOCKED box...this is very important.<br />
<br />
Some tasks are occasionally found to be MOOT - events have changed so that the story shouldn't be attempted - maybe it's not needed anymore - or maybe the completion of some other story caused it to get done as a side effect (eg, you delete a bunch of code that contained a bug that you no longer need to fix). These stories are moved to the MOOT box...which (in effect) means that they are COMPLETE.<br />
<br />
== The Burn Down Chart ==<br />
After scrum, the scrum-master writes down the number of hours that were crossed off and updates a "Burn Down" graph - we keep a spread-sheet, but some people just draw it on paper. The graph is taped to the scrum board so anyone wandering down the corridor can see at a glance whether the team is performing on target.<br />
<br />
At it's simplest, this graph has "DAYS" on the X axis and "HOURS" on the Y. There are two curves - one is a straight line that goes from (8 hours)*(sprint_length_in_days-2)*(number_of_engineers) on day #1 (day #0 was planning day) down to zero on the last day of the sprint - this is what we hope will happen. The other curve shows the total number of hours left in tasks that aren't in the FINISHED column on each day of the sprint - it shows what's actually happening! If the second curve is higher than the first one...everyone works harder...stays late! If we're a little below the first curve, we feel comfortable. If we're too far below the curve, management asks why we underestimated our tasks - but that doesn't give them license to drop new tasks onto the team in mid-sprint. That's a huge "No-no".<br />
<br />
== "Found" tasks ==<br />
If a "quick popup task" arrives mid-sprint (like a nasty bug or something) - we call it a "found task" - we estimate the hours and write it on a blue post-it note. The team has to make a snap decision to either agree to somehow fit it in with the other tasks - or to punt it off into the next sprint. If you're above the line on the burndown chart - you should probably punt it. If you're under the line, you can see if you have the capacity to add it to this sprint.<br />
<br />
Nobody other than the engineers is empowered to put a blue post-it onto the board. But once it's there - it has to make it down to the end with all the others...when the engineers make a commitment - they are expected to make it.<br />
<br />
== Mid-sprint ==<br />
If it's a long sprint, we might spend an hour in a "mid-sprint review" - where we identify any problems if we're "above the line" on the sprint. Maybe reshuffle some tasks between people if one person is behind and another ahead.<br />
<br />
== Sprint Retrospective Friday ==<br />
At the end of the sprint - hopefully - all of the tasks are done, and with luck, we have some pink "BONUS" and blue "FOUND TASK" post-it's down there too.<br />
<br />
On the last day, we have two more meetings - one is spent convincing each other (and management) that we met the "CONDITIONS OF SATISFACTION" of the stories. This entails live demonstrations, display of screenshots, pointing to documentation on the Wiki...that kind of thing. There are cheers and applause when people stand up and explain what they did.<br />
<br />
We lock down the repository, make a release with the resulting code and branch the version control system ready to start again on the first Monday of the next sprint.<br />
<br />
The second meeting is "Sprint retrospective" where we ask (and answer) the three ritual questions: "What did we do right? What did we do wrong? What didn't we do?"...after a bad sprint, this is a long, painful meeting. After a good one, it's a lot of fun.<br />
<br />
We often have an end-of-sprint party...free food, etc. Sadly, the government frowned on us spending their money on beer - so we don't do that anymore! :-(<br />
<br />
== Rhythm of Life ==<br />
The sprint cycle is an interesting one - it starts off (hopefully) with excitement about being able to pick up new tasks, choose new stories for the future. see what's coming up in the future from other parts of the company). Over the next few days, we settle into the routine of development - with a quickening sense of urgency as we approach the end. The sprint wrap-up meeting is a time to celebrate (if we succeeded) or chew the fat over why we didn't. It marks an end, and you can go home for the weekend without having to think about work because your new tasks don't impinge until the following Monday.<br />
<br />
I found that my family were in tune with the sprint cycle. My wife would ask whether the sprint is going well and try to keep my "honey-do" list short when we're close to the end and not making it. Family outings were generally better when taken in the "between sprints" weekends than in the "mid-sprint" times - just because I'd have a clearer head.<br />
<br />
== Other stuff ==<br />
That's the basics from an engineers' point of view. There is more to it than this though. Managers have "Epic" Stories...stories that are broken down into lesser stories. Engineers can also write stories - either simple ones describing a bug fix - larger ones describing things that we know we need to get done - but which are "invisible" to managers - even Epic ones if we have some major new idea to put forward.<br />
<br />
When there are lots of teams - and lots of scrums, the scrum-masters get together once a day and have a "Scrum of scrums" where they describe what their teams are doing, how it's going, what the cross-team blockers are, etc. Similarly, they have scrum-of-scrum planning, scrum-of-scrum sprint retrospectives, etc. In a giant company, there might even be scrum-of-scrum-of-scrum levels.<br />
<br />
== Isn't it a little...um...silly? ==<br />
<br />
The ritualized, post-it notes and sharpies, pigs and chickens, planning poker?! Sometimes the process seems a little crazy - but it works! It's like magic. The necessity of standing up in front of your team-mates and explaining what you did yesterday is a strong incentive not to goof-off. If you read email, surfed the web, ate junk food in the kitchen and talked to your buddies all day - then when you come to stand at the scrum board the next day and can only cross 2 hours off an 8 hour task...you really feel the pain...and you can see at a glance that you've got to pull it back by staying on-task.<br />
<br />
I get a real high from showing off my latest stuff at the end-of-sprint meeting.<br />
<br />
You get into the rhythm of sprint cycles - we mostly have 3 week sprints and the pressure towards the end is balanced by the relatively relaxation at start of the next.<br />
<br />
People seem to be VASTLY more productive in a scrum system. Also, people feel more empowered. The system doesn't allow managers to pressure you into taking on more work than you can manage. The responsibility to make deadlines is entirely of your own making - so when things go wrong, you have nobody to blame but yourself. Of course, if you habitually quote high numbers of hours to do work then that's noticable from the ratio of planning poker points to hours estimated. It's no protection against you getting a crappy annual review! But it's hard to be a slacker when it's your peers who are seeing your estimates and sharing the pain when you fail.<br />
<br />
If you don't make the work by the end of the sprint, you have NOBODY to blame but yourself. It's a horrible feeling. People work extra hours just to avoid that happening...nobody forces them to crunch - they do it because they feel bad about making a promise and not meeting it. You said how long it would take you - you swore on a pile of post-it notes that your estimate was good - and you discussed it with everyone else. You could have chosen to do less. The pressure not to overrun is gigantic...and when you do overrun, you rapidly learn to make smaller estimates next time!<br />
<br />
NOBODY can derail a story once it's started - NOBODY can inject a new "Panic" story in mid-sprint. Life is calmer, more measured.<br />
<br />
== Agility == <br />
Despite that seeming-rigidity, the system is "AGILE" because managers can inject new stories and redirect the team at 2 to 4 weeks notice. They know that the team will become free to consider new stories at the end of the sprint. They know to the day when their new requirement will be met.<br />
<br />
They can plan ahead very accurately because they have the stories in the queue, marked by "difficulty" from the planning poker - and the stories that have been completed - along with their difficulty scores AND the actual number of man-hours the team took to complete them. They can use statistics to track the ratio between the difficulty number and the man-hours to get a pretty good idea of how long some major new "Epic" story/feature will take to become a reality. (They talk about "team momentum"). They can also note when the ratio of hours consumed to difficulty-estimated gets worse - that something is going wrong with the team - a morale issue maybe? Someone on the team not pulling their weight perhaps.<br />
<br />
Since each sprint is atomic - you (theoretically) have a releasable product at the end of each sprint cycle (although in practice, we generally insert a 2-week mini-sprint before each release - and in those sprints, the only stories we work are bug fixes).<br />
<br />
Releases always happen on-time - although they may not have all of the features ("stories") you wanted them to have.<br />
<br />
== Conclusion - Does It Work? ==<br />
I honestly believe in this system. Having worked this way in two companies, it's MAGICAL. Everyone loves it, we're happier, we get more work done, management are happy. It just works! People who come for job interviews often ask "Do you guys do scrum?" and they're very happy when you say "Yes!". Lots of people (myself included) would never consider going back to the bad old days.<br />
<br />
What I describe here is pretty much the standard flavor of scrum...but there are other variations.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=An_Engineer%27s_guide_to_Scrum&diff=2072An Engineer's guide to Scrum2014-04-02T13:12:46Z<p>SteveBaker: /* The Burn Down Chart */</p>
<hr />
<div>'''Agile development''', or '''Scrum''' is a management technique that's become very popular in software companies...especially game software companies.<br />
<br />
== Teams and Sprints ==<br />
The company is split into teams of between maybe 4 and perhaps at most 10 people. Life proceeds in "Sprints" of between 2 and 4 weeks - longer when you're in long-term development cycles, shorter when you approach a deliverable. People may move from one team to another from sprint to the next - but generally, we try not to do that too much. A sprint is a self-contained event - we take in "Stories" at the beginning, we finish them and produce releasable, essentially bug-free, working code at the end.<br />
<br />
Each sprint has a pattern - with some ritualized meetings.<br />
<br />
== Stories ==<br />
Everything starts with the "Stake holders" (marketing people, senior managers, product managers) writing "Stories" describing the things they want to be able to do with the product. These are kinda formulaic and are supposed to fit on a half sheet of paper:<br />
<br />
:As a user of WonderProduct2000, I need the ability for the spreadsheet component to bake bread.<br />
:SUCH THAT:<br />
:* The bread is light and fluffy.<br />
:* Spreadsheet processing is not degraded while baking.<br />
:* There is a pleasant "BING!" sound when it's done.<br />
:CONDITIONS OF SATISFACTION:<br />
:* Bread fluffy-ometer readings of 0.4 or above are obtained.<br />
:* Bread is not burned.<br />
:* BING! Sound makes small children yell "Mommy, mommy, can I have some?"<br />
:BONUS FEATURES:<br />
:* Bagles.<br />
<br />
Stories are supposed to describe desired results - they should never describe the method by which the result is to be achieved.<br />
<br />
Some stories are just investigation tasks - with conditions of satisfaction (COS) that include documentation - maybe a stand-up presentation and a sign-off from some committee or other. Most result in a concrete "thing" - code, documentation, art, audio. Something that can be demonstrated as meeting it's COS.<br />
<br />
Other stories are too big for the team to complete within one sprint - but it's a rule that those have to be broken down into smaller sub-stories. Stories are thus heirarchical in nature. "Epic" stories may embody the guiding principles for an entire multi-year development cycle, but the process of recursive sub-division must always result in stories that are one sprint or less in duration.<br />
<br />
Generally, the COS should be designed to be testable - preferably by the QA department and/or by a demonstration at the sprint retrospective meeting. A research story might end up with there being a document - and the COS might include "* Eric has read the final document and is happy with it."<br />
<br />
== Planning Monday ==<br />
(Which may in fact happen on the preceding Friday...)<br />
<br />
At the start of the sprint, the team and their immediate manager spend half a day going through the stories - some of which are new and urgent - some are old and dusty (the "Product backlog"). We discuss how we're going to implement each new one and briefly ensure that nothing has changed about the old ones (maybe they've become moot - or need to be rewritten in some way) - and for each new or revised one, we estimate the complexity of the chosen approach. <br />
<br />
In small or skill-diverse teams, the person who will be working on the job can do a complexity estimation directly in man-hours. This is emphatically NOT a managerial role. When the engineer says "this is a 16 man-hour job" - they are effectively entering a promise to complete the work in that amount of time.<br />
<br />
Larger, more skill-uniform teams use "Planning Poker" (I kid you not!). We have a hand of special "planning poker" playing cards for each engineer (they have goats on them!) - they are marked with numbers in the corners. The numbers are in units of "difficulty" - which is an abstract quantity that doesn't relate to "effort" or "man-hours" (well, not directly). We have a handful of old "benchmark" stories that we can compare to. We have a gut feel for what is a 10 point story, what is a 3 pointer and so on.<br />
<br />
Each person with the skill-set to work on the story places a card face-down on the table representing his/her estimate for the difficulty of the task and on the count of three we all show our estimates. If everyone more or less agrees - we write that estimate into the story and move quickly along to the next one. If we don't agree then the highest and lowest outliers explain why they disagree with the majority...and we play another round of cards. Pretty soon we more or less agree. If someone digs their heels in for a low-ball number - then they can expect to be doing the work! But generally, the resulting estimate should be such that all of the people involved would feel happy to pick up the task and complete it at that estimate.<br />
<br />
Repeat until all new stories are scored. Stories carried over from previous sprints may need to be re-visited if conditions surrounding their implementation has changed. But by the end, we have good estimates for all of the stories. Big stories that will need to be broken down later will have more approximate estimates - but those can be updated as their component stories emerge and can be accurately estimated.<br />
<br />
Now, management can put together the estimates and pick a selection of high priority ones that should be worked on this sprint. Engineers then take these stories and break them down into individual "tasks" - atoms of work - generally between 4 and 16 hours each. These are written on yellow post-it notes in fat black "sharpie" pens to guarantee that the task can be described in just a few words...with the hourly estimate written in the bottom-right corner.<br />
<br />
This discipline of breaking into bite sized chunks seems to help with estimating. Using a black sharpie and a post-it note ensures that we have bite-sized descriptions.<br />
<br />
Now, after lunch, usually, we take another look at the total workload for the sprint - we may adjust the hours, split some tasks up into sub-stories. If, after detailed estimation, we don't think we can get all of the stories done - then we take the lowest priority stories and transfer them onto pink post-its to indicate that these are "BONUS" tasks - or maybe bump the story out of the sprint altogether.<br />
<br />
If we think we can do more work than we estimated in poker, then we grab new stories and task them out onto pink BONUS post-its too.<br />
<br />
Nobody leaves the meeting until every one of the engineers agrees that the yellow tasks can and WILL be completed in the upcoming sprint. This is VITALLY important. If you agree - then you've made a personal commitment to finishing that story. If you don't agree - then even the lowliest engineer can force a story out of the sprint in the face of any amount of management insistence...it's a rule. If managers don't like that - then it's their job to modify the stories, maybe split a big story into smaller ones - maybe shift priorities, get more staff...the one thing they cannot do is to cajole an engineer into accepting a lower estimate...not EVER.<br />
<br />
We stick all of the yellow and pink post-its onto a whiteboard out in the corridor outside our office...someplace public, uncomfortable, and with no chairs! Planning monday is over.<br />
<br />
== The Scrum Board ==<br />
OK - to the "SCUM BOARD"!<br />
<br />
The Scrum board is laid out in several columns with boxes at the bottom marked "MOOT" and "BLOCKED".<br />
<br />
Different projects and different companies have different layouts: I've seen 5 columns: "PENDING", "IN PROGRESS", "IN CODE-REVIEW", "IN QA" and "COMPLETE" representing the life-cycle of a task. But "PENDING", "WORKING", "COMMITTED", "IN QA" and "COMPLETE" is another option...whatever works. Art projects will have different setups...maybe "MESH-COMPLETE", "TEXTURE COMPLETE", "ANIMATION RIGGED", etc. There should always be a "PENDING", a "COMPLETE" and one or two 'working' columns.<br />
<br />
Tasks start in PENDING and work their way across to COMPLETE over the life of the sprint. By the end of the sprint, every single yellow post it '''MUST''' be in the right-hand column. The only way out is for the task to be considered "MOOT" (we decided that this wasn't necessary in order to complete the story because we found an easier way) - or to be "BLOCKED" by some external issue that's beyond our control (my hard drive exploded, Fred who works in our other office didn't do what he promised - and we relied on that for our estimates).<br />
<br />
BLOCKED tasks are a monumental issue - it is the task of the 'Scrum Master' to find out why tasks are blocked and what can be done to unblock them. It is super-rare for a task to stay blocked past the end of the sprint.<br />
<br />
When stories don't make it into the final column, hard questions must be asked. Did someone get sick? Did the estimate prove to be wildly wrong...and why? Is there something wrong with our process? These bad stories must be carried over into the next sprint - but that's a failure of the team...it's not supposed to happen, and if it happens often, then management need to step in and figure out what's broken.<br />
<br />
Another thing is that the scrum board is "owned" by the team. If one story isn't making it - the people who aren't working on it should be asking themselves if they have the time/ability to help out the engineer who's struggling. The TEAM is responsible for pushing the stories over the line - and if one person isn't getting things done, they'll notice and peer-pressure should kick in.<br />
<br />
== The Scrum Master ==<br />
The scrum master shouldn't be a managment position - it's generally a part-time job and it doesn't come with ANY authority. It's purely an administrative job.<br />
<br />
Some teams have their lead engineer do the job - or maybe even a QA guy - for a while we took it in turns to be scrum master with a different person taking the job each sprint. Some companies actually employ someone specifically to do this job.<br />
<br />
== Scrum ==<br />
Now, at a fixed time - typically early each morning - all of the engineers on the team and their "Scrum Master" (and anyone else who cares to come along to listen) meets up at the scrum board. The engineers are called "Pigs" and the other people "Chickens". There is an old joke that explains these names (When you have ham and eggs for breakfast, the chicken is involved but the pig is committed!). If you are late by even a second for the kick-off - it costs you a dollar. People who are working from home or at remote locations can attend the session via Skype or Google hangouts or something...but if they have connection problems, broken camera/mike...it's gonna cost them a buck.<br />
<br />
The scrum has rules. Only pigs are allowed to speak - chickens keep quiet unless asked to contribute (which is rare). The scrum is FAST - 10 minutes is too long...hence doing it out in the corridor - with no chairs!<br />
<br />
Each pig takes a turn to stand up in front of the board, '''briefly''' explain what they did during the previous day - cross off hours from the post-it notes on to show how much work they estimate is left to do on the task(s) they worked on. That number can go up or down or stay the same...it's an estimate of what's left - not an indication of the number of hours you spent working on it...nobody cares about that!<br />
<br />
If there is less than 8 hours left on the current task - or if the task is finished, they pick another yellow post-it from the board and initial it to indicate that they have taken responsibility for doing it. In some larger/less-diverse teams (and especially in bug-fix sprints) people can grab any task they fancy - but in many cases, we put each person in charge of a complete story that they work from start to finish - and in small or skill-diverse teams, it is a brave person who picks up a task that lies outside of their skill area because they are still expected to complete it in the time allocated.<br />
<br />
When we run out of yellow (and blue!) post-its - we start in on the pink "BONUS" stories.<br />
<br />
When a task is done, the post-it moves on to the next column - so it gets peer-reviewed, QA'ed, Documented, whatever. At some point (depending on company policy) it crosses a line that requires it to be checked into the source repository. When it reaches the right-hand column, the code will have been checked in, tested, documented and it's done, completely, utterly '''DONE''' - with all of the COA's completed and checked for completeness!<br />
<br />
If you are BLOCKED for some reason, it is CRITICAL that you explain this at the scrum-board. If everyone agrees that you are stuck - you put the post-it into the BLOCKED box and find another one to work on. Scrum finishes with everyone discussing how to un-block the tasks in the BLOCKED box...this is very important.<br />
<br />
Some tasks are occasionally found to be MOOT - events have changed so that the story shouldn't be attempted - maybe it's not needed anymore - or maybe the completion of some other story caused it to get done as a side effect (eg, you delete a bunch of code that contained a bug that you no longer need to fix). These stories are moved to the MOOT box...which (in effect) means that they are COMPLETE.<br />
<br />
== The Burn Down Chart ==<br />
After scrum, the scrum-master writes down the number of hours that were crossed off and updates a "Burn Down" graph - we keep a spread-sheet, but some people just draw it on paper. The graph is taped to the scrum board so anyone wandering down the corridor can see at a glance whether the team is performing on target.<br />
<br />
At it's simplest, this graph has "DAYS" on the X axis and "HOURS" on the Y. There are two curves - one is a straight line that goes from (8 hours)*(sprint_length_in_days-2)*(number_of_engineers) on day #1 (day #0 was planning day) down to zero on the last day of the sprint - this is what we hope will happen. The other curve shows the total number of hours left in tasks that aren't in the FINISHED column on each day of the sprint - it shows what's actually happening! If the second curve is higher than the first one...everyone works harder...stays late! If we're a little below the first curve, we feel comfortable. If we're too far below the curve, management asks why we underestimated our tasks - but that doesn't give them license to drop new tasks onto the team in mid-sprint. That's a huge "No-no".<br />
<br />
== "Found" tasks ==<br />
If a "quick popup task" arrives mid-sprint (like a nasty bug or something) - we call it a "found task" - we estimate the hours and write it on a blue post-it note. The team has to make a snap decision to either agree to somehow fit it in with the other tasks - or to punt it off into the next sprint. If you're above the line on the burndown chart - you should probably punt it. If you're under the line, you can see if you have the capacity to add it to this sprint.<br />
<br />
Nobody other than the engineers is empowered to put a blue post-it onto the board. But once it's there - it has to make it down to the end with all the others...when the engineers make a commitment - they are expected to make it.<br />
<br />
== Mid-sprint ==<br />
If it's a long sprint, we might spend an hour in a "mid-sprint review" - where we identify any problems if we're "above the line" on the sprint. Maybe reshuffle some tasks between people if one person is behind and another ahead.<br />
<br />
== End of sprint ==<br />
At the end of the sprint - hopefully - all of the tasks are done, and with luck, we have some pink "BONUS" and blue "FOUND TASK" post-it's down there too.<br />
<br />
On the last day, we have two more meetings - one is spent convincing each other (and management) that we met the "CONDITIONS OF SATISFACTION" of the stories. This entails live demonstrations, display of screenshots, pointing to documentation on the Wiki...that kind of thing. There are cheers and applause when people stand up and explain what they did.<br />
<br />
We lock down the repository, make a release with the resulting code and branch the version control system ready to start again on the first Monday of the next sprint.<br />
<br />
The second meeting is "Sprint retrospective" where we ask (and answer) the three ritual questions: "What did we do right? What did we do wrong? What didn't we do?"...after a bad sprint, this is a long, painful meeting. After a good one, it's a lot of fun.<br />
<br />
We often have an end-of-sprint party...free food, etc. Sadly, the government frowned on us spending their money on beer - so we don't do that anymore! :-(<br />
<br />
== Other stuff ==<br />
That's the basics from an engineers' point of view. There is more to it than this though. Managers have "Epic" Stories...stories that are broken down into lesser stories. Engineers can also write stories - either simple ones describing a bug fix - larger ones describing things that we know we need to get done - but which are "invisible" to managers - even Epic ones if we have some major new idea to put forward.<br />
<br />
When there are lots of teams - and lots of scrums, the scrum-masters get together once a day and have a "Scrum of scrums" where they describe what their teams are doing, how it's going, what the cross-team blockers are, etc. Similarly, they have scrum-of-scrum planning, scrum-of-scrum sprint retrospectives, etc. In a giant company, there might even be scrum-of-scrum-of-scrum levels.<br />
<br />
== Isn't it a little...um...silly? ==<br />
<br />
The ritualized, post-it notes and sharpies, pigs and chickens, planning poker?! Sometimes the process seems a little crazy - but it works! It's like magic. The necessity of standing up in front of your team-mates and explaining what you did yesterday is a strong incentive not to goof-off. If you read email, surfed the web, ate junk food in the kitchen and talked to your buddies all day - then when you come to stand at the scrum board the next day and can only cross 2 hours off an 8 hour task...you really feel the pain...and you can see at a glance that you've got to pull it back by staying on-task.<br />
<br />
I get a real high from showing off my latest stuff at the end-of-sprint meeting.<br />
<br />
You get into the rhythm of sprint cycles - we mostly have 3 week sprints and the pressure towards the end is balanced by the relatively relaxation at start of the next.<br />
<br />
People seem to be VASTLY more productive in a scrum system. Also, people feel more empowered. The system doesn't allow managers to pressure you into taking on more work than you can manage. The responsibility to make deadlines is entirely of your own making - so when things go wrong, you have nobody to blame but yourself. Of course, if you habitually quote high numbers of hours to do work then that's noticable from the ratio of planning poker points to hours estimated. It's no protection against you getting a crappy annual review! But it's hard to be a slacker when it's your peers who are seeing your estimates and sharing the pain when you fail.<br />
<br />
If you don't make the work by the end of the sprint, you have NOBODY to blame but yourself. It's a horrible feeling. People work extra hours just to avoid that happening...nobody forces them to crunch - they do it because they feel bad about making a promise and not meeting it. You said how long it would take you - you swore on a pile of post-it notes that your estimate was good - and you discussed it with everyone else. You could have chosen to do less. The pressure not to overrun is gigantic...and when you do overrun, you rapidly learn to make smaller estimates next time!<br />
<br />
NOBODY can derail a story once it's started - NOBODY can inject a new "Panic" story in mid-sprint. Life is calmer, more measured.<br />
<br />
== Agility == <br />
Despite that seeming-rigidity, the system is "AGILE" because managers can inject new stories and redirect the team at 2 to 4 weeks notice. They know that the team will become free to consider new stories at the end of the sprint. They know to the day when their new requirement will be met.<br />
<br />
They can plan ahead very accurately because they have the stories in the queue, marked by "difficulty" from the planning poker - and the stories that have been completed - along with their difficulty scores AND the actual number of man-hours the team took to complete them. They can use statistics to track the ratio between the difficulty number and the man-hours to get a pretty good idea of how long some major new "Epic" story/feature will take to become a reality. (They talk about "team momentum"). They can also note when the ratio of hours consumed to difficulty-estimated gets worse - that something is going wrong with the team - a morale issue maybe? Someone on the team not pulling their weight perhaps.<br />
<br />
Since each sprint is atomic - you (theoretically) have a releasable product at the end of each sprint cycle (although in practice, we generally insert a 2-week mini-sprint before each release - and in those sprints, the only stories we work are bug fixes).<br />
<br />
Releases always happen on-time - although they may not have all of the features ("stories") you wanted them to have.<br />
<br />
== Conclusion - Does It Work? ==<br />
I honestly believe in this system. Having worked this way in two companies, it's MAGICAL. Everyone loves it, we're happier, we get more work done, management are happy. It just works! People who come for job interviews often ask "Do you guys do scrum?" and they're very happy when you say "Yes!". Lots of people (myself included) would never consider going back to the bad old days.<br />
<br />
What I describe here is pretty much the standard flavor of scrum...but there are other variations.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=An_Engineer%27s_guide_to_Scrum&diff=2071An Engineer's guide to Scrum2014-04-02T13:11:02Z<p>SteveBaker: /* Scrum */</p>
<hr />
<div>'''Agile development''', or '''Scrum''' is a management technique that's become very popular in software companies...especially game software companies.<br />
<br />
== Teams and Sprints ==<br />
The company is split into teams of between maybe 4 and perhaps at most 10 people. Life proceeds in "Sprints" of between 2 and 4 weeks - longer when you're in long-term development cycles, shorter when you approach a deliverable. People may move from one team to another from sprint to the next - but generally, we try not to do that too much. A sprint is a self-contained event - we take in "Stories" at the beginning, we finish them and produce releasable, essentially bug-free, working code at the end.<br />
<br />
Each sprint has a pattern - with some ritualized meetings.<br />
<br />
== Stories ==<br />
Everything starts with the "Stake holders" (marketing people, senior managers, product managers) writing "Stories" describing the things they want to be able to do with the product. These are kinda formulaic and are supposed to fit on a half sheet of paper:<br />
<br />
:As a user of WonderProduct2000, I need the ability for the spreadsheet component to bake bread.<br />
:SUCH THAT:<br />
:* The bread is light and fluffy.<br />
:* Spreadsheet processing is not degraded while baking.<br />
:* There is a pleasant "BING!" sound when it's done.<br />
:CONDITIONS OF SATISFACTION:<br />
:* Bread fluffy-ometer readings of 0.4 or above are obtained.<br />
:* Bread is not burned.<br />
:* BING! Sound makes small children yell "Mommy, mommy, can I have some?"<br />
:BONUS FEATURES:<br />
:* Bagles.<br />
<br />
Stories are supposed to describe desired results - they should never describe the method by which the result is to be achieved.<br />
<br />
Some stories are just investigation tasks - with conditions of satisfaction (COS) that include documentation - maybe a stand-up presentation and a sign-off from some committee or other. Most result in a concrete "thing" - code, documentation, art, audio. Something that can be demonstrated as meeting it's COS.<br />
<br />
Other stories are too big for the team to complete within one sprint - but it's a rule that those have to be broken down into smaller sub-stories. Stories are thus heirarchical in nature. "Epic" stories may embody the guiding principles for an entire multi-year development cycle, but the process of recursive sub-division must always result in stories that are one sprint or less in duration.<br />
<br />
Generally, the COS should be designed to be testable - preferably by the QA department and/or by a demonstration at the sprint retrospective meeting. A research story might end up with there being a document - and the COS might include "* Eric has read the final document and is happy with it."<br />
<br />
== Planning Monday ==<br />
(Which may in fact happen on the preceding Friday...)<br />
<br />
At the start of the sprint, the team and their immediate manager spend half a day going through the stories - some of which are new and urgent - some are old and dusty (the "Product backlog"). We discuss how we're going to implement each new one and briefly ensure that nothing has changed about the old ones (maybe they've become moot - or need to be rewritten in some way) - and for each new or revised one, we estimate the complexity of the chosen approach. <br />
<br />
In small or skill-diverse teams, the person who will be working on the job can do a complexity estimation directly in man-hours. This is emphatically NOT a managerial role. When the engineer says "this is a 16 man-hour job" - they are effectively entering a promise to complete the work in that amount of time.<br />
<br />
Larger, more skill-uniform teams use "Planning Poker" (I kid you not!). We have a hand of special "planning poker" playing cards for each engineer (they have goats on them!) - they are marked with numbers in the corners. The numbers are in units of "difficulty" - which is an abstract quantity that doesn't relate to "effort" or "man-hours" (well, not directly). We have a handful of old "benchmark" stories that we can compare to. We have a gut feel for what is a 10 point story, what is a 3 pointer and so on.<br />
<br />
Each person with the skill-set to work on the story places a card face-down on the table representing his/her estimate for the difficulty of the task and on the count of three we all show our estimates. If everyone more or less agrees - we write that estimate into the story and move quickly along to the next one. If we don't agree then the highest and lowest outliers explain why they disagree with the majority...and we play another round of cards. Pretty soon we more or less agree. If someone digs their heels in for a low-ball number - then they can expect to be doing the work! But generally, the resulting estimate should be such that all of the people involved would feel happy to pick up the task and complete it at that estimate.<br />
<br />
Repeat until all new stories are scored. Stories carried over from previous sprints may need to be re-visited if conditions surrounding their implementation has changed. But by the end, we have good estimates for all of the stories. Big stories that will need to be broken down later will have more approximate estimates - but those can be updated as their component stories emerge and can be accurately estimated.<br />
<br />
Now, management can put together the estimates and pick a selection of high priority ones that should be worked on this sprint. Engineers then take these stories and break them down into individual "tasks" - atoms of work - generally between 4 and 16 hours each. These are written on yellow post-it notes in fat black "sharpie" pens to guarantee that the task can be described in just a few words...with the hourly estimate written in the bottom-right corner.<br />
<br />
This discipline of breaking into bite sized chunks seems to help with estimating. Using a black sharpie and a post-it note ensures that we have bite-sized descriptions.<br />
<br />
Now, after lunch, usually, we take another look at the total workload for the sprint - we may adjust the hours, split some tasks up into sub-stories. If, after detailed estimation, we don't think we can get all of the stories done - then we take the lowest priority stories and transfer them onto pink post-its to indicate that these are "BONUS" tasks - or maybe bump the story out of the sprint altogether.<br />
<br />
If we think we can do more work than we estimated in poker, then we grab new stories and task them out onto pink BONUS post-its too.<br />
<br />
Nobody leaves the meeting until every one of the engineers agrees that the yellow tasks can and WILL be completed in the upcoming sprint. This is VITALLY important. If you agree - then you've made a personal commitment to finishing that story. If you don't agree - then even the lowliest engineer can force a story out of the sprint in the face of any amount of management insistence...it's a rule. If managers don't like that - then it's their job to modify the stories, maybe split a big story into smaller ones - maybe shift priorities, get more staff...the one thing they cannot do is to cajole an engineer into accepting a lower estimate...not EVER.<br />
<br />
We stick all of the yellow and pink post-its onto a whiteboard out in the corridor outside our office...someplace public, uncomfortable, and with no chairs! Planning monday is over.<br />
<br />
== The Scrum Board ==<br />
OK - to the "SCUM BOARD"!<br />
<br />
The Scrum board is laid out in several columns with boxes at the bottom marked "MOOT" and "BLOCKED".<br />
<br />
Different projects and different companies have different layouts: I've seen 5 columns: "PENDING", "IN PROGRESS", "IN CODE-REVIEW", "IN QA" and "COMPLETE" representing the life-cycle of a task. But "PENDING", "WORKING", "COMMITTED", "IN QA" and "COMPLETE" is another option...whatever works. Art projects will have different setups...maybe "MESH-COMPLETE", "TEXTURE COMPLETE", "ANIMATION RIGGED", etc. There should always be a "PENDING", a "COMPLETE" and one or two 'working' columns.<br />
<br />
Tasks start in PENDING and work their way across to COMPLETE over the life of the sprint. By the end of the sprint, every single yellow post it '''MUST''' be in the right-hand column. The only way out is for the task to be considered "MOOT" (we decided that this wasn't necessary in order to complete the story because we found an easier way) - or to be "BLOCKED" by some external issue that's beyond our control (my hard drive exploded, Fred who works in our other office didn't do what he promised - and we relied on that for our estimates).<br />
<br />
BLOCKED tasks are a monumental issue - it is the task of the 'Scrum Master' to find out why tasks are blocked and what can be done to unblock them. It is super-rare for a task to stay blocked past the end of the sprint.<br />
<br />
When stories don't make it into the final column, hard questions must be asked. Did someone get sick? Did the estimate prove to be wildly wrong...and why? Is there something wrong with our process? These bad stories must be carried over into the next sprint - but that's a failure of the team...it's not supposed to happen, and if it happens often, then management need to step in and figure out what's broken.<br />
<br />
Another thing is that the scrum board is "owned" by the team. If one story isn't making it - the people who aren't working on it should be asking themselves if they have the time/ability to help out the engineer who's struggling. The TEAM is responsible for pushing the stories over the line - and if one person isn't getting things done, they'll notice and peer-pressure should kick in.<br />
<br />
== The Scrum Master ==<br />
The scrum master shouldn't be a managment position - it's generally a part-time job and it doesn't come with ANY authority. It's purely an administrative job.<br />
<br />
Some teams have their lead engineer do the job - or maybe even a QA guy - for a while we took it in turns to be scrum master with a different person taking the job each sprint. Some companies actually employ someone specifically to do this job.<br />
<br />
== Scrum ==<br />
Now, at a fixed time - typically early each morning - all of the engineers on the team and their "Scrum Master" (and anyone else who cares to come along to listen) meets up at the scrum board. The engineers are called "Pigs" and the other people "Chickens". There is an old joke that explains these names (When you have ham and eggs for breakfast, the chicken is involved but the pig is committed!). If you are late by even a second for the kick-off - it costs you a dollar. People who are working from home or at remote locations can attend the session via Skype or Google hangouts or something...but if they have connection problems, broken camera/mike...it's gonna cost them a buck.<br />
<br />
The scrum has rules. Only pigs are allowed to speak - chickens keep quiet unless asked to contribute (which is rare). The scrum is FAST - 10 minutes is too long...hence doing it out in the corridor - with no chairs!<br />
<br />
Each pig takes a turn to stand up in front of the board, '''briefly''' explain what they did during the previous day - cross off hours from the post-it notes on to show how much work they estimate is left to do on the task(s) they worked on. That number can go up or down or stay the same...it's an estimate of what's left - not an indication of the number of hours you spent working on it...nobody cares about that!<br />
<br />
If there is less than 8 hours left on the current task - or if the task is finished, they pick another yellow post-it from the board and initial it to indicate that they have taken responsibility for doing it. In some larger/less-diverse teams (and especially in bug-fix sprints) people can grab any task they fancy - but in many cases, we put each person in charge of a complete story that they work from start to finish - and in small or skill-diverse teams, it is a brave person who picks up a task that lies outside of their skill area because they are still expected to complete it in the time allocated.<br />
<br />
When we run out of yellow (and blue!) post-its - we start in on the pink "BONUS" stories.<br />
<br />
When a task is done, the post-it moves on to the next column - so it gets peer-reviewed, QA'ed, Documented, whatever. At some point (depending on company policy) it crosses a line that requires it to be checked into the source repository. When it reaches the right-hand column, the code will have been checked in, tested, documented and it's done, completely, utterly '''DONE''' - with all of the COA's completed and checked for completeness!<br />
<br />
If you are BLOCKED for some reason, it is CRITICAL that you explain this at the scrum-board. If everyone agrees that you are stuck - you put the post-it into the BLOCKED box and find another one to work on. Scrum finishes with everyone discussing how to un-block the tasks in the BLOCKED box...this is very important.<br />
<br />
Some tasks are occasionally found to be MOOT - events have changed so that the story shouldn't be attempted - maybe it's not needed anymore - or maybe the completion of some other story caused it to get done as a side effect (eg, you delete a bunch of code that contained a bug that you no longer need to fix). These stories are moved to the MOOT box...which (in effect) means that they are COMPLETE.<br />
<br />
== The Burn Down Chart ==<br />
After scrum, the scrum-master writes down the number of hours that were crossed off and updates a "Burn Down" graph - we keep a spread-sheet, but some people just draw it on paper. The graph is taped to the scrum board so anyone wandering down the corridor can see at a glance whether the team is performing on target.<br />
<br />
At it's simplest, this graph has "DAYS" on the X axis and "HOURS" on the Y. There are two curves - one is a straight line that goes from (8 hours)*(sprint_length_in_days-2)*(number_of_engineers) on day #1 (day #0 was planning day) down to zero on the last day of the sprint - this is what we hope will happen. The other curve shows the total number of hours left in tasks that aren't in the FINISHED column on each day of the sprint - it shows what's actually happening! If the second curve is higher than the first one...everyone works harder...stays late! If we're a little below the first curve, we feel comfortable. If we're too far below the curve, management ask why we underestimated our tasks!<br />
<br />
== "Found" tasks ==<br />
If a "quick popup task" arrives mid-sprint (like a nasty bug or something) - we call it a "found task" - we estimate the hours and write it on a blue post-it note. The team has to make a snap decision to either agree to somehow fit it in with the other tasks - or to punt it off into the next sprint. If you're above the line on the burndown chart - you should probably punt it. If you're under the line, you can see if you have the capacity to add it to this sprint.<br />
<br />
Nobody other than the engineers is empowered to put a blue post-it onto the board. But once it's there - it has to make it down to the end with all the others...when the engineers make a commitment - they are expected to make it.<br />
<br />
== Mid-sprint ==<br />
If it's a long sprint, we might spend an hour in a "mid-sprint review" - where we identify any problems if we're "above the line" on the sprint. Maybe reshuffle some tasks between people if one person is behind and another ahead.<br />
<br />
== End of sprint ==<br />
At the end of the sprint - hopefully - all of the tasks are done, and with luck, we have some pink "BONUS" and blue "FOUND TASK" post-it's down there too.<br />
<br />
On the last day, we have two more meetings - one is spent convincing each other (and management) that we met the "CONDITIONS OF SATISFACTION" of the stories. This entails live demonstrations, display of screenshots, pointing to documentation on the Wiki...that kind of thing. There are cheers and applause when people stand up and explain what they did.<br />
<br />
We lock down the repository, make a release with the resulting code and branch the version control system ready to start again on the first Monday of the next sprint.<br />
<br />
The second meeting is "Sprint retrospective" where we ask (and answer) the three ritual questions: "What did we do right? What did we do wrong? What didn't we do?"...after a bad sprint, this is a long, painful meeting. After a good one, it's a lot of fun.<br />
<br />
We often have an end-of-sprint party...free food, etc. Sadly, the government frowned on us spending their money on beer - so we don't do that anymore! :-(<br />
<br />
== Other stuff ==<br />
That's the basics from an engineers' point of view. There is more to it than this though. Managers have "Epic" Stories...stories that are broken down into lesser stories. Engineers can also write stories - either simple ones describing a bug fix - larger ones describing things that we know we need to get done - but which are "invisible" to managers - even Epic ones if we have some major new idea to put forward.<br />
<br />
When there are lots of teams - and lots of scrums, the scrum-masters get together once a day and have a "Scrum of scrums" where they describe what their teams are doing, how it's going, what the cross-team blockers are, etc. Similarly, they have scrum-of-scrum planning, scrum-of-scrum sprint retrospectives, etc. In a giant company, there might even be scrum-of-scrum-of-scrum levels.<br />
<br />
== Isn't it a little...um...silly? ==<br />
<br />
The ritualized, post-it notes and sharpies, pigs and chickens, planning poker?! Sometimes the process seems a little crazy - but it works! It's like magic. The necessity of standing up in front of your team-mates and explaining what you did yesterday is a strong incentive not to goof-off. If you read email, surfed the web, ate junk food in the kitchen and talked to your buddies all day - then when you come to stand at the scrum board the next day and can only cross 2 hours off an 8 hour task...you really feel the pain...and you can see at a glance that you've got to pull it back by staying on-task.<br />
<br />
I get a real high from showing off my latest stuff at the end-of-sprint meeting.<br />
<br />
You get into the rhythm of sprint cycles - we mostly have 3 week sprints and the pressure towards the end is balanced by the relatively relaxation at start of the next.<br />
<br />
People seem to be VASTLY more productive in a scrum system. Also, people feel more empowered. The system doesn't allow managers to pressure you into taking on more work than you can manage. The responsibility to make deadlines is entirely of your own making - so when things go wrong, you have nobody to blame but yourself. Of course, if you habitually quote high numbers of hours to do work then that's noticable from the ratio of planning poker points to hours estimated. It's no protection against you getting a crappy annual review! But it's hard to be a slacker when it's your peers who are seeing your estimates and sharing the pain when you fail.<br />
<br />
If you don't make the work by the end of the sprint, you have NOBODY to blame but yourself. It's a horrible feeling. People work extra hours just to avoid that happening...nobody forces them to crunch - they do it because they feel bad about making a promise and not meeting it. You said how long it would take you - you swore on a pile of post-it notes that your estimate was good - and you discussed it with everyone else. You could have chosen to do less. The pressure not to overrun is gigantic...and when you do overrun, you rapidly learn to make smaller estimates next time!<br />
<br />
NOBODY can derail a story once it's started - NOBODY can inject a new "Panic" story in mid-sprint. Life is calmer, more measured.<br />
<br />
== Agility == <br />
Despite that seeming-rigidity, the system is "AGILE" because managers can inject new stories and redirect the team at 2 to 4 weeks notice. They know that the team will become free to consider new stories at the end of the sprint. They know to the day when their new requirement will be met.<br />
<br />
They can plan ahead very accurately because they have the stories in the queue, marked by "difficulty" from the planning poker - and the stories that have been completed - along with their difficulty scores AND the actual number of man-hours the team took to complete them. They can use statistics to track the ratio between the difficulty number and the man-hours to get a pretty good idea of how long some major new "Epic" story/feature will take to become a reality. (They talk about "team momentum"). They can also note when the ratio of hours consumed to difficulty-estimated gets worse - that something is going wrong with the team - a morale issue maybe? Someone on the team not pulling their weight perhaps.<br />
<br />
Since each sprint is atomic - you (theoretically) have a releasable product at the end of each sprint cycle (although in practice, we generally insert a 2-week mini-sprint before each release - and in those sprints, the only stories we work are bug fixes).<br />
<br />
Releases always happen on-time - although they may not have all of the features ("stories") you wanted them to have.<br />
<br />
== Conclusion - Does It Work? ==<br />
I honestly believe in this system. Having worked this way in two companies, it's MAGICAL. Everyone loves it, we're happier, we get more work done, management are happy. It just works! People who come for job interviews often ask "Do you guys do scrum?" and they're very happy when you say "Yes!". Lots of people (myself included) would never consider going back to the bad old days.<br />
<br />
What I describe here is pretty much the standard flavor of scrum...but there are other variations.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=An_Engineer%27s_guide_to_Scrum&diff=2070An Engineer's guide to Scrum2014-04-02T12:59:56Z<p>SteveBaker: /* The Scrum Master */</p>
<hr />
<div>'''Agile development''', or '''Scrum''' is a management technique that's become very popular in software companies...especially game software companies.<br />
<br />
== Teams and Sprints ==<br />
The company is split into teams of between maybe 4 and perhaps at most 10 people. Life proceeds in "Sprints" of between 2 and 4 weeks - longer when you're in long-term development cycles, shorter when you approach a deliverable. People may move from one team to another from sprint to the next - but generally, we try not to do that too much. A sprint is a self-contained event - we take in "Stories" at the beginning, we finish them and produce releasable, essentially bug-free, working code at the end.<br />
<br />
Each sprint has a pattern - with some ritualized meetings.<br />
<br />
== Stories ==<br />
Everything starts with the "Stake holders" (marketing people, senior managers, product managers) writing "Stories" describing the things they want to be able to do with the product. These are kinda formulaic and are supposed to fit on a half sheet of paper:<br />
<br />
:As a user of WonderProduct2000, I need the ability for the spreadsheet component to bake bread.<br />
:SUCH THAT:<br />
:* The bread is light and fluffy.<br />
:* Spreadsheet processing is not degraded while baking.<br />
:* There is a pleasant "BING!" sound when it's done.<br />
:CONDITIONS OF SATISFACTION:<br />
:* Bread fluffy-ometer readings of 0.4 or above are obtained.<br />
:* Bread is not burned.<br />
:* BING! Sound makes small children yell "Mommy, mommy, can I have some?"<br />
:BONUS FEATURES:<br />
:* Bagles.<br />
<br />
Stories are supposed to describe desired results - they should never describe the method by which the result is to be achieved.<br />
<br />
Some stories are just investigation tasks - with conditions of satisfaction (COS) that include documentation - maybe a stand-up presentation and a sign-off from some committee or other. Most result in a concrete "thing" - code, documentation, art, audio. Something that can be demonstrated as meeting it's COS.<br />
<br />
Other stories are too big for the team to complete within one sprint - but it's a rule that those have to be broken down into smaller sub-stories. Stories are thus heirarchical in nature. "Epic" stories may embody the guiding principles for an entire multi-year development cycle, but the process of recursive sub-division must always result in stories that are one sprint or less in duration.<br />
<br />
Generally, the COS should be designed to be testable - preferably by the QA department and/or by a demonstration at the sprint retrospective meeting. A research story might end up with there being a document - and the COS might include "* Eric has read the final document and is happy with it."<br />
<br />
== Planning Monday ==<br />
(Which may in fact happen on the preceding Friday...)<br />
<br />
At the start of the sprint, the team and their immediate manager spend half a day going through the stories - some of which are new and urgent - some are old and dusty (the "Product backlog"). We discuss how we're going to implement each new one and briefly ensure that nothing has changed about the old ones (maybe they've become moot - or need to be rewritten in some way) - and for each new or revised one, we estimate the complexity of the chosen approach. <br />
<br />
In small or skill-diverse teams, the person who will be working on the job can do a complexity estimation directly in man-hours. This is emphatically NOT a managerial role. When the engineer says "this is a 16 man-hour job" - they are effectively entering a promise to complete the work in that amount of time.<br />
<br />
Larger, more skill-uniform teams use "Planning Poker" (I kid you not!). We have a hand of special "planning poker" playing cards for each engineer (they have goats on them!) - they are marked with numbers in the corners. The numbers are in units of "difficulty" - which is an abstract quantity that doesn't relate to "effort" or "man-hours" (well, not directly). We have a handful of old "benchmark" stories that we can compare to. We have a gut feel for what is a 10 point story, what is a 3 pointer and so on.<br />
<br />
Each person with the skill-set to work on the story places a card face-down on the table representing his/her estimate for the difficulty of the task and on the count of three we all show our estimates. If everyone more or less agrees - we write that estimate into the story and move quickly along to the next one. If we don't agree then the highest and lowest outliers explain why they disagree with the majority...and we play another round of cards. Pretty soon we more or less agree. If someone digs their heels in for a low-ball number - then they can expect to be doing the work! But generally, the resulting estimate should be such that all of the people involved would feel happy to pick up the task and complete it at that estimate.<br />
<br />
Repeat until all new stories are scored. Stories carried over from previous sprints may need to be re-visited if conditions surrounding their implementation has changed. But by the end, we have good estimates for all of the stories. Big stories that will need to be broken down later will have more approximate estimates - but those can be updated as their component stories emerge and can be accurately estimated.<br />
<br />
Now, management can put together the estimates and pick a selection of high priority ones that should be worked on this sprint. Engineers then take these stories and break them down into individual "tasks" - atoms of work - generally between 4 and 16 hours each. These are written on yellow post-it notes in fat black "sharpie" pens to guarantee that the task can be described in just a few words...with the hourly estimate written in the bottom-right corner.<br />
<br />
This discipline of breaking into bite sized chunks seems to help with estimating. Using a black sharpie and a post-it note ensures that we have bite-sized descriptions.<br />
<br />
Now, after lunch, usually, we take another look at the total workload for the sprint - we may adjust the hours, split some tasks up into sub-stories. If, after detailed estimation, we don't think we can get all of the stories done - then we take the lowest priority stories and transfer them onto pink post-its to indicate that these are "BONUS" tasks - or maybe bump the story out of the sprint altogether.<br />
<br />
If we think we can do more work than we estimated in poker, then we grab new stories and task them out onto pink BONUS post-its too.<br />
<br />
Nobody leaves the meeting until every one of the engineers agrees that the yellow tasks can and WILL be completed in the upcoming sprint. This is VITALLY important. If you agree - then you've made a personal commitment to finishing that story. If you don't agree - then even the lowliest engineer can force a story out of the sprint in the face of any amount of management insistence...it's a rule. If managers don't like that - then it's their job to modify the stories, maybe split a big story into smaller ones - maybe shift priorities, get more staff...the one thing they cannot do is to cajole an engineer into accepting a lower estimate...not EVER.<br />
<br />
We stick all of the yellow and pink post-its onto a whiteboard out in the corridor outside our office...someplace public, uncomfortable, and with no chairs! Planning monday is over.<br />
<br />
== The Scrum Board ==<br />
OK - to the "SCUM BOARD"!<br />
<br />
The Scrum board is laid out in several columns with boxes at the bottom marked "MOOT" and "BLOCKED".<br />
<br />
Different projects and different companies have different layouts: I've seen 5 columns: "PENDING", "IN PROGRESS", "IN CODE-REVIEW", "IN QA" and "COMPLETE" representing the life-cycle of a task. But "PENDING", "WORKING", "COMMITTED", "IN QA" and "COMPLETE" is another option...whatever works. Art projects will have different setups...maybe "MESH-COMPLETE", "TEXTURE COMPLETE", "ANIMATION RIGGED", etc. There should always be a "PENDING", a "COMPLETE" and one or two 'working' columns.<br />
<br />
Tasks start in PENDING and work their way across to COMPLETE over the life of the sprint. By the end of the sprint, every single yellow post it '''MUST''' be in the right-hand column. The only way out is for the task to be considered "MOOT" (we decided that this wasn't necessary in order to complete the story because we found an easier way) - or to be "BLOCKED" by some external issue that's beyond our control (my hard drive exploded, Fred who works in our other office didn't do what he promised - and we relied on that for our estimates).<br />
<br />
BLOCKED tasks are a monumental issue - it is the task of the 'Scrum Master' to find out why tasks are blocked and what can be done to unblock them. It is super-rare for a task to stay blocked past the end of the sprint.<br />
<br />
When stories don't make it into the final column, hard questions must be asked. Did someone get sick? Did the estimate prove to be wildly wrong...and why? Is there something wrong with our process? These bad stories must be carried over into the next sprint - but that's a failure of the team...it's not supposed to happen, and if it happens often, then management need to step in and figure out what's broken.<br />
<br />
Another thing is that the scrum board is "owned" by the team. If one story isn't making it - the people who aren't working on it should be asking themselves if they have the time/ability to help out the engineer who's struggling. The TEAM is responsible for pushing the stories over the line - and if one person isn't getting things done, they'll notice and peer-pressure should kick in.<br />
<br />
== The Scrum Master ==<br />
The scrum master shouldn't be a managment position - it's generally a part-time job and it doesn't come with ANY authority. It's purely an administrative job.<br />
<br />
Some teams have their lead engineer do the job - or maybe even a QA guy - for a while we took it in turns to be scrum master with a different person taking the job each sprint. Some companies actually employ someone specifically to do this job.<br />
<br />
== Scrum ==<br />
Now, at a fixed time - typically early each morning - all of the engineers on the team and their "Scrum Master" (and anyone else who cares to come along to listen) meets up at the scrum board. The engineers are called "Pigs" and the other people "Chickens". There is an old joke that explains these names (When you have ham and eggs for breakfast, the chicken is involved but the pig is committed!). If you are late by even a second for the kick-off - it costs you a dollar.<br />
<br />
The scrum has rules. Only pigs are allowed to speak - chickens keep quiet unless asked to contribute (which is rare). The scrum is FAST - 10 minutes is too long...hence doing it out in the corridor - with no chairs!<br />
<br />
Each pig takes a turn to stand up in front of the board, '''briefly''' explain what they did during the previous day - cross off hours from the post-it notes on to show how much work they estimate is left to do on the task(s) they worked on. That number can go up or down or stay the same...it's an estimate of what's left - not an indication of the number of hours you spent on it.<br />
<br />
If there is less than 8 hours left on the current task - or if the task is finished, they pick another yellow post-it from the board and initial it to indicate that they have taken responsibility for doing it. In some teams (and especially in bug-fix sprints) people can grab any task they fancy - but in many cases, we put each person in charge of a complete story that they work from start to finish.<br />
<br />
When we run out of yellow (and blue!) post-its - we start in on the pink "BONUS" stories.<br />
<br />
When a task is done, the post-it moves on to the next column - so it gets peer-reviewed, QA'ed, Documented, whatever. At some point (depending on company policy) it crosses a line that requires it to be checked into the source repository. When it reaches the right-hand column, the code will have been checked in, tested, documented and it's done, completely, utterly '''DONE'''!<br />
<br />
If you are BLOCKED for some reason, it is CRITICAL that you explain this at the scrum-board. If everyone agrees that you are stuck - you put the post-it into the BLOCKED box and find another one to work on. Scrum finishes with everyone discussing how to un-block the tasks in the BLOCKED box...this is very important.<br />
<br />
== The Burn Down Chart ==<br />
After scrum, the scrum-master writes down the number of hours that were crossed off and updates a "Burn Down" graph - we keep a spread-sheet, but some people just draw it on paper. The graph is taped to the scrum board so anyone wandering down the corridor can see at a glance whether the team is performing on target.<br />
<br />
At it's simplest, this graph has "DAYS" on the X axis and "HOURS" on the Y. There are two curves - one is a straight line that goes from (8 hours)*(sprint_length_in_days-2)*(number_of_engineers) on day #1 (day #0 was planning day) down to zero on the last day of the sprint - this is what we hope will happen. The other curve shows the total number of hours left in tasks that aren't in the FINISHED column on each day of the sprint - it shows what's actually happening! If the second curve is higher than the first one...everyone works harder...stays late! If we're a little below the first curve, we feel comfortable. If we're too far below the curve, management ask why we underestimated our tasks!<br />
<br />
== "Found" tasks ==<br />
If a "quick popup task" arrives mid-sprint (like a nasty bug or something) - we call it a "found task" - we estimate the hours and write it on a blue post-it note. The team has to make a snap decision to either agree to somehow fit it in with the other tasks - or to punt it off into the next sprint. If you're above the line on the burndown chart - you should probably punt it. If you're under the line, you can see if you have the capacity to add it to this sprint.<br />
<br />
Nobody other than the engineers is empowered to put a blue post-it onto the board. But once it's there - it has to make it down to the end with all the others...when the engineers make a commitment - they are expected to make it.<br />
<br />
== Mid-sprint ==<br />
If it's a long sprint, we might spend an hour in a "mid-sprint review" - where we identify any problems if we're "above the line" on the sprint. Maybe reshuffle some tasks between people if one person is behind and another ahead.<br />
<br />
== End of sprint ==<br />
At the end of the sprint - hopefully - all of the tasks are done, and with luck, we have some pink "BONUS" and blue "FOUND TASK" post-it's down there too.<br />
<br />
On the last day, we have two more meetings - one is spent convincing each other (and management) that we met the "CONDITIONS OF SATISFACTION" of the stories. This entails live demonstrations, display of screenshots, pointing to documentation on the Wiki...that kind of thing. There are cheers and applause when people stand up and explain what they did.<br />
<br />
We lock down the repository, make a release with the resulting code and branch the version control system ready to start again on the first Monday of the next sprint.<br />
<br />
The second meeting is "Sprint retrospective" where we ask (and answer) the three ritual questions: "What did we do right? What did we do wrong? What didn't we do?"...after a bad sprint, this is a long, painful meeting. After a good one, it's a lot of fun.<br />
<br />
We often have an end-of-sprint party...free food, etc. Sadly, the government frowned on us spending their money on beer - so we don't do that anymore! :-(<br />
<br />
== Other stuff ==<br />
That's the basics from an engineers' point of view. There is more to it than this though. Managers have "Epic" Stories...stories that are broken down into lesser stories. Engineers can also write stories - either simple ones describing a bug fix - larger ones describing things that we know we need to get done - but which are "invisible" to managers - even Epic ones if we have some major new idea to put forward.<br />
<br />
When there are lots of teams - and lots of scrums, the scrum-masters get together once a day and have a "Scrum of scrums" where they describe what their teams are doing, how it's going, what the cross-team blockers are, etc. Similarly, they have scrum-of-scrum planning, scrum-of-scrum sprint retrospectives, etc. In a giant company, there might even be scrum-of-scrum-of-scrum levels.<br />
<br />
== Isn't it a little...um...silly? ==<br />
<br />
The ritualized, post-it notes and sharpies, pigs and chickens, planning poker?! Sometimes the process seems a little crazy - but it works! It's like magic. The necessity of standing up in front of your team-mates and explaining what you did yesterday is a strong incentive not to goof-off. If you read email, surfed the web, ate junk food in the kitchen and talked to your buddies all day - then when you come to stand at the scrum board the next day and can only cross 2 hours off an 8 hour task...you really feel the pain...and you can see at a glance that you've got to pull it back by staying on-task.<br />
<br />
I get a real high from showing off my latest stuff at the end-of-sprint meeting.<br />
<br />
You get into the rhythm of sprint cycles - we mostly have 3 week sprints and the pressure towards the end is balanced by the relatively relaxation at start of the next.<br />
<br />
People seem to be VASTLY more productive in a scrum system. Also, people feel more empowered. The system doesn't allow managers to pressure you into taking on more work than you can manage. The responsibility to make deadlines is entirely of your own making - so when things go wrong, you have nobody to blame but yourself. Of course, if you habitually quote high numbers of hours to do work then that's noticable from the ratio of planning poker points to hours estimated. It's no protection against you getting a crappy annual review! But it's hard to be a slacker when it's your peers who are seeing your estimates and sharing the pain when you fail.<br />
<br />
If you don't make the work by the end of the sprint, you have NOBODY to blame but yourself. It's a horrible feeling. People work extra hours just to avoid that happening...nobody forces them to crunch - they do it because they feel bad about making a promise and not meeting it. You said how long it would take you - you swore on a pile of post-it notes that your estimate was good - and you discussed it with everyone else. You could have chosen to do less. The pressure not to overrun is gigantic...and when you do overrun, you rapidly learn to make smaller estimates next time!<br />
<br />
NOBODY can derail a story once it's started - NOBODY can inject a new "Panic" story in mid-sprint. Life is calmer, more measured.<br />
<br />
== Agility == <br />
Despite that seeming-rigidity, the system is "AGILE" because managers can inject new stories and redirect the team at 2 to 4 weeks notice. They know that the team will become free to consider new stories at the end of the sprint. They know to the day when their new requirement will be met.<br />
<br />
They can plan ahead very accurately because they have the stories in the queue, marked by "difficulty" from the planning poker - and the stories that have been completed - along with their difficulty scores AND the actual number of man-hours the team took to complete them. They can use statistics to track the ratio between the difficulty number and the man-hours to get a pretty good idea of how long some major new "Epic" story/feature will take to become a reality. (They talk about "team momentum"). They can also note when the ratio of hours consumed to difficulty-estimated gets worse - that something is going wrong with the team - a morale issue maybe? Someone on the team not pulling their weight perhaps.<br />
<br />
Since each sprint is atomic - you (theoretically) have a releasable product at the end of each sprint cycle (although in practice, we generally insert a 2-week mini-sprint before each release - and in those sprints, the only stories we work are bug fixes).<br />
<br />
Releases always happen on-time - although they may not have all of the features ("stories") you wanted them to have.<br />
<br />
== Conclusion - Does It Work? ==<br />
I honestly believe in this system. Having worked this way in two companies, it's MAGICAL. Everyone loves it, we're happier, we get more work done, management are happy. It just works! People who come for job interviews often ask "Do you guys do scrum?" and they're very happy when you say "Yes!". Lots of people (myself included) would never consider going back to the bad old days.<br />
<br />
What I describe here is pretty much the standard flavor of scrum...but there are other variations.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=An_Engineer%27s_guide_to_Scrum&diff=2069An Engineer's guide to Scrum2014-04-02T12:58:55Z<p>SteveBaker: /* The Scrum Board */</p>
<hr />
<div>'''Agile development''', or '''Scrum''' is a management technique that's become very popular in software companies...especially game software companies.<br />
<br />
== Teams and Sprints ==<br />
The company is split into teams of between maybe 4 and perhaps at most 10 people. Life proceeds in "Sprints" of between 2 and 4 weeks - longer when you're in long-term development cycles, shorter when you approach a deliverable. People may move from one team to another from sprint to the next - but generally, we try not to do that too much. A sprint is a self-contained event - we take in "Stories" at the beginning, we finish them and produce releasable, essentially bug-free, working code at the end.<br />
<br />
Each sprint has a pattern - with some ritualized meetings.<br />
<br />
== Stories ==<br />
Everything starts with the "Stake holders" (marketing people, senior managers, product managers) writing "Stories" describing the things they want to be able to do with the product. These are kinda formulaic and are supposed to fit on a half sheet of paper:<br />
<br />
:As a user of WonderProduct2000, I need the ability for the spreadsheet component to bake bread.<br />
:SUCH THAT:<br />
:* The bread is light and fluffy.<br />
:* Spreadsheet processing is not degraded while baking.<br />
:* There is a pleasant "BING!" sound when it's done.<br />
:CONDITIONS OF SATISFACTION:<br />
:* Bread fluffy-ometer readings of 0.4 or above are obtained.<br />
:* Bread is not burned.<br />
:* BING! Sound makes small children yell "Mommy, mommy, can I have some?"<br />
:BONUS FEATURES:<br />
:* Bagles.<br />
<br />
Stories are supposed to describe desired results - they should never describe the method by which the result is to be achieved.<br />
<br />
Some stories are just investigation tasks - with conditions of satisfaction (COS) that include documentation - maybe a stand-up presentation and a sign-off from some committee or other. Most result in a concrete "thing" - code, documentation, art, audio. Something that can be demonstrated as meeting it's COS.<br />
<br />
Other stories are too big for the team to complete within one sprint - but it's a rule that those have to be broken down into smaller sub-stories. Stories are thus heirarchical in nature. "Epic" stories may embody the guiding principles for an entire multi-year development cycle, but the process of recursive sub-division must always result in stories that are one sprint or less in duration.<br />
<br />
Generally, the COS should be designed to be testable - preferably by the QA department and/or by a demonstration at the sprint retrospective meeting. A research story might end up with there being a document - and the COS might include "* Eric has read the final document and is happy with it."<br />
<br />
== Planning Monday ==<br />
(Which may in fact happen on the preceding Friday...)<br />
<br />
At the start of the sprint, the team and their immediate manager spend half a day going through the stories - some of which are new and urgent - some are old and dusty (the "Product backlog"). We discuss how we're going to implement each new one and briefly ensure that nothing has changed about the old ones (maybe they've become moot - or need to be rewritten in some way) - and for each new or revised one, we estimate the complexity of the chosen approach. <br />
<br />
In small or skill-diverse teams, the person who will be working on the job can do a complexity estimation directly in man-hours. This is emphatically NOT a managerial role. When the engineer says "this is a 16 man-hour job" - they are effectively entering a promise to complete the work in that amount of time.<br />
<br />
Larger, more skill-uniform teams use "Planning Poker" (I kid you not!). We have a hand of special "planning poker" playing cards for each engineer (they have goats on them!) - they are marked with numbers in the corners. The numbers are in units of "difficulty" - which is an abstract quantity that doesn't relate to "effort" or "man-hours" (well, not directly). We have a handful of old "benchmark" stories that we can compare to. We have a gut feel for what is a 10 point story, what is a 3 pointer and so on.<br />
<br />
Each person with the skill-set to work on the story places a card face-down on the table representing his/her estimate for the difficulty of the task and on the count of three we all show our estimates. If everyone more or less agrees - we write that estimate into the story and move quickly along to the next one. If we don't agree then the highest and lowest outliers explain why they disagree with the majority...and we play another round of cards. Pretty soon we more or less agree. If someone digs their heels in for a low-ball number - then they can expect to be doing the work! But generally, the resulting estimate should be such that all of the people involved would feel happy to pick up the task and complete it at that estimate.<br />
<br />
Repeat until all new stories are scored. Stories carried over from previous sprints may need to be re-visited if conditions surrounding their implementation has changed. But by the end, we have good estimates for all of the stories. Big stories that will need to be broken down later will have more approximate estimates - but those can be updated as their component stories emerge and can be accurately estimated.<br />
<br />
Now, management can put together the estimates and pick a selection of high priority ones that should be worked on this sprint. Engineers then take these stories and break them down into individual "tasks" - atoms of work - generally between 4 and 16 hours each. These are written on yellow post-it notes in fat black "sharpie" pens to guarantee that the task can be described in just a few words...with the hourly estimate written in the bottom-right corner.<br />
<br />
This discipline of breaking into bite sized chunks seems to help with estimating. Using a black sharpie and a post-it note ensures that we have bite-sized descriptions.<br />
<br />
Now, after lunch, usually, we take another look at the total workload for the sprint - we may adjust the hours, split some tasks up into sub-stories. If, after detailed estimation, we don't think we can get all of the stories done - then we take the lowest priority stories and transfer them onto pink post-its to indicate that these are "BONUS" tasks - or maybe bump the story out of the sprint altogether.<br />
<br />
If we think we can do more work than we estimated in poker, then we grab new stories and task them out onto pink BONUS post-its too.<br />
<br />
Nobody leaves the meeting until every one of the engineers agrees that the yellow tasks can and WILL be completed in the upcoming sprint. This is VITALLY important. If you agree - then you've made a personal commitment to finishing that story. If you don't agree - then even the lowliest engineer can force a story out of the sprint in the face of any amount of management insistence...it's a rule. If managers don't like that - then it's their job to modify the stories, maybe split a big story into smaller ones - maybe shift priorities, get more staff...the one thing they cannot do is to cajole an engineer into accepting a lower estimate...not EVER.<br />
<br />
We stick all of the yellow and pink post-its onto a whiteboard out in the corridor outside our office...someplace public, uncomfortable, and with no chairs! Planning monday is over.<br />
<br />
== The Scrum Board ==<br />
OK - to the "SCUM BOARD"!<br />
<br />
The Scrum board is laid out in several columns with boxes at the bottom marked "MOOT" and "BLOCKED".<br />
<br />
Different projects and different companies have different layouts: I've seen 5 columns: "PENDING", "IN PROGRESS", "IN CODE-REVIEW", "IN QA" and "COMPLETE" representing the life-cycle of a task. But "PENDING", "WORKING", "COMMITTED", "IN QA" and "COMPLETE" is another option...whatever works. Art projects will have different setups...maybe "MESH-COMPLETE", "TEXTURE COMPLETE", "ANIMATION RIGGED", etc. There should always be a "PENDING", a "COMPLETE" and one or two 'working' columns.<br />
<br />
Tasks start in PENDING and work their way across to COMPLETE over the life of the sprint. By the end of the sprint, every single yellow post it '''MUST''' be in the right-hand column. The only way out is for the task to be considered "MOOT" (we decided that this wasn't necessary in order to complete the story because we found an easier way) - or to be "BLOCKED" by some external issue that's beyond our control (my hard drive exploded, Fred who works in our other office didn't do what he promised - and we relied on that for our estimates).<br />
<br />
BLOCKED tasks are a monumental issue - it is the task of the 'Scrum Master' to find out why tasks are blocked and what can be done to unblock them. It is super-rare for a task to stay blocked past the end of the sprint.<br />
<br />
When stories don't make it into the final column, hard questions must be asked. Did someone get sick? Did the estimate prove to be wildly wrong...and why? Is there something wrong with our process? These bad stories must be carried over into the next sprint - but that's a failure of the team...it's not supposed to happen, and if it happens often, then management need to step in and figure out what's broken.<br />
<br />
Another thing is that the scrum board is "owned" by the team. If one story isn't making it - the people who aren't working on it should be asking themselves if they have the time/ability to help out the engineer who's struggling. The TEAM is responsible for pushing the stories over the line - and if one person isn't getting things done, they'll notice and peer-pressure should kick in.<br />
<br />
== The Scrum Master ==<br />
The scrum master shouldn't be a managment position - it's generally a part-time job and it doesn't come with ANY authority. It's purely an administrative job.<br />
<br />
Some temas have their lead engineer do the job - or maybe even a QA guy - for a while we took it in turns to be scrum master with a different person taking the job each sprint.<br />
<br />
== Scrum ==<br />
Now, at a fixed time - typically early each morning - all of the engineers on the team and their "Scrum Master" (and anyone else who cares to come along to listen) meets up at the scrum board. The engineers are called "Pigs" and the other people "Chickens". There is an old joke that explains these names (When you have ham and eggs for breakfast, the chicken is involved but the pig is committed!). If you are late by even a second for the kick-off - it costs you a dollar.<br />
<br />
The scrum has rules. Only pigs are allowed to speak - chickens keep quiet unless asked to contribute (which is rare). The scrum is FAST - 10 minutes is too long...hence doing it out in the corridor - with no chairs!<br />
<br />
Each pig takes a turn to stand up in front of the board, '''briefly''' explain what they did during the previous day - cross off hours from the post-it notes on to show how much work they estimate is left to do on the task(s) they worked on. That number can go up or down or stay the same...it's an estimate of what's left - not an indication of the number of hours you spent on it.<br />
<br />
If there is less than 8 hours left on the current task - or if the task is finished, they pick another yellow post-it from the board and initial it to indicate that they have taken responsibility for doing it. In some teams (and especially in bug-fix sprints) people can grab any task they fancy - but in many cases, we put each person in charge of a complete story that they work from start to finish.<br />
<br />
When we run out of yellow (and blue!) post-its - we start in on the pink "BONUS" stories.<br />
<br />
When a task is done, the post-it moves on to the next column - so it gets peer-reviewed, QA'ed, Documented, whatever. At some point (depending on company policy) it crosses a line that requires it to be checked into the source repository. When it reaches the right-hand column, the code will have been checked in, tested, documented and it's done, completely, utterly '''DONE'''!<br />
<br />
If you are BLOCKED for some reason, it is CRITICAL that you explain this at the scrum-board. If everyone agrees that you are stuck - you put the post-it into the BLOCKED box and find another one to work on. Scrum finishes with everyone discussing how to un-block the tasks in the BLOCKED box...this is very important.<br />
<br />
== The Burn Down Chart ==<br />
After scrum, the scrum-master writes down the number of hours that were crossed off and updates a "Burn Down" graph - we keep a spread-sheet, but some people just draw it on paper. The graph is taped to the scrum board so anyone wandering down the corridor can see at a glance whether the team is performing on target.<br />
<br />
At it's simplest, this graph has "DAYS" on the X axis and "HOURS" on the Y. There are two curves - one is a straight line that goes from (8 hours)*(sprint_length_in_days-2)*(number_of_engineers) on day #1 (day #0 was planning day) down to zero on the last day of the sprint - this is what we hope will happen. The other curve shows the total number of hours left in tasks that aren't in the FINISHED column on each day of the sprint - it shows what's actually happening! If the second curve is higher than the first one...everyone works harder...stays late! If we're a little below the first curve, we feel comfortable. If we're too far below the curve, management ask why we underestimated our tasks!<br />
<br />
== "Found" tasks ==<br />
If a "quick popup task" arrives mid-sprint (like a nasty bug or something) - we call it a "found task" - we estimate the hours and write it on a blue post-it note. The team has to make a snap decision to either agree to somehow fit it in with the other tasks - or to punt it off into the next sprint. If you're above the line on the burndown chart - you should probably punt it. If you're under the line, you can see if you have the capacity to add it to this sprint.<br />
<br />
Nobody other than the engineers is empowered to put a blue post-it onto the board. But once it's there - it has to make it down to the end with all the others...when the engineers make a commitment - they are expected to make it.<br />
<br />
== Mid-sprint ==<br />
If it's a long sprint, we might spend an hour in a "mid-sprint review" - where we identify any problems if we're "above the line" on the sprint. Maybe reshuffle some tasks between people if one person is behind and another ahead.<br />
<br />
== End of sprint ==<br />
At the end of the sprint - hopefully - all of the tasks are done, and with luck, we have some pink "BONUS" and blue "FOUND TASK" post-it's down there too.<br />
<br />
On the last day, we have two more meetings - one is spent convincing each other (and management) that we met the "CONDITIONS OF SATISFACTION" of the stories. This entails live demonstrations, display of screenshots, pointing to documentation on the Wiki...that kind of thing. There are cheers and applause when people stand up and explain what they did.<br />
<br />
We lock down the repository, make a release with the resulting code and branch the version control system ready to start again on the first Monday of the next sprint.<br />
<br />
The second meeting is "Sprint retrospective" where we ask (and answer) the three ritual questions: "What did we do right? What did we do wrong? What didn't we do?"...after a bad sprint, this is a long, painful meeting. After a good one, it's a lot of fun.<br />
<br />
We often have an end-of-sprint party...free food, etc. Sadly, the government frowned on us spending their money on beer - so we don't do that anymore! :-(<br />
<br />
== Other stuff ==<br />
That's the basics from an engineers' point of view. There is more to it than this though. Managers have "Epic" Stories...stories that are broken down into lesser stories. Engineers can also write stories - either simple ones describing a bug fix - larger ones describing things that we know we need to get done - but which are "invisible" to managers - even Epic ones if we have some major new idea to put forward.<br />
<br />
When there are lots of teams - and lots of scrums, the scrum-masters get together once a day and have a "Scrum of scrums" where they describe what their teams are doing, how it's going, what the cross-team blockers are, etc. Similarly, they have scrum-of-scrum planning, scrum-of-scrum sprint retrospectives, etc. In a giant company, there might even be scrum-of-scrum-of-scrum levels.<br />
<br />
== Isn't it a little...um...silly? ==<br />
<br />
The ritualized, post-it notes and sharpies, pigs and chickens, planning poker?! Sometimes the process seems a little crazy - but it works! It's like magic. The necessity of standing up in front of your team-mates and explaining what you did yesterday is a strong incentive not to goof-off. If you read email, surfed the web, ate junk food in the kitchen and talked to your buddies all day - then when you come to stand at the scrum board the next day and can only cross 2 hours off an 8 hour task...you really feel the pain...and you can see at a glance that you've got to pull it back by staying on-task.<br />
<br />
I get a real high from showing off my latest stuff at the end-of-sprint meeting.<br />
<br />
You get into the rhythm of sprint cycles - we mostly have 3 week sprints and the pressure towards the end is balanced by the relatively relaxation at start of the next.<br />
<br />
People seem to be VASTLY more productive in a scrum system. Also, people feel more empowered. The system doesn't allow managers to pressure you into taking on more work than you can manage. The responsibility to make deadlines is entirely of your own making - so when things go wrong, you have nobody to blame but yourself. Of course, if you habitually quote high numbers of hours to do work then that's noticable from the ratio of planning poker points to hours estimated. It's no protection against you getting a crappy annual review! But it's hard to be a slacker when it's your peers who are seeing your estimates and sharing the pain when you fail.<br />
<br />
If you don't make the work by the end of the sprint, you have NOBODY to blame but yourself. It's a horrible feeling. People work extra hours just to avoid that happening...nobody forces them to crunch - they do it because they feel bad about making a promise and not meeting it. You said how long it would take you - you swore on a pile of post-it notes that your estimate was good - and you discussed it with everyone else. You could have chosen to do less. The pressure not to overrun is gigantic...and when you do overrun, you rapidly learn to make smaller estimates next time!<br />
<br />
NOBODY can derail a story once it's started - NOBODY can inject a new "Panic" story in mid-sprint. Life is calmer, more measured.<br />
<br />
== Agility == <br />
Despite that seeming-rigidity, the system is "AGILE" because managers can inject new stories and redirect the team at 2 to 4 weeks notice. They know that the team will become free to consider new stories at the end of the sprint. They know to the day when their new requirement will be met.<br />
<br />
They can plan ahead very accurately because they have the stories in the queue, marked by "difficulty" from the planning poker - and the stories that have been completed - along with their difficulty scores AND the actual number of man-hours the team took to complete them. They can use statistics to track the ratio between the difficulty number and the man-hours to get a pretty good idea of how long some major new "Epic" story/feature will take to become a reality. (They talk about "team momentum"). They can also note when the ratio of hours consumed to difficulty-estimated gets worse - that something is going wrong with the team - a morale issue maybe? Someone on the team not pulling their weight perhaps.<br />
<br />
Since each sprint is atomic - you (theoretically) have a releasable product at the end of each sprint cycle (although in practice, we generally insert a 2-week mini-sprint before each release - and in those sprints, the only stories we work are bug fixes).<br />
<br />
Releases always happen on-time - although they may not have all of the features ("stories") you wanted them to have.<br />
<br />
== Conclusion - Does It Work? ==<br />
I honestly believe in this system. Having worked this way in two companies, it's MAGICAL. Everyone loves it, we're happier, we get more work done, management are happy. It just works! People who come for job interviews often ask "Do you guys do scrum?" and they're very happy when you say "Yes!". Lots of people (myself included) would never consider going back to the bad old days.<br />
<br />
What I describe here is pretty much the standard flavor of scrum...but there are other variations.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=An_Engineer%27s_guide_to_Scrum&diff=2068An Engineer's guide to Scrum2014-04-02T12:50:45Z<p>SteveBaker: /* Planning Monday */</p>
<hr />
<div>'''Agile development''', or '''Scrum''' is a management technique that's become very popular in software companies...especially game software companies.<br />
<br />
== Teams and Sprints ==<br />
The company is split into teams of between maybe 4 and perhaps at most 10 people. Life proceeds in "Sprints" of between 2 and 4 weeks - longer when you're in long-term development cycles, shorter when you approach a deliverable. People may move from one team to another from sprint to the next - but generally, we try not to do that too much. A sprint is a self-contained event - we take in "Stories" at the beginning, we finish them and produce releasable, essentially bug-free, working code at the end.<br />
<br />
Each sprint has a pattern - with some ritualized meetings.<br />
<br />
== Stories ==<br />
Everything starts with the "Stake holders" (marketing people, senior managers, product managers) writing "Stories" describing the things they want to be able to do with the product. These are kinda formulaic and are supposed to fit on a half sheet of paper:<br />
<br />
:As a user of WonderProduct2000, I need the ability for the spreadsheet component to bake bread.<br />
:SUCH THAT:<br />
:* The bread is light and fluffy.<br />
:* Spreadsheet processing is not degraded while baking.<br />
:* There is a pleasant "BING!" sound when it's done.<br />
:CONDITIONS OF SATISFACTION:<br />
:* Bread fluffy-ometer readings of 0.4 or above are obtained.<br />
:* Bread is not burned.<br />
:* BING! Sound makes small children yell "Mommy, mommy, can I have some?"<br />
:BONUS FEATURES:<br />
:* Bagles.<br />
<br />
Stories are supposed to describe desired results - they should never describe the method by which the result is to be achieved.<br />
<br />
Some stories are just investigation tasks - with conditions of satisfaction (COS) that include documentation - maybe a stand-up presentation and a sign-off from some committee or other. Most result in a concrete "thing" - code, documentation, art, audio. Something that can be demonstrated as meeting it's COS.<br />
<br />
Other stories are too big for the team to complete within one sprint - but it's a rule that those have to be broken down into smaller sub-stories. Stories are thus heirarchical in nature. "Epic" stories may embody the guiding principles for an entire multi-year development cycle, but the process of recursive sub-division must always result in stories that are one sprint or less in duration.<br />
<br />
Generally, the COS should be designed to be testable - preferably by the QA department and/or by a demonstration at the sprint retrospective meeting. A research story might end up with there being a document - and the COS might include "* Eric has read the final document and is happy with it."<br />
<br />
== Planning Monday ==<br />
(Which may in fact happen on the preceding Friday...)<br />
<br />
At the start of the sprint, the team and their immediate manager spend half a day going through the stories - some of which are new and urgent - some are old and dusty (the "Product backlog"). We discuss how we're going to implement each new one and briefly ensure that nothing has changed about the old ones (maybe they've become moot - or need to be rewritten in some way) - and for each new or revised one, we estimate the complexity of the chosen approach. <br />
<br />
In small or skill-diverse teams, the person who will be working on the job can do a complexity estimation directly in man-hours. This is emphatically NOT a managerial role. When the engineer says "this is a 16 man-hour job" - they are effectively entering a promise to complete the work in that amount of time.<br />
<br />
Larger, more skill-uniform teams use "Planning Poker" (I kid you not!). We have a hand of special "planning poker" playing cards for each engineer (they have goats on them!) - they are marked with numbers in the corners. The numbers are in units of "difficulty" - which is an abstract quantity that doesn't relate to "effort" or "man-hours" (well, not directly). We have a handful of old "benchmark" stories that we can compare to. We have a gut feel for what is a 10 point story, what is a 3 pointer and so on.<br />
<br />
Each person with the skill-set to work on the story places a card face-down on the table representing his/her estimate for the difficulty of the task and on the count of three we all show our estimates. If everyone more or less agrees - we write that estimate into the story and move quickly along to the next one. If we don't agree then the highest and lowest outliers explain why they disagree with the majority...and we play another round of cards. Pretty soon we more or less agree. If someone digs their heels in for a low-ball number - then they can expect to be doing the work! But generally, the resulting estimate should be such that all of the people involved would feel happy to pick up the task and complete it at that estimate.<br />
<br />
Repeat until all new stories are scored. Stories carried over from previous sprints may need to be re-visited if conditions surrounding their implementation has changed. But by the end, we have good estimates for all of the stories. Big stories that will need to be broken down later will have more approximate estimates - but those can be updated as their component stories emerge and can be accurately estimated.<br />
<br />
Now, management can put together the estimates and pick a selection of high priority ones that should be worked on this sprint. Engineers then take these stories and break them down into individual "tasks" - atoms of work - generally between 4 and 16 hours each. These are written on yellow post-it notes in fat black "sharpie" pens to guarantee that the task can be described in just a few words...with the hourly estimate written in the bottom-right corner.<br />
<br />
This discipline of breaking into bite sized chunks seems to help with estimating. Using a black sharpie and a post-it note ensures that we have bite-sized descriptions.<br />
<br />
Now, after lunch, usually, we take another look at the total workload for the sprint - we may adjust the hours, split some tasks up into sub-stories. If, after detailed estimation, we don't think we can get all of the stories done - then we take the lowest priority stories and transfer them onto pink post-its to indicate that these are "BONUS" tasks - or maybe bump the story out of the sprint altogether.<br />
<br />
If we think we can do more work than we estimated in poker, then we grab new stories and task them out onto pink BONUS post-its too.<br />
<br />
Nobody leaves the meeting until every one of the engineers agrees that the yellow tasks can and WILL be completed in the upcoming sprint. This is VITALLY important. If you agree - then you've made a personal commitment to finishing that story. If you don't agree - then even the lowliest engineer can force a story out of the sprint in the face of any amount of management insistence...it's a rule. If managers don't like that - then it's their job to modify the stories, maybe split a big story into smaller ones - maybe shift priorities, get more staff...the one thing they cannot do is to cajole an engineer into accepting a lower estimate...not EVER.<br />
<br />
We stick all of the yellow and pink post-its onto a whiteboard out in the corridor outside our office...someplace public, uncomfortable, and with no chairs! Planning monday is over.<br />
<br />
== The Scrum Board ==<br />
OK - to the "SCUM BOARD"!<br />
<br />
The Scrum board is laid out in several columns with boxes at the bottom marked "MOOT" and "BLOCKED".<br />
<br />
We have 5 columns: "PENDING", "IN PROGRESS", "IN CODE-REVIEW", "IN QA" and "COMPLETE" representing the life-cycle of a task.<br />
<br />
Tasks start in PENDING and work their way across to COMPLETE over the life of the sprint. By the end of the sprint, every single yellow post it '''MUST''' be in the right-hand column. The only way out is for the task to be considered "MOOT" (we decided that this wasn't necessary in order to complete the story because we found an easier way) - or to be "BLOCKED" by some external issue that's beyond our control (my hard drive exploded, Fred who works in our other office didn't do what he promised - and we relied on that for our estimates).<br />
<br />
BLOCKED tasks are a monumental issue - it is the task of the 'Scrum Master' to find out why tasks are blocked and what can be done to unblock them. It is super-rare for a task to stay blocked past the end of the sprint.<br />
<br />
== The Scrum Master ==<br />
The scrum master shouldn't be a managment position - it's generally a part-time job and it doesn't come with ANY authority. It's purely an administrative job.<br />
<br />
Some temas have their lead engineer do the job - or maybe even a QA guy - for a while we took it in turns to be scrum master with a different person taking the job each sprint.<br />
<br />
== Scrum ==<br />
Now, at a fixed time - typically early each morning - all of the engineers on the team and their "Scrum Master" (and anyone else who cares to come along to listen) meets up at the scrum board. The engineers are called "Pigs" and the other people "Chickens". There is an old joke that explains these names (When you have ham and eggs for breakfast, the chicken is involved but the pig is committed!). If you are late by even a second for the kick-off - it costs you a dollar.<br />
<br />
The scrum has rules. Only pigs are allowed to speak - chickens keep quiet unless asked to contribute (which is rare). The scrum is FAST - 10 minutes is too long...hence doing it out in the corridor - with no chairs!<br />
<br />
Each pig takes a turn to stand up in front of the board, '''briefly''' explain what they did during the previous day - cross off hours from the post-it notes on to show how much work they estimate is left to do on the task(s) they worked on. That number can go up or down or stay the same...it's an estimate of what's left - not an indication of the number of hours you spent on it.<br />
<br />
If there is less than 8 hours left on the current task - or if the task is finished, they pick another yellow post-it from the board and initial it to indicate that they have taken responsibility for doing it. In some teams (and especially in bug-fix sprints) people can grab any task they fancy - but in many cases, we put each person in charge of a complete story that they work from start to finish.<br />
<br />
When we run out of yellow (and blue!) post-its - we start in on the pink "BONUS" stories.<br />
<br />
When a task is done, the post-it moves on to the next column - so it gets peer-reviewed, QA'ed, Documented, whatever. At some point (depending on company policy) it crosses a line that requires it to be checked into the source repository. When it reaches the right-hand column, the code will have been checked in, tested, documented and it's done, completely, utterly '''DONE'''!<br />
<br />
If you are BLOCKED for some reason, it is CRITICAL that you explain this at the scrum-board. If everyone agrees that you are stuck - you put the post-it into the BLOCKED box and find another one to work on. Scrum finishes with everyone discussing how to un-block the tasks in the BLOCKED box...this is very important.<br />
<br />
== The Burn Down Chart ==<br />
After scrum, the scrum-master writes down the number of hours that were crossed off and updates a "Burn Down" graph - we keep a spread-sheet, but some people just draw it on paper. The graph is taped to the scrum board so anyone wandering down the corridor can see at a glance whether the team is performing on target.<br />
<br />
At it's simplest, this graph has "DAYS" on the X axis and "HOURS" on the Y. There are two curves - one is a straight line that goes from (8 hours)*(sprint_length_in_days-2)*(number_of_engineers) on day #1 (day #0 was planning day) down to zero on the last day of the sprint - this is what we hope will happen. The other curve shows the total number of hours left in tasks that aren't in the FINISHED column on each day of the sprint - it shows what's actually happening! If the second curve is higher than the first one...everyone works harder...stays late! If we're a little below the first curve, we feel comfortable. If we're too far below the curve, management ask why we underestimated our tasks!<br />
<br />
== "Found" tasks ==<br />
If a "quick popup task" arrives mid-sprint (like a nasty bug or something) - we call it a "found task" - we estimate the hours and write it on a blue post-it note. The team has to make a snap decision to either agree to somehow fit it in with the other tasks - or to punt it off into the next sprint. If you're above the line on the burndown chart - you should probably punt it. If you're under the line, you can see if you have the capacity to add it to this sprint.<br />
<br />
Nobody other than the engineers is empowered to put a blue post-it onto the board. But once it's there - it has to make it down to the end with all the others...when the engineers make a commitment - they are expected to make it.<br />
<br />
== Mid-sprint ==<br />
If it's a long sprint, we might spend an hour in a "mid-sprint review" - where we identify any problems if we're "above the line" on the sprint. Maybe reshuffle some tasks between people if one person is behind and another ahead.<br />
<br />
== End of sprint ==<br />
At the end of the sprint - hopefully - all of the tasks are done, and with luck, we have some pink "BONUS" and blue "FOUND TASK" post-it's down there too.<br />
<br />
On the last day, we have two more meetings - one is spent convincing each other (and management) that we met the "CONDITIONS OF SATISFACTION" of the stories. This entails live demonstrations, display of screenshots, pointing to documentation on the Wiki...that kind of thing. There are cheers and applause when people stand up and explain what they did.<br />
<br />
We lock down the repository, make a release with the resulting code and branch the version control system ready to start again on the first Monday of the next sprint.<br />
<br />
The second meeting is "Sprint retrospective" where we ask (and answer) the three ritual questions: "What did we do right? What did we do wrong? What didn't we do?"...after a bad sprint, this is a long, painful meeting. After a good one, it's a lot of fun.<br />
<br />
We often have an end-of-sprint party...free food, etc. Sadly, the government frowned on us spending their money on beer - so we don't do that anymore! :-(<br />
<br />
== Other stuff ==<br />
That's the basics from an engineers' point of view. There is more to it than this though. Managers have "Epic" Stories...stories that are broken down into lesser stories. Engineers can also write stories - either simple ones describing a bug fix - larger ones describing things that we know we need to get done - but which are "invisible" to managers - even Epic ones if we have some major new idea to put forward.<br />
<br />
When there are lots of teams - and lots of scrums, the scrum-masters get together once a day and have a "Scrum of scrums" where they describe what their teams are doing, how it's going, what the cross-team blockers are, etc. Similarly, they have scrum-of-scrum planning, scrum-of-scrum sprint retrospectives, etc. In a giant company, there might even be scrum-of-scrum-of-scrum levels.<br />
<br />
== Isn't it a little...um...silly? ==<br />
<br />
The ritualized, post-it notes and sharpies, pigs and chickens, planning poker?! Sometimes the process seems a little crazy - but it works! It's like magic. The necessity of standing up in front of your team-mates and explaining what you did yesterday is a strong incentive not to goof-off. If you read email, surfed the web, ate junk food in the kitchen and talked to your buddies all day - then when you come to stand at the scrum board the next day and can only cross 2 hours off an 8 hour task...you really feel the pain...and you can see at a glance that you've got to pull it back by staying on-task.<br />
<br />
I get a real high from showing off my latest stuff at the end-of-sprint meeting.<br />
<br />
You get into the rhythm of sprint cycles - we mostly have 3 week sprints and the pressure towards the end is balanced by the relatively relaxation at start of the next.<br />
<br />
People seem to be VASTLY more productive in a scrum system. Also, people feel more empowered. The system doesn't allow managers to pressure you into taking on more work than you can manage. The responsibility to make deadlines is entirely of your own making - so when things go wrong, you have nobody to blame but yourself. Of course, if you habitually quote high numbers of hours to do work then that's noticable from the ratio of planning poker points to hours estimated. It's no protection against you getting a crappy annual review! But it's hard to be a slacker when it's your peers who are seeing your estimates and sharing the pain when you fail.<br />
<br />
If you don't make the work by the end of the sprint, you have NOBODY to blame but yourself. It's a horrible feeling. People work extra hours just to avoid that happening...nobody forces them to crunch - they do it because they feel bad about making a promise and not meeting it. You said how long it would take you - you swore on a pile of post-it notes that your estimate was good - and you discussed it with everyone else. You could have chosen to do less. The pressure not to overrun is gigantic...and when you do overrun, you rapidly learn to make smaller estimates next time!<br />
<br />
NOBODY can derail a story once it's started - NOBODY can inject a new "Panic" story in mid-sprint. Life is calmer, more measured.<br />
<br />
== Agility == <br />
Despite that seeming-rigidity, the system is "AGILE" because managers can inject new stories and redirect the team at 2 to 4 weeks notice. They know that the team will become free to consider new stories at the end of the sprint. They know to the day when their new requirement will be met.<br />
<br />
They can plan ahead very accurately because they have the stories in the queue, marked by "difficulty" from the planning poker - and the stories that have been completed - along with their difficulty scores AND the actual number of man-hours the team took to complete them. They can use statistics to track the ratio between the difficulty number and the man-hours to get a pretty good idea of how long some major new "Epic" story/feature will take to become a reality. (They talk about "team momentum"). They can also note when the ratio of hours consumed to difficulty-estimated gets worse - that something is going wrong with the team - a morale issue maybe? Someone on the team not pulling their weight perhaps.<br />
<br />
Since each sprint is atomic - you (theoretically) have a releasable product at the end of each sprint cycle (although in practice, we generally insert a 2-week mini-sprint before each release - and in those sprints, the only stories we work are bug fixes).<br />
<br />
Releases always happen on-time - although they may not have all of the features ("stories") you wanted them to have.<br />
<br />
== Conclusion - Does It Work? ==<br />
I honestly believe in this system. Having worked this way in two companies, it's MAGICAL. Everyone loves it, we're happier, we get more work done, management are happy. It just works! People who come for job interviews often ask "Do you guys do scrum?" and they're very happy when you say "Yes!". Lots of people (myself included) would never consider going back to the bad old days.<br />
<br />
What I describe here is pretty much the standard flavor of scrum...but there are other variations.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=An_Engineer%27s_guide_to_Scrum&diff=2067An Engineer's guide to Scrum2014-04-02T12:38:15Z<p>SteveBaker: /* Planning Monday */</p>
<hr />
<div>'''Agile development''', or '''Scrum''' is a management technique that's become very popular in software companies...especially game software companies.<br />
<br />
== Teams and Sprints ==<br />
The company is split into teams of between maybe 4 and perhaps at most 10 people. Life proceeds in "Sprints" of between 2 and 4 weeks - longer when you're in long-term development cycles, shorter when you approach a deliverable. People may move from one team to another from sprint to the next - but generally, we try not to do that too much. A sprint is a self-contained event - we take in "Stories" at the beginning, we finish them and produce releasable, essentially bug-free, working code at the end.<br />
<br />
Each sprint has a pattern - with some ritualized meetings.<br />
<br />
== Stories ==<br />
Everything starts with the "Stake holders" (marketing people, senior managers, product managers) writing "Stories" describing the things they want to be able to do with the product. These are kinda formulaic and are supposed to fit on a half sheet of paper:<br />
<br />
:As a user of WonderProduct2000, I need the ability for the spreadsheet component to bake bread.<br />
:SUCH THAT:<br />
:* The bread is light and fluffy.<br />
:* Spreadsheet processing is not degraded while baking.<br />
:* There is a pleasant "BING!" sound when it's done.<br />
:CONDITIONS OF SATISFACTION:<br />
:* Bread fluffy-ometer readings of 0.4 or above are obtained.<br />
:* Bread is not burned.<br />
:* BING! Sound makes small children yell "Mommy, mommy, can I have some?"<br />
:BONUS FEATURES:<br />
:* Bagles.<br />
<br />
Stories are supposed to describe desired results - they should never describe the method by which the result is to be achieved.<br />
<br />
Some stories are just investigation tasks - with conditions of satisfaction (COS) that include documentation - maybe a stand-up presentation and a sign-off from some committee or other. Most result in a concrete "thing" - code, documentation, art, audio. Something that can be demonstrated as meeting it's COS.<br />
<br />
Other stories are too big for the team to complete within one sprint - but it's a rule that those have to be broken down into smaller sub-stories. Stories are thus heirarchical in nature. "Epic" stories may embody the guiding principles for an entire multi-year development cycle, but the process of recursive sub-division must always result in stories that are one sprint or less in duration.<br />
<br />
Generally, the COS should be designed to be testable - preferably by the QA department and/or by a demonstration at the sprint retrospective meeting. A research story might end up with there being a document - and the COS might include "* Eric has read the final document and is happy with it."<br />
<br />
== Planning Monday ==<br />
(Which may in fact happen on the preceding Friday...)<br />
<br />
At the start of the sprint, the team and their immediate manager spend half a day going through the stories - some of which are new and urgent - some are old and dusty (the "Product backlog"). We discuss how we're going to implement each new one and briefly ensure that nothing has changed about the old ones (maybe they've become moot - or need to be rewritten in some way) - and for each new or revised one, we estimate the complexity of the chosen approach using "Planning Poker" (I kid you not!). We each have a hand of special "planning poker" playing cards for each engineer (they have goats on them!) - they are marked with numbers in the corners. The numbers are in units of "difficulty" - which is an abstract quantity that doesn't relate to "effort" or "man-hours" (well, not directly). We have a handful of old "benchmark" stories that we can compare to. We have a gut feel for what is a 10 point story, what is a 3 pointer and so on.<br />
<br />
Each person places a card face-down on the table representing his/her estimate for the difficulty of the task and on the count of three we all show our estimates. If everyone more or less agrees - we write that estimate into the story and move quickly along to the next one. If we don't agree then the highest and lowest outliers explain why they disagree with the majority...and we play another round of cards. Pretty soon we more or less agree.<br />
<br />
Repeat until all new stories are scored.<br />
<br />
Now, management put together the estimates and pick a selection of high priority ones that should be worked on this sprint. Engineers then take these stories and break them down into individual "tasks" - atoms of work - generally between 4 and 16 hours each. These are written on yellow post-it notes in fat black "sharpie" pens to guarantee that the task can be described in just a few words...with the hourly estimate written in the bottom-right corner.<br />
<br />
This discipline of breaking into bite sized chunks seems to help with estimating.<br />
<br />
Now, after lunch, usually, we take another look at the total workload for the sprint - we may adjust the hours, split some tasks up. If, after detailed estimation, we don't think we can get all of the stories done - then we take the lowest priority stories and transfer them onto pink post-its to indicate that these are "BONUS" tasks - or maybe bump the story out of the sprint altogether.<br />
<br />
If we think we can do more work than we estimated in poker, then we grab new stories and task them out onto pink BONUS post-its.<br />
<br />
Nobody leaves the meeting until every one of the engineers agrees that the yellow tasks can and WILL be completed in the upcoming sprint. This is VITALLY important. If you agree - then you've made a personal commitment to finishing that story. If you don't agree - then even the lowliest engineer can force a story out of the sprint in the face of any amount of management insistance...it's a rule. If managers don't like that - then it's their job to modify the stories, maybe split a big story into smaller ones - maybe shift priorities, get more staff...the one thing they cannot do is to cajole an engineer into accepting a lower estimate...not EVER.<br />
<br />
We stick all of the yellow and pink post-its onto a whiteboard out in the corridor outside our office...someplace public, uncomfortable, and with no chairs! Planning monday is over.<br />
<br />
== The Scrum Board ==<br />
OK - to the "SCUM BOARD"!<br />
<br />
The Scrum board is laid out in several columns with boxes at the bottom marked "MOOT" and "BLOCKED".<br />
<br />
We have 5 columns: "PENDING", "IN PROGRESS", "IN CODE-REVIEW", "IN QA" and "COMPLETE" representing the life-cycle of a task.<br />
<br />
Tasks start in PENDING and work their way across to COMPLETE over the life of the sprint. By the end of the sprint, every single yellow post it '''MUST''' be in the right-hand column. The only way out is for the task to be considered "MOOT" (we decided that this wasn't necessary in order to complete the story because we found an easier way) - or to be "BLOCKED" by some external issue that's beyond our control (my hard drive exploded, Fred who works in our other office didn't do what he promised - and we relied on that for our estimates).<br />
<br />
BLOCKED tasks are a monumental issue - it is the task of the 'Scrum Master' to find out why tasks are blocked and what can be done to unblock them. It is super-rare for a task to stay blocked past the end of the sprint.<br />
<br />
== The Scrum Master ==<br />
The scrum master shouldn't be a managment position - it's generally a part-time job and it doesn't come with ANY authority. It's purely an administrative job.<br />
<br />
Some temas have their lead engineer do the job - or maybe even a QA guy - for a while we took it in turns to be scrum master with a different person taking the job each sprint.<br />
<br />
== Scrum ==<br />
Now, at a fixed time - typically early each morning - all of the engineers on the team and their "Scrum Master" (and anyone else who cares to come along to listen) meets up at the scrum board. The engineers are called "Pigs" and the other people "Chickens". There is an old joke that explains these names (When you have ham and eggs for breakfast, the chicken is involved but the pig is committed!). If you are late by even a second for the kick-off - it costs you a dollar.<br />
<br />
The scrum has rules. Only pigs are allowed to speak - chickens keep quiet unless asked to contribute (which is rare). The scrum is FAST - 10 minutes is too long...hence doing it out in the corridor - with no chairs!<br />
<br />
Each pig takes a turn to stand up in front of the board, '''briefly''' explain what they did during the previous day - cross off hours from the post-it notes on to show how much work they estimate is left to do on the task(s) they worked on. That number can go up or down or stay the same...it's an estimate of what's left - not an indication of the number of hours you spent on it.<br />
<br />
If there is less than 8 hours left on the current task - or if the task is finished, they pick another yellow post-it from the board and initial it to indicate that they have taken responsibility for doing it. In some teams (and especially in bug-fix sprints) people can grab any task they fancy - but in many cases, we put each person in charge of a complete story that they work from start to finish.<br />
<br />
When we run out of yellow (and blue!) post-its - we start in on the pink "BONUS" stories.<br />
<br />
When a task is done, the post-it moves on to the next column - so it gets peer-reviewed, QA'ed, Documented, whatever. At some point (depending on company policy) it crosses a line that requires it to be checked into the source repository. When it reaches the right-hand column, the code will have been checked in, tested, documented and it's done, completely, utterly '''DONE'''!<br />
<br />
If you are BLOCKED for some reason, it is CRITICAL that you explain this at the scrum-board. If everyone agrees that you are stuck - you put the post-it into the BLOCKED box and find another one to work on. Scrum finishes with everyone discussing how to un-block the tasks in the BLOCKED box...this is very important.<br />
<br />
== The Burn Down Chart ==<br />
After scrum, the scrum-master writes down the number of hours that were crossed off and updates a "Burn Down" graph - we keep a spread-sheet, but some people just draw it on paper. The graph is taped to the scrum board so anyone wandering down the corridor can see at a glance whether the team is performing on target.<br />
<br />
At it's simplest, this graph has "DAYS" on the X axis and "HOURS" on the Y. There are two curves - one is a straight line that goes from (8 hours)*(sprint_length_in_days-2)*(number_of_engineers) on day #1 (day #0 was planning day) down to zero on the last day of the sprint - this is what we hope will happen. The other curve shows the total number of hours left in tasks that aren't in the FINISHED column on each day of the sprint - it shows what's actually happening! If the second curve is higher than the first one...everyone works harder...stays late! If we're a little below the first curve, we feel comfortable. If we're too far below the curve, management ask why we underestimated our tasks!<br />
<br />
== "Found" tasks ==<br />
If a "quick popup task" arrives mid-sprint (like a nasty bug or something) - we call it a "found task" - we estimate the hours and write it on a blue post-it note. The team has to make a snap decision to either agree to somehow fit it in with the other tasks - or to punt it off into the next sprint. If you're above the line on the burndown chart - you should probably punt it. If you're under the line, you can see if you have the capacity to add it to this sprint.<br />
<br />
Nobody other than the engineers is empowered to put a blue post-it onto the board. But once it's there - it has to make it down to the end with all the others...when the engineers make a commitment - they are expected to make it.<br />
<br />
== Mid-sprint ==<br />
If it's a long sprint, we might spend an hour in a "mid-sprint review" - where we identify any problems if we're "above the line" on the sprint. Maybe reshuffle some tasks between people if one person is behind and another ahead.<br />
<br />
== End of sprint ==<br />
At the end of the sprint - hopefully - all of the tasks are done, and with luck, we have some pink "BONUS" and blue "FOUND TASK" post-it's down there too.<br />
<br />
On the last day, we have two more meetings - one is spent convincing each other (and management) that we met the "CONDITIONS OF SATISFACTION" of the stories. This entails live demonstrations, display of screenshots, pointing to documentation on the Wiki...that kind of thing. There are cheers and applause when people stand up and explain what they did.<br />
<br />
We lock down the repository, make a release with the resulting code and branch the version control system ready to start again on the first Monday of the next sprint.<br />
<br />
The second meeting is "Sprint retrospective" where we ask (and answer) the three ritual questions: "What did we do right? What did we do wrong? What didn't we do?"...after a bad sprint, this is a long, painful meeting. After a good one, it's a lot of fun.<br />
<br />
We often have an end-of-sprint party...free food, etc. Sadly, the government frowned on us spending their money on beer - so we don't do that anymore! :-(<br />
<br />
== Other stuff ==<br />
That's the basics from an engineers' point of view. There is more to it than this though. Managers have "Epic" Stories...stories that are broken down into lesser stories. Engineers can also write stories - either simple ones describing a bug fix - larger ones describing things that we know we need to get done - but which are "invisible" to managers - even Epic ones if we have some major new idea to put forward.<br />
<br />
When there are lots of teams - and lots of scrums, the scrum-masters get together once a day and have a "Scrum of scrums" where they describe what their teams are doing, how it's going, what the cross-team blockers are, etc. Similarly, they have scrum-of-scrum planning, scrum-of-scrum sprint retrospectives, etc. In a giant company, there might even be scrum-of-scrum-of-scrum levels.<br />
<br />
== Isn't it a little...um...silly? ==<br />
<br />
The ritualized, post-it notes and sharpies, pigs and chickens, planning poker?! Sometimes the process seems a little crazy - but it works! It's like magic. The necessity of standing up in front of your team-mates and explaining what you did yesterday is a strong incentive not to goof-off. If you read email, surfed the web, ate junk food in the kitchen and talked to your buddies all day - then when you come to stand at the scrum board the next day and can only cross 2 hours off an 8 hour task...you really feel the pain...and you can see at a glance that you've got to pull it back by staying on-task.<br />
<br />
I get a real high from showing off my latest stuff at the end-of-sprint meeting.<br />
<br />
You get into the rhythm of sprint cycles - we mostly have 3 week sprints and the pressure towards the end is balanced by the relatively relaxation at start of the next.<br />
<br />
People seem to be VASTLY more productive in a scrum system. Also, people feel more empowered. The system doesn't allow managers to pressure you into taking on more work than you can manage. The responsibility to make deadlines is entirely of your own making - so when things go wrong, you have nobody to blame but yourself. Of course, if you habitually quote high numbers of hours to do work then that's noticable from the ratio of planning poker points to hours estimated. It's no protection against you getting a crappy annual review! But it's hard to be a slacker when it's your peers who are seeing your estimates and sharing the pain when you fail.<br />
<br />
If you don't make the work by the end of the sprint, you have NOBODY to blame but yourself. It's a horrible feeling. People work extra hours just to avoid that happening...nobody forces them to crunch - they do it because they feel bad about making a promise and not meeting it. You said how long it would take you - you swore on a pile of post-it notes that your estimate was good - and you discussed it with everyone else. You could have chosen to do less. The pressure not to overrun is gigantic...and when you do overrun, you rapidly learn to make smaller estimates next time!<br />
<br />
NOBODY can derail a story once it's started - NOBODY can inject a new "Panic" story in mid-sprint. Life is calmer, more measured.<br />
<br />
== Agility == <br />
Despite that seeming-rigidity, the system is "AGILE" because managers can inject new stories and redirect the team at 2 to 4 weeks notice. They know that the team will become free to consider new stories at the end of the sprint. They know to the day when their new requirement will be met.<br />
<br />
They can plan ahead very accurately because they have the stories in the queue, marked by "difficulty" from the planning poker - and the stories that have been completed - along with their difficulty scores AND the actual number of man-hours the team took to complete them. They can use statistics to track the ratio between the difficulty number and the man-hours to get a pretty good idea of how long some major new "Epic" story/feature will take to become a reality. (They talk about "team momentum"). They can also note when the ratio of hours consumed to difficulty-estimated gets worse - that something is going wrong with the team - a morale issue maybe? Someone on the team not pulling their weight perhaps.<br />
<br />
Since each sprint is atomic - you (theoretically) have a releasable product at the end of each sprint cycle (although in practice, we generally insert a 2-week mini-sprint before each release - and in those sprints, the only stories we work are bug fixes).<br />
<br />
Releases always happen on-time - although they may not have all of the features ("stories") you wanted them to have.<br />
<br />
== Conclusion - Does It Work? ==<br />
I honestly believe in this system. Having worked this way in two companies, it's MAGICAL. Everyone loves it, we're happier, we get more work done, management are happy. It just works! People who come for job interviews often ask "Do you guys do scrum?" and they're very happy when you say "Yes!". Lots of people (myself included) would never consider going back to the bad old days.<br />
<br />
What I describe here is pretty much the standard flavor of scrum...but there are other variations.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=An_Engineer%27s_guide_to_Scrum&diff=2066An Engineer's guide to Scrum2014-04-02T12:37:28Z<p>SteveBaker: /* Stories */</p>
<hr />
<div>'''Agile development''', or '''Scrum''' is a management technique that's become very popular in software companies...especially game software companies.<br />
<br />
== Teams and Sprints ==<br />
The company is split into teams of between maybe 4 and perhaps at most 10 people. Life proceeds in "Sprints" of between 2 and 4 weeks - longer when you're in long-term development cycles, shorter when you approach a deliverable. People may move from one team to another from sprint to the next - but generally, we try not to do that too much. A sprint is a self-contained event - we take in "Stories" at the beginning, we finish them and produce releasable, essentially bug-free, working code at the end.<br />
<br />
Each sprint has a pattern - with some ritualized meetings.<br />
<br />
== Stories ==<br />
Everything starts with the "Stake holders" (marketing people, senior managers, product managers) writing "Stories" describing the things they want to be able to do with the product. These are kinda formulaic and are supposed to fit on a half sheet of paper:<br />
<br />
:As a user of WonderProduct2000, I need the ability for the spreadsheet component to bake bread.<br />
:SUCH THAT:<br />
:* The bread is light and fluffy.<br />
:* Spreadsheet processing is not degraded while baking.<br />
:* There is a pleasant "BING!" sound when it's done.<br />
:CONDITIONS OF SATISFACTION:<br />
:* Bread fluffy-ometer readings of 0.4 or above are obtained.<br />
:* Bread is not burned.<br />
:* BING! Sound makes small children yell "Mommy, mommy, can I have some?"<br />
:BONUS FEATURES:<br />
:* Bagles.<br />
<br />
Stories are supposed to describe desired results - they should never describe the method by which the result is to be achieved.<br />
<br />
Some stories are just investigation tasks - with conditions of satisfaction (COS) that include documentation - maybe a stand-up presentation and a sign-off from some committee or other. Most result in a concrete "thing" - code, documentation, art, audio. Something that can be demonstrated as meeting it's COS.<br />
<br />
Other stories are too big for the team to complete within one sprint - but it's a rule that those have to be broken down into smaller sub-stories. Stories are thus heirarchical in nature. "Epic" stories may embody the guiding principles for an entire multi-year development cycle, but the process of recursive sub-division must always result in stories that are one sprint or less in duration.<br />
<br />
Generally, the COS should be designed to be testable - preferably by the QA department and/or by a demonstration at the sprint retrospective meeting. A research story might end up with there being a document - and the COS might include "* Eric has read the final document and is happy with it."<br />
<br />
== Planning Monday ==<br />
At the start of the sprint, the team and their immediate manager spend half a day going through the stories - some of which are new and urgent - some are old and dusty (the "Product backlog"). We discuss how we're going to implement each new one and briefly ensure that nothing has changed about the old ones (maybe they've become moot - or need to be rewritten in some way) - and for each new or revised one, we estimate the complexity of the chosen approach using "Planning Poker" (I kid you not!). We each have a hand of special "planning poker" playing cards for each engineer (they have goats on them!) - they are marked with numbers in the corners. The numbers are in units of "difficulty" - which is an abstract quantity that doesn't relate to "effort" or "man-hours" (well, not directly). We have a handful of old "benchmark" stories that we can compare to. We have a gut feel for what is a 10 point story, what is a 3 pointer and so on.<br />
<br />
Each person places a card face-down on the table representing his/her estimate for the difficulty of the task and on the count of three we all show our estimates. If everyone more or less agrees - we write that estimate into the story and move quickly along to the next one. If we don't agree then the highest and lowest outliers explain why they disagree with the majority...and we play another round of cards. Pretty soon we more or less agree.<br />
<br />
Repeat until all new stories are scored.<br />
<br />
Now, management put together the estimates and pick a selection of high priority ones that should be worked on this sprint. Engineers then take these stories and break them down into individual "tasks" - atoms of work - generally between 4 and 16 hours each. These are written on yellow post-it notes in fat black "sharpie" pens to guarantee that the task can be described in just a few words...with the hourly estimate written in the bottom-right corner.<br />
<br />
This discipline of breaking into bite sized chunks seems to help with estimating.<br />
<br />
Now, after lunch, usually, we take another look at the total workload for the sprint - we may adjust the hours, split some tasks up. If, after detailed estimation, we don't think we can get all of the stories done - then we take the lowest priority stories and transfer them onto pink post-its to indicate that these are "BONUS" tasks - or maybe bump the story out of the sprint altogether.<br />
<br />
If we think we can do more work than we estimated in poker, then we grab new stories and task them out onto pink BONUS post-its.<br />
<br />
Nobody leaves the meeting until every one of the engineers agrees that the yellow tasks can and WILL be completed in the upcoming sprint. This is VITALLY important. If you agree - then you've made a personal commitment to finishing that story. If you don't agree - then even the lowliest engineer can force a story out of the sprint in the face of any amount of management insistance...it's a rule. If managers don't like that - then it's their job to modify the stories, maybe split a big story into smaller ones - maybe shift priorities, get more staff...the one thing they cannot do is to cajole an engineer into accepting a lower estimate...not EVER.<br />
<br />
We stick all of the yellow and pink post-its onto a whiteboard out in the corridor outside our office...someplace public, uncomfortable, and with no chairs! Planning monday is over.<br />
<br />
== The Scrum Board ==<br />
OK - to the "SCUM BOARD"!<br />
<br />
The Scrum board is laid out in several columns with boxes at the bottom marked "MOOT" and "BLOCKED".<br />
<br />
We have 5 columns: "PENDING", "IN PROGRESS", "IN CODE-REVIEW", "IN QA" and "COMPLETE" representing the life-cycle of a task.<br />
<br />
Tasks start in PENDING and work their way across to COMPLETE over the life of the sprint. By the end of the sprint, every single yellow post it '''MUST''' be in the right-hand column. The only way out is for the task to be considered "MOOT" (we decided that this wasn't necessary in order to complete the story because we found an easier way) - or to be "BLOCKED" by some external issue that's beyond our control (my hard drive exploded, Fred who works in our other office didn't do what he promised - and we relied on that for our estimates).<br />
<br />
BLOCKED tasks are a monumental issue - it is the task of the 'Scrum Master' to find out why tasks are blocked and what can be done to unblock them. It is super-rare for a task to stay blocked past the end of the sprint.<br />
<br />
== The Scrum Master ==<br />
The scrum master shouldn't be a managment position - it's generally a part-time job and it doesn't come with ANY authority. It's purely an administrative job.<br />
<br />
Some temas have their lead engineer do the job - or maybe even a QA guy - for a while we took it in turns to be scrum master with a different person taking the job each sprint.<br />
<br />
== Scrum ==<br />
Now, at a fixed time - typically early each morning - all of the engineers on the team and their "Scrum Master" (and anyone else who cares to come along to listen) meets up at the scrum board. The engineers are called "Pigs" and the other people "Chickens". There is an old joke that explains these names (When you have ham and eggs for breakfast, the chicken is involved but the pig is committed!). If you are late by even a second for the kick-off - it costs you a dollar.<br />
<br />
The scrum has rules. Only pigs are allowed to speak - chickens keep quiet unless asked to contribute (which is rare). The scrum is FAST - 10 minutes is too long...hence doing it out in the corridor - with no chairs!<br />
<br />
Each pig takes a turn to stand up in front of the board, '''briefly''' explain what they did during the previous day - cross off hours from the post-it notes on to show how much work they estimate is left to do on the task(s) they worked on. That number can go up or down or stay the same...it's an estimate of what's left - not an indication of the number of hours you spent on it.<br />
<br />
If there is less than 8 hours left on the current task - or if the task is finished, they pick another yellow post-it from the board and initial it to indicate that they have taken responsibility for doing it. In some teams (and especially in bug-fix sprints) people can grab any task they fancy - but in many cases, we put each person in charge of a complete story that they work from start to finish.<br />
<br />
When we run out of yellow (and blue!) post-its - we start in on the pink "BONUS" stories.<br />
<br />
When a task is done, the post-it moves on to the next column - so it gets peer-reviewed, QA'ed, Documented, whatever. At some point (depending on company policy) it crosses a line that requires it to be checked into the source repository. When it reaches the right-hand column, the code will have been checked in, tested, documented and it's done, completely, utterly '''DONE'''!<br />
<br />
If you are BLOCKED for some reason, it is CRITICAL that you explain this at the scrum-board. If everyone agrees that you are stuck - you put the post-it into the BLOCKED box and find another one to work on. Scrum finishes with everyone discussing how to un-block the tasks in the BLOCKED box...this is very important.<br />
<br />
== The Burn Down Chart ==<br />
After scrum, the scrum-master writes down the number of hours that were crossed off and updates a "Burn Down" graph - we keep a spread-sheet, but some people just draw it on paper. The graph is taped to the scrum board so anyone wandering down the corridor can see at a glance whether the team is performing on target.<br />
<br />
At it's simplest, this graph has "DAYS" on the X axis and "HOURS" on the Y. There are two curves - one is a straight line that goes from (8 hours)*(sprint_length_in_days-2)*(number_of_engineers) on day #1 (day #0 was planning day) down to zero on the last day of the sprint - this is what we hope will happen. The other curve shows the total number of hours left in tasks that aren't in the FINISHED column on each day of the sprint - it shows what's actually happening! If the second curve is higher than the first one...everyone works harder...stays late! If we're a little below the first curve, we feel comfortable. If we're too far below the curve, management ask why we underestimated our tasks!<br />
<br />
== "Found" tasks ==<br />
If a "quick popup task" arrives mid-sprint (like a nasty bug or something) - we call it a "found task" - we estimate the hours and write it on a blue post-it note. The team has to make a snap decision to either agree to somehow fit it in with the other tasks - or to punt it off into the next sprint. If you're above the line on the burndown chart - you should probably punt it. If you're under the line, you can see if you have the capacity to add it to this sprint.<br />
<br />
Nobody other than the engineers is empowered to put a blue post-it onto the board. But once it's there - it has to make it down to the end with all the others...when the engineers make a commitment - they are expected to make it.<br />
<br />
== Mid-sprint ==<br />
If it's a long sprint, we might spend an hour in a "mid-sprint review" - where we identify any problems if we're "above the line" on the sprint. Maybe reshuffle some tasks between people if one person is behind and another ahead.<br />
<br />
== End of sprint ==<br />
At the end of the sprint - hopefully - all of the tasks are done, and with luck, we have some pink "BONUS" and blue "FOUND TASK" post-it's down there too.<br />
<br />
On the last day, we have two more meetings - one is spent convincing each other (and management) that we met the "CONDITIONS OF SATISFACTION" of the stories. This entails live demonstrations, display of screenshots, pointing to documentation on the Wiki...that kind of thing. There are cheers and applause when people stand up and explain what they did.<br />
<br />
We lock down the repository, make a release with the resulting code and branch the version control system ready to start again on the first Monday of the next sprint.<br />
<br />
The second meeting is "Sprint retrospective" where we ask (and answer) the three ritual questions: "What did we do right? What did we do wrong? What didn't we do?"...after a bad sprint, this is a long, painful meeting. After a good one, it's a lot of fun.<br />
<br />
We often have an end-of-sprint party...free food, etc. Sadly, the government frowned on us spending their money on beer - so we don't do that anymore! :-(<br />
<br />
== Other stuff ==<br />
That's the basics from an engineers' point of view. There is more to it than this though. Managers have "Epic" Stories...stories that are broken down into lesser stories. Engineers can also write stories - either simple ones describing a bug fix - larger ones describing things that we know we need to get done - but which are "invisible" to managers - even Epic ones if we have some major new idea to put forward.<br />
<br />
When there are lots of teams - and lots of scrums, the scrum-masters get together once a day and have a "Scrum of scrums" where they describe what their teams are doing, how it's going, what the cross-team blockers are, etc. Similarly, they have scrum-of-scrum planning, scrum-of-scrum sprint retrospectives, etc. In a giant company, there might even be scrum-of-scrum-of-scrum levels.<br />
<br />
== Isn't it a little...um...silly? ==<br />
<br />
The ritualized, post-it notes and sharpies, pigs and chickens, planning poker?! Sometimes the process seems a little crazy - but it works! It's like magic. The necessity of standing up in front of your team-mates and explaining what you did yesterday is a strong incentive not to goof-off. If you read email, surfed the web, ate junk food in the kitchen and talked to your buddies all day - then when you come to stand at the scrum board the next day and can only cross 2 hours off an 8 hour task...you really feel the pain...and you can see at a glance that you've got to pull it back by staying on-task.<br />
<br />
I get a real high from showing off my latest stuff at the end-of-sprint meeting.<br />
<br />
You get into the rhythm of sprint cycles - we mostly have 3 week sprints and the pressure towards the end is balanced by the relatively relaxation at start of the next.<br />
<br />
People seem to be VASTLY more productive in a scrum system. Also, people feel more empowered. The system doesn't allow managers to pressure you into taking on more work than you can manage. The responsibility to make deadlines is entirely of your own making - so when things go wrong, you have nobody to blame but yourself. Of course, if you habitually quote high numbers of hours to do work then that's noticable from the ratio of planning poker points to hours estimated. It's no protection against you getting a crappy annual review! But it's hard to be a slacker when it's your peers who are seeing your estimates and sharing the pain when you fail.<br />
<br />
If you don't make the work by the end of the sprint, you have NOBODY to blame but yourself. It's a horrible feeling. People work extra hours just to avoid that happening...nobody forces them to crunch - they do it because they feel bad about making a promise and not meeting it. You said how long it would take you - you swore on a pile of post-it notes that your estimate was good - and you discussed it with everyone else. You could have chosen to do less. The pressure not to overrun is gigantic...and when you do overrun, you rapidly learn to make smaller estimates next time!<br />
<br />
NOBODY can derail a story once it's started - NOBODY can inject a new "Panic" story in mid-sprint. Life is calmer, more measured.<br />
<br />
== Agility == <br />
Despite that seeming-rigidity, the system is "AGILE" because managers can inject new stories and redirect the team at 2 to 4 weeks notice. They know that the team will become free to consider new stories at the end of the sprint. They know to the day when their new requirement will be met.<br />
<br />
They can plan ahead very accurately because they have the stories in the queue, marked by "difficulty" from the planning poker - and the stories that have been completed - along with their difficulty scores AND the actual number of man-hours the team took to complete them. They can use statistics to track the ratio between the difficulty number and the man-hours to get a pretty good idea of how long some major new "Epic" story/feature will take to become a reality. (They talk about "team momentum"). They can also note when the ratio of hours consumed to difficulty-estimated gets worse - that something is going wrong with the team - a morale issue maybe? Someone on the team not pulling their weight perhaps.<br />
<br />
Since each sprint is atomic - you (theoretically) have a releasable product at the end of each sprint cycle (although in practice, we generally insert a 2-week mini-sprint before each release - and in those sprints, the only stories we work are bug fixes).<br />
<br />
Releases always happen on-time - although they may not have all of the features ("stories") you wanted them to have.<br />
<br />
== Conclusion - Does It Work? ==<br />
I honestly believe in this system. Having worked this way in two companies, it's MAGICAL. Everyone loves it, we're happier, we get more work done, management are happy. It just works! People who come for job interviews often ask "Do you guys do scrum?" and they're very happy when you say "Yes!". Lots of people (myself included) would never consider going back to the bad old days.<br />
<br />
What I describe here is pretty much the standard flavor of scrum...but there are other variations.</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Main_Page&diff=2065Main Page2014-03-06T14:23:47Z<p>SteveBaker: </p>
<hr />
<div>__NOTOC__<br />
[[Image:Bakercoat lowcontrast.png|right]]<br />
[[Image:Bakercoat lowcontrast.png|left]]<br />
[[Image:Welcome.png|center]]<br />
<br />
== Welcome to Wikiid! ==<br />
<br style="clear:both" /><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; <br />
font-weight:bold;">Guides and FAQ's</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW GUIDE/FAQ PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Wikiid templates|The Wikiid Site Map]]<br />
: [[The simplest possible guide to writing HTML]].<br />
: [[The simplest possible guide to writing MediaWiki]].<br />
: [[SVN server|The simplest possible guide to SVN]]<br />
: [[Makefile|The simplest possible guide to 'make' and Makefiles]]<br />
: [[C++: multiple source files|A simple guide to having multiple source files in C++]]<br />
: [[A Short Guide to C++ Pointers]]<br />
: [[A Short Guide to C++ class inheritance]]<br />
: [[A Short Guide to Data Structures]]<br />
: [[A Short Guide to 3D Graphics Performance testing]]<br />
: [[A Short Guide to writing server-side CGI programs in C++]]<br />
: [[A Short Guide to understanding C++ compiler errors]]<br />
: [[A Short Guide to AJAX programming]]<br />
: [[An Engineer's guide to Scrum]]<br />
: [[JavaScript notes]]<br />
: [[GLSL shaders|The simplest possible guide to GLSL shaders]]<br />
: [[Android Phone development from the Linux command-line]]<br />
: [[List of OpenSource software Steve has Worked On]]<br />
: [[List of FAQ's that Steve maintains]]<br />
: [[Tutorials for Kids]]<br />
: [[Concise Cg built-in function table]]<br />
: [http://gnosis.cx/publish/programming/sockets.html|David Mertz' socket programming guide]<br />
<!---------------------------------------------><br />
<!---------- END OF GUIDE/FAQ PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">OpenSource Game/Technical Pages</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW TECHNICAL PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Canvas 3D]]<br />
: [[Realistic Space Game]]<br />
: [http://www.oliverbaker.org/HamperBall HamperBall - A game we wrote in 10 days as a present for Tracy]<br />
: [http://www.sjbaker.org/tfog The Foot of God]<br />
: [[Unification]]<br />
: [[Lemur of Lima]]<br />
: [[gameTools]]<br />
: [[PLIB2|PLIB 2.0]]<br />
: [[videoTools]]<br />
: [[JavaScript in Wiki]]<br />
: [[A Simple 3D Scanner]]<br />
: [[MIDIfile player library]]<br />
: [[Arduino]]<br />
: [[Audio for Browser-based games]]<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF TECHNICAL PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Steve's Fun Stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!----------- ADD STEVES STUFF HERE -----------><br />
<!---------------------------------------------><br />
: [[Pencil and paper games]]<br />
: [[Optical illusions]]<br />
: [[Measuring hard things with easy experiments]]<br />
: [[Collected Answers from the Wikipedia Reference Desk]]<br />
: [[Minipedia]] -- A place for Mini owners to share information.<br />
: [[Creative approaches to SPAM control]]<br />
: [[The History of The Teapot]]<br />
: [[The History of Tux the Linux Penguin]]<br />
: [[Cool Code list]]<br />
: [[Cruel Code list]]<br />
: [[Administrivia]]<br />
<!---------------------------------------------><br />
<!------------ END OF STEVES STUFF -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Oliver's stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!---------- ADD OLIVERS STUFF BELOW ----------><br />
<!---------------------------------------------><br />
: [[Oliver's Tips'n'Tricks]]<br />
: [[Oliver's Video Games]]<br />
: [[HTML/CSS for Myspace Documentation]]<br />
<!---------------------------------------------><br />
<!----------- END OF OLIVERS STUFF ------------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center><br />
<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #abd5f5; background-color:#f5d0d0; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things yet to be Wikiized</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-------- ADD NOT-WIKIIZED STUFF HERE --------><br />
<!---------------------------------------------><br />
* [http://www.sjbaker.org The main website]<br />
* [http://www.sjbaker.org/steve Steve Baker's Home Page]<br />
* [http://www.oliverbaker.org Oliver Baker's Home Page]<br />
* [http://www.sjbaker.org/geocache Fun with GeoCaching]<br />
* [http://www.sjbaker.org/telamom The Even Less Authorized MINI Owner's Manual]<br />
* [http://www.sjbaker.org/humor The Humor Section]<br />
* [http://www.sjbaker.org/wordsearch-o-matic WordSearch-O-Matic]<br />
* [http://www.sjbaker.org/colortalk/index.html Black is white, Magenta is a shade of Green and Yellow isn't necessarily Yellow]<br />
* [http://www.sjbaker.org/devcon5/talk.html WebGL talk, given at DefCon5 converence in Austin] (see also [http://www.khronos.org/webgl/wiki_1_15/images/Devcon5_Trevett_WebGL_Ecosystem_and_Overview_Sep11.pdf]).<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things that aren't those things.</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!------------ ADD MISC STUFF HERE ------------><br />
<!---------------------------------------------><br />
* [[The sad demise of Chubb-Chubb the MINI]]<br />
* [[Family Photos 2013]]<br />
* [[Family History]]<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Family_History&diff=2064Family History2014-01-13T03:45:04Z<p>SteveBaker: Created page with "== Joseph J D Rogers == 1901 England Census * Age: 14 * Born: Abt 1887 * Relation to head: Son * Gender: Male * Father: William Rogers * Mother: Minnie Rogers * Birth Place: Isli..."</p>
<hr />
<div>== Joseph J D Rogers ==<br />
1901 England Census<br />
* Age: 14<br />
* Born: Abt 1887<br />
* Relation to head: Son<br />
* Gender: Male<br />
* Father: William Rogers<br />
* Mother: Minnie Rogers<br />
* Birth Place: Islington, London, England<br />
* Civil Parish: Islington<br />
* Town: London<br />
* County: London<br />
* Country: England<br />
* Household members:<br />
** William Rogers - Age 36<br />
** Minnie Rogers - Age 37<br />
** Ada S A Rogers - Age 16<br />
** Joseph J D Rogers - Age 14<br />
** Albert F Rogers - Age 13<br />
** Matilda E Rogers - Age 11<br />
** William H F Rogers - Age 6<br />
** Lily E L Rogers - age 10 months<br />
<br />
== Kenneth Gordon Weymouth ==<br />
Death Index, 1916-2007<br />
* Born: 23 Dec 1923<br />
* Date of Registration: Jan 2007<br />
* Age at Death: 84<br />
* Registration District: Nsomerset<br />
* Inferred County: Somerset<br />
* Volume: -1<br />
* Page: -1<br />
* Register Number: 104C<br />
* District and Subdistrict: 307/1A<br />
* Entry number: 277<br />
<br />
== Leonard William J Pole ==<br />
FreeBMO Birth Index, 1837-1915.<br />
* 1900: Birth: Axbridge, Somerset.<br />
* 1914-1920: Military, Red Cross Orderly (Age 14 #17129)<br />
* 1923: Residence 223 Brixton road, Lambeth (Age 23, Address on Marriage certificate)<br />
* 1928: Death, London (Age 28)<br />
<br />
British Army WWI Medal Rolls Index Cards, 1914-1920 (1 citation)<br />
* Sept 1928, Death, St.Giles Gloucestershire, England.<br />
<br />
1901 Census:<br />
* Name: Leonard W J Pole.<br />
* Sibling: Dorothy R L Pole<br />
* Father: Robert W J Pole<br />
* Birth: abt 1900 in Weston-Super-Mare, Somerset<br />
* Residence: 1901 in Weston-Super-Mare, Somerset<br />
<br />
1911 Census:<br />
* Name: Leonard, William J Pole.<br />
* Sibling: Dorothy Hannah L Pole<br />
* Father: Robert William Y Pole<br />
* Birth: Abt 1900, in Weston Super Mare, Somerset.<br />
* Residence: 02 Apr 1911 in Weston Super Mare, Somerset.<br />
<br />
== Laura M W Baker ==<br />
Death Index<br />
* Birth date: abt 1910<br />
* Date of Registration: Dec 1938<br />
* Age at Death: 28<br />
* Registration District: Uxbridge<br />
* Inferred County: Middlesex<br />
* Volume: 3a<br />
* Page: 66<br />
<br />
== Albert Goldson ==<br />
1911 Census:<br />
* Name: Albert Goldson<br />
* Age in 1911: 8<br />
* Estimated Birth Year: About 1903<br />
* Relation to head: Son<br />
* Gender: Male<br />
* Birth Place: Yaxham, Norfolk<br />
* Civil Parish: Tasburgh and Stratton St Michael<br />
* County: Norfolk<br />
* Country: England<br />
* Street Address: Church Farm, Stratton St Michael<br />
* Registration District: Depwade<br />
* Registration District Number: 230<br />
* Sub-Registration district: Stratton<br />
* ED, insititution or vessel: 13<br />
* Household Schedule number: 132<br />
* Piece: 11467<br />
* Household members:<br />
** Arthur Goldson - Age 35<br />
** Mary Goldson - Age 30<br />
** Albert Goldson - Age 8<br />
** Philip Goldson - Age 4</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Main_Page&diff=2063Main Page2014-01-13T03:44:52Z<p>SteveBaker: </p>
<hr />
<div>__NOTOC__<br />
[[Image:Bakercoat lowcontrast.png|right]]<br />
[[Image:Bakercoat lowcontrast.png|left]]<br />
[[Image:Welcome.png|center]]<br />
<br />
== Welcome to Wikiid! ==<br />
<br style="clear:both" /><br />
<big>[http://www.fmbaker.com '''FOR RENT: Our beautiful, energy-efficient home in the woodland south of the Dallas/Ft.Worth Metroplex''']</big><br />
<p><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; <br />
font-weight:bold;">Guides and FAQ's</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW GUIDE/FAQ PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Wikiid templates|The Wikiid Site Map]]<br />
: [[The simplest possible guide to writing HTML]].<br />
: [[The simplest possible guide to writing MediaWiki]].<br />
: [[SVN server|The simplest possible guide to SVN]]<br />
: [[Makefile|The simplest possible guide to 'make' and Makefiles]]<br />
: [[C++: multiple source files|A simple guide to having multiple source files in C++]]<br />
: [[A Short Guide to C++ Pointers]]<br />
: [[A Short Guide to C++ class inheritance]]<br />
: [[A Short Guide to Data Structures]]<br />
: [[A Short Guide to 3D Graphics Performance testing]]<br />
: [[A Short Guide to writing server-side CGI programs in C++]]<br />
: [[A Short Guide to understanding C++ compiler errors]]<br />
: [[A Short Guide to AJAX programming]]<br />
: [[An Engineer's guide to Scrum]]<br />
: [[JavaScript notes]]<br />
: [[GLSL shaders|The simplest possible guide to GLSL shaders]]<br />
: [[Android Phone development from the Linux command-line]]<br />
: [[List of OpenSource software Steve has Worked On]]<br />
: [[List of FAQ's that Steve maintains]]<br />
: [[Tutorials for Kids]]<br />
: [[Concise Cg built-in function table]]<br />
: [http://gnosis.cx/publish/programming/sockets.html|David Mertz' socket programming guide]<br />
<!---------------------------------------------><br />
<!---------- END OF GUIDE/FAQ PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">OpenSource Game/Technical Pages</div><br />
<div style="solid #fad67d; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-- ADD NEW TECHNICAL PAGES BELOW THIS LINE --><br />
<!---------------------------------------------><br />
: [[Canvas 3D]]<br />
: [[Realistic Space Game]]<br />
: [http://www.oliverbaker.org/HamperBall HamperBall - A game we wrote in 10 days as a present for Tracy]<br />
: [http://www.fmbaker.com/samegame Our version of 'SameGame']<br />
: [http://www.sjbaker.org/tfog The Foot of God]<br />
: [[Unification]]<br />
: [[Lemur of Lima]]<br />
: [[gameTools]]<br />
: [[PLIB2|PLIB 2.0]]<br />
: [[videoTools]]<br />
: [[JavaScript in Wiki]]<br />
: [[A Simple 3D Scanner]]<br />
: [[MIDIfile player library]]<br />
: [[Arduino]]<br />
: [[Audio for Browser-based games]]<br />
<br />
<!---------------------------------------------><br />
<!---------- END OF TECHNICAL PAGES -----------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Steve's Fun Stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!----------- ADD STEVES STUFF HERE -----------><br />
<!---------------------------------------------><br />
: [[Pencil and paper games]]<br />
: [[Optical illusions]]<br />
: [[Measuring hard things with easy experiments]]<br />
: [[Collected Answers from the Wikipedia Reference Desk]]<br />
: [[Minipedia]] -- A place for Mini owners to share information.<br />
: [[Creative approaches to SPAM control]]<br />
: [[The History of The Teapot]]<br />
: [[The History of Tux the Linux Penguin]]<br />
: [[Cool Code list]]<br />
: [[Cruel Code list]]<br />
: [[Administrivia]]<br />
<!---------------------------------------------><br />
<!------------ END OF STEVES STUFF -----------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Oliver's stuff</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!---------- ADD OLIVERS STUFF BELOW ----------><br />
<!---------------------------------------------><br />
: [[Oliver's Tips'n'Tricks]]<br />
: [[Oliver's Video Games]]<br />
: [[HTML/CSS for Myspace Documentation]]<br />
<!---------------------------------------------><br />
<!----------- END OF OLIVERS STUFF ------------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center><br />
<br />
<center><br />
{| cellspacing="0" cellpadding="0" style="margin:0em 0em 1em 0em; width:100% background-color:white"<br />
| style="width:50%; vertical-align:top; border:1px solid #d5a5d5; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #abd5f5; background-color:#f5d0d0; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things yet to be Wikiized</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!-------- ADD NOT-WIKIIZED STUFF HERE --------><br />
<!---------------------------------------------><br />
* [http://www.sjbaker.org The main website]<br />
* [http://www.sjbaker.org/steve Steve Baker's Home Page]<br />
* [http://www.oliverbaker.org Oliver Baker's Home Page]<br />
* [http://www.sjbaker.org/geocache Fun with GeoCaching]<br />
* [http://www.sjbaker.org/telamom The Even Less Authorized MINI Owner's Manual]<br />
* [http://www.sjbaker.org/humor The Humor Section]<br />
* [http://www.sjbaker.org/wordsearch-o-matic WordSearch-O-Matic]<br />
* [http://www.sjbaker.org/colortalk/index.html Black is white, Magenta is a shade of Green and Yellow isn't necessarily Yellow]<br />
* [http://www.sjbaker.org/devcon5/talk.html WebGL talk, given at DefCon5 converence in Austin] (see also [http://www.khronos.org/webgl/wiki_1_15/images/Devcon5_Trevett_WebGL_Ecosystem_and_Overview_Sep11.pdf]).<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
| style="padding:0em 0.5em 0em 0.5em;" |<br />
| style="width:50%; vertical-align:top; border:1px solid #fad67d; background-color:#faf6ed;" |<br />
<div style="border-bottom:1px solid #fad67d; background-color:#faecc8; padding:0.2em 0.5em 0.2em 0.5em; font-size:110%; font-weight:bold;">Things that aren't those things.</div><br />
<div style="solid #f5c5c5; padding:0.4em 1em 1em 1em;"><br />
<!---------------------------------------------><br />
<!------------ ADD MISC STUFF HERE ------------><br />
<!---------------------------------------------><br />
* [[The sad demise of Chubb-Chubb the MINI]]<br />
* [[Family Photos 2013]]<br />
* [[Family History]]<br />
<!---------------------------------------------><br />
<!---------- END OF NOT-WIKIIZED STUFF --------><br />
<!---------------------------------------------><br />
</div><br />
|}<br />
</center></div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=Family_Photos_2013&diff=2062Family Photos 20132014-01-07T17:15:57Z<p>SteveBaker: /* Restored Photos */</p>
<hr />
<div>== Wedding Photos (1954) ==<br />
{{Img|MumPix_001a.png|200px}}<br />
{{Img|MumPix_002a.png|200px}}<br />
{{Img|MumPix_004a.png|200px}}<br />
{{Img|MumPix_005a.png|200px}}<br />
{{Img|MumPix_006a.png|200px}}<br />
{{Img|MumPix_007a.png|200px}}<br />
{{Img|MumPix_016a.png|200px}}<br />
{{Img|MumPix_033c.png|200px}}<br />
<br />
== Flying Doctor service: Kenya (circa 1967) ==<br />
{{Img|MumPix_010c.png|200px}}<br />
{{Img|MumPix_011a.png|200px}}<br />
{{Img|MumPix_011b.png|200px}}<br />
{{Img|MumPix_011c.png|200px}}<br />
{{Img|MumPix_011d.png|200px}}<br />
{{Img|MumPix_011e.png|200px}}<br />
{{Img|MumPix_011f.png|200px}}<br />
<br />
== Suki the Samoyed ==<br />
{{Img|MumPix_008b.png|200px}}<br />
{{Img|MumPix_009c.png|200px}}<br />
{{Img|MumPix_033e.png|200px}}<br />
<br />
== Oliver ==<br />
{{Img|MumPix_041a.png|200px}}<br />
{{Img|MumPix_042a.png|200px}}<br />
{{Img|MumPix_042b.png|200px}}<br />
{{Img|MumPix_043a.png|200px}}<br />
{{Img|MumPix_043b.png|200px}}<br />
{{Img|MumPix_043c.png|200px}}<br />
{{Img|MumPix_049c.png|200px}}<br />
{{Img|MumPix_049d.png|200px}}<br />
{{Img|MumPix_029a.png|200px}}<br />
{{Img|MumPix_050a.png|200px}}<br />
{{Img|MumPix_050c.png|200px}}<br />
== Restored Photos ==<br />
Before and after:<br><br />
{{Img|MumPix_022a.png|200px}}<br />
{{Img|MumPix_022b.png|300px}}<br />
<br><br />
{{Img|MumPix_023a.png|200px}}<br />
{{Img|MumPix_023b.png|200px}}<br />
{{Img|MumPix_023c.png|300px}}<br />
<br><br />
{{Img|MumPix_018a.png|200px}}<br />
{{Img|MumPix_018m.png|250px}}<br />
<br><br />
{{Img|MumPix_019j.png|200px}}<br />
{{Img|MumPix_019m.png|250px}}<br />
<br><br />
{{Img|MumPix_019c.png|200px}}<br />
{{Img|MumPix_019n.png|250px}}<br />
<br><br />
{{Img|MumPix_020c.png|200px}}<br />
{{Img|MumPix_020m.png|250px}}<br />
<br><br />
{{Img|MumPix_048a.png|200px}}<br />
{{Img|MumPix_048m.png|250px}}<br />
<br><br />
{{Img|MumPix_047e.png|200px}}<br />
{{Img|MumPix_047m.png|250px}}<br />
<br><br />
<br />
== Other Photos ==<br />
<gallery><br />
File:MumPix_008a.png<br />
File:MumPix_008c.png<br />
File:MumPix_008d.png<br />
File:MumPix_008e.png<br />
File:MumPix_008f.png<br />
File:MumPix_008g.png<br />
File:MumPix_009a.png<br />
File:MumPix_009b.png<br />
File:MumPix_009d.png<br />
File:MumPix_009e.png<br />
File:MumPix_010a.png<br />
File:MumPix_010b.png<br />
File:MumPix_013a.png<br />
File:MumPix_014a.png<br />
File:MumPix_015a.png<br />
File:MumPix_017a.png<br />
File:MumPix_018a.png<br />
File:MumPix_018b.png<br />
File:MumPix_018c.png<br />
File:MumPix_018d.png<br />
File:MumPix_018e.png<br />
File:MumPix_018f.png<br />
File:MumPix_018g.png<br />
File:MumPix_019a.png<br />
File:MumPix_019b.png<br />
File:MumPix_019c.png<br />
File:MumPix_019d.png<br />
File:MumPix_019e.png<br />
File:MumPix_019f.png<br />
File:MumPix_019g.png<br />
File:MumPix_019h.png<br />
File:MumPix_019i.png<br />
File:MumPix_019j.png<br />
File:MumPix_019k.png<br />
File:MumPix_020b.png<br />
File:MumPix_020c.png<br />
File:MumPix_020d.png<br />
File:MumPix_020e.png<br />
File:MumPix_021a.png<br />
File:MumPix_022a.png<br />
File:MumPix_023a.png<br />
File:MumPix_029b.png<br />
File:MumPix_029c.png<br />
File:MumPix_030a.png<br />
File:MumPix_030b.png<br />
File:MumPix_030c.png<br />
File:MumPix_030d.png<br />
File:MumPix_030e.png<br />
File:MumPix_030f.png<br />
File:MumPix_030g.png<br />
File:MumPix_030h.png<br />
File:MumPix_030i.png<br />
File:MumPix_030j.png<br />
File:MumPix_031a.png<br />
File:MumPix_031b.png<br />
File:MumPix_031c.png<br />
File:MumPix_031d.png<br />
File:MumPix_031e.png<br />
File:MumPix_031f.png<br />
File:MumPix_031g.png<br />
File:MumPix_031h.png<br />
File:MumPix_032a.png<br />
File:MumPix_032b.png<br />
File:MumPix_032c.png<br />
File:MumPix_032d.png<br />
File:MumPix_032e.png<br />
File:MumPix_032f.png<br />
File:MumPix_032g.png<br />
File:MumPix_032h.png<br />
File:MumPix_032i.png<br />
File:MumPix_033a.png<br />
File:MumPix_033b.png<br />
File:MumPix_033d.png<br />
File:MumPix_033f.png<br />
File:MumPix_034a.png<br />
File:MumPix_034b.png<br />
File:MumPix_034c.png<br />
File:MumPix_034d.png<br />
File:MumPix_034e.png<br />
File:MumPix_034f.png<br />
File:MumPix_041b.png<br />
File:MumPix_041c.png<br />
File:MumPix_042c.png<br />
File:MumPix_042d.png<br />
File:MumPix_043d.png<br />
File:MumPix_044a.png<br />
File:MumPix_044b.png<br />
File:MumPix_044c.png<br />
File:MumPix_044d.png<br />
File:MumPix_045a.png<br />
File:MumPix_045b.png<br />
File:MumPix_046a.png<br />
File:MumPix_046b.png<br />
File:MumPix_046c.png<br />
File:MumPix_046d.png<br />
File:MumPix_046e.png<br />
File:MumPix_046f.png<br />
File:MumPix_046g.png<br />
File:MumPix_047a.png<br />
File:MumPix_047b.png<br />
File:MumPix_047c.png<br />
File:MumPix_047d.png<br />
File:MumPix_047e.png<br />
File:MumPix_047f.png<br />
File:MumPix_047g.png<br />
File:MumPix_047h.png<br />
File:MumPix_048a.png<br />
File:MumPix_048b.png<br />
File:MumPix_048c.png<br />
File:MumPix_048d.png<br />
File:MumPix_048e.png<br />
File:MumPix_048f.png<br />
File:MumPix_049a.png<br />
File:MumPix_049b.png<br />
</gallery><br />
<br />
== Letters ==<br />
{{Img|MumPix_024a.png|200px}}<br />
{{Img|MumPix_025a.png|100px}}<br />
{{Img|MumPix_026a.png|200px}}<br />
{{Img|MumPix_027a.png|100px}}<br />
{{Img|MumPix_028a.png|200px}}<br />
<br />
== Documents ==<br />
{{Img|MumPix_035a.png|200px}}<br />
{{Img|MumPix_035b.png|200px}}<br />
{{Img|MumPix_036a.png|200px}}<br />
{{Img|MumPix_037a.png|200px}}<br />
{{Img|MumPix_038a.png|200px}}<br />
{{Img|MumPix_039a.png|200px}}</div>SteveBakerhttps://sjbaker.org/wiki/index.php?title=File:MumPix_047m.png&diff=2061File:MumPix 047m.png2014-01-07T17:01:40Z<p>SteveBaker: </p>
<hr />
<div></div>SteveBaker