Many new things for me last week

Just a quick post about some new things I am proud to have learned in the past week (plus a bonus from the week before last).

Badgelife
On Friday, I received some new boards from OSHpark from a design I made two weeks ago (yes, just under two weeks from order to receipt). I had originally intended to hand-solder the 0805-sized components. My long term goal is to learn how to apply solder paste with a stencil and bake it in a reflow toaster – but I don’t have a stencil or a toaster. No fear: watching a few videos and doing some reading gave me confidence to go part way – using solder paste from a syringe and heating with a hot air gun.

After a bit of tweaking, I got it to work for me. And, oh, what a great feeling. Having this new skill has just opened up a whole new world of SMD components.

As an aside, I made the boards using Inkscape and the SVG2shenzhen plugin the week before last. I had tried to make a badge back in March, and didn’t know of this plugin, so I wasn’t to enthused to try again. But for my project this month, I really wanted to do a badge, and then found the plugin.

The plugin (new to me) makes it dead simple to make interesting boards based on artwork in Inkscape. So, yes, this means I’ll be making more fun boards.

New chip and circuits
This badge also is the first time I did something with Charlieplexed LEDs (yes, a new thing for me to attempt). No library, as I only have 6 LEDs and simple animation. Also, I’m using an ATtiny402, which is a new chip for me.

For the ATtiny402, I had to learn a whole new chip and about UPDI programming, and needed a new programmer. So I made one. I even used my SOIC8 clip for the first time (new!) to program the 402s.

And speaking of new programmers, I hacked the Chinese USBisp programmer that came with my BLtouch kit (see below) to be a generic AVR programmer.

Oh, my, so much new.

3D printer
As I mentioned, I installed the BLtouch automatic bed leveling gizmo on my Ender 3 Pro. OK, so I really didn’t mind leveling the bed manually – and I was quite good at it. But I hope this new addition to my printer will do a long way to making my leveling even better.

One other thing I did last week was modify the fan on my Raspberry Pi so that I could control it with a GPIO (new thing for me, of course). This is part of adding the RasPi with Octoprint to run my printer. Not there yet, but Octoprint will be the next big addition to my printer.

As an aside, for the past few months, I’ve been staying at my mother’s for a few weeks at a time. So I bring my printer with me, and my maker mother has me designing and printing stuff around the clock. Many of my family members enjoy what I’ve been making for them. This is the first time I have been giving prints to others. The new thing here is this week I got more requests, from folks I didn’t expect to want anything printed. That was a great feeling.

Summary
In the past week:

  • used solder paste and hot air gun to put components on a board
  • [two weeks ago, I designed that board with software new to me]
  • I made a programmer, of a new type to me, to program a chip, that was also new to me
  • Hacked another programmer
  • Did a Charlieplexed circuit on a board for the first time
  • Installed a BLtouch on my printer, and all that entails
  • Modified a RasPi fan for use in Octoprint
  • For the first time, had others ask for my 3D prints

New new new!

What a great feeling.

The miracle of mundane

I stumbled upon a nice article from a buddhist about how folks who work hard at finding the extraordinary in the exceptional are looking in the wrong place: the miracles are in the mundane.

In Zen, meditation is the space in which the ordinary comes alive with a near fathomless vibrancy.

Source: The Miracle of Mundane: Everything is Extraordinarily Ordinary | The Tattooed Buddha

This is indeed how I think. I remember a Zen saying of “When you wash the dishes, wash the dishes.” As in, “be there, experience that moment, that action, and nothing more.” This is quite in line with how I think. While I do not practice Zen or Buddhism, I am very much observant of the miracles of the ordinary.

Seeing more
There are some quotes that I carry with me, pointing to this thinking. For example, Feynman said in different ways how he sees more because he knows more. Say, look at a twinkling star. Yes, it twinkles beautifully. For Feynamn (and me), though, it’s an amazing ball of gas, shooting light across millions of years, born-grows-dies thru extraordinary processes over long periods of time, from small atoms in mind-blowing numbers (that’s “fathomless vibrancy” for you).

I also have a quote* from Shakespeare, “There are more things in heaven and earth, Horatio, than are dreamt of in your philosophy.” This ties in with my love of Transcendentalism (Emerson, Hawthorne), which I learned about as a teenager, and the line from Hawthorne’s Rappaccini’s Daughter “There is something truer and more real, than what we can see with the eyes, and touch with the finger.” There are wondrous things beyond what we can imagine, just behind everything we see and touch.

