John Ellis
S07:E53

John Ellis

Episode description

Paul welcomes John Ellis to the show. John shares some of his MacroPad projects, TallyCircuitPy, and more.

00:00 Intro

1:18 John’s start with computers

5:13 John’s handle, DeckerEgo

6:28 MacroPad Hotkeys II

8:59 Sleeping the Macropad screen

10:36 MacroPad 4 Chord MIDI

12:47 TallyCircuitPy and TallyOBS

15:12 The role CircuitPython can play in saving older hardware

17:20 Where to learn more about John

18:15 Which board?

19:53 Wrap-up

Download transcript (.srt)
0:02

Welcome to the CircuitPython Show.

0:04

I'm your host, Paul Cutler.

0:06

This episode I welcome John Ellis.

0:08

When John was six, his career ambition was to work part-time building robots and part-time

0:12

working at McDonald's.

0:14

Even in the 90s, he understood the practical duplicity of hacking as a passion while working

0:18

a corporate job to get the drop on the latest Happy Meal toys.

0:21

It guides him to this day.

0:23

John started working on Apple IIe's in the only computer lab in his rural community,

0:28

which luckily was run by his mother.

0:30

He started by writing text adventures in BASIC and fixing floppy drives he had broken, sometimes

0:35

using typewriter parts to get mechanical pieces to work.

0:38

This grew into a career that required a mix of hardware and software hacking, even as

0:42

the infrastructure moved to the cloud.

0:45

Currently John is the CTO of the non-profit Indiana Tech for Progress, which finds ways

0:50

to leverage technology in order to increase civic engagement on a local level.

0:55

projects on his workbench include a Keurig that briefly caught fire, an

0:58

intelligent but retro alarm clock for his kids, a continually broken SNES

1:03

controller, and a Bluetooth controlled lamp made from a bottle of a since

1:07

closed brewery. John, welcome to the show. Paul, thanks for having me and

1:12

congratulations on the new season as well. Thanks. How did you first get

1:16

started with computers and electronics? So my story, and it's a lot like your

1:21

previous guests as well started back in the 80s but it really started with my

1:25

mother being the inspiration. So we were, as a lot of your guests were too, in

1:30

rural parts of the country. I was in rural Midwest. My mom wanted to find a

1:36

job at a local optometrist office and they asked her if she knew computers. If

1:41

she could work the fancy spreadsheet programs that they were trying to begin

1:44

to use. She had no idea but one important lesson that she passed on to me was say

1:49

yes and step outside of your comfort zone. So she said yes and learned how to navigate an Apple II.

1:58

And then when she went back to teaching, they asked again, "Do you have any experience with

2:03

computers?" She said, "Oh yeah, absolutely. I had to do some minor repairs and work on the Apple II."

2:08

They were like, "Great! We have a grant from the state to start the first computer lab here in the

2:15

southern part of the state and we need someone to run it. None of the teachers know how to."

2:19

So she said, "Yeah, sure, I'll run it."

2:22

And so she got an extra large classroom filled with, I believe, over a dozen

2:27

Apple IIe's, and I even had Koala pads.

2:30

I had multiple dot matrix printers.

2:33

It was fantastic.

2:35

And so that's where I would spend my afterschool, before school, and summers

2:39

was in this completely geeked out mad scientist lab, which was her classroom

2:46

and often breaking things and then I had to figure out how to repair it, often with typewriter supplies.

2:52

I did that famously to several floppy disk drives that she had. But also she would get in new

2:58

software, so Broderbund wanted her to try out this new thing called Oregon Trail. They wanted

3:04

her to try out the koala pads for this lab. And so from there I started to kind of learn how to

3:11

not only use and implement the software and fix things, but also how to write my own text adventures.

3:17

And from there, it kind of evolved into

3:21

I knew how to repair, I knew how to fix, I knew how to work on these things.

3:25

And I was surprised that people would actually pay me

3:28

as I got into middle school to fix their computers

3:32

and for small businesses, and that became a thing.

3:35

And then after all, I was like, this could actually become

3:38

a living where I could code, where I could write my own stuff, but I never knew quite

3:43

how to angle that.

3:45

And so I got involved in the startup scene here in the Midwest.

3:51

One of the first ones was a company called ChaCha, which was you could text any question

3:57

to their SMS number and get an answer back.

4:01

It was a lot of people trying to cheat on tests, but also was Chuck Norris jokes.

4:05

So I wrote an early, kind of not really AI bot, but the best facsimile I could come up

4:12

with is like, human people are receiving these questions and answer, could I auto answer

4:17

them back somehow?

4:19

And that kind of gave me the bug on modern software as well as software as a service

4:24

and cloud platforms and how to continue to grow and build these platforms.

4:27

