Security: Not a new problem

Here’s an OLD story about famous scientist Richard Feynman, who had fun cracking the safes of all his fellow scientists working on the Manhattan project in WW2:
http://www.cs.virginia.edu/cs588/safecracker.pdf (this is a long read best left for an evening at home).

What’s interesting is how easily you can draw parallels to the security issues we face today.  You could almost swap the word “safe” with “web application”, and “atom bomb design” with “financial data”, and the story almost carries over to today. These safes/filing cabinets contained documents relating to the atomic bomb (ie: something worth protecting).

To break the safes, he used:

  • social techniques
  • default safe codes
  • known design defects

Sound familiar?  What’s funny, is the reaction to his activities was not to improve security, but to try keep him out of the rooms, and pretend the problem didn’t exist.

People, Process, and the Sausage Factory

In Product Development, we sometimes speak of “hiding the Sausage Factory”, meaning “hiding the complexities of software development and release” from our users. We want our users to enjoy using our products – they don’t need to know all the trials and tribulations it takes to get there.

In our Product Development Factory, we define standard processes and workflows, to bring some efficiency, consistency, and predictability to our work. However, we’re human – we’re not interchangeable cogs. Someone goes on vacation, people change roles, people move on – the successor may not do the same things in exactly the same way. There is an unwritten first step in every process: “Think”.

So I absolutely loved the following process story, that is ACTUALLY about sausage making and the importance of people in process, when I came across it on the This American Life podcast.

From https://www.thisamericanlife.org/241/20-acts-in-60-minutes/act-fourteen-8

In 1970, the Vienna Sausage Company of Chicago moved from the south end of the city to a new facility in the north end. The plant was brand new, state of the art, with perfect refrigeration, and spit clean. They move the production of their natural, old-world, hickory smoked, natural-casing hot dogs to this new facility. And it just isn’t as good as the product from their old facility. The hot dogs lack the right snap when you bit into them, and the color was more pink than red. Something was wrong.

Ingredients were the same, spices were the same, process was the same. Was the water different on the other side of town? They searched for a year and half, and could not identify the difference.

Then one night, a bunch of guys from the plant are out having a drink, gabbing about the good old days, back in the old plant on Maxwell Street. They start talking about this guy named Irving, one of those guys who knows everybody in the plant, has nicknames for everybody. And listen to what Irving’s job was. Every day, he would weave his way with the uncooked sausages through the maze of passageways in the old plant.

He would go through the hanging vents, where they hang the pastrami pieces, and it’s quite warm. And he would go through the boiler room, where they produced all the energy for the plant. He would go next to the tanks where they cook the corned beef, finally get around the corner, and in some cases, actually go up an elevator. And then he would be at the smokehouse. He would put it in the smokehouse and he would cook it.

And as they were telling stories about Irving– Irving this, Irving that– a light bulb goes off. In the fancy new modern plant, there was no Irving. Irving didn’t want to commute to the north side.

There was no maze of hallways. There was no half-hour trip where the sausage would get warm before they would cook it. In the new plant, they just stuffed the sausages in a cold room and cooked them in a smokehouse in the room next door to it. Irving’s trip was the secret ingredient that made the dogs red. So secret, even the guys who ran the plant didn’t know about it.

So they said, oh, my God, that is, of course, the reason. Why didn’t we know that? That’s the dumbest thing in the world to not realize. It’s right there.

How did they fix it? They built a new addition onto the plant about two years after moving in. In this room, they emulate the old area of the old plant… to simulate Irving’s walk across the old factory.

A process that was just a part of someone’s day, that no one had even recognized its significance. A human factor.

Fish Feeder Project – Part 2 – Completed!

After seeing the simple Automatic Fish Feeder on Thingiverse, I immediately ordered the required parts and set about modifying the design for my purposes.

Fish Feeder - Original Model
Fish Feeder – Original Model

I liked this particular design, as we only have a 2 bettas in 2 bowls, and we need to ensure only a couple of very tiny pellets drop with each feeding.  I did want to make a few changes.  It was not clear how the motor was controlled in the original design – I wanted to use an optical slot sensor to detect when to start and stop the rotating disc.

With OpenSCAD and Inkscape, I modified the original design.  I added slots to the rotating disc, which could be detected by the slot sensor, and modified the support to suit my fish bowl.

Completed Fish Feeder
Completed Fish Feeder

Parts and Assembly Notes
  • Arduino Nano
  • 9V DC power supply
  • Optical Slot Sensor (I used an Omron EESX1002-W3A – I just picked one at random from my local electronics store)
  • Geared motor, DealExtreme SKU 214121
  • TIP120 transistor
  • 1N4001 diode
  • Wires, resistors as per schematics
  • Prints of Support-RichardMod.stl, discwslots.stl, Lid_for_motor.stl (files below)

The motor is connected to pin D9, and wired as per https://www.arduino.cc/en/Tutorial/TransistorMotorControl

The slot sensor is connected to pin A0, and wired as per http://www.martyncurrey.com/connecting-an-photo-interrupter-to-an-arduino/
I glued the slot sensor to the side of the support

It took some code tweaking to get the disc to stop at every hole.  I couldn’t control the speed of the motor with pulse width modulation – perhaps because it’s geared, or there was too much friction, it just didn’t move unless I gave it the top speed.  I settled moving the disc in small increments, checking the measurement from the slot sensor, repeating until it sensed it was in the right position.

Demo

Once built, send a ‘1’ over the serial port to the Arduino, and it will advance the rotating disc to the hole.

Source files: http://www.hotelexistence.ca/projects/FishFeederFiles.zip

IT Process and Models over Time

I recently came across this article:
My 20-Year Experience of Software Development Methodologies

The author discusses the methodologies he’s followed on various projects through the years, discusses the issues with each, and, presents that these are “collective fictions” that allow development teams to collaborate, an idea presented in the book Sapiens to describe how societies function in larger groups.

It’s an interesting read, and also interesting to reflect, on the changing processes and models used since I started working in software development. In 2006, the organization I worked for talked about reaching CMMI Level 3, and following a waterfall development model. By 2013, we were attending sessions on Six Sigma. In recent years, the interest has been in Agile/SCRUM.

The author accepts that methodologies are required to function at scale, but ultimately, what’s important is that you have teams that trust each other, and a structure in which agreements can be found. It will be interesting to see which models are trending 12 years from now.