Fearsome wonder
Most recently I have been reading about the Sublime. Interestingly, so much of what I’ve read of the philosophy of the sublime seems to circle back to Jesuits, whom I have long been fascinated by (disclaimer: I studied at a Jesuit college, and had Jesuit professors).

In relation to the mundane, encountering the sublime awakens a sense of fearsome wonder in the ordinary. From the Jesuit perspective, the sublime is inextricably tied to coming face to face with God. For me, the sublime is that feeling when the ordinary sparks a whole body-mind-heart feeling that connects to the deep wonder of Nature.

Like Feynman, when I see the Moon, Jupiter, and Saturn on a lovely July night, I am not only enamored with the beauty of their light, but awed by how far and big they are and that their light are of different times.

Tangible experiences
Making this miracle of the mundane more tangible is a thread across some of the projects in my current Challenge. Here was something to make contagion and #BLM more visible. And here is my trying to show the ages of the lights reflecting of the Moon, Jupiter, and Saturn.

The mundane is what we live in but spend so much effort avoiding. In these pandemical stressful chaotic times, the mundane is grounding, calming, and full of moments of awe. There is no magic to connect to the mundane. Just be and do.

“When it’s time to get dressed, put on your clothes. When you must walk, then walk. When you must sit, then sit. Just be your ordinary self in ordinary life, unconcerned in seeking for Buddhahood.”

Source: The Miracle of Mundane: Everything is Extraordinarily Ordinary | The Tattooed Buddha

Yeah.

*I thought, until now, this quote was from Brother Karamazov, dunno why

Image from: laterjay

COVID-themed Halloween fun, and more

As Halloween approached, I thought I could have some fun and make something to put on my front stoop. I figured a Coronavirus would make a great and thematically-appropriate decoration.

The virus
The virus has been plastered all over the place, and is a recognizable shape – that polyhedron with scary spikes all around. I did some research into various shapes and settled on a icosahedron. I know that there are polyhedra with fewer sides, but the icosahedron, with 20 faces, has only 12 vertices (yes, the dodecahedron has fewer faces but way more vertices). As I was going to be building things per vertex, a smaller number of them was preferable.

I thought of various ways to make one and settled for a curious model I bought (support you local maker!) with 20 faces, 12 brackets for the vertices, and 60 bolts. I messed with the model, really just poking a hole through the bolt and the vertex bracket to explore what I might poke through them. I settled on a hole through each vertex.

The printing process was the longest I’ve done. And because of all the small pieces, these were the first prints to fully use my printer’s print surface. Also, because I was printing with a multicolor filament, I had to print all the facets, then all the bolts, all at once, so they would all look alike.

The spikes
For the spikes, I made a wee freeform cluster of resistors and LEDs.

Part of the spark of this project was the number of LEDs I’d accumulated. Y’see, when you sometimes buy components on Amazon, you also get a ton of other stuff you were not looking for. I had wanted to buy some blue LEDs for a previous project, and over 100 other LEDs of various colors came as part of the bargain. So, for this project, I used LEDs with abandon.

Each cluster had a red, yellow, and orange LED, and their limiting resistors, soldered and shrink-tubed onto a pair of wires that would connect to the control board. The wires were slipped through and then hot-glued to the hole that I had added to the vertex brackets.

I also had a Neopixel cluster with 7 pixels and threw that in, to pulse inside the virus. But it bugged me that it wrecked the LED trend, so I also put a red, yellow, and orange to do that instead.

The heart
At the heart of all this is a ItsyBitsy M0 with a battery backpack, mounted on headers on a protoboard. The clusters were passed through the vertex brackets and connected to the protoboard. [I mounted the Itsy on headers as I was not prepared to sacrifice it to the project, haha.]

OK, I could have just connected all the LEDs to a battery and be done. Or if I were just blinking the LEDs, I could have used a Trinket with an I/O expander. But I wanted to pulse the LEDs menacingly and independently, so needed most of the pins of the Itsy. Also, my Itsy had a battery backpack to connect and charge the battery.

I coded it all up in CircuitPython, having each pin act independently (multi-tasking). I did try to get them all to pulse. But I got stuck with a possible timer limit (“in use”), so I think I was over-tasking the processor to get it to pulse 15 pins independently. I could of hacked something, but really didn’t want to. In the end, I decided to blink the LEDs, each one set at boot time to a random on and off schedule. Later, my wife chimed in and wanted it just to be a menacing steady light. Since I could’ve done that with just a battery, we compromised in that it now is steady for 10 seconds and then blinks randomly (reset each time) for 10 seconds.