And that's where it's gone ever since then.

4:30

But my roots and kind of my heart has stayed in those smaller machines where you can hack

4:35

on not just the software, but the electronics itself.

4:39

- You mentioned the KoalaPad,

4:40

and I totally forgot about that until you said that,

4:42

and it took me right back to being a kid again,

4:45

playing with Apple IIs in a classroom environment.

4:47

- I mean, it was amazing what they could do with so little.

4:51

And that's another thing that's still with me today,

4:53

you know, when working on like Trinkets or the M0s

4:56

or the ESP32s, right?

4:58

The Apple II was, and the IIes,

5:01

were fairly simplistic in what they could do,

5:03

but they had touchpad interfaces.

5:06

They had all the modern trappings that we enjoy today,

5:09

and they were able to do it with much fewer resources

5:12

than what we've got right now.

5:14

- One of my favorite questions to ask guests is,

5:16

how did you get your handle Decker Ego?

5:19

- So Decker Ego came out of Doom the game and id Software.

5:27

So I was a big fan of John Carmack

5:31

because it was amazing what he could do with,

5:34

what he would say is high school math

5:37

and then build an entire immersive environment around that.

5:42

When John Romero released things like DoomEd

5:45

and all of the hacking tools around it,

5:47

I got super into not just playing Doom,

5:50

but how do you hack it?

5:51

How do you build new things with it?

5:53

And thinking about the name of their studio,

5:56

of id Software,

5:58

I knew that was a kind of spin on Freud's id, ego,

6:02

and super ego.

6:04

So then I tried to take what I knew from Shadowrun,

6:08

the RPG where you've got a Decker that has neural implants

6:12

that lets them hack into the matrix and do whatever.

6:15

So the Decker side of that cyberpunk universe,

6:20

plus the opposite side, the rationality of ego

6:24

as the post to id became Decker ego together.

6:27

I love it.

6:29

You've created a few different projects

6:30

for the Adafruit MacroPad.

6:32

My favorite is the MacroPad Hotkeys 2.

6:34

What was your inspiration in creating the project?

6:37

- So in truth, I have very low willpower

6:42

when it comes to not buying things on Adafruit.

6:45

And when I saw that the back plane of it

6:49

had like the Pioneer 10 golden plaque on it,

6:53

as well as the image of the probe itself,

6:56

and then it had that array of, you know,

6:59

the 12 keys with the NeoPixels behind it

7:02

and rotary encoder.

7:03

It's like, I've got to have it.

7:05

And I bought two of them with no real impulse in mind

7:09

other than this was a cool piece of hardware.

7:12

But it immediately, of course, brought to mind,

7:14

like all of the keyboards that we have now

7:17

are missing a numpad.

7:18

And I was thinking to all of the games that I used to have

7:21

or all of the software that I used to have

7:22

that would rely on that numpad.

7:24

It drove me a little nuts that it was on the right side

7:26

as opposed to the left.

7:28

And so this was, it seemed like to me, a perfect idea to use that as an extension of ye old

7:34

numpad from former days.

7:36

And they already had a Learn tutorial out there for how to do just that, which was really

7:41

cool but the LEDs stayed on all day.

7:46

I often wanted to switch between No Man's Sky or Audacity on the macros that I had.

7:52

And so I wanted to keep extending that and building that out.

7:56

And a part of that also is I wanted to keep the same readability that I had with the code

8:01

so that it could still be extended and modified by other people, but it wanted some additional

8:06

features that made it a little bit easier to use.

8:09

And so that's the genesis of that idea.

8:12

And then I created a second version later when I started to get into DaVinci Resolve

8:18

and using that.

8:19

That has multiple pages within a single app.

8:23

definitely need to learn a lot of the shortcuts and the hot keys to navigate

8:26

that and do your workflow quickly. And so it was around the idea of a lot like

8:31

with Blender you have one hand on the keys, one hand on the mouse, and you're

8:38

able to navigate the UI together. And so that was the inspiration behind that and

8:42

knowing that I'm never going to be able to exhaustively code all of the

8:48

shortcuts and macros that someone's going to need. How do I make it easily

8:52

usable in a studio environment, even with people who have minimal experience and

8:56

exposure to programming with CircuitPython.

8:59

Yeah, the MacroPad is probably my favorite product that Adafruit sells.

9:04

And I even wrote the awesome guide for it to share all the different stuff out

9:08

there and I featured yours at the top because I love it so much. And one of the

9:11

things that I love about it is I experienced burn-in on my OLED screen.

9:16

You added a timeout so that doesn't happen. How are you able to do that?

9:20

Yeah, so it goes into a tiny little sleep

9:23

and I think about that probably more than I should,

9:26

but I think about not only not exhausting the LEDs

