Open Hardware Cooperative

When you work on a project, you don't have to or shouldn't have to
reinvent the wheel. Someone else has probably spent a lot of time
figuring out some little piece of the puzzle that you need to complete
(or start on) your hardware or lab project. These puzzle pieces are
spread out over the internet so far and wide that it's hard to work
with. But the software folks solved this type of problem by something
called dependency resolution. The way dependency resolution works is
as follows: some software requires (depends on) other software that
must be installed first, and so a program looks at this socially
currated metadata and makes a decision like whether or not something
else has to be installed first.. and it's exactly the same with
manufacturing and building things. In order to build a lathe you need
to cast metal, and in order to cast metal you'll need to make fire,
before you can make fire you will need to find flint or sticks or
maybe matches, and so on.

In the software world, the most phenomenally amazing example of this
is the (free) Debian project [1]. Debian is a distribution or
collection of software involving three main ingredients: (1) GNU tools
[2], (2) the Linux kernel [3] to interface to the hardware, and (3)
debian packages. There is a software system that they give you that
looks at what software you currently have installed, and then
determines which other software has to be installed when you want to
install something completely random out of their collection. I have
trouble conveying how important or how huge debian is to people, but
Wikipedia has helped me a few times: "The cost of developing all the
packages included in Debian 4.0 etch (283 million lines of code),
using the COCOMO model, has been estimated to be close to $13 billion
USD. As of April 2, 2009, Ohloh estimates that the codebase of the
Debian GNU/Linux project (45 million lines of code), using the COCOMO
model, would cost about $819 million USD to develop." [4] There was a
really wonderful overview of this written once too, trying to explain
how much of an impact debian has on the internet:

"Debian is the largest independent of the longest-running of the Free
Software Distributions in existence. There are over 1000 maintainers;
nearly 20,000 packages. There are over 40 "Primary" Mirrors, and
something like one hundred secondary mirrors (listed here - I'm
stunned and shocked at the numbers!). 14 architectures are supported -
13 Linux ports and one GNU/Hurd port but only for i386 (aww bless
iiit). A complete copy of the mirrors and their architectures,
including source code, is over 160 gigabytes."

"At the last major upgrade of Debian/Stable, all the routers at the
major International fibreoptic backbone sites across the world
redlined for a week."

"...  To say that Debian is "big" is an understatement of the first order." [5]

.. and it goes on and on. For some reason, though, nobody knows about
it. I suspect that this is because you have to be a super geek to even
know about debian, and a doubly super geek to even use it and know how
it works. It truly simplifies my life on my computer, and I am amazed
when I see how others install software. And when I sit and think about
it, that's exactly how it is with hardware projects!

[1] http://debian.org/

[2] http://gnu.org/
[3] http://kernel.org/
[4] http://en.wikipedia.org/wiki/Debian
[5] http://www.advogato.org/article/972.html

So I've been leveraging my knowledge of software to do this dependency
resolution method with manufacturing and the art of building things.
The goal here is to literally be able to download hardware over the
web. I want to tell my computer that I want an F16, and I want an F16
to be assembled and made to appear before my eyes. This is what the
SKDB project [1] is about. SKDB stands for "Social
Engineering-Knowledge Database". I will immediately admit that I am
absolutely terrible at naming things. My main cohort on this project
has been Ben Lipkowitz [2]. Apparently we met in 2006 and neither of
us realized it (on the internet), and then in early 2008 we met up
again after I read Kevin Kelly's blog [3] and decided to search for a
deceased man named David Gingery because of what KK wrote:

"Recently a guy re-invented the fabric of industrial society in his
garage. The late Dave Gingery was a midnight machinist in Springfield,
Missouri who enjoyed the challenge of making something from nothing,
or perhaps it is more accurate to say, making very much by leveraging
the power of very little. Over years of tinkering, Gingery was able to
bootstrap a full-bore machine shop from alley scraps. He made rough
tools that made better tools, which then made tools good enough to
make real stuff."

