381: Mass Sponge Migration
Transcript from 381: Mass Sponge Migration with Elecia White and Christopher White.
EW (00:06):
Welcome to Embedded. I am Elecia White, here with Christopher White. It's just us this week, and we have a whole bunch of listener questions.
CW (00:16):
Okay. I have a whole bunch of listener answers. Most of them conflicting.
EW (00:22):
Not sure it works that way.
CW (00:23):
Oh.
EW (00:24):
Well, first we will do news.
CW (00:30):
News? Do I need to put in a little [news sound effect: doo-doo-doo-doo-doo-doo-doo, doo-doo-doo-doo-doo-doo-doo] thing.
EW (00:33):
Yes, you do.
CW (00:33):
Okay. I just did.
EW (00:35):
Okay, so I've talked a lot about my talk about map files. That's on YouTube for your watching pleasure, as well as the bloopers file.
CW (00:45):
The bloopers? The bloopers file?
EW (00:48):
The bloopers video that -
CW (00:48):
Sounds like -
EW (00:51):
- Christopher put a lot more work into than -
CW (00:53):
Bloopers. It's like in a drawer..."Investigate the blooper file."
EW (00:59):
Yes. And your Kickstarter is over.
CW (01:03):
It's over.
EW (01:04):
How did it go?
CW (01:05):
Over for them. Not over for me. It went very well. I'm very pleased. I'm learning all about the intricacies of delivering things to 100 people, which is a number that seems small, until you start doing things like sending out emails to them, and realizing that that needs to be automated.
CW (01:28):
And then when stuff breaks, and you have to send out 15 by hand, that's actually quite a few. And anyway, yes, fulfillment, fun.
EW (01:37):
Okay, so -
CW (01:37):
We haven't even gotten to shipping actual things yet.
EW (01:40):
Your Kickstarter is over.
CW (01:42):
Yes.
EW (01:42):
And you're funded.
CW (01:43):
Yes.
EW (01:43):
And everything went well that way.
CW (01:45):
Yes.
EW (01:45):
You got sick of promoting.
CW (01:46):
Yes.
EW (01:47):
So you didn't do it as hard at the end as you did at the beginning, but that's normal.
CW (01:51):
That's not actually true. I did a ton in the last week.
EW (01:54):
Oh. But there was a week there that it was a little bit lighter?
CW (01:58):
There was some in the middle where it was lighter, but toward the end -
EW (02:01):
How much did you enjoy promotion?
CW (02:02):
Not a lot.
EW (02:04):
What was the worst part about it?
CW (02:05):
Having to come up with something to say that's different than things I'd already said -
EW (02:10):
You had a list.
CW (02:10):
- and not feel like, "Hey, it's me again about this thing." I mean, some of it is just, the only way to promote now is social media unless I was to try to get...somebody else to help me promote on a blog or whatever, an interview somewhere. Anyway, that wasn't going to happen.
CW (02:28):
But with social media, the thing is people don't see everything every time. So you do have to kind of repeat yourself, but I really find that distasteful. So I didn't really enjoy that.
CW (02:38):
And there was a lot of, "Okay, I've got to do a quick little thing. Well, everybody likes videos. So now I've got to do a quick little..." So just a lot of time to put into having something to kind of catch people's attention.
EW (02:52):
Something new and interesting.
CW (02:53):
Yeah.
EW (02:53):
And not the same old thing.
CW (02:55):
Put something out there about the record, maybe a teaser for a song, but not reveal the whole record ahead of time. And what's the balance there? And I don't know. I just don't like talking about things I've done or things I've made. So trying to get people interested in it is a bit of a conflict. But yeah.
CW (03:14):
And mostly it was just waking up every day, thinking, "I should really promote the record today. What should I do? Well, I've used most of the pictures I have."
CW (03:24):
Part of the problem is with not being able to do a photo shoot and stuff, and some spontaneous stuff with my brother. That was difficult. So probably should have tried to figure out how to do that ahead of time.
CW (03:38):
There's a bunch of things, were I to do it again, I would do differently, like spending a month before even launching the Kickstarter just,...I did some of this, collecting things that I could use for promotion.
EW (03:49):
Yeah, you had a list.
CW (03:51):
And I had a list of things, but they weren't well-defined or done.
EW (03:54):
Right.
CW (03:54):
And I had a list of pictures, and videos, and things, and stuff of that nature, but it would have been better to just kind of have a dozen things done that I could dole out, which I really didn't have.
CW (04:06):
But then I had to spend time doing other things. So yeah, it's all a balance of, "How much time do I have to do for this?" So it went fine. I'm not really upset about anything. It's just promotion is not that enjoyable.
EW (04:20):
So one of the things that you did that was [part of the] other things involved those cat videos we requested.
CW (04:25):
Yes, yes, yes, yes.
EW (04:28):
And I know you're not done with that.
CW (04:29):
No.
EW (04:30):
But as part of it, you've been learning Blender.
CW (04:34):
Yeah. I don't think I'll actually end up using Blender for that, but if I do more stuff, yes, I have been playing around with Blender.
EW (04:42):
So tell me about Blender.
CW (04:44):
Blender? Blender. Blender is a very cool program, and I've played with it over the years. I think the first time I played with it was when it was back before it was a 1.0 even, and then it was even more inscrutable than it is now.
CW (04:58):
Blender is a gigantic 3D graphics package. It's open source. It's free. It does just about everything you could imagine having to do with 3D graphics.
CW (05:11):
So it'll do modeling. It has a thing where you can create models, sculpting, texturing. It has animation. It has things where...if you have a model of a person, you can rig the bones in it, and do inverse kinematics, and all of that stuff to properly animate them.
CW (05:28):
It does video stuff. So you can model camera motion in existing video and then put that in a 3D world space, put 3D objects in it. Everything you want to do with visual effects or 3D graphics, you can pretty much do in Blender at a really high level of quality. It has rendering capabilities that are really excellent.
CW (05:47):
And...people have done whole movies in it, and they look like Pixar. Maybe somebody in the industry who knows better would say, "Nah, Pixar stuff does this and that, and it's much better." But from a layman's perspective, it's a very powerful package.
CW (06:02):
The only problem with it is it is extremely complicated. And it will do anything you want, but...I think an analogy I used is it's like somebody gave you a Lamborghini, but it doesn't have an engine computer. You have to have to do all the engine timing and the valves by yourself while you're driving.
CW (06:25):
So...the UI is very complex. There's a lot of duplication throughout the UI. There's a lot of knobs for everything, and they're strewn throughout the UI in all kinds of places. And there's every option is kind of exposed to you. And some of them are important and some of them aren't. And it's hard to make sense of what they are.
CW (06:46):
So it's a real learning experience to try to get any kind of deep knowledge of it. And like I said, it does so many things, I'm not even sure it makes sense to get deep knowledge of it, because people will use it for different ways. I'm not interested in sculpting, so I can kind of ignore that part of it.
CW (07:05):
I'm not really interested in changing models. I would like to do things with visual effects, and maybe movies, and go grab a model from somewhere else and use that, maybe make some small modifications. But it's really fun to work with, because it can do so many powerful things, but it's also very frustrating.
CW (07:22):
And I ended up watching a lot of YouTube tutorials where they'll blow through stuff. And even the experienced people were like, "Oh, I just figured this out. There's this option if you right-click here, and do this and this and this and this and this and this, we get this thing over here, which isn't well-documented, that does the thing I wanted."
CW (07:36):
And so, it's interesting. I think the UI has gotten a lot better, which is terrifying.
EW (07:44):
Given how bad it is now.
CW (07:45):
And it's quite usable, and it takes to just take some time. But it's interesting. The stuff I'm going to use for video stuff is probably not that. I have some other 3D graphics things that integrate with video that are far simpler to use and produce pretty good results, but...what they can do is more constrained.
EW (08:07):
So there were two things in Blender that I thought were very cool that you showed me.
CW (08:12):
Yeah.
EW (08:13):
One was you made a cube of Jell-o.
CW (08:16):
Yes. I got that off a tutorial.
EW (08:18):
How long did it take you to make that?
CW (08:20):
30 minutes.
EW (08:21):
But after you knew it pretty well? I mean, if somebody watched it -
CW (08:24):
No,...well, if you don't know the very basics of the Blender UI, it's very hard to follow the tutorials, because you don't know what they're doing. So if you don't know how to get around, and rotate things, and change modes, it's probably not that easy.
CW (08:39):
But having that knowledge, I was able to at least kind of understand what the tutorial was doing and click along. But the tutorials, sometimes they leave a lot of stuff out.
CW (08:50):
So if you don't know how to do some simple things, you might get lost, or get into a situation where, "I tried that, and it didn't work," because you were in the wrong mode, or clicked the wrong thing.
EW (09:02):
And then you also scanned one of my origami octopuses.
CW (09:07):
Yes.
EW (09:07):
And somehow that ended up near the Jell-o cube.
CW (09:12):
Well, it's in the Jell-o cube now.
EW (09:13):
Oh, is it?
CW (09:13):
Yeah. I'm having trouble getting it to stay in the Jell-o cube.
EW (09:17):
Octopuses are like that.
CW (09:19):
Yes, yes. Yeah. That's another thing you can do is, there are simple iPhone apps now to scan 3D objects, and they work pretty well.
CW (09:24):
And then you can export them as a file and just dump them in Blender, and suddenly you've got whatever was on your table in a 3D world. And it does the texture mapping and everything. So you don't have to do that even.
EW (09:37):
And then there was the YouTube guide. The one-minute tutorials?
CW (09:42):
Yeah. Ian Hubert has a channel on YouTube. He does a lot of Blender stuff. He has a series called 1 Minute or Lazy Tutorials? I think it's Lazy Tutorials for Blender. And he goes through one very specific thing incredibly fast. And if you don't know Blender pretty well, they're not really followable. I can't follow most of them.
EW (10:06):
But it's amazing what he makes.
CW (10:08):
Yeah. It's simple stuff, like, "Make a city in Blender." It's a one-minute video.
EW (10:14):
Yeah.
CW (10:14):
And he'll go through it. And...probably if you spend an hour going through the one-minute video, and you knew some Blender, you can probably, but it gives you the high points of what you need to do.
CW (10:23):
And it's like, "Make this and do this. And then extrude this and then that, and then that, and then that, and then add it, and you're good." They're fun to watch. And they're a minute. And they were kind of inspiring.
EW (10:36):
They're very inspiring.
CW (10:36):
It's inspiring because, "Okay. Maybe that's not that hard. If he can make a tutorial that I can kind of follow, that only takes a minute to describe doing this thing that seems pretty complicated, maybe if I spend an hour on it, I'll be able to get a result that's not too bad." I think the other one we watched was the fish one.
EW (10:52):
There was the fish one and there was the animating the person.
CW (10:56):
Yeah...Oh, animating the person.
EW (10:59):
Yeah, he was just looking back and forth -
CW (10:59):
Oh yeah, yeah, yeah, yeah. Yeah.
EW (11:01):
- but it was pretty cool.
CW (11:01):
Not his demo reel, which is a whole 'nother level of stuff. He also...works on movies himself. He's got...two or three trailers for kind of movie shorts he's working on. And they are both -
EW (11:18):
Oh, that was unreal.
CW (11:18):
- very impressive. And he does most of the work by himself. And...I wouldn't say they're contemporary, ILM quality but they're probably ten years ago, AAA movie quality.
EW (11:33):
Well, when we watch a movie, there are hundreds of people -
CW (11:35):
Yeah. So it was kind of interesting -
EW (11:37):
- in the credits. And now -
CW (11:37):
- to see one guy, yeah -
EW (11:38):
- there's just this one guy, and what he can produce. It was really neat.
CW (11:41):
Yeah.
EW (11:41):
I wasn't trying to fault Blender at all. I was just looking for, "What can you do?"
CW (11:47):
Yeah.
EW (11:47):
What would be the first place for people to start?
CW (11:50):
With Blender?
EW (11:51):
Yeah.
CW (11:52):
There are a lot of tutorials out there...I can put some that I followed in there. There's a whole bunch that start from basically zero that are pretty good. One I did a few years ago that's recently been updated for the newer version of Blender,...it's more modeling.
CW (12:10):
You make a donut and a cup of coffee, a model, and that's pretty neat. I wasn't super into modeling, but it does teach you most of the interface, and you get something out of it at the end that's kind of fun to look at. But yeah, there's a ton of good YouTube tutorials, and I'll try to get the list that I've got and put them in there.
CW (12:28):
...Within an hour,...if you're familiar with Photoshop or any of the other kind of pro, creative applications, most of the concepts kind of will seem familiar. So after an hour, you're probably pretty familiar with the basics of the interface, even though it's kind of intimidating to look at.
EW (12:54):
I know this isn't very embedded, but watching you learn Blender has been so fun. I mean, I'm not trying to learn it. I'm just -
CW (13:02):
I'm not sure I am either.
EW (13:02):
But you keep coming up with neat things.
CW (13:05):
Well, it's just that you can do everything. And it's kind of mind-boggling. I watched a tutorial today where somebody was like, "Okay, here's how to do face tracking in Blender. And he put dots on his face, took a video, and he turned himself into a zombie.
CW (13:15):
And he put a 3D model of zombie teeth in. And that one's much longer, because it's much more complicated, but you can do all kinds of the things that happen in visual effects in Blender, including all the stuff you're used to where somebody wears a mocap suit with dots on it and does their thing.
CW (13:31):
So I don't know why I'm doing any of this. Probably because I'm over ambitious with some music videos, and I probably won't continue doing this for very long, but -
EW (13:41):
But you've gotten pretty far.
CW (13:43):
I don't know.
EW (13:44):
I mean, I don't know how far you've gotten in the world of Blender, but you've gotten far enough to entertain and amuse other people.
CW (13:50):
Okay. Well, I'm not sure that's a high bar.
EW (13:53):
Well, it's me. So no, it isn't a high bar, but still it is pretty cool.
CW (14:00):
[Guitar music]. Hey everyone, today we'd like to tell you about InspectAR. If you design, debug, or just need to use PCBs, InspectAR can give you superpowers. It's an augmented reality app and platform that allows you to visualize every layer, every connection, every aspect of your actual physical board in real time.
CW (14:20):
Need to know what a pin does? No problem. Need to know where a trace goes, two layers deep? Ok. Not only does InspectAR bring your EDA tool's level of visualization into the real world, it gives you deeper insights too. Click on a component on your board, and easily identify it, see its datasheet, supplier info, or pinout.
CW (14:41):
InspectAR imports your PCB manufacturing files, and if you're using an off-the-shelf board, you might find it already in the list of sponsored projects. Once your project is set up just point your phone camera at your board and see the technology work.
CW (14:54):
You can dial in exactly what you want to see, and what layers to overlay, just like in your design software. It'll simplify your analysis and repair of hardware through augmented reality with your phone or other camera, not a fancy headset. InspectAR is free for trial and home use.
CW (15:10):
With a subscription you get powerful collaboration, debugging features. Annotate the AR view, share comments, set up test and calibration procedures, and more. I've tried out InspectAR myself, and it really is amazing.
CW (15:22):
I encourage you to check it out, test it with some of the many pre-populated projects for common dev boards and find out how much it can speed up your troubleshooting and firmware development.
CW (15:30):
InspectAR works on nearly all mobile and desktop operating systems. Go check it out at InspectAR.com or use the link in the show notes! Our thanks to InspectAR for sponsoring this week's show. [Guitar music].
EW (15:47):
Okay, so I have one question that's not on our list. This one is from Silas, sophomore in college, doesn't know people doing embedded, so our show is good for Silas. Currently looking at build systems other than Make. Could we talk about our experience with build systems? Is there a de facto standard in the embedded world? How have build systems changed over the years, and as a beginner, what should they learn? Make, or some other system?
CW (16:25):
To the last question, there are many build systems that boiled down to Make at the end. And if you want to understand what they're doing, you need to understand Make. I'm thinking specifically of CMake, which generates Make files.
CW (16:39):
And they're probably inscrutable at the end, but it's probably worthwhile knowing how to use Make, especially for small projects. So there's that.
CW (16:51):
There's a lot of build systems out there. And I don't know that I can really speak to many of them. There's a lot of newer ones that are very complicated, like Bazel and some other things that I'm drawing a blank on.
EW (17:08):
Look at me, I'm stuck in catkin_make, which is -
CW (17:11):
Well, there you go. There's another one.
EW (17:12):
- terrible.
CW (17:12):
I would say, and people may dispute this, but I would say learn Make, learn CMake, even if you don't want to. And then, if somebody else comes along and you're working someplace that does something different, just learn it there.
CW (17:33):
But I wouldn't waste a hell of a lot of time trying to learn a whole bunch of different build systems, especially since there isn't really a standard. I mean, if you want a standard, makefiles are the standard simply by inertia and the longest time they've been around, and the fact that many things are built on top of them.
CW (17:52):
So if you've got to learn just one, I would say makefiles, and people may say, "No, don't do that. Learn CMake." But I think it's still makefiles. It's the standard. Beyond that, CMake is probably the next level up of standard, but then everything gets kind of messy from there.
EW (18:08):
I feel like you have to know about how Make works to make CMake work.
CW (18:12):
I don't know...I'm so far from that time that...I don't know.
EW (18:20):
Silas mentions reading Robert Mecklenburg's "Managing Projects with GNU Make," and mentions that the current version of the Make file they're building has problems. Build files are mixed with source files, and each module has its dependencies listed. And those are all things that can be solved pretty easily in Make. I think you just need to read a little bit further in that book.
CW (18:52):
I agree. Yeah. Dependencies, especially, there's ways to do dependencies in Make that are pretty straightforward. I mean, they're not perfect. Make's dependency stuff is limited compared to some more sophisticated things.
EW (19:06):
I would strongly encourage you to learn Make, especially at the beginning of your career. It's kind of like having invisibility as a superpower. You may not want everybody to know, because it's a lot more useful if people don't know.
EW (19:20):
You don't want to get stuck being the invisible person, but it does form the basis of a lot of things, and understanding it is unlikely to be a waste of time.
CW (19:33):
That's not going to hurt you. It's not going to hurt you.
EW (19:33):
It's not going to hurt, and it's not going to be a waste of time.
CW (19:35):
Yeah.
EW (19:35):
You will use Make at some point in your career.
CW (19:37):
And I use it all the time for simple little things when I don't want to reach for something bigger. I mean, if you've got a project that's got ten source files or something, and small dependencies,...and it's going to work on one target, you don't need some of that other infrastructure that just makes things more complicated.
CW (19:56):
I mean, that's one of the things where Make falls down a little bit, I think, is when you've got a lot of targets or different OSs, that your code is going on, that you have to make a lot of -
EW (20:08):
Different versions of a build?
CW (20:09):
Different versions of stuff. So that can be much more difficult with Make, but it depends on how common that is for you.
EW (20:17):
Yes. But even as I see things that are meant to be built between different processors, Make still seems to be -
CW (20:25):
It's kind of like, should you learn -
EW (20:25):
- the one.
CW (20:25):
Yeah. Should you learn arithmetic, or should you learn algebra?
EW (20:30):
And really arithmetic first.
CW (20:31):
Probably should learn arithmetic first. Because that plus sign's going to be real confusing if you've never seen it before. X plus Y. What does the plus do? So yeah, I think that's the answer I would give.
EW (20:45):
We got a question from Patreon, from Bailey, "What does one do with the other 11 of the dozen projects started?"
CW (20:56):
Let them molder. Let them sit on the bench top in the garage.
EW (21:01):
Look away in embarrassment every time you see them.
CW (21:03):
Put them in a box so you don't have to see them.
EW (21:06):
Yeah.
CW (21:07):
Yeah. I mean, yeah. I don't know.
EW (21:11):
Well, the question is, why are you doing these?
CW (21:13):
I don't know.
EW (21:14):
I mean, I'm doing -
CW (21:15):
Do you want me to list the 11 projects?
EW (21:17):
Sure. Go ahead and list your 11.
CW (21:18):
I have a partially assembled ukulele on the bench top that's been waiting for me to buy some plywood, I believe -
EW (21:25):
Yes.
CW (21:25):
- for 18 months. Well, shorter. 12 months maybe. I have a completely unassembled acoustic guitar in a box that has not been opened yet in the garage that I bought because it was on sale.
EW (21:38):
I remember being against that decision.
CW (21:41):
...It was a good deal.
EW (21:43):
A great deal.
CW (21:43):
Also, I had a gift certificate.
EW (21:45):
Think of how much money you saved.
CW (21:46):
I had a gift certificate. I have that a MIDI thing that was based on the Nucleo board I have that's in pieces over there. Oh, well...if you want to go back years, I have -
EW (22:02):
Well -
CW (22:02):
- the unfinished Kerbbal controller. That's in the cabinet over here.
CW (22:07):
What else do I got? Probably a half dozen or more 30-second snippets of song ideas. No, probably two dozen snippets of song ideas that are sitting on a drive somewhere that I haven't sat down and expanded on. That's not a dozen. See, I'm doing good on 11. I have a PhD I never finished. I didn't really start -
EW (22:30):
You got a master's degree.
CW (22:32):
I quit that. That one's gone. I don't know.
EW (22:36):
So I have projects too.
CW (22:39):
Yeah.
EW (22:39):
I never finished "Taking Apart Toys," because I wasn't happy with how it was going to be published, and I didn't want to go on my own. I have origami things that are half started all over the house. Those usually get trashed, because it's just paper.
EW (22:57):
I have plans for more origami things, that require math, that I'm just too tired at the end of the day to do. Oh, I have so many. So much gardening. I have so many gardening plans, so little will to do it.
EW (23:16):
Okay. So the thing is there is some embarrassment, self-guilt for not finishing things, but like with Blender, you start these things to learn and to learn about them. And if you get to them and they're not that interesting, -
CW (23:38):
Well, that's never my problem.
EW (23:38):
- or other things are more interesting.
CW (23:42):
I have a lack of focus. I feel like I would feel really good if I finished some of these things.
EW (23:48):
You just finished an album and a Kickstarter.
CW (23:50):
Yeah, but that has other people involved. If I had to finish my own album, we'd be waiting a long time.
EW (23:59):
I say what you do is you take them apart and set them free. That's what you should do for the...other 11 projects. It's okay to set them free. It's okay to throw them away.
CW (24:10):
No, it's definitely okay to throw them away or give away the parts. Yeah.
EW (24:15):
You don't have to promise you're going to get back to it.
CW (24:18):
Yeah, sure.
EW (24:19):
And you don't have to -
CW (24:19):
Well, there is a sunk cost thing. "I spent a bunch of money on this, and I haven't finished it, so I have to finish it - "
EW (24:29):
You don't.
CW (24:29):
"- even though I'm not interested."
EW (24:29):
How much would you have paid for the amusement of going to Disneyland versus how much the amusement of that project was?
CW (24:37):
Oh, Disneyland in the last year, not a lot.
EW (24:40):
Well, yes. But if you think about it as a form of entertainment -
CW (24:43):
Yeah, yeah.
EW (24:43):
It's okay if it costs and -
CW (24:45):
Yeah, yeah.
EW (24:45):
- that cost is going away.
CW (24:47):
Yeah.
EW (24:49):
Okay. So from Rick. "Have you worked on any unusual microcontrollers?" ... It starts with a "P," ends with a "T." Sounds like rocket.
CW (25:02):
There was no microcontroller involved there.
EW (25:05):
There was a chip.
CW (25:06):
That's not a microcontroller. It was one of the largest chips to be produced in that time. Are you kidding me? The thing cost about 2,000 dollars a pop.
EW (25:16):
Okay.
CW (25:16):
That was not a microcontroller.
EW (25:18):
Okay. Okay, well, I'll accept -
CW (25:18):
That does not qualify.
EW (25:19):
Yes.
CW (25:22):
I don't think I've worked on any unusual microcontrollers. I've used things that should have been microcontrollers.
EW (25:30):
Like what?
CW (25:30):
Like full x86 PCs with National Instruments boards being used to bit bang I2C for $5,000. Yeah. I have used things that should have been PICs, but people spec'd out multi-thousand dollar computers. So that was unusual. But no, I've used mostly ARM, or PICs, or 8051s. Yeah...I mean, there's a reason that those things are common.
CW (26:01):
It's because people use them commonly. I think some people we know use weirder things...I think Andrei uses some very strange PowerPC things for automotive that have counters and stuff that you don't normally get with standard microcontrollers.
CW (26:18):
What have you used? You've used some strange things though.
EW (26:22):
Well, I was actually going to say 8051, because we made our own chip at LeapFrog with an 8051 core. And there was some other stuff that went with it.
CW (26:30):
Okay. Yeah.
EW (26:30):
I worked on making an ARM chip for the Cortex-M0+ before the M0+ was a public product. So that required a lot of paperwork.
CW (26:41):
I will say the microcontroller we used at Fitbit, which I'm sure I'm past the NDA at this point, was a custom thing from another company. And it had a lot of really custom features in it.
EW (26:55):
Bugs.
CW (26:55):
Yeah, I mean, I'm not revealing anything. It could access a lot of different kinds of memories, and it had a whole bus arbitration thing for dealing with that. It had some graphics capabilities which were completely unusual for the industry for a Cortex level part.
CW (27:13):
So that was pretty unusual, I guess. It was more like a real microprocessor system on a chip being jammed into something that was a low-power Cortex-y thing. So that was hard to work with. Very hard to work with.
EW (27:26):
I guess it's kind of rude to say that I consider the TI CC2600 to be an unusual microcontroller, because it was a 16-bit microcontroller that -
CW (27:44):
Oh, right.
EW (27:45):
- I had that everything was 16 bits.
CW (27:49):
There was no eight bit. There was no eight bit.
EW (27:49):
There is no eight bits, and it was strange. And they hid that from you later, which when I revisited that chip line, it was super confusing. Because I knew very well you could not do this from the first time I had worked on it. And that was just weird, because they called it a byte, and it was 16 bits. And it just broke my mind.
EW (28:16):
I mean, the chip itself was great. It did what we needed. We needed mathy stuff so that was great. But every time I would get a character and it was 16 bits, I'd be like, "What the heck?"
CW (28:27):
Great now.
EW (28:29):
And then the other one was another TI one, which is probably a super useful and popular chip, but it was in the Piccolo line, which had a lot of motor outputs and a lot of signal processing inputs. And it was really fun to use, but the documentation was something else. I mean, just reams of documentation.
EW (28:52):
And you could never be sure that it was for your chip. Like, "Okay, so SPI-3 acts like this. SPI-2 acts like that. So I want SPI-3. Oh, my chip only has one SPI. So is it a SPI-3 type, or is it a SPI-2 type?" It was so confusing. It's not really unusual, but it was something else.
CW (29:16):
What about unusual non-processor things, like peripheral chips and stuff?
EW (29:24):
Oh my God. I had to explain IMUs again last week.
CW (29:28):
That's not unusual. That seems pretty par for the course.
EW (29:32):
I mean, since I started with IMUs...when they were first solid state, I feel like I've just been going against that wall over and over again. And they're still so powerful and so cool. And they're so much better than they used to be.
EW (29:51):
And people still don't really understand at an intuitive level. People understand temperature and explaining pressure is not hard.
CW (30:02):
People just don't get gravity -
EW (30:04):
But -
CW (30:04):
- or acceleration.
EW (30:05):
Explaining the difference between linear acceleration and pure acceleration shouldn't have been hard. Especially when the person I was talking to didn't know which he had. And I was like, "So if you take the magnitude, and it adds to one, then it's regular acceleration. If it adds to zero, then it's linear acceleration."
EW (30:30):
And so then there was the, "Well, it adds to 0.3." And I was like, "Okay, so this is linear acceleration, and it's moving." And he said, "Oh yeah, this is the part where it moves." And I was like, "Okay, this is good. This is good. We're making progress." So...I guess that's not really weird, is it?
CW (30:51):
No, that's completely normal.
EW (30:52):
But that went from analog to SPI -
CW (30:56):
No, no. It's still not -
EW (30:56):
- I2C -
CW (30:56):
It's still one of the most common -
EW (30:58):
- motion, fusion -
CW (30:59):
- one of the most common things that are in every stupid piece of electronics you can buy.
EW (31:04):
Okay, okay. So tell me about an unusual sensor, non-microcontroller part.
CW (31:09):
Well, there wasn't a sensor, but there's the whole thing I had to do for authentication -
EW (31:16):
Yes.
CW (31:16):
- for a consumable part for a medical device. There was a piece that goes on the end that kind of wore out and they wanted to sell a lot of them. And so they had a limited lifetime, and you had to keep track of that.
CW (31:29):
And you had to make sure that the device was authentic so people couldn't knock them off and plug them in the thing. But anyway, these were this whole one wire line of devices, because it was at the end of a very long cable. So the EE's decided one wire was the way to go, reduce the conductor count through the cable or whatever.
CW (31:55):
And so Dallas Semi, I think it was Dallas Semi, had these authentication chips. And one chip talks to the other chip. The one chip would be on the motherboard, and the other chip would be on the consumable.
CW (32:09):
And they would communicate over 1-Wire and exchange a cryptographic hash and then decide that, "Yes, you're the authorized part." And also it can update its lifetime with kind of a write-only decrement. God, they were so hard to work with.
EW (32:26):
Weren't those the ones that you ended up with counterfeit chips for?
CW (32:29):
Yeah. Well, yeah, I think I talked about this.
EW (32:32):
The anti-counterfeit chip -
CW (32:32):
Yeah. Yeah, no, they somehow got a whole lot in when we ordered parts. And I don't know how this happened, if did something weird or whatever, but...they were these test chips or something.
CW (32:47):
But the whole locking mechanisms, when you set them up, each chip you got in for each part, you had to program your key, your company's key into it one at a time. There was no way to say, "Hey, Dallas, here's our key. Give us 5,000 with this key." Maybe if we'd ordered a billion of them, they would have done that for us.
CW (33:06):
But, yeah, so they had to be provisioned, and the provisioning process involved putting the key in and then blowing some fuses,...chip fuses, to say this key can never be changed for obvious reasons. And we got this set back, and all this weird stuff kept happening.
CW (33:27):
And the things basically said, no matter what you did, "Everything is great." No matter what key you put in it, it always worked. You could always update it. And I was like, "...What is going on?" First of all, it's like, "What the hell did I do to the code to make this happen?"
EW (33:43):
Return "always good."
CW (33:43):
"Because this shouldn't be possible." So we had the scope out, and we're looking at the whole transactions and everything, and finally said, "These chips are weird. There's something wrong with these chips." And finally talked to Dallas, and they were like, "Where did you get these?"
EW (34:01):
We swept them up off the ground.
CW (34:04):
So I don't remember what the resolution was to that, but that was very strange. But the whole process of getting them working was very difficult, not just because of the cryptographic stuff, which was actually turned out to be easy, relatively. It was just the electrical signal integrity stuff.
CW (34:20):
The requirements of communicating with the 1-Wire device were very tight. And when we were originally doing it, remember the aforementioned National Instruments boards? Those were the things doing 1-Wire.
CW (34:31):
So I was writing code in C, in VxWorks for a PC architecture embedded, single board computer to use a National Instrument digital outboard or yeah, digital-out board?
EW (34:47):
That makes sense.
CW (34:47):
I think a digital-out board.
EW (34:48):
In and out.
CW (34:49):
Yeah, basically a GPIO board for 2,000 dollars. To bit bang thisi 1-Wire stuff, which had tight timings and things. And oh God, we replaced all that in the second version after I was kind of in charge of some of the architecture with sensible things that cost dollars.
CW (35:09):
But yeah, there was just stuff like, "Oh, you don't have to hold this up for 20 milliseconds." And it wasn't quite like SPI or something like that where it was well-defined. Each part had slightly different timing requirements. And we had other 1-Wire stuff in there too.
CW (35:24):
So yeah, it was a pain...I would have rather had an I2C device or something like that.
EW (35:31):
Anything else?
CW (35:37):
Not really? I don't think so. Everything else was pretty boring.
EW (35:42):
From Svec.
CW (35:44):
Uh-oh.
EW (35:44):
Chris Svec.
CW (35:45):
Yeah.
EW (35:45):
Who is not you. You are not Chris Svec.
CW (35:47):
That's what I hear.
EW (35:47):
You are Chris White. "What has surprised you about starting and running a podcast?"
CW (35:54):
That we have continued to run the podcast.
EW (35:57):
That is the biggest surprise. Yes.
CW (35:59):
I don't know. I don't know what we were expecting.
EW (36:05):
I don't know.
CW (36:06):
I'm surprised continually that anybody listens to us. I guess I didn't expect to build a community around it. That's kind of nice.
CW (36:12):
So the Slack community is pretty good and I have met a lot of people virtually in real life who I never would have met. So...I don't think that was on my radar as an outcome of running a podcast.
EW (36:27):
I wouldn't have thought making close friends would have been on the list, and I have made some very close friends.
CW (36:36):
And some enemies.
EW (36:37):
Fewer enemies.
CW (36:39):
I'm kidding. I'm kidding. Yeah, that's probably the biggest stuff. I mean, I don't know that we had expectations, starting it, of much of anything.
EW (36:52):
I mean, it was just a, "Let's try it. Let's learn the technology."
CW (36:54):
I remember being so excited when 50 people downloaded an episode or something, but that seems kind of quaint now. Yeah.
EW (37:06):
Well that touches on the next question.
CW (37:07):
Okay.
EW (37:07):
What was the audience size in your wildest dreams in the early days?
CW (37:11):
I don't really know. I don't remember.
EW (37:13):
I mean, a hundred would have been -
CW (37:15):
I mean, we got to a hundred pretty rapidly.
EW (37:18):
Okay. A hundred strangers. A hundred people that I didn't browbeat -
CW (37:20):
Yeah.
EW (37:20):
- just to listen.
CW (37:23):
No, I don't really know. I mean, I think I had some idea of what popular podcasts were doing in numbers back then. So probably in my wildest dreams were thinking of numbers like that, which we still have not reached.
CW (37:36):
I'm not disappointed necessarily. But it's really qhard to know what kind of the top audience for a particular podcast is, whether you've kind of reached everybody you can conceivably reach.
EW (37:54):
I don't think we have.
CW (37:56):
I don't think so either, but -
EW (37:57):
I mean, neither one of us great at promotion.
CW (38:01):
Please don't ask me to do more promotion.
EW (38:05):
I think it could still be useful for college students. I think there are still some professionals out there who haven't heard of it. I totally understand the people who have heard of it, but -
CW (38:18):
Yeah.
EW (38:18):
- they don't listen to podcasts, or this just isn't the right medium for them.
CW (38:20):
Well, I think some podcasts get more listeners because they're more visible in other ways too. So they had a popular blog before they podcast, or they were associated with someone else on a previous podcast, and so they've built an audience in different ways.
CW (38:42):
So we would have to do different things, I think. Reach different people by doing something else that we aren't about to necessarily do.
EW (38:52):
Yeah. I mean, there are the Webby Awards and some other ones where you have to pay a fee to be in the list.
CW (38:59):
Yeah, yeah. Well, yeah. I don't think that, nobody -
EW (39:01):
We haven't -
CW (39:02):
I don't think there are listeners who pay any attention to that.
EW (39:07):
Oh, okay.
CW (39:07):
I think that's kind of a podcast pat on the back, industry thing.
EW (39:13):
But someday I want to be able to say award-winning podcast.
CW (39:16):
Sure, well -
EW (39:16):
Someday.
CW (39:17):
Well, we just need somebody to invent an award and give it to us.
EW (39:21):
That's true. It doesn't really matter. It's not like we need a monetary award.
CW (39:25):
No, no.
EW (39:25):
We just need a certificate.
CW (39:26):
No. We can have the "Chris Svec, I'm Not On This Podcast," award. Yeah, I don't know. I mean, maybe we can be more controversial. We could take a position that's really, really unpopular and push it for a few episodes.
EW (39:43):
Speaking of -
CW (39:44):
Oh, crap.
EW (39:46):
Svec also asked what the most ridiculous email you've received about the show was. And unfortunately, when he asked that, I was actually getting one of the ones I thought was the most ridiculous.
EW (40:00):
And that was after my maps talk, when a very nice FAE from IAR emailed and wanted to tell me more about their map files and some features which they have, which GCC also has, and offered to help walk me through their build system.
EW (40:20):
And my first thought was, you would think IAR would accept our lack of bashing gracefully, because we haven't really talked about them much, but it was an email. It sort of hit the ridiculous spot for me because it was just like "Really?"
CW (40:37):
Oh, I didn't see that question. So I didn't go through my list of emails, which I have all of them.
EW (40:43):
You have all the emails.
CW (40:44):
I have all of the emails.
EW (40:46):
Never delete anything?
CW (40:47):
Nope, they're all flagged with a little purple flag and they go in my flagged thing. Yeah. But, it would take me some time to find one that's ridiculous. And then I'd probably feel bad about revealing it.
EW (41:00):
There are some where people kindly email to correct us on things which we have great experience with. And there's a lot of things we don't have great experience with. So if you want to email and correct us, that's fine. But sometimes those get more giggles than serious consideration.
CW (41:26):
There's always the ones where somebody wants to have their client appear on the podcast, talking about something completely unrelated.
EW (41:34):
R ones.
CW (41:35):
Yeah.
EW (41:35):
Those are so painful. Then they email back and say, "Did you get my email?" Or, "You missed our meeting. I set it up." And I'm like -
CW (41:42):
[Laughter]. You missed our meeting. Yeah. Meetings are a two-way thing. You can't just unilaterally declare a meeting.
EW (41:49):
Not unless you're paying me a lot of money for it. "Do you have a dream guest you'd like to have on the show? Anyone at all, living or dead, but not undead, because that's right out."
CW (42:01):
So not Dracula. Okay. I mean, no. I mean, there's people I wouldn't mind having on the show who were kind of interesting people who I've followed for a while. Some of the space people like the NASA guy, Bobak Ferdowsi, probably getting that wrong.
CW (42:22):
People like that...I enjoyed some of the podcasts we've done with people who've been at the beginning of the industry or of an industry in some way.
EW (42:35):
Like Liskov?
CW (42:36):
Yeah. Yeah. And so maybe somebody along those lines from the days of the Apple II or something like that. But I don't have like, "God, it'd be great to get - "
EW (42:50):
It'd be great to get Woz on. Steve Wozniak.
CW (42:54):
Sure.
EW (42:54):
I'd like an astronaut -
CW (42:57):
Title.
EW (42:59):
- or tech support person in the space community.
CW (43:04):
Tech support?
EW (43:08):
Somebody who works on the aeronautics for going to space.
CW (43:13):
Oh, okay.
EW (43:13):
Not tech support, but support staff for the astronauts.
CW (43:16):
Gotcha. Gotcha. "Hello. This is the astronaut speaking. I have this blinkling light and it will not - " "Have you tried turning your spacecraft on and off again?"
EW (43:27):
So on that line, I would also like a historical -
CW (43:32):
Yeah.
EW (43:32):
- perspective on going to space. Who else?
CW (43:38):
I'm wary of big famous people, big titans of industry kind of people...Interesting people who've become famous because they were interesting, I'm fine with that.
EW (43:52):
Famous people who we've had on the show before have not always been our favorite shows.
CW (43:58):
But some of them have been. So it's a mix.
EW (44:01):
It is a mix, but they're so much harder to book that I'm kind of leery about spending the additional time.
New Speaker (44:08):
What about fictional people?
CW (44:10):
Fictional people?
EW (44:11):
Oh, that's so easy. I would love to have Rey on the show.
CW (44:17):
From Star Wars?
EW (44:20):
Yes. How did she learn -
CW (44:20):
Not from Ghostbusters?
EW (44:21):
Right. How did she learn the languages? How did she learn how to do the scavenging, and did people help her? Was it all just the force, or did she learn things? Did she ever find the technical spec manual for the ship she was scavenging? How did she know how to fix BB-8?
CW (44:42):
I'd rather have BB-8 on the show.
EW (44:45):
I mean, you could have BB-8 on the show.
CW (44:49):
But Ray from Ghostbusters, how do you make the sensor to detect a ghost? What is a goat? What frequency -
EW (44:55):
What is a goat?
CW (44:55):
What electromagnetic stuff is a ghost putting off that you can detect?
CW (45:04):
How do the little cage things work? I mean, why are lasers involved? Is it one of those things where the laser traps for photons for ions, is that how that works? That kind of stuff would be interesting.
EW (45:17):
Was that the person who talked about -
CW (45:19):
How did you manage to have the money for all of that stuff? And yet you bought the crappiest car you could imagine for your service visits.
EW (45:30):
Was Ray the person who talked about the sponge?
CW (45:34):
The mass undersea sponge migration?
EW (45:36):
Yeah.
CW (45:36):
I believe he was.
EW (45:37):
So I've been reading a book by Helen Scales called the "Brilliant Abyss." And one of the sections that came up this morning was, so we all think of sponges as stationary. That's why that joke is funny. The underwater mass sponge migration. Turns out that in a 30-year-long time-lapse photography, sponges are not stationary.
EW (46:06):
They can act like tumbleweeds and move around. They can sneeze or expel something that they don't want to have in them. And that takes a couple of weeks. It takes a couple of weeks for a sponge to sneeze. Just wanted to have that out there because I was so fascinated. Okay. So -
CW (46:28):
[Laughter]. How did we get there?
EW (46:31):
Tom Anderson, whose show went really well, I thought -
CW (46:35):
[Affirmative].
EW (46:35):
- had something from the Patreon Slack in which you, stoneymonster -
CW (46:45):
That's me.
EW (46:45):
- suggested running TCP/IP.
CW (46:48):
Oh God.
EW (46:50):
Somebody wanted to know, -
CW (46:53):
Yeah.
EW (46:53):
- but tell us about this.
CW (46:55):
I don't know the details. They had two chips that were communicating and they wanted something that was, where's the thread? Do I have to go find the thread?
EW (47:06):
If you want to.
CW (47:06):
I have to go find the thread.
EW (47:08):
[Game show song].
CW (47:11):
[Dah tah dah tah dah tah dah tah dah, dah tah dah]. Inner microcontroller communication. "I have one big MCU, and two small MCUs, and need inner micro communication with error checking, ACK NACK, et cetera. I selected SPI as a transport. Can you suggest a good protocol?"
CW (47:26):
The only reason I suggested TCP/IP is because you get all of that stuff, ACK, and NACK, and retries, and error checking, but it's probably too heavyweight a thing for most uses. But there's other things out there...I have not done a lot of inner micro communication that requires ACKs, and NACKs, and error checking.
CW (47:48):
My question, which I did not ask, was why do you need all of that? What is happening between these chips that's causing you to lose packets or have corruption?...Maybe this is a failing of mine, but I don't really spend a lot of time on checking for SPI corruption.
EW (48:06):
...No, not SPI corruption.
CW (48:10):
Yeah.
EW (48:11):
Yeah, hmm.
CW (48:14):
Unless you've got a real bad signal integrity problem, it's not something I usually worry about. Maybe if it's a long run, but yeah. So I kind of wasn't sure about the whole premise of it, but...I mean, there's a lot of ways to do chip-to-chip communication with a bit more reliability, and people listed lots of things.
EW (48:35):
But the TCP/IP.
CW (48:36):
Yeah.
EW (48:36):
It was one of the things you went to, because you have such a good networking background.
CW (48:40):
Because every time I see a thing that looks like a nail, how does that go?
EW (48:48):
There are hammers, and there are nails, and they should always be joined together.
CW (48:51):
Whatever. Anyway, TCP/IP is either my hammer or my nail.
EW (48:56):
How would you go about putting TCP/IP on a microcontroller?
CW (49:02):
I'd go grab lightweight IP and then get that built. And then I'd go on with my week.
EW (49:09):
And then if I wanted to send something to the other chip, would I put something on top of that, like HTTP, and post things, or -
CW (49:17):
No.
EW (49:17):
- would I just -
CW (49:19):
I mean, depends on what you're sending, but...you probably have a fixed set of messages and things that just stick into to TCP.
EW (49:27):
Stick into TCP.
CW (49:29):
I mean, you build a layer on top of TCP/IP. It's probably a socket layer that you have. And then you use that.
EW (49:37):
You treat the socket kind of like a file iostream?
CW (49:41):
Yeah. Yeah.
EW (49:41):
Okay.
CW (49:41):
Yeah.
EW (49:44):
Well, that didn't take nearly as long as I thought that question was going to take.
CW (49:46):
Yeah. I'll probably get people yelling at me.
EW (49:49):
I mean, it's not trivial.
CW (49:52):
No.
EW (49:52):
But it's not as hard as it used to be.
CW (49:53):
But doing any of the stuff that you want to do is not trivial. So as soon as you want to do that, it depends on which non-trivial you want.
EW (50:00):
As soon as you want ACKs and verification.
CW (50:00):
...Never invent your own protocol for anything. There's almost never a reason to do that. Now, TCP/IP may not be the right thing for a whole bunch of use cases, including inner chip communication. It's very heavyweight. TCP has a lot of memory requirements.
CW (50:17):
You can tune it so it doesn't, but there's a lot of stuff that goes on with that that's probably inappropriate for small micros. But there's a lot of protocols out there that people have worked on.
CW (50:27):
And the difficult thing is,...some of the conversation that followed that question conflated protocols with framing and stuff like that. And framing is a completely different issue from things like error checking, and ACK, and NACK.
CW (50:47):
It's just a way to say, "I'm starting to give you stuff. And this is the end of the stuff," like SLIP framing for serial communications and stuff like that. And serialization is another thing that gets conflated with protocols. That's the way you take some data, whether it's a JSON, what's a JSON thing?
EW (51:08):
Object?
CW (51:08):
A JSON object, or a C struct, and you need to communicate that to someone else. How do you get that onto a wire? And that's serialization. That's all parts of protocols, but...a protocol is the means by which you arrange for communication by saying, "I'm going to send this," and somebody saying, "Okay, send it."
CW (51:29):
Saying, "Oh, I didn't get it. Please send it again." Or "There was an error in that." It's the high-level stuff on top of the communication that makes things work in a more reliable manner, or makes things work in a consistent manner, or makes things work with the speed that you need by having flow control and things like that.
CW (51:49):
That's protocols. All the other things are pieces that communication is built out of, and they're all different. So the answers to that question were kind of not really all on target, I thought.
CW (52:04):
Because people were suggesting things that are good suggestions, but they were more along the lines of, somebody I think selected Google Protobufs, which is a way of serializing stuff, but it's not necessarily a way to ensure reliable communication and that sort of thing.
EW (52:22):
Is TCP/IP the easiest way to ensure reliable communication?
CW (52:26):
It depends on your definition of reliable. And it depends on the definition of easy. But it really depends on the resources you have available. So if you have an 8051, I wouldn't try to stick TCP/IP on that. If you had a Cortex-M4 or M3, it's probably reasonable, depending on how much space you've got.
CW (52:46):
But if you want simple reliability, then there's probably easier things to do. And there were some other suggestions along those lines in the conversation. There was...HDLC, it's a very old one.
CW (53:04):
But even that's more of a data link kind of thing, and it's more of a framing thing. So yeah, it's all very complicated. I don't have a good suggestion. I've never done that.
CW (53:13):
If somebody has something that they like for inner chip communication, for the case where you need reliability and error checking, which I still don't quite understand, I'd need to see the use case for that to see why that's necessary.
EW (53:34):
You have such a different perspective on that sort of thing than I do. Because I have totally built protocols. Sometimes you just need to talk to somebody and -
CW (53:42):
I mean, there's building a protocol and there's building a protocol, right?...If you're talking -
EW (53:47):
Communication
CW (53:47):
- chip-to-chip and..like, "Okay, I've got three messages, and they're these message types." And sure, that's building a protocol. That's not what I'm talking about.
EW (53:57):
He's got air quotes that are so big. You can't even imagine.
CW (53:59):
That's not what I'm talking about. I mean, yes, that is building a protocol, but that's more like establishing your message types.
EW (54:06):
Yes.
CW (54:06):
Which is fine. That's still technically building a protocol. But what I am talking about is building the infrastructure through which general things can happen so I can send arbitrary messages, and they can be acknowledged and all of that stuff.
CW (54:21):
That's more of a general purpose communication protocol, is what I think of when somebody asks a question like that.
EW (54:26):
Okay. Well, that's it for my questions. Do you have anything else you'd like to talk about?
CW (54:34):
There was more. Wasn't there more?
EW (54:36):
There were a couple of things, but they were from old shows, so no.
CW (54:42):
I could have sworn we got recent emails.
EW (54:43):
One of them was marked private. I responded to that.
CW (54:46):
Right, right.
EW (54:49):
I guess I should ask if there are professors out there who are using my book, please contact me. I have some questions for you. It won't take very long.
CW (55:02):
Cool, cool.
EW (55:03):
show@embedded.fm. And we have been talking about Patreon. We have a Patreon page. You can support us for like a buck and you get access to the Slack. If you want to support us at a higher level, we appreciate that, and I will send out stickers this year.
CW (55:24):
Stickers and pins.
EW (55:27):
I'm promising stickers. We really should -
CW (55:28):
We have a lot of pins.
EW (55:29):
- get the international pins finished.
CW (55:30):
Yeah. We'll do that. We have a lot of shipping to do in the next few months anyway.
EW (55:35):
I'm not promising pins.
CW (55:36):
Yeah.
EW (55:36):
Because I have looked at my work schedule, and every time I look at it, I just want to hide under the couch. It is so not good for the next few months.
CW (55:46):
I will not take any responsibility for that.
EW (55:50):
Nope. That's all me. Well, no, that's not entirely true.
CW (55:55):
...Well, I still haven't heard back about that.
EW (55:59):
Alright. Well, if that's it, let's get to the thank yous. Thank you so much to InspectAR for sponsoring the show. We really appreciate it. Thank you to our Patreon supporters for their support as well and their questions.
EW (56:16):
And thank Christopher for producing and co-hosting. If you'd like to contact us, it's show@embedded.fm, or hit the contact link on embedded.fm.
EW (56:28):
And now some Winnie the Pooh. My bookmark fell out so I'm not quite sure that it's going to line up.
CW (56:35):
I think this is the second time this has happened.
EW (56:37):
[Winnie the Pooh excerpt].