9:29

and the displays that are out there,

9:31

but how do you reduce the power consumption also

9:34

so that it's not constantly polling

9:36

and it's constantly trying to wait for input.

9:39

So you'll see a little bit of lag as well

9:42

when you try to get it to wake back up

9:43

where you'll notice that the rotary encoder

9:45

doesn't necessarily do it every time.

9:47

It's 'cause I'm trying to be cognizant

9:49

both power with extended sleep operations as well as having it be responsive also.

9:55

I've been this way since I was a kid that I don't want to I want things to last forever

10:00

perpetually be there I want to create time capsules out of everything and so that was

10:05

part it wasn't it wasn't a huge technical issue in order to make that work on the

10:10

MacroPad but with all of my projects I tried to add that sleep functionality

10:14

still maintain state so that it isn't forgetting where it was at or where you were in the process

10:21

and can easily resume where you left off as well. So when you code first with that sleep

10:25

implementation it definitely makes things a lot easier because then you have to think about

10:29

state management bringing it back and it's not complex to do as long as you start with that idea

10:35

in mind. Tell me about another MacroPad project the MacroPad 4-chord MIDI. I saw in a hackaday

10:43

where someone had come up with a MIDI controller that would recreate 90% of the pop songs out

10:50

there with just four chords. And this is someone who had done their own custom PCB to make it look

10:57

like a teeny little piano and with just I think it was seven buttons total because one was like

11:03

to arpeggiate one was to change the tempo. You could recreate faithfully so many pop songs were

11:09

out there and it tickled the logic programmer side of my brain of like, "Oh, this seems like

11:16

procedurally you can generate a lot of music. That's kind of interesting." And if you look at

11:22

the Adafruit Macro Pad, it's got three columns to it, which for a chord you have three notes to a

11:32

chord and then you have four rows. So that's perfect for a four chord progression and that's

11:39

idea came from was like watching that and then also watching the Axis of Awesome

11:46

perform their four chord song where they go through a phalanx of like, I don't know,

11:50

30 pop songs with just four chords, which was the inspiration for the earlier project.

11:55

And it's like, this could be something really fun. And so it was really out of my own bemusement

12:01

to say, all right, it's this is Kismet. We've got three notes, we've got four chords,

12:06

That's perfect to the layout of the macro pad. Now, how do we make this work?

12:10

I still want to do some tricks to that because I'd also like to add some things like

12:15

drum beats to it or drum progressions

12:17

I've that kind of got me on the path of like learning how Bjork used like I think is the Qy 20 of

12:24

Like using these older electronics, you know that were based heavily on analog circuitry or those of the TR

12:30

808 those old drum machines

12:32

So like it got me on this old bent of again the old ways these old machines

12:39

How they able to do so much with so little and I'd like to see if I can continue to weave that into the macro pad

12:44

As well, that's pretty awesome

12:47

You have a project that integrates with OBS. What does tally circuit pie do?

12:53

Yeah, so tally circuit pie was actually born out of the kovat era

12:57

when everyone was moving things to an online presence, right?

13:02

And so Easter services were online,

13:06

meetings were online, classrooms were online,

13:08

and I started to help people out with that.

13:10

I came in heavily masked with sanitary wipes

13:12

and stuff like that.

13:14

And then I found that a lot of people

13:16

were gravitating towards OBS,

13:17

which I had never heard of before,

13:19

but got into and it was amazing.

13:22

I couldn't believe this is something

13:23

that was supported by the open source community,

13:26

but of course sponsored by NVIDIA

13:27

and some of the heavyweights as well.

13:30

So I started to help people get that set up.

13:34

And then of course you need kind of a multi-camera setup

13:37

when you start to do larger services or organizations

13:41

or even like town halls,

13:42

'cause you need like a bail camera

13:44

and then your closeup camera as well.

13:47

But one thing that was tough was I would have myself

13:50

and then maybe a camera operator.

13:52

We wouldn't know which camera was on

13:55

where should people should look and of course this has been solved back in the 60s right with tally lights

14:01

you see what camera is on by the light shining on top of the camera and

14:07

There were some solutions out there for OBS

14:09

But I wanted to create an open source one out of just readily available hardware because also supply chain issues

14:16

Let's just use what we got. I found a few people on Tindie who had crafted these matrix LED boards

14:22

But also I've used some Raspberry Pis as well. And so there is a Tali Circuit Pi

14:29

There's a Tali Pi which runs on a Raspberry Pi and then there's the Tali OBS repos

14:35

All of which help you to orchestrate these lights and it is as simple as when you take to a camera

14:41

That light shines red when you take away from it

14:44

It goes back to blue when you have it in preview mode

14:47

it goes to yellow and it was something you could with a 3d printer and with some hardware that you probably already have lying around