Kevin Kelly also wrote some other thoughtful pieces on civilization,
as if it was an organism or creature or monster:

"I've been thinking of civilization (the technium) as a life form, as
a self-replicating structure. I began to wonder what is the smallest
seed into which you could reduce the "genes" of civilization, and have
it unfold again, sufficient that it could also make another seed
again. That is, what is the smallest seed of the technium that is
viable? It must be a seed able to grow to reproduction age and express
itself as a full-fledge civilization and have offspring itself --
another replicating seed."

"This seed would most likely be a library full of knowledge and
perhaps tools. Many libraries now contain a lot of what we know about
our culture and technology, and even a little bit of how to recreate
it, but this library would have to accurately capture all the
essential knowledge of cultural self-reproduction. It is important to
realize that this seed library is not the universal library of
everything we know. Rather, it is a kernel that contains that which
cannot be replicated and that which when expanded can recover what we
know." [4]

It was this concept of a seed library of knowledge that was planted in
me, and on which Ben Lipkowitz and I expanded on in early 2008. Ben
and I are very similar and yet quite different. We both have a strong
history in programming, and so we were both able to share the concept
of debian, and early 2008 is when we started to work on SKDB. I
quickly learned that Ben had some unusual talents and interests. One
of his earlier projects he carried out was making a Gingery lathe,
which is a lathe he built from scratch, pouring the molten metals into
the shape of a metal-cutting lathe. Really impressive (there's some
photos later in this email).

[1] http://designfiles.org/dokuwiki/skdb
[2] http://fennetic.net/
[3] http://www.kk.org/thetechnium/archives/2007/03/bootstrapping_t.php

[4] http://www.kk.org/thetechnium/archives/2006/02/the_forever_boo.php

The idea for SKDB is that volunteer package maintainers encode open
source hardware projects currated from the web into a standard
package. These standard packages are fairly simple, it's just a folder
with some specific files, so almost anyone can make these packages.
Right now SKDB has only a handful of packages: screw, lego, bearings,
washers. When you download a package, the idea is that you're also
downloading the hardware, or the instructions to make the hardware
given what you have in your inventory. Because this project is still
"just" beginning, it's true that it can't be literal at the moment,
that the hardware can't physically be "beamed" over like the Star Trek
replicators and matter transporters, but this is close enough. SKDB
consists of two parts: (1) packages of open source hardware, and (2)
instruction generation. What I mean by instruction generation is that
the idea is that it will eventually spit out better instructions for
how to build a project. I've found that Ikia instructions and lego kit
instructions are some good examples of where I want to go. There's an
entire website [1] called Instructables where users type out
instructions for various projects. Unfortunately the quality is poor,
and that's why I'm interested in a computational method of generating
instructions for assembling projects. If you have a computational
representation of instructions, it's not a big deal to have either (1)
a human do it, or at a later time (2) a computer to follow the
instructions, like CNC machines and automated manufacturing equipment.
However! If you start off only with human readable instructions,
you're in a world of hurt, for you will have to wait for artificial
intelligence to be able to read in the information. But when you start
with package maintainers that are trained to make computational
instructions that can *then* be rendered into a human readable format,
you're much much better off. There's one primary website that
demonstrates the idea of a hardware repository called thingiverse.com
[2]-- but for various technical reasons, it's not adequate for my
purposes. Thingiverse is a website of "meshes", which is 3D surface
information. CAD data- for computer-aided design- is from engineers,
and maintains information about constraints, requirements, and even
solid geometries. Meshes are more often used in animation, film, and
3D gaming where it only matters what the model looks like. The
thingiverse users are using meshes because they are using 3D printers
like the RepRap [3] or MakerBot [4].

[1] http://instructables.com/
[2] http://thingiverse.com/

[3] http://reprap.org/
[4] http://makerbot.com/