The whole thing is powered by a 500mAh LiPo and lasts for about 7 hours (last I checked). So I need to bring it in every morning to recharge (alas, takes a long time as I set the charger to 100mA rather than a 500mA rate). Only catch is, last night the temperature plunged to around 20°F, killing the power, so I had to bring it in.

Yay. See it to the right, all hung up and blinky.

Stretch goal
Being so into making stuff with LEDs for Halloween, of course my thoughts turned to pumpkins. I saw a nice article for a light detecting circuit LED throwie type thing. I built that for the eyes (two). I carved up a pumpkin (actually, two) and used the pair as eyes in one.

Of course, I needed LEDs to light up the inside of the pumpkin, so I first threw in some LEDs dog collar tags I had. But the maker ethos is “why buy if you can make?” And since I already had code that emulated these tags from when I reverse engineered them, that’s what I did.

Of course, another maker ethos is “use what you have.” I had some protoboard, a few ATtinys, resistors, buttons, and, of course, some LEDs. So I built a simple circuit with a yellow and orange LED, limiting resistors, a button connected to RST, a cap (yes, between VCC and GND), an ATtiny (one 85 and one 45, because) mounted on a socket (easier, in case I needed to reprogram), all powered by a CR2032 clipped to the wires with a binder clip (it’s how we roll here at the Schick Schack).

The image to the right shows both of them (two pumpkins) before I separated them. You can see the battery wires (red and black) and the button wires (white and green) leading off the frame.

Interestingly, from the start of the build to the install was a few hours. This might have been on of the quickest concept-to-build I’ve done. And reviewing my notes, I was proud of how far I’ve come in the past year and a half. Also helps that I keep decent documentation, previous code, and have accumulated the right tools to do all of this. Really boosts one’s confidence!

As for these LED gizmos, I popped them in the pumpkins, the button on the outside, so I could change or turn off the LEDs, changing how they behave. And, yes, they can pulse. Very happy with the result.

Happy Halloween, folks.

What does Empathy look like? Dignity?

I regularly look for interesting intersections of tech, art, and meaning. This installation on Empathy reminded me of discussions from years ago around how connected mobile devices could be used as ambient emotional connections.

With this installation, I want to show how, through simple interactions, we make new relationships with others and might be made aware that each and every one of these can contribute to the strengthening of humankind. I believe this is the true meaning of empathy. from: Yuki Anai, Empathy

Here’s a poem I wrote (with inspiration and input from the rest of the design team) at a workshop long ago.

Her presence permeated the ordinary,
Lighting our pockets along the way.
We smile, and miss her.
With a sniff of sadness,
She knows we are here.
 
by: Phil, Riitta, Timo, and Charlie
Espoo – 31jan07

This installation on empathy really caught my attention, though, not only because it does that cross-experiential mix-up I so enjoy, but because it tied back to another, more recent thought I had regarding making the intangible tangible.

What does dignity look like?
One of those intangibles I’ve ben pondering is dignity. World and local events have brought human dignity and what it means back to the top of daily discussions. I believe strongly that we should all have a universal commitment to individual dignity, and for us to take the balanced actions we need to take as a society, we need to make decisions informed by individual dignity. Just ask yourself how this year would have been different if the powers that be actually considered human dignity.

So, in my current mind wave around tangible experiences, I’ve asked myself ‘what does dignity look like?’

I’ve not come to an answer or a tangible concept, but this empathy installation would certainly resonate well with whatever dignity would look like.

Image from: Yuki Anai, Empathy (via Creative Applications Network)

Does open sourcing hurt mid-sized hardware makers?

In a recent video, Seon talked about his struggle with open sourcing his products.

He’s in favor of open sourcing, obviously, and makes most of his software and hardware designs available as open source. From what I can tell from the licenses he uses, the code and designs are free to be used, modified, and sold, though with attribution and share alike.

But he’s concerned with the impact he’s seen that open sourcing his works have had on him.

For starters, he keeps finding folks who don’t read or understand or respect his license. I’ve seen him remind folks on Discord to respect the license when they use his work. I can’t image what happens when folks don’t tell him they’ve used his design and he stumbles upon them, perhaps even on AliExpress.