14:55

You can make a way to have tally lights that are easily orchestrated

15:00

Inside of OBS and so it's one of those small things that has been very handy and it has lasted these five years

15:07

Without need to replace to repair really and still works with OBS to this day

15:13

One of the products that Tally CircuitPy uses is by Seth Kerr, also known as Oak DevTech, which is no longer available.

15:20

With something like that or with all the part shortages like you mentioned over the last few years,

15:25

what role do you think CircuitPython can play to save or recycle hardware?

15:29

It's a huge contrast, I feel, between a lot of commercial outfitters who are making things, let's say smart remotes or

15:38

other gear where it is great, it is inspirational, it seems to work,

15:42

but then they end of life it or they in support or there's an acquisition and

15:46

then it just kind of goes off into the wind and you lose the ability to work with that hardware and

15:52

You mentioned oak devs tech they did a you know, he did a great job with the board itself. We had great conversations on

16:00

Heat tolerances and how to position things so that they don't melt the surface mounted, you know pieces

16:07

And even though those boards aren't manufactured anymore

16:11

CircuitPython has been a stable and reliable platform that keeps archives that work across

16:18

all of these older platforms so that it stays alive. This has been in reliable use for me for

16:24

the past five years. I bought some spare boards just in case, but in truth this has had greater

16:31

longevity than a lot of the commercial hardware that I've bought. And so I feel like CircuitPython

16:35

with its portability of code, but also the robustness in which the platform was created

16:41

and maintained, it allows you to reliably use and then reuse a lot of hardware that may not be

16:49

officially supported anymore. And if you can find an analog, something that is close to that,

16:55

you can pretty easily port things over, either with the out-of-print libraries that they have

17:00

around, you know, NeoPixels are become a universal standard almost, and it's fairly easy to port

17:05

across hardware, as long as you know how big your array is. So it's easy to not only keep in life

17:13

the things that you've got, but easily adapt to close analogs so that things continue to run.

17:19

Last two questions I ask each guest. If someone wants to learn more about you and your work,

17:24

where should they go?

17:25

Oh man, that's a great question. I'm terrible at self-promotion,

17:28

So I do have deckerego.net, which has a lot of tiny squares, which highlights either photography

17:35

or the open source projects or the things that I've done from there.

17:38

I'm going to continue to try to put out videos that showcase how these things work and

17:42

are put together, because I do believe that just making things accessible

17:46

and usable is a big boon for CircuitPython. So I want to encourage people to tinker,

17:52

to set small electrical fires, get the magic smoke out every so often, not be afraid, right?

17:58

And so decker.net showcases a lot of that.

18:01

You'll see me as DeckerEgo on GitHub as well.

18:05

I try to keep an honest and open list of my repositories,

18:09

as well as those things that are archived as well.

18:11

And then a number of guests for things

18:13

that I've found along the way.

18:15

- And the last question,

18:16

you're starting a new project or prototype.

18:18

Which board do you reach for?

18:21

- You know, I, again, I have very poor impulse control

18:24

when it comes to Autofruit stuff.

18:25

So the Trinket M0s, I love.

18:27

They're like, and they show them photographed right next to a fingernail, right?

18:30

It's great.

18:31

So they fit inside of bottles.

18:33

They fit inside of all these tiny like antique enclosures.

18:37

You can make all sorts of cool led blinky things with them.

18:41

And I don't need that many pins really for a lot of the projects that I've got.

18:45

So I love the M zeros and the trinkets there, but my challenge and my resolution

18:51

for 2026, and we will see if I hold to it is to actually use the stuff that I've

18:57

in my drawer today. I have some really weird AT stamps that I've got and I don't know what they

19:05

even do or even how to flash them at this point, but I am resolved to figure out how to do that

19:11

once again. I've got a number of ESP32s that are in a drawer back when someone discovered them in

19:17

a light bulb, right? And then they started to just buy the components themselves and everyone was

19:21

building their own little chipsets out of them. I've got a few of those as well.

19:25

I have an old cortex that I want to figure out how to finally use.

19:30

Everything needs to find...

19:31

It's like the island of misfit toys in my electronics drawer.

19:34

So I want to find them all a happy home before I start to open up my wallet and buy new stuff.

19:40

That's a good resolution.

19:41

I think we could all probably take advantage of that.

19:44

Yes, put it to happy use and then they'll become Christmas presents.

19:47

Who knows, by the end of the year.

19:49

John, thanks so much for coming on the show.

19:51

Absolutely.

19:52

Thanks so much for having me.

19:54

Thank you for listening to the CircuitPython Show.

19:56

For show notes and transcripts, visit www.circuitpythonshow.com.

20:01

Until next time, stay positive!