So, after working on SKDB for a while, I started to realize that I
need to actually verify the data and information that I was encoding
into the software. It is not useful to be working in a vacuum or a
bubble. I need to know that I am not bullshitting people when I tell
them that the length of a certain rod needs to be 10cm, or 12cm, and I
need to get my error bars correct "or else". Meanwhile, on the
internet, there has been growing this community of supporters in the
Open Manufacturing group [1]. At openmanufacturing.org, the idea is to
bring software development methodologies to the physical world. The
mailing list [2] has been somewhat of an oasis on the web for
like-minded thinkers and doers-- attracting people like Marcin
Jakubowski of Factor E Farm, Michel Bauwens of the P2PFoundation,
Joseph Jackson, Philippe van Nedervelde, Paul D. Fernhout, Todd
Huffman, Eugen Leitl, Smári McCarthy, and various others. All around
this concept of open source hardware and open manufacturing: where
designs and schematics are provided and we're not afraid to build each
other's machines, tools and parts. Where we're allowed to stand on the
shoulders of giants, where we don't have to reinvent the wheel. Many
of the participants either directly manage a fablab, hackerspace, or
some other machine shop, or are somehow involved in those initiatives.
A fablab is a cross between a machine shop and a wetware lab, where
people can come to make (almost) anything. Tools and various
technologies are put into the fablab so that as much as possible can
be accomplished. One of the downsides of the fablab initiative is that
it's an academic project geared towards answering a question, "What
would third world country citizens make?" [3]. As a consequence,
fablabs have all the tools to make (almost) anything.. except for
making another fablab itself! They buy really, really expensive
equipment, and it requires huge academic and federal grants to get a
fablab up and running successfully ($100k+). There's about 20 to 30 of
these fablabs worldwide. A more broad, general case of this is a
hackerspace, which people have been setting up on there own. There's
hundreds of these [4]. They might not be as well funded, but it's a
place where people come to share their tools, projects and work
together to learn new things, hack, etc.

[1] http://openmanufacturing.org/
[2] http://groups.google.com/group/openmanufacturing

[3] http://www.ted.com/talks/neil_gershenfeld_on_fab_labs.html
[4] http://hackerspaces.org/wiki/List_of_Hacker_Spaces

So in early 2009 I realized that I needed to get a hackerspace,
fablab, techshop, *something* together so that I could make sure I
wasn't bullshitting people- that the data was right, that instructions
work as written/generated, and so on. So, I humorously sent out a very
simple email to the internet that plainly stated, "Dear interweb,
please give me a fablab. Thank you, sincerely, Bryan." Surprisingly
enough someone named Les Filip here in Austin, Texas replied. He has
had a 4,000 square foot shop for the past 20 years. At the time I
wrote the email, I was living on campus at the University of Texas at
Austin. But where I'm living now- his shop is 0.5mi away from me. Les
and I met up, and we found out that we're on the same wavelength for
almost all of our projects, and even some of our dreams (a critical
eye will find a copy of "The Singularity is Near" sitting on a dusty
shelf in a corner of his shop!). After touring his shop and making
some plans with Les, I eagerly wrote to Ben Lipkowitz. Within 2 weeks
Ben was moved down here into Austin, and he spent 3 months living with
Les. After that he moved in with me when I moved into an apartment.
Unfortunately it was a one bedroom apartment, so he slept in the
closet. It turns out that he always sleeps on the floor anyway- an
unusual character. So the year of 2009 was a spectacularly intense
year for the both of us- we were programming day and night.

http://austinhackerspace.org/

I suppose I should mention that when I was at UT Austin, I was
employed in a lot of different labs (simultaneously), and in
particular I was working in the Automated Design Lab[1] under Matt
Campbell[2] in the mechanical engineering department. I asked Matt if
he wanted to give Ben a job, but after learning that Ben had a degree
in microbiology, he said no. Ironically, when Ben physically showed up
in late May 2009, Matt gave him a job. So we were both working in the
lab for the summer period, and my employment continued after the
summer while his did not (budgets). Matt had hired us under an NSF
grant for a project called VOICED, Virtual Organization for Innovative
Conceptual Engineering Design. It's a multi-university collaboration,
and it's the original reason I met Matt. I showed up in his office one
day (late 2008) and said, "I am working on this project I call SKDB",
and Matt sat there and said "Cool, do you want a job doing it?".
VOICED is somewhat similar to SKDB, but I have kept the projects
separated because I don't want IP issues or entanglements. I have
heard too many horror stories.