He also points out the work involved in creating documentation while being time starved. And I get it, part of the reason I don’t have my code and design out there is just that added effort in documentation and clean up for reusability (not that anyone is interested in what I make anyway, and my code is quite ugly and useless, haha).

Mittelmachers
Interestingly, in his discussion, he does make a distinction between tinkerers and big folks with a thriving ecosystem, such as Adafruit. Tinkerers are sharing and not looking to earn from that work, so it’s ok to share and share alike. And folks with a large ecosystem and brand can afford to give their designs away freely, as they have a steady business of also selling things to their audience.

Seon sees himself in the middle somewhere. He talks about making open sourcing decisions based on how it affect his business. And it is sometimes unclear to him the value of open sourcing his creations.

Dropping the BOM
This discussion came up when he was explaining why there were a few of his products he would not open source. A reason might be the effort to make something open source, as I said above, especially for something he’s not necessarily intending to sell. But, also, he brought up his concern around giving away what he is working hard to make money and survive on. He wants to give back to the community, but doesn’t want to make it easy for unscrupulous freeloaders to undercut him competitively in sales.

As an example, he talked about why he doesn’t release his BOM or component library. He mentioned how his Gerbers, schematics, and board files are fine to share, but his BOM is too much for him to give away. Yes, he knows that a lot of that info is in the files he shares. But the BOM is basically a shopping list of his components and suppliers, which he feels is a competitive advantage he’s built over years, and giving it away makes it too easy for folks to undercut him.

The business of making
One challenge of going from a tinkerer to one who builds a business on open source hardware is that transition from building a sales stream and being big enough, both in sales and brand, that knockoffs have minimal impact.*

Balancing open sourcing one’s designs and building a book of business has been around for a long time.

And that balance teeters wildly for those who are trying to meaningfully give the community while also trying to protect the business they depend on.

Not an easy balance.

What do you think? How does open sourcing help or hold back early stage hardware makers? How do you balance protecting your business and growing your brand and community?

*Of course, this presumes copycats have negligible impact on sales at Adafruit or Sparkfun or any of the other big maker brands. And I wonder if their path to growth has helped them balance between open and closed, and build resilience against those who might undercut them.

Update, 10 hours later….
Wow, I seemed to have hit a nerve. Very interesting discussion ensued after Seon picked up on my tweet. I think these kinds of discussions are helpful for us to understand the business of making, and the challenges middle manufacturers have.

Here is the tweet if you want to see the thread that ensued.

Image by Nick Fewings

Another tangible concept: seeing through time

I finally finished my second project of my year’s project challenge. OK, I had planned to finish it three weeks ago, but life is needy.

In any case, here it is. And I’m happy with it.

Premise
Earlier this year, I noticed how the Moon, Jupiter, and Saturn were all so close to each other. And I have a particular fascination with the full moon. On 04 July around midnight, when we were returning from a family gathering (outdoors, and members of our COVID-bubble, mind you), I looked up into the clear sky and the Moon was radiant, with Jupiter and Saturn blazing beside it, so close.

I’ve always been cognizant that when we see the Moon and the planets, that we’re seeing sunlight from different times. Everyone knows all the starlight we get has been traveling years (thousands, millions!) before we see it. The same applies to objects in our own solar system, of course.

The stats
Sunlight takes about 8.456 minutes to reach the Earth. The Moon is about 0.02108 light minutes from the Earth [I used this calculator to actually get the ephemera from 04jul20, 23:30, from my coordinates*]. Jupiter and Saturn are 34.559 and 75.1280 light minutes from Earth.

That means while the sunlight we see from the Moon is almost the same you’d see from the day side of Earth, Jupiter and Saturn light are about 1h9m and 2h30m old.

So how to visualize that?

Blinkies
I knew I was going to use LEDs to make this concept more tangible. Obviously.

For the structure, I knew it’d be like a display of some sort. I looked into free form stuff, played with different designs, played with the math. In the end, I decided to go with a Neopixel strip showing light traveling to the bodies and then coming back.

Here’s how it works:
There’s a pixel strip to indicate the light leaving the sun and heading to Earth. Each pixel lights up to show the lights moving, taking 8.456 minutes to reach the end of the strip (Earth). Each new pixel from the Sun has a new color, so we can track where that sunlight is at.

Then, there is a pixel strip to show the light heading to the Moon, Jupiter, and Saturn, and a return trip back to Earth, each pixel taking the respective total round trip time to reach the end (back at Earth). The strips go up the right, then back down the left for each pair.

Therefore, you can see the age of the light by comparing where the color is in the trajectory.

For example, in the image to right [yes, that’s the whole thing mounted – build deets below] you can see that for the most part, the light that arrives at the Earth, from the Sun, has already gone to the Moon and back – there is little difference in the colors, as the trip to the Moon and back is fast (about 2.5 secs).

The same light, the reddish light, is still on its way to Jupiter. And you can see the green light, which is much older, is making its way back to Earth.

The green light that is coming back from Jupiter, is only just arriving at Saturn, which is twice as far from Earth as Jupiter. And you can see that the reddish light still has much more to go to get to Saturn. [see GIF below that’s about 700x accelerated]

Is that helpful to see where that light that left the Sun is in its round trip to the planets and back?

I hope so, as that was the intent.

Thoughts? Comments?

The build
There are 149 Neopixels in this display (go big, or go home). I had started with a 60 pixels/meter strip, but upgraded to 144 pixels/meter strips to give me more colors to work with [and I must say I wrote the code at the start to make it easy to upgrade the number of pixels, among other modifications].

And, not visible behind the Moon, Jupiter, and Saturn, are 9 pixels to light them up (right now they show the light that has arrived at the celestial body). I’m still figuring how to make those more visible. Perhaps changing the representation of the bodies (currently paper cutouts). And, no, there are no pixels for the Earth or Sun. Just didn’t do those.

Powering the pixels is a Adafruit Trinket M0. Each strip is on a pin (the lights behind the planets are appended to the Sun-Earth strip), with the fifth pin being a touch pin. The touch pin toggles between real time mode or 60x speed (speeding it up helped with debugging and with visualization).

The Trinket is mounted on a perfboard. And there are headers to plug in the Neopixel strips. I decided to give the Neopixel strips connectors, so I can plug and unplug them. Easier to mount and manage and debug.

The Trinket is ready for a battery, and I can power the Neopixels either directly from the battery (thank you Schottky) or directly from the USB – not the Trinket 3V. Though, the first time I plugged in all the strips on battery, the whole thing failed. When I did the math, I realized the batteries I was using were woefully underpowered for all those Neopixels. I still want to try with some AAA batteries (4x). For now, I either plug it into a USB charger or USB battery pack.

The strips were mounted on cardboard with hot glue (so versatile!), the cables feeding through an opening at the bottom to the Trinket and power in back. And I had intended to use dark acrylic, used in many LED panels, to cover the whole thing, but the size I had would have required two pieces. I then realized that sheer black fabric could work and cut the leg off an old pair of running pants and stretched the fabric taught over the pixels. Worked like a charm. I think the verticality of the display made me think pant leg – indeed, it slipped right over the whole thing. I kept the rest of pants in case I needed the other leg. Haha.

The code is simple, written in CircuitPython. The code basically multitasks, and advances the pixels in time, based on their own time frame. Nothing remarkable.

Fun, innit?

*The objects have their own magnitude and sizes, too, but I decided to skip that part.

How I made my Game of Life: Contagion Mode, Rose Garden Massacre Edition