[1] http://www.me.utexas.edu/~adl/
[2] http://www.me.utexas.edu/~campbell/

So, Les showing up was a very good thing. Unfortunately, it turns out
that Les has a weird sleep schedule, and he's awake at peculiar hours.
This wouldn't be much of a problem except that Ben has a weird sleep
schedule too. He's "out of phase" and can't help but stay up one hour
later each day, so he cycles on this 25 hour schedule and every 2
weeks is synched up with the rest of us. Consequently when he was
living with Les, they didn't get anything at all done. And I had
obligations at the university. Now that I no longer have those
obligations, I've been working with Les at the shop much more often. A
week ago I was helping him and a team to build walls for storage rooms
in the shop. Jason Wohlfahrt took some photos:

http://designfiles.org/~bryan/photos/2010-01-02/

This is where I plan to do some building soon. I have some projects
lined up that I want to execute, so that they can be put into SKDB and
everyone else can start testing them out. In particular I've been
thinking about a 4-axis (3 space, 1 time) CNC machine, the CubeSpawn
project, and recently a DNA synthesizer and a new version of OpenEEG.
I'll explain each shortly.

There's an open source 2-space 1-time axis CNC machine out there
called the mechmate [1]. Les has one assembled and ready to go at his
shop, it's 11x6 feet in size with a working area of 10x5. It's
massive. I need to hook up some electronics to it and get it working.
Interestingly enough, Ben used to be a programmer on the EMC project
("Enhanced Machine Controller") [2], free and open source software
that is made just for this problem. What you do is you hook up a
computer's printer port to servo controllers directly and use a
technique known as pulse width modulation to control the servos
directly. This is clever: the normal way involves making custom PCBs,
throwing together all sorts of electronics, or buying expensive
proprietary equipment. The downside of the mechmate is that the
schematics are all in a PDF file format, meaning either I or someone
else will have to do all of the diagrams in order to make it
compatible with SKDB. The schematics are just images, not CAD data.
:-( But the upside is that we have one mostly built already.

[1] http://mechmate.com/
[2] http://linuxcnc.org/

Interestingly enough, many years ago I heard about a project to build
an open source CNC machine sponsored by a website called MFG [1]. MFG
is just this giant portal that hooks up design engineers with
manufacturers who can do a quote on how much it would cost to produce
a design. The owner, Mitch Free, dropped $20k on an open source CNC
machine project (I don't know why so much), and the results were
fantastic, there's a really wonderful video here [2]. The guy who
built and designed the machine was Jorge Barrera, someone out of MIT.
I haven't been able to find Jorge for a very long time. So, this last
week I pulled out the trusty phone and called Mitch Free. I got his
answering machine, left a message, but got a call back a few hours
later. Apparently he has the design files sitting on a computer in his
house, and he's been waiting for someone like me to come along to make
use of them. He's very excited about SKDB and it's exactly what he's
been wanting to do. He's been holding off releasing the design files
until he has a better idea of what he wants to do with this "open
source hardware" he's developed. I'm still waiting for a follow-up
from him and will be giving him a call in the next day or so to see if
I laid it on too heavy with my email to him! I sent him an email
follow-up after we chatted on the phone so that he could see some
links and get a better idea of who I am and what the heck I'm rambling
on about.

[1] http://mfg.com/

[2] http://www.youtube.com/watch?v=OnfW9ggtiEk

Before I get back to the other projects, I mentioned to Mitch, and
some other people lately, one of the recent developments in SKDB. I
made a web server that interfaces SKDB to the outside world so that
people don't have to use Linux or the command line. I tell people to
think of it as a cross between thingiverse.com on steroids and
instructables.com mated with a cluestick. On the site, users can log
in to work on hardware projects (or they can download the hardware and
physically/digitally work on it with whatever tools they are
accustomed to). Next to every project on this website there are two
buttons: "make" and "buy". The make button generates instructions or a
plan that can be executed by the machines that a user has (even if it
the user just has one "machine"- a person!). The "buy" button is a
very special button.

The idea behind the "buy" button is that different people are willing
to go to different lengths or troubles. Ben Lipkowitz was willing to
build his lathe from scratch. However, not everyone wants to forge
their own screws, and not everyone wants to summon their own Big Bang
or to create their own quarks and universes just to make a sandwhich.
For this reason, the "buy" button is kind of a way to opt out of the
tech tree at a certain point. It's the point at which the user decides
it's time to spend some money and purchase something practical. Nobody
can do anything in a vacuum or a void- they have to have *something*
to start with, like their own simple house repair tools, screw
drivers, rubber bands, something! Back in 2009 I released some plans
on the do-it-yourself genetic engineering mailing list on how to make
microfluidic circuits out of pieces of glass, scotch tape and a
sharpie to harness the hydrphobic effects of the ink, water and
laminar flows. So in that situation you would need to at least have
some glass, sharpies and tape, etc. I can't help people make big bangs
(yet).

So when the user presses "buy", SKDB is assembling them a custom Bill
of Materials. This past week an interesting opportunity popped up on
my radar with Octopart [1]. Octopart is an electronics part search
engine. What they do is they feed in vendor datasheets into their
system and give price details and various parametric information about
different electronics parts, as well as mechanical parts and so on.
For SKDB's purposes of letting users opt out of the tech tree, this is
very interesting. I quickly wrote some code after talking with
Octopart's head guy Andres Morey, and the code [2] interfaces SKDB to
octopart to find parts that match a certain specification. The next
step on this front is a program that I should write that automatically
orders the parts from the vendors. Most vendors are *not* going to
respond to my emails and phone calls, but I still have a way to have a
computer automatically place orders across 30+ suppliers for a user,
and consolidate all the ordering/shipping information in one location.
This way the user can just see a BOM, see which parts they're buying,
and everything comes to their door. With instructions :-). Maybe one
day money won't have to be a part of this process?

[1] http://octopart.com/

[2] http://designfiles.org/skdb/octopart.py

The other physical hardware project that I have been looking into with
a critical eye is CubeSpawn [1]. CubeSpawn is the brainchild of James
Jones out of San Antonio, Texas. The concept is simple: standardized
form factors allowed the personal computer industry to flourish, and
perhaps it can do the same for the homebrew fabrication community as
well. So the form factor is basically a cube that can be scaled up and
down in size. Inside this cube you mount an open source hardware
project, like a CNC machine (perhaps Mitch Free's CNC machine?), or
the MakerBot 3D printer. With these cubes laying around all over the
place, you always have spare parts to build things with. I'm willing
to try it out and see how things go.I have been working to incorporate
CubeSpawn's dimensions and CAD models into SKDB. James and I met this
last week for the first time (it was a 2 hour drive both ways for
him). He's a really nice guy..  actually everyone involved in this is,
to be honest. Oddly enough James has been asking for $10k to get the
CubeSpawn project started, but I think he can get things rolling for
significantly less. I have dimensions and some models from him
already, and have played with a few cubes he drove down, so it's not
the end of the world if he doesn't get the funding he thinks he needs.

[1] http://cubespawn.com/

Jason Wohlfahrt is a friend I recently made back in November at an
event called 3 Day Startup. Jason has now been successfully
indoctrinated into the world of futurism, singularities, transhumanism
and technological acceleration :-). He has some money saved up and is
spending some of it on a MakerBot, the 3D printer. He finally put in
the order yesterday (I think). Once it arrives, I'm the guy who will
be assembling it. In particular I'm thinking of mounting it into one
of the CubeSpawn cubes.

Michael Grube is a fellow that I met many many years ago on the
internet, and now we've recently come back into contact. He's trying
to convince me to help him build an OpenEEG [1] setup with
32-channels. I'm not really convinced that EEG makes a good
brain-computer interface. But I'm willing to hear him out some more.
Might turn out to be an interesting project to include in SKDB? I am
not yet convinced actually.. the potential for EEG seems to be very
low, and I can't find any papers in the literature that harp on about
future potential advancements. The best EEG setups have been able to
give locked in paralysis patients up to 15 words per minute of typing
speed by thinking of "left arm" or "right arm" or "toes", and in some
cases the ability to control a prosthetic limb, but that's about it.
So I'm still wondering about this one. Michael might have to settle
for working on another project with me.

[1] http://openeeg.sourceforge.net/

Last but not least, someone from Caltech hit me up earlier today
asking about an open source DNA synthesizer project. I have a lot of
people wanting to build this sort of project. In the past the main
barrier to getting this done has been the cost of chemicals, so I was
drawing out some really elaborate pathways to synthesize
phosphramidites from chemicals and materials found in the average
kitchen. That was taking a very long time. But with some funding to
purchase chemicals to test with, and someone from Caltech (Winfree's
group), maybe a more traditional DNA synthesizer can be designed and
improved upon. Of course, I can also just buy one off of ebay for $300
and experiment with it for a while and see how it works. There's one
current DNA synthesizer project out there called PoSaM, but it's big
and bulky and costs $20k to build. Requires a nitrogen atmosphere. Not
what I want.

Last and certainly not least, I have been meeting so many amazing
people on the internet since I first came on it. I've been creating a
vehicle to channel, focus and leverage this awesome community of
hackers and engineers. In particular, it is called Gnusha [1], a co-op
for open source technologies. SKDB package maintainers are signed into
Gnusha. Projects like an open source SMT pick-and-place project (which
I've forgot to tell you about!) are set up in different locations,
like maybe in the Austin Hacker Space, and one at Marcin Jakubowski's
farm, and one at the Michigan RepRap User Group's (MURG's)
hackerspace. Profits from running the SMT machine (maybe it is hooked
up to a commercial website front-end) go back into the local shop for
overhead, but also back into the co-op so that overall there are
hundreds of these setups around the world contributing money back into
the pool. Then these funds are used to build more machines, and better
machines of all sorts- DNA synthesizers, CNC machines, SMT
pick-and-place machines, maybe one day molecular nanotechnology and
kinematic self-replicating machines or entire toolchains for
fabrication laboratories.

[1] http://gnusha.org/

Eugen Leitl also convinced me within the past few weeks (I'm not sure
when) that I should integrate NanoEngineer1 into SKDB. Nanoengineer1
is the open source nanotech CAD program that Nanorex developed a few
years back. Apparently there is no CAD software out in the world that
integrates macroscopic design engineering with the microscopic world,
like nano tech. Integrating the two softwares is easier than I thought
it would be because Nanoengineer1 is mostly written in python, just
like SKDB, so in some cases I can copy-and-paste code since it's all
open source and liberally licensed. Maybe one day this can help forge
a path to Freitas' and Merkle's diamond mechanosynthesis projects?

There has been so much positive support building around Gnusha. Even
before Gnusha was born there was this concept floating in our heads,
and I tried to aggregate it. Eric Hunting wrote about it and he called
it "ToolBook"- in general if you ever want to be blown away, just read
anything by Eric Hunting:

http://heybryan.org/om.html (in particular the top few links)

I should stop writing, but another recent update is that Nathan
McCorkle seems to have an interest in managing the microfluidics
subsection of SKDB. I need to rest my forearms for a while now and
then get back to work :-). So much to do! Also, like with anything in
life, there's so much that I have had to leave out, but if you ask
about anything in particular I am sure I can expound on it for hours.

Hope this rocks your socks off!

- Bryan
http://heybryan.org/
1 512 203 0507