A few months back, I made a Multimode Game of Life (GoL) that could do the usual GoL, a mode with two populations coexisting, a mode where one population competed out a second (inspired by #BLM), and a mode, relevant to this discussion, showing the spread of disease through a population (I wonder what inspired that).

Still a few months to go in the year
Yet, 2020 still had a few tricks up her sleeve. The US president (and everyone around him) tested positive for COVID. The suspicion is that an event at the Rose Garden to announce his pick for US Supreme Court justice, where folks were packed in and almost all without masks (see image below), was the start of a super-spreader event.

And then Joey Castillo sparked a thought.

That inspired me: could I change the starting conditions of my GoL contagion mode to reflect this event?

Indeed, I could.

How did I do this?
In the process of building the multimode version, I designed a UI (though, didn’t implement it). The UI required making and positioning bitmap sprites on the matrix grid. To figure that out, I created a spreadsheet with a 16×32 frame that I could layout the UI elements and understand what bitmaps to make and where to position them.

Worked great.

So I figured, I could use this grid to layout a Rose Garden event. And here’s my first attempt. Rows of closely packed attendees, two people on a podium, press corps on one side, some military folks on the other (go check the image above), and one in particular is infected.

And rather than being smart and programming something to convert these pixels to an array, I just typed the values in and dragged the numbers around to fill in all the cells with the right value. Then I brought the values into Word, where I am more comfortable with manipulating text, to create the two starting arrays for the animations (one for the live population, one for the infected population).

I had to tweak the starting condition to be dramatic enough (and please my wife), but was able to get a fun starting condition that looked like the event, and that has that 2020 Super-Spreader feel as everything goes red.

Haha.

Full video below.

Makers in the Mittelstand and the business of making

Long before I started tinkering in electronics, I have had a fascination with the Mittelstand. The Mittelstand refers to small- and medium-sized, usually privately-owned, businesses in the German-speaking countries. To me, they are represented best by manufacturers and exporters of innovative, high-quality, and often world-leading, products, from music stands and microphones, to measurement equipment and precision-molded airplane components.

I avidly read articles I come by on the Mittelstand, because I know how central the Mittelstand is to the German economy. And wonder how Mittelstand-like businesses can be the future of manufacturing here in the US.

My journey of the past 18 months into electronics has made me more aware of a maker Mittelstand. Consequently, I’ve been quite curious about the business of making, what middle manufacturers of electronics mean to the US economy, and the trials and tribulations of running a middle manufacturing electronics business.

Mittelstand, USA
I regularly look for examples of a Mittelstand in the US. While proclaiming the return of big-metal, low-skilled manufacturing makes good news, my preference is for policy and support for higher-skilled, higher-value manufacturing, coming from Mittelstand-like companies.

For example, I met a guy from Central Massachusetts who has a small business coating wires with advanced plastics. Sounds simple, but big companies, like 3M, are some of his (demanding) customers.

An article this past July by the Economist takes a tour of the US Midwest and compares it to the German Mittelstand. The article points out that success in the manufacturing heart of America is still tied to Mittelstand values of small- to medium-sized private business manufacturing, and close ties to policy and government and educational organizations to make it so (a German connection to the region also helps).

Leveling up
Back in March I reach an interesting article by Stephen Hawes trying to make sense of small to large electronics manufacturers. He split the manufacturing into three levels.

Level 1 – Someone at home in their pajamas making something on a Saturday morning with tools and materials available to someone with a hobbiest budget. Scale: 1-100 units.

Level 2 – Someone using some outsourcing and some in-house fabrication techniques to make things at a much larger scale, representing a sizable amount of money and effort. Scale: 100-5000 units.

Level 3 – Traditional mass production, hiring a contract manufacturer and getting things made at a factory, most often overseas. Scale: 5000+ units.

This analysis came out of his experience designing and building electronics for sale. He had a good handle on Level 1. Indeed, tools and accessibility to fabrication techniques mean that anyone can begin at Level 1 (uh, that’s where I would be if I started making products). And he understood how the biggies did Level 3.

Where he saw the challenge was in entering and succeeding in Level 2, seeing a gap in tools, costs, building, delivery that the Level 1 folks don’t worry about and the Level 3 handle at scale.

Mittelmachers
If you tie his article to my long-time interest into the Mittelstand, then you can understand why his article struck a chord. Hence, I am fascinated by so many who are making a go at building a business thru Level 2 manufacturing. Because those middle manufacturers are part of the new electronics Mittelstand.

And when I talk about an interest in manufacturing, I’m interested in the stories, not so much tools and processes.*

For example, Limor Fried, Lady Ada, is, of course, the leading example among makers for the American electronics Mittelstand. A NYC-based manufacturer, providing essential products and jobs, there’s no end to great videos and stories about her and her company. One that I watched today, from Manufacturing Day in 2015, is appropriate for this post.

I avidly follow Seon Rozenblum, Unexpected Maker, who is a talented creator (and whose TinyPico was an early and key part in my obsession with electronics). His trials and tribulations show the struggles of trying to build and sustain a Level 2 business. While Limor started her business out of her dorm room 15 years ago, Seon jumped whole-hog into making only 3 or 4 years ago. In the past year, he’s been trying to make the shift from Level 1 to Level 2 manufacturing, with hiccups (not his fault) along the way. I always find it amazing what he’s been able to accomplish in so short a time.

Not all rosy
There is no shortage of amazing folks building maker businesses. And I avidly read profiles (like this one on Lenore Edman of Evil Mad Scientist) because they contain interesting stories of the various ways folks end up in Level 1 manufacturing and then see an opportunity (and then the challenges) of stepping up to Level 2.

One talented and creative person I follow, Brian Lough, is trying to make a go at building a business off his making. And he’s open about his struggle to take it to the next level. He’s got a day job and also sells products on Tindie. Though he’s also working his ass off to create a revenue stream with YouTube ads and affiliate links. While I think he should likely concentrate on Tindie revenue and view the videos as marketing, it does show and expectation that makers should have all sorts of revenue streams.

Another great example of stories of the business of making that seem to be mentioned but not explored (or at least I haven’t seen explored) is how Adafruit responded to the COVID-19 pandemic, and how it was tied to their experience with Hurricane Sandy. But, fortunately for you, that’s a post for another day.

The maker world is filled with highly talented folks that make everything seem easy. And articles tend to focus on the nifty build, or the cool tools, or great talk. All these folks inspire others to make a go at Level 2. Though, I sometimes feel that there are not enough stories of the sweat and tears and all the hard work that go into it.

Mittelaspiratons
I’m not saying we need more stories on struggles, but I’m looking for more of the stories of the business, the challenges, the successes, the hard work. I find that often the business questions that are asked are around tools and processes rather than ‘why did you do that?’ or ‘how did you overcome that?’. I think such questions are important as more folks are able to aspire to step up from Level 1, up to the Mittelstand.

As I grow in the community, let’s see what stories I uncover.

*Please note: there are many making a go at living off of making. But my curiosity around the business of making is not about those who are trying to make money off of YouTube. Don’t get me wrong. I watch at ton of these folks and try to give them as much attention to pay for their great, and inspiring, videos. And, yes, a business model built on subscribers is still a business. I’m just more interesting the manufacturing side itself.

I have experienced the incessant need to feed media channels. And the expectation that every maker needs a big following to make YouTube money is not helpful. Adafruit and UnexpectedMaker put out a prodigious amount of video. But they have the skills, formats, audience, resources, infrastructure, and time to rapidly do these. And I really do not think they make video for the money, but for exposure, marketing, and community, more likely. In any case, to be a next Great Scott or Simone Giertz you need talent, the ability to focus on writing and producing amazing content, heaps of time, and consistent hard work.

Yes, this post has already become way too long – can you tell that this is a topic that I’m trying to articulate and explore?

Image from Adafruit, of course

Project hiccups already

Today is the 16th of the month. I had challenged myself to a project a month (from 15th to 15th – don’t ask). My first project was a multi-mode game of life to show some concepts of contagion and competition. I was able to do the bulk of the code, but then wanted to polish the project with some enclosures and a UI. Alas, I didn’t. But that was OK, as I actually had something I could show that worked as intended.

From that project, I quickly learned that one month is a short time. I also discovered that I wasn’t obsessed enough to make good use of that month. Days would go by without me touching the project.

True to nature
For the second project, I actually progressed rapidly in setting up the code and design. And then life intervened and demanded some of the energy and time I had hoped to give to this project. So, not only is a month fast, but life has a way to intrude.

I did get the code completed, but this project has a strong build component that I have yet to get to. In the end, I really haven’t completed this enough to show (hence, no pics or vids).

Since at least solid week was lost due to certain priorities, I figured I’d give myself another week to see how far I get. Hey, it’s my own challenge, who said I have to be so strict?

So give me another week to see what I have been working on.

Ideas fermenting
That said, I am already starting the next project. This one has a lot more waiting time to it, and I know the last part will extend it beyond a month. But the main parts can be done in four weeks. And I have to think of how to make use of the waiting times.

Yes, that’s cryptic. And, yes, you’ll have to wait to learn what it is.

Ok, so these time issues are a bummer. But I do like that the challenge forces me to come up with meaningful projects to build or do, driving me to learn new things, do research, explore the contours of my own creative space. I’m going to keep at it, if only for that, even if the time frame is a bit wobbly.

Summary
Already my second challenge project is further behind schedule than my first. I’m giving it some extra time, as the delay this time was due to some unexpected issues of a higher priority. Though I’m already crafting the next project for 15sep-14oct.

Let’s see!

Image by Roberto Bellasio

Multi-mode Game of Life

I’ve reached the end of the first month of my year-long monthly project challenge.* The first project I went with was a version of Conway’s Game of Life.

The project was partly inspired by our Great Pandemic of 2020, but also Black Lives Matter. I wanted to see if I could do modes of Game of Life (GoL) that would reflect those two aspects of our first half of 2020.

Tweaking the rules
GoL has simple rules that count the number of active cells around a cell to determine if they live or die or stay the same. I reckoned I could tweak these rules to get the two modes I wanted: Contagion and Competition.

For Contagion, I calculate if adjacent cells are infected or not. There’s a variable to set how prevalent the infected cells are. Unremarkably, a very small amount of infected cells is enough to take over the whole thing (see GIF above).

For Competition, I calculate how many of the primary population are adjacent to the secondary population. Depending on how aggressive I set it, the secondary population will be displaced (I had harsher words to describe the process, seeing as this mode was inspired by #BLM). I can tweak population sizes and displacement variables to see how quickly the primary population totally displaces the secondary population. In the video below, the section for Competition is a bit long, but that’s because towards the end, I wanted to show a secondary population green glider run into a set of primary population blue pixels and be obliterated (time 0:55-1:01).

I do have two other modes: the Usual mode, which is the regular GoL; and a Cooperation mode, where there are two independent populations, with red pixels marking any overlap.

For your consideration
One goal for my year-long challenge is to make as many of my projects have meaning, basically to trigger a conversation or make a concept tangible. For this project, I wanted to show what contagion or competition looks like.

Contagion is shocking as the red, starting small, washes over the blue population. The Competition mode does allow one to tweak parameters to show slow or fast or no competition between populations. Of course, the Competition mode with no competition looks identical to the Cooperation mode where the two population live side by side and overlap without issue.

Building it
As with all of my projects, I built this piece by piece, learning new libraries and methods along the way.

I found a great RGB Matrix CircuitPython tutorial, by Jeff Epler, that shows GoL on a version of the RGB Matrix I had. After help from Jeff to address a bug in the display libraries for my Metro M4, I was able to quickly get the tutorial running. Then, I modified the code to use uLab for better array manipulation.

The building of the modes ended up being faster than I expected. Once I had the basic GoL working with the new array library, the tweaks to make other modes were done in an hour or two (really just some line tweaks). That’s when I decided to build some menus.

I wanted to use bitmaps for menu icons (the matrix is too small for decent text menus). I started with the tutorials, but immediately ran into an issue in the code that I suspected was really simple to solve. So, I turned to the great folks on Adafruit’s Discord where they quickly noticed a single pesky displayio parameter in one line of my code. I had ignored it, since the code worked with GoL. But these folks knew the finicky nature of displayio and were right to point out the pesky parameter. After changing that parameter, I was able to quickly build some very interesting menus.

The menus were a fun challenge. Bitmaps took me back to when I first started using computers in the 80s. I had to figure out the tools (Excel, Paintbrush, and GIMP) and process to draw the right colors (8-bits!), size (tiny!), and formats, manipulating the bitmaps to work with the display library. Excel was a great tool to mock-up the matrix graphics, too. It was really helpful in drafting and positioning the graphics and figuring out the sprite sheet; made the subsequent coding really quick.

Alas, I dilly-dallied and waited a bit too long to get to the menus and buttons (yes, buttons). I was able to test the menus (see video) and then the buttons (using an I/O port expander). But I got stumped combining the two, so need a bit more troubleshooting there.

In the end, as I am bookending these projects by time, I ‘completed’ the project with GoL in demo mode, cycling through the four modes. I will eventually get to the menus and buttons (almost there!). But another project will be my focus for the next month.

What did I learn?
A month is fast – stick with the project, don’t sit back and ponder and lose time. At the same time, you can learn and do so much in a month. Also, coding went faster than I expected because I spent some time in preparation, figuring thing out, such sketching out the cell logic or mocking up graphics in Excel.

Oh, yeah, I also learned uLab array tricks; CircuitPython code optimization techniques; working with displayio bitmaps, sprites, tiles, gridmaps; and a new chip (MCP23017).

What’s next?
For this project, it’ll be as time permits to put the menus and buttons together. I have all I need and know what work is needed. I also wanted to do an enclosure to make it permanent.

For me, I’m starting the next project I want to get done by 14sep. For that one, you will have to wait.

UPDATE 07oct20: How I made my Game of Life: Contagion Mode, Rose Garden Massacre Edition

*for personal reasons, I’m going 15th-15th rather than calendar month.