343: Getting Brains to Work
Transcript for Embedded 343: Getting Brains to Work.
EW (00:06):
Welcome to Embedded. I am Elecia White, and I'm here with Christopher White. We're going to talk with each other this week.
CW (00:14):
We just did that.
EW (00:16):
No.
CW (00:16):
I feel like we just did that.
EW (00:17):
Maybe.
CW (00:18):
All time runs together.
EW (00:20):
It really does right now, doesn't it? It's just, one day is like the next.
CW (00:25):
87th day of March? Oh God, it's farther than that.
EW (00:27):
I believe it's much ... Yeah.
CW (00:30):
All right.
EW (00:32):
Well, we have some emails to talk about, we have some announcements, and I found some of your homework I want to discuss.
CW (00:42):
That disturbs me. I have no idea what you can mean by that.
EW (00:46):
You should be scared. Which one do you want to start with?
CW (00:51):
Let's get the announcements out of the way, I guess, since that's meta show.
EW (00:57):
Well, the meta thing is about transcripts.
CW (00:59):
Transcripts.
EW (01:01):
They are available to all now.
CW (01:03):
Now you can see our words.
EW (01:05):
Which I find kind of hilarious. I mean, things taken out of context are usually pretty funny, but ...
CW (01:12):
How about my stuttering and babbling to get through sentences? Does that come through?
EW (01:16):
No, actually, it doesn't. The transcription service takes that out.
CW (01:20):
It's like Photoshopping your photos. That's nice.
EW (01:25):
You have to pay extra to get the stuttering.
CW (01:26):
Oh, okay.
EW (01:28):
And we will do them going forward, we will do them when we replay episodes, as we did for Roger Linn.
CW (01:35):
Right.
EW (01:36):
And really, if you want an old one done, you're pretty much going to have to wait until we replay it because we take a weekend off, which may be never. Sorry about that.
CW (01:46):
Well, maybe never statistically. We're still going to take weekends off.
EW (01:50):
Oh. Oh yes. Yes.
CW (01:51):
And it may be never that the particular episode you want comes up in the round robin. But they are kind of expensive, so we're not just going to do them when people ask for requests, because that could bankrupt us if we did all of the previous episodes all at once.
EW (02:04):
Yeah. We're back to spending all of our Patreon dollars on the show, which we were pretty close already.
CW (02:11):
So, yeah. And how can people find them?
EW (02:16):
It is embedded.fm/transcripts/ the number of the show.
CW (02:22):
The page will look just like the episodes page, just it'll have—
EW (02:25):
Transcripts instead of episode.
CW (02:27):
Text instead of audio. Yeah.
EW (02:28):
You can also get them in RSS. That is an RSS feed, and you can just put it in your RSS reader. That might actually be better, because the way it's formatted on the website, there's a lot of space. But that was apparently what the screen readers wanted, so I didn't mess with it.
CW (02:49):
Okay. Might be a way to format that differently from ...
EW (02:52):
CSS or something.
CW (02:53):
Markdown or something. Yeah. But yeah, let us know if they're ... You know, if you like them, let us know.
EW (03:00):
Yeah.
CW (03:00):
It certainly would be nice to hear that people use them for something other than us looking at them going, "Ha ha, that was a stupid thing I said, and now I can read it over and over and over again!"
EW (03:10):
Yes. And then I have some emails from listeners. The first one is from Alen, who is very nice, talking to us about that he likes the podcast, and mentioning the show where I interviewed Chris. He wanted to talk about mentors through our careers. How did they become your mentors, and what was your relationship like? That's a really tough question, because you don't always know who's a mentor until later.
CW (03:40):
Yeah. No, that's definitely the case for me.
EW (03:43):
I didn't have any relationships that it was like, "Will you be my mentor?" "Yes." "Okay, let's meet every week." It didn't happen like that. It was always more organic.
CW (03:52):
Yeah. For me, it was always ... Well, from the very beginning, when I was an intern, senior person on my team deciding I was worth something and giving me things to do, and encouragement, and that kind of thing, but it was not formal. That relationship happening on and off for years after that, different places and for different things, but ... yeah. And those companies, formal mentorship wasn't something that was ... At least, I didn't see that happening at any of the places I was at until, I think, Fitbit, which was extremely recent.
EW (04:30):
Late in your career.
CW (04:31):
Yeah.
EW (04:33):
I had a mentor at HP, but it wasn't formal, and our relationship extended beyond my time at HP. We became really good friends. But then I worked with her at another company and it kind of fell apart. Our roles had shifted too much, that the advice she was giving me didn't work anymore, because I had, at that point, been to several startups and it was her first, so it was just different. Mentoring relationships can change.
CW (05:08):
Yeah, and at a certain point, you're up here. I think we discussed this on the show about mentoring, is that eventually your relationship with your mentor changes such that you're equals or you're no longer taking advice so much as just working alongside that person, if that is the way it went.
EW (05:27):
And it's definitely possible to have peer mentors. I've had some of those that were the best, because they were going through a similar set of problems, and being able to talk through them or to say, "Yeah, I went through that last year," and to trade advice, that was super helpful.
EW (05:45):
But I just don't have relationships that are like, "Will you be ... " I remember that, for a long time, I was really bothered by a lack of role models. I didn't know what I wanted to do with my career, and everybody I talked to had such a different path that it wasn't related.
CW (06:06):
And I've had other ones besides the one I mentioned, a shorter duration, people who I think decided they wanted to help me or encourage my career or whatever. It wasn't something that I said, "Hey, that person, I'm going to attach myself to them and they'll guide me through this." It was more the opposite, which was weird. In retrospect, it was weird. But most of those tended to be shorter. But yeah, the formality of it is something that I haven't really experienced.
EW (06:41):
And your bosses, your managers, how often have they been your mentors?
CW (06:46):
Well, one of them I was talking about was certainly in that role, although I'm not sure I reported to him exactly. I might have. I think it's natural for managers to take on that role for everybody to a certain degree, unless you're a super senior, but part of the job of manager is to guide the development of your employees, so I always feel like that's part of the thing.
EW (07:18):
It's hard, as an employee, wondering if your manager is a good mentor to you, because they have different loyalties.
CW (07:27):
Yeah.
EW (07:28):
And if you can get a mentor outside your career, or even better, a mentor from your last job, that pulls your manager in fewer directions.
CW (07:38):
And your managers come and go.
EW (07:39):
Yeah.
CW (07:41):
Sometimes fairly often. And as you get more senior, that gets a little weirder, because I've had many managers who are younger than me, and less senior than me. I decided a while ago I was not interested in continuing to be a manager, and to do any sort of management things, so I kind of got more senior in the senior developer, principal engineer, that kind of title space. That puts you sort of as a peer to your manager, which is a weird relationship to be in, because you think of manager canonically as the person who tells you what to do and guides everything, but once you've been doing this a while, if you're not a manager and you're still a developer, it's more of a, "I'm on this team, but I'm also helping technically guide it," and the manager discussion is more about, "How's the team going? What else?" It's more of a bi-directional thing.
EW (08:40):
That's part of being a senior engineer.
CW (08:41):
Yeah.
EW (08:41):
Is moving from being told what to do to figuring out what needs to get done and how to best do it.
CW (08:49):
And spying on the rest of the team for your manager.
EW (08:52):
So I don't think we have a good answer for you, Allen. It isn't as concrete as I want it to be.
CW (08:59):
Certainly not planned, so yeah. But people did ... There were definitely a handful of people who helped my career immensely.
EW (09:10):
And I can think of one mentor who I really thought he would be a mentor for a long time, but as soon as I left the company, we just ... I reached out several times, but he was always too busy, so it's odd. I always thought mentors would be people you had lunch with, but I never had lunch with him. But we did sit and talk occasionally. So, there is no canonically mentoring relationship.
EW (09:40):
Let's see, we got an email from Ioana, who recently discovered the show and is very excited about it. She is pursuing an electrical engineering degree at the University of British Columbia, and really likes embedded systems. She didn't actually have a question, and I'm not going to read the whole email because it sounds much too nice, but I wanted to point out that if you want to help the show, tell somebody about it. A lot of people get really excited about it and I'm so happy, and it's amazing that that's all it takes, is someone saying, "I think you'll like this. They had an episode that I think you might be interested in."
CW (10:24):
One of the hard things about podcasts in general is there's no real ... For better or for worse, the whole podcasting thing is based on RSS. It's just out there. Apple maintains the directory through the goodness of their hearts ... for now ... but there's things happening, it's moving ... Podcasts are on Spotify, and that's different. It's not RSS-based, it's their own private little weirdness, and monetization happens there in strange ways, but the core of it is still RSS
EW (10:52):
But we don't get [crosstalk 00:10:53]
CW (10:53):
This open RSS thing, and you can get podcasts through dozens of different apps that just feed from the RSS, or just get it in your RSS reader, or go on the website. It's all very open. But what that means is it's hard to discover podcasts, because beyond the Apple directory, there isn't really anything out there, and people who aren't in the Apple ecosystem ... even though they're using the Apple directory a lot of times ... don't go there, don't go to the Apple podcast app, which has reviews and ratings and things, and has suggestions for other podcasts. So it's kind of hard, beyond word of mouth, to get podcasts to grow. So yeah, if you like the podcast and you know people who listen to them, mention it. And you can review it on iTunes. That does help get us some visibility there, but it depends on if you're able and willing.
EW (11:51):
If you're able and willing, it gets us visibility in that when we get more reviews, they push us up higher in the rankings, and then a few more people see us.
CW (12:02):
Yeah. There are all these weird websites, too, that try to become discovery engines for podcasts. One of our problems is that we clash with NPR Embedded, which makes discovery a little weird, because—
EW (12:16):
It makes the occasional email a little weird.
CW (12:16):
You search for us, sometimes you get them; you search for them, sometimes you get us. The directories sometimes have a little issue with that, too.
EW (12:26):
Yes. So if you want to support the show, tell people about it. If you want to do more, feel free to review it on iTunes. If you want to do more and you have an extra couple bucks, join us on Patreon.
EW (12:35):
Let's see, do you want to talk about SVG files or BLE apps?
CW (12:42):
Wow, both sound thrilling.
EW (12:44):
Don't they sound thrilling?
CW (12:45):
Thrilling.
EW (12:46):
Thrilling.
CW (12:46):
Yes. Hm. Let's go with SVG.
EW (12:50):
Okay.
CW (12:51):
On the off chance that BLE is open-ended and we just talk for the next three hours.
EW (12:57):
I got a new gadget based on the recommendation of a listener, James. I was talking about origami in the Slack channel, and that I wanted a laser, but I go through this every—
CW (13:12):
Laser cutter?
EW (13:13):
Laser cutter. Twice a year, I want one, but then I talk myself out of it, and he suggested a Cricut, which is like a—
CW (13:23):
It's a bug.
EW (13:25):
No, no, it's kind of like AxiDraw, but with razors.
CW (13:31):
Okay. That sounds terrifying.
EW (13:35):
It's a 2D CNC widget that you can put a pen in, that you can put blades in to cut fabric or wood or paper, and you can put different things in to score or perforate or whatever. Since it was a tenth the price that I was looking at for lasers—
CW (13:56):
Which, and the lasers, you have to ventilate them—
EW (13:59):
That was a cheap laser.
CW (14:00):
And service them, and you have to put it somewhere you were never going to use it. Yeah.
EW (14:05):
So I got the Cricut Maker and it has been so much fun. I have been doing lots of origami with it. I did a couple of the other things they suggest, just because everybody else makes stickers with it; I can make my own stickers! Then I ran into the giant problem of, doing some of the origami I wanted to do, I needed to modify the images in ways that were nontrivial, weirdly nontrivial.
CW (14:37):
So they come as vectors, presumably, for the pen or scoring paths, right?
EW (14:47):
Well, the Cricut uses SVG files, which are vector files, which I thought were basically, they're PNG or Bitmaps or just another—
CW (14:57):
Binary format.
EW (14:58):
Binary format. But they aren't, they're XML files, which totally blew my mind. And you were just like, "Oh yeah, I knew."
CW (15:05):
Well, I knew because that was what I had done for the last five years at Fitbit, so ...
EW (15:13):
So I had to learn a bunch about XML files in Python, and I modified some SVG files, and now I have all these ideas about origami and Python and software. But then I keep just going back to folding instead of writing more software. I'm going to write software for work.
CW (15:32):
No, SVG is cool though, because it's very human readable, which is kind of a plus and a minus; a minus in that it's verbose. If you're trying to draw something complicated, it's often got a lot of elements in it in a very big text file.
EW (15:48):
It's weird to me how every program outputs a different form of SVG.
CW (15:53):
Yeah.
EW (15:54):
If you load the same thing, this one will make curves, this one will make a billion little tiny lines. It just is super odd.
CW (16:01):
Yeah, it depends on the quality of the rendering engine and how they output it. Yeah. The one thing about the Cricut that's cool ... and I think it was one reason you got it instead of the AxiDraw ... was it has two tool things.
EW (16:17):
Well, and because it doesn't have pressure to cut.
CW (16:21):
Right, right, you needed to cut.
EW (16:21):
Yeah.
CW (16:22):
Yeah. But the two tool things means you can score and cut without swapping anything.
EW (16:30):
One could, but someone bought an extra tool that was a little better for scoring, so I do swap them out.
CW (16:38):
Oh, all right.
EW (16:38):
Yeah.
CW (16:39):
Well nevermind then. But it does have two tool slots, is what I'm trying to say.
EW (16:44):
It's kind of beautifully engineered. The whole thing is beautifully engineered. It's got little secret cubbies for your tools, and—
CW (16:51):
But it's not hackable, right?
EW (16:53):
There was an older version that was hackable, and now I guess it isn't, which is sort of sad.
CW (16:57):
This is a out-of-the-box, it works, you use it, you're done.
EW (17:00):
SVG files, you don't mess with—
CW (17:02):
You want to hack something, you're hacking the SVG files. It's not G-code, you're not plugging this into ... You have to use their app and stuff.
EW (17:11):
Yeah.
CW (17:12):
Pluses and minuses.
EW (17:13):
It does have a BLE interface, so part of me is tempted to go ahead and sniff it, and look and see, but after I finish the origami software, after I finish all the folds I want to fold.
EW (17:28):
Let's see, let's go with another email. This one is pretty complicated.
CW (17:33):
Okay. I don't know what that means.
EW (17:37):
It means it's going to take me a little while to explain it.
CW (17:39):
Oh, okay.
EW (17:40):
Carl from NJ, which may be New Jersey—
CW (17:43):
I think it's probably New Jersey.
EW (17:47):
Has heard from more than one person ... and probably something I said might have related to this ... the opinion that Arduino development environment holds coders back from doing advanced coding.
CW (18:01):
Here we go.
EW (18:03):
Carl would like to draw our attention to a code base called GRBL. Gribble.
CW (18:09):
I'm going to go with Gerbil.
EW (18:10):
I think you're right, Gerbil. Okay, we'll go with Gerbil. Carl hasn't examined the code, but it's the most advanced use of AVR Atmel chip that anyone can do. It includes USB communication, a G-code interpreter, and DMA to control the hardware with time and accuracy.
CW (18:32):
I assume this is for 3D printers and stuff.
EW (18:32):
It sounds like it's for a 3D printer, yeah. Carl asks, "Doesn't this show that the Arduino environment, while lowering the bar to entry-level programming, allows a good programmer to do some pretty sophisticated programming?"
CW (18:46):
Nobody said you couldn't do ... Look, Turing. These are all computers, and given enough time and effort, you can do anything with them. The question is is that the right tool for the right job all the time, and that's where sometimes I think Arduino is being stretched past where it should be used.
EW (19:12):
Arduino doesn't make it impossible to do complex things, not at all. It hides complexity at some levels that I think are important if you want to have optimum use of your hardware. That can be super. A lot of people don't want that complexity. I like the Cricut machine because I don't want the complexity.
CW (19:34):
Exactly.
EW (19:35):
I want to just ... SVGs are as complex as I want to get right now.
CW (19:40):
I bout a DVR because I got sick of Linux and MythTV. At a certain point, you just want things ... There's a balance. You can either buy something that works, or if you're a maker type, you can make something that works, and if you want to make something that works quickly and easily, Arduino is a great idea.
EW (19:58):
And if you want to make it from component atoms, that's a different idea.
CW (20:04):
Yeah, yeah. I think we've discussed this before, that most of our anti-Arduino stuff is more about products.
EW (20:13):
Yes. I don't think you should be using it for production work. I don't think you should be using Arduino in your product, because a.) it is very expensive for what it is ... the processor is ... and b.) it is LGPL licensed. If you don't know what that means, that's kind of bad, because that means your—
CW (20:39):
The license isn't bad, the lack of knowledge is bad.
EW (20:41):
The lack of knowledge is bad.
CW (20:42):
Yeah.
EW (20:44):
What it means at a very high level, the way I read it ... which, I am not a lawyer, but I did try to research this ... it means that you should be releasing your object files—
CW (20:57):
Yes, that's correct.
EW (20:58):
When you are releasing your product.
CW (21:02):
The requirement is that end users be allowed to relink your code against different versions of the ...
EW (21:07):
Library you were using, the Arduino code.
CW (21:10):
Library base. Yeah.
EW (21:13):
And there are two problems with that. One, good luck finding them. That was quite the adventure I had, and it re-compiles them to a new location each time, so ... have a ball. And two, nobody does that, but that still doesn't make it right. You're having a copyright violation in your product. What does that leave you open to?
CW (21:35):
Well, it's a license violation, not a copyright violation.
EW (21:37):
I mean, it's a copyright violation. LGPL is a copyright.
CW (21:42):
Maybe there's no distinction, but I feel like there's a distinction there.
EW (21:48):
It puts you in a gray area that I don't appreciate.
CW (21:51):
Yeah. No, no, it's an additional complication if you're doing something that you're likely to be exposed to that, yeah.
EW (21:59):
Yeah.
CW (22:00):
Which is if you're selling something or putting something out there publicly. I mean, and he says AVR, and that's ... Yes, definitely, you can do complicated things with AVRs. You don't need Arduino to do complicated things with AVRs either. There were microcontrollers before Arduino existed. But Arduino is expanded to cover all sorts of processes. I mean, you can put it on—
EW (22:23):
I'm waiting to [crosstalk 00:22:24]
CW (22:24):
600 megahertz. Teensy, right? Okay, now what? You can do anything you want with that. At a certain point, it becomes a question like, "Do I use Arduino on a micro? Do I use MicroPython on a micro? Do I use embedded Java script on a micro?" Please don't do that. There's a whole bunch of other high level, easy ... I'm making air quotes, "easy" ... options, and they all have the same kind of calculus about whether you should be using them, to me. It's like, "Okay, what are you gaining by using this, and what are you losing?" Usually what you're gaining is speed of development and ease of understanding, and what you're losing is scalability and proper use of resources and being able to turn it into a product later on, that kind of stuff.
EW (23:15):
And sometimes you're losing robustness, because you're building on somebody else's thing.
CW (23:18):
Yeah, of completely unknown quality. Although we all do that.
EW (23:22):
Yeah, that's true. It's hard to really build it up from [crosstalk 00:23:26]
CW (23:25):
But it's easier to yell at Nordic than the Arduino conglomerate. Say, "Hey, this library doesn't work," and then Nordic can ignore you professionally instead of ... I'm not really trying to bag on Nordic, I'm just picking an example out of thing air.
EW (23:41):
So, Carl, yes, Arduino development environment is great for what it is. When you want to go beyond printF debugging, there are other options.
CW (23:55):
And if you've got additional complexities, it's probably pretty darn hard to get USB and ... Well, I don't know.
EW (24:03):
I think Embed, I bet, has all that.
CW (24:04):
Once you've got a bunch of interrupt driven stuff, and you're doing things asynchronously, I do not think Arduino. But maybe I have a misconception there.
EW (24:12):
I mean, you're depending on how well the libraries work together, and if there's a code base that is all working together, then sure, they've done it for you.
CW (24:23):
Sure. Yeah, yeah. Yeah.
EW (24:25):
Okay, so moving along. Let's see. I have this note about ... Debugging this week, I started thinking about how I was debugging, because I was making no progress on the actual, "What is the cause of this bug?" This was a multi-week debug, by the way. It was really hard. And instead, I spent so much time trying to make the bug happen faster and faster and faster. Part of that was just the reproducibility problem. Part of it was just being extremely bored waiting for it to happen. I know that that's a technique people forget about.
EW (25:10):
We were like, "Okay, isolate the bug for reproducibility." But there's an aspect to isolate the bug or iterate the bug faster so you can find what changes matter.
CW (25:23):
Yeah. You've got to flush it out.
EW (25:25):
It's one of these things that my brain ... Lately, if I don't finish something pretty quickly, I lose all of the state information in my head, and then I end up repeating a test, and then that irritates me. I have my notebook. I'm really good about using it. And yet still I'll read yesterday's, and I'm like, "These are the same tests I ran this morning." My brain fog is such a thing.
CW (25:57):
Finding ways to get a problem to happen often is ... especially with things like memory corruptions. There's been bugs like that that I've fought for months on, because they only happened once a week, or I could get them to do something once a day, but if you don't have all the instrumentation set up just right to catch what you're trying to catch, well maybe that iteration was wasted, and then you've got to wait for the next one to come around after changing what you're looking at. Or you were wrong. "Oh, I'm going to look at this memory error because I think this is what's happening," and you're looking at the wrong one, so now you've got to figure out what the next one is, but then you've still got to wait a day to reproduce it.
EW (26:35):
And then you instrument the crap out of it, and—
CW (26:38):
It goes away.
EW (26:38):
And it goes away, yes.
CW (26:40):
Quantum mechanics. Well, not really, but ... Yeah, so finding ways to get something to happen more often is ... not only does it help you get more shots on goal to find out what the problem is, but it also changes how you think about the problem, because if you can make it happen more often, now you know something about it you didn't before.
EW (27:06):
Yeah. Let's see ... Oh, that's it. So it's going to be a short show. Well, actually it was a very long show, because we started earlier and then had recording difficulties, which are not Christopher's fault, they are the dog's fault.
CW (27:21):
I thought we were going to talk about some other stuff?
EW (27:23):
Oh yes, your homework!
CW (27:24):
And BLE.
EW (27:25):
Oh! Oh, do you want to talk about your homework or BLE?
CW (27:29):
I mean, we're at 25 minutes.
EW (27:30):
I know, I know. I know.
CW (27:34):
Let's do whatever you wanted with that.
EW (27:37):
So your homework, tell me about this.
CW (27:41):
It's not really homework, it's a thing to look at. I've been having some trouble with motivation since about 1991.
EW (27:52):
Particularly since March.
CW (27:53):
It's gotten harder since March.
EW (27:55):
Yes.
CW (27:57):
I'm having trouble getting started at work, staying focused and things, and talking to the therapist I work with, she mentioned some stuff about ADHD. I do not have ADHD, but I'm experiencing ADHD-like things. There's many reasons I don't have ADHD. Believe me, I've looked it up. But she gave me this handout on how to kind of change environments and things when it's difficult to start tasks and stay on tasks and things like that. You're holding it and I don't have it in front of me, so I don't know what it says.
EW (28:31):
Well, and you printed it out really small.
CW (28:34):
I did not do that intentionally, it just came out that way because it's a table and it's very, very full.
EW (28:43):
So this goes through different executive skills, such as organization and flexibility—
CW (28:48):
And golfing. Sorry.
EW (28:50):
Time management and task initiation, and then it gives the definition of each and tells you some strategies for modifying the environment that you're working in, and then also modifying the task and how to solicit help, and then gives some tech supports of applications that you could use.
CW (29:11):
Part of the problem is I couldn't really bring the motivation to look at this yet.
EW (29:14):
To read this, yes.
CW (29:17):
That's why I don't know much about it.
EW (29:19):
It's been sitting on the table for a few days. Okay, so task initiation, let's start there.
CW (29:26):
All right, let's start there.
EW (29:28):
Is the ability to begin projects without undue procrastination in an efficient or timely manner.
CW (29:33):
I don't know where this came from, so I don't know that we're ...
EW (29:37):
I'm not going to read it all.
CW (29:38):
Okay. It was all fair use.
EW (29:42):
A young child is able to start a chore or assignment right after instructions are given. A high school student does not wait until the last minute to begin a project.
CW (29:52):
But if you wait until the last minute, it can only take a minute.
EW (29:55):
It only takes a minute.
CW (29:56):
So that's pretty compelling.
EW (30:00):
Yeah.
CW (30:01):
So what does it say for ... Give me some suggestions for, I get up in the morning, I spend two hours on the internet, and then I've just got to get going and work. Plug that into your formula there. Tell me what to do.
EW (30:14):
Okay, you should choose a place where you won't be distracted, and a time that doesn't conflict with other regular activities.
CW (30:18):
I have no other regular activities.
EW (30:22):
Okay, so check. Place the task to be done in a location you visit regularly, and put all the necessary materials in that place.
CW (30:31):
That's interesting.
EW (30:32):
That's your computer. Okay, so your computer. Suspend access to distracting electronics.
CW (30:39):
See, now this is the problem!
EW (30:41):
Which is your computer.
CW (30:42):
The computer is the thing I've got to do the project on, but it is also the source of all distraction. Maybe I need another computer.
EW (30:51):
I think actually the modifying the task. I mean, making your environment sufficient is one thing, but they also recommend to keep the degree of effort required low. Say, "I'm just going to do this for five minutes." It's easier to initiate something if you know you can get through it quickly. And I know you, like me, if you just start, we both get lost in code and are happy working, it's just that initial few minutes of pushing through. So sometimes I do say, "I'm going to work for 10 minutes, and if I can't make some progress, I'm just going to close my notebook, not bill, and go do something else." My brain just isn't ready.
CW (31:39):
It's hard, though. Changing the degree of difficulty by changing the expectation of time is good. Changing the degree of difficulty of the task itself is not ... "I'm going to work on this deep learning network, but I'm going to try to make it easier on myself." That's not always ... I mean, these are hard problems, so part of the thing is getting the motivation to, "I'm going to engage with this thing that is difficult to think about."
EW (32:09):
One of the things that they suggest if you can ask for help is to ask for help selecting or brainstorming a starting point. I don't know why you would need to ask for somebody else [crosstalk 00:32:21]
CW (32:20):
If you're a kid, maybe.
EW (32:22):
But I think that's a good thing. There's a lot of times the problem is so big and insurmountable, it's just not worth starting. And if I can instead break it into just a piece, just a starting point to chink away at the wall of work, that helps a lot.
EW (32:45):
Their other suggestion was to ask someone to check in with you to make sure that you've completed the task in the timeframe you selected. Does that work with you?
CW (32:58):
Sometimes?
EW (33:00):
Does it? There were a couple of these where it suggests that you ask someone to cue you or check in or ...
CW (33:11):
Guilt is the wrong word, but accountability is a big thing for me. It's the only reason I get anything done, is because eventually the ...
EW (33:22):
Crushing guilt?
CW (33:23):
The fear of completely getting nothing done and having the person I'm supposed to be doing it for ... overwhelms me. Usually that doesn't take that long, so I'm pretty good, but that kind of accountability. I find even if I say to somebody sometimes, "I'm going to do this by Friday," and they don't care, it still works.
EW (33:46):
Yeah.
CW (33:47):
Because I said it, so I better do it. So that can help. Yeah, I mean, it comes and goes, too. It depends on how anxious I am, and how compelling the stuff I have to work on is, and how urgent it is. It's just a bunch of ... It's a multi-dimensional problem, getting brains to do things.
EW (34:12):
Well there was one here, the working memory one is the executive still. It's the ability to hold information in memory while performing complex tasks.
CW (34:22):
What did you say?
EW (34:27):
Exactly. I just, that one has been really hard for me lately.
CW (34:32):
Yeah, that's a sign of fatigue.
EW (34:37):
It's stress.
CW (34:37):
All your neurons are firing too much. Now I have that happen a lot also. I haven't been talking about it much, but ... Especially, one of the things I'm working on, I have eight branches in Git, and they're all just slightly different. There's a lot of experimentation and research going on, and it's happening very quickly.
EW (35:01):
On this project.
CW (35:01):
On this project. Several people are working on various things, and it's research code, so there's some modularity problems that could be fixed, but everybody is going too fast, and it's not product code. But I just keep finding myself getting in in the morning and looking at my command line and going, "What? Wait, this branch is this." And right now I'm trying to move some stuff from one of my branches to another one of those, and I've got comparison windows, and I'm just getting lost. And remembering what I'm doing doing that the next day, or even five minutes later, is—
EW (35:42):
Five minutes later. Right after you've compiled and run and it has failed, and now you don't remember and you have to start all over.
CW (35:49):
Yeah. I think if you did a graph of the most commonly used command line commands in the show—
EW (35:58):
History?
CW (35:59):
You got it! For the last few months, I've been typing ‘history grep’ probably 170 times a day. It's a lot.
EW (36:13):
One of the things they suggest is to keep a checklist using whatever system you work with, and that helps me a lot as long as I do it, as long as I actually write it down and don't forget to do that.
CW (36:29):
As an example of how scatterbrained I am, I was keeping track of possible episode titles in the channel on our Slack that starts with P, which is Politics.
EW (36:44):
No, you're supposed to put it into Podcast.
CW (36:46):
Really?
EW (36:49):
I don't subscribe to the Politics one.
CW (36:53):
You think that's the wrong channel?
EW (36:56):
Is anybody arguing with you on that one?
CW (36:58):
No, I just deleted them, and now I've forgotten what the second one was that I had. Oh well.
EW (37:07):
I mean, sometimes I'm fine, but sometimes this is exactly the sort of thing ... Oh, you know, what made me pick up the paper to talk about it on the show was when you started to read about sustained attention, and you said, "The capacity to maintain attention to a situation or task in spite of distractibility," and then you turned away, and that's not even the end of the sentence. You just turned away and went back to Twitter or Slack or something, and I'm like, "Do you see the irony?"
CW (37:43):
Look ... I told you I had a problem.
EW (37:47):
They suggest removing as many distractions as possible, so I've destroyed your iPad.
CW (37:56):
I'll just order a new one.
EW (37:57):
No, I didn't. And it suggest music can maybe help with that.
CW (38:05):
Yeah, and that's true for me. Unless it's new music.
EW (38:08):
Yes, and then you get distracted with that.
CW (38:11):
And lately, if I've been practicing a lot of music, that doesn't work for me because my brain just attaches to whatever instrument I'm thinking about at the moment, and whatever song.
EW (38:22):
Yeah. They also say keep the degree of effort low by breaking it into smaller segments, and to switch between multiple tasks, spending a short period on each instead of trying to do all of them at once.
CW (38:36):
Oh! Okay.
EW (38:39):
Rotating them instead of parallel [crosstalk 00:38:41]
CW (38:41):
So they're endorsing scatterbrained behavior.
EW (38:43):
Well, they're endorsing focusing on one thing.
CW (38:48):
At least for a little while.
EW (38:49):
And then they have the other one that I just don't understand. Tell someone else your plan and ask them to check in with you at a specific time. I know that works for you. They suggest Interval Minder—
CW (39:03):
You're just saying that because if I told you to check in on me, you would forget.
EW (39:03):
Well, there is that, but there's also, if you check in on me for these things, I would ... There's a reason I don't use my Fitbit, is because I don't even like it when it congratulates me. It's just so judgmental.
CW (39:20):
It's not to be judgmental, it just says—
EW (39:23):
I don't like it when things tell me what to do. "Get up and walk." I'm busy here! But that sort of thing works for you.
CW (39:34):
Yeah, because it's not actually alive. I mean, if a person does it, then you do run the risk of that turning into nagging, if that sort of thing bothers you, but I'm getting a reminder from one of the stupid robots in the house. They're robots. I told them to do that.
EW (39:54):
Yeah, it still irritates me when they tell me. Except for the timers. I like the timers. Yeah, okay, well I will let you read the rest of this in peace.
CW (40:06):
Yeah, I'll get right on it.
EW (40:07):
Yeah. Exactly. I think you know everything here.
CW (40:15):
Well, it's nice to ... There's a lot of stuff like that, where you know everything that somebody is going to tell you, but having it all written down so you can look at it and remind yourself is valuable. I mean, there's probably not much in therapy that I don't know, but repetition is super important for stuff like that because you have to have it on the tip of your brain when you're having a problem.
EW (40:40):
This did have the nice, "If you're having this problem, here are some things you can do."
CW (40:47):
Because when you're frustrated, you don't ... In my experience, me personally, when I'm frustrated or anxious or having some sort of difficulty engaging the mental gears or getting them to shut up about something I don't want them to be engaged about, it's hard to bring the skills that you've got to bear without having them be kind of automatic.
EW (41:11):
Yeah.
CW (41:12):
So, knowing that stuff, or being able to look at something to get outside of your own brain ... Because if I'm procrastinating, even though those things are in my brain and they're kind of floating around—
EW (41:25):
They're whispering.
CW (41:26):
They're whispering in the shouting of, "Well, just five more minutes of," whatever brainless activity I was doing. "That will be fine." But if you have something that you can grab and say, "I need to get out of this situation," when you read it, that's an outside voice.
EW (41:44):
That makes sense.
CW (41:46):
And I think that's why the reminders things work, or having somebody check on you works; because it's an outside voice.
EW (41:52):
And my problem is that I try to remove so many distractions that sometimes, when I actually get into flow, that nothing gets me out. I missed a meeting with one of my mentoring people and I felt so bad, because I had no excuse. I got the Google alert, my phone got the little popup, except my phone was in the other room because I didn't want it to bother me, I wasn't checking mail. On one hand, it was really nice, because I did get a lot of work done. On the other hand, I should show up to meetings when I agree to be there.
EW (42:41):
Anyway, if you're still listening, it's not you. Or it may be you, but you're not alone.
CW (42:50):
Or you may be alone [crosstalk 00:42:52]
EW (42:52):
Actually, you probably are alone.
CW (42:58):
What?
EW (42:58):
Well, I mean—
CW (42:58):
Why are they probably alone?
EW (43:00):
Because we're not in groups anymore.
CW (43:03):
Oh, oh, I see.
EW (43:05):
Sorry. Not like you're alone and sad and pathetic, I didn't mean it that way. I really, really didn't mean that way.
CW (43:16):
Okay.
EW (43:17):
Okay. You did do a BLE app.
CW (43:22):
Yeah, and I don't know what context to talk about this in. It could be a whole show if people were kind of interested, but ... One of the things for Embedded is that a lot of things are Bluetooth, right?
EW (43:36):
Mm-hmm (affirmative).
CW (43:37):
More and more things are Bluetooth. And it's fine to do the device side, but it doesn't really do anything without usually a mobile device, so people need to write apps for that. There's various ways to do it, so I was wondering if walking through on the iOS side, what that looked like, would be interesting for a show. I don't think I could do it now, because it's a longer thing, but ... This is a meta show again.
EW (44:09):
Okay. Well, I bet people would be interested in doing that. I know there are lots of different ways to do it. There are some where you end up with an app on Android or iOS, the tools that I don't remember the name of. I want to say Appcelerator, but that was 10 years ago.
CW (44:30):
Oh, there are some cross platform things, and they have their downsides.
EW (44:35):
Especially when you're working with something like Bluetooth. It is very hardware-centric.
CW (44:38):
Yeah. But yeah, I've done iOS stuff in the past. I did it for Fitbit for a while. I wouldn't say I was great at it.
EW (44:50):
But with Fitbit, you were modifying an existing app.
CW (44:52):
Yes, so developing a new one from scratch was both easier and harder for certain reasons. Easier because some of the architectural decisions that were made at Fitbit made things difficult to try to add new code to, and add new coding features. But it's a different way of thinking about code, too, versus embedded, and yet you're working on an embedded product, so that is kind of interesting. I guess, in some sense, it's a lot like working on a user interface for a better product. You're working at a higher level language than the people who are twiddling the bits. But it's probably something that it's not that hard to get something basic running, and I worked from some good resources, so it might be worth talking about at some point, and just going through and laying out the pieces and what you would need to learn if you wanted to build something to talk to your device.
EW (45:49):
How long would it take me, who has never programmed in Xcode, to be able to do an app like you did?
CW (46:01):
Like the Bluetooth one?
EW (46:02):
Like the Bluetooth one you did.
CW (46:06):
See, that's the hard part. Apple does a good job of kind of getting you off the ground and making a little app really quickly.
EW (46:16):
The Hello World.
CW (46:17):
The Hello World, designing an interface, having it do stuff, simple stuff. The problem is there's a giant chasm between that and more complicated things, like talking to a Bluetooth device with asynchronous events happening. So you really, really have to have a decent understanding. Xcode is just the ID, but you have to have a decent understanding of Swift or C#. Not C# ... Apple people, sorry. Objective-C.
EW (46:46):
Objective-C?
CW (46:49):
Which is pretty much, I wouldn't recommend anybody start with Objective-C anymore. You may come across it when you're developing stuff for iOS, because there's a lot of legacy code, and that was sort of unfortunate, but you kind of just need to be able to read what's there, modifying it maybe a little bit. But Swift is definitely different for people coming from embedded. I had to do a course and go through a book, and there's still a lot I don't know about Swift. On the other hand, it's not as daunting as something like C++, or even C# or Java to me at this point, which have been around a lot longer, because it's new and it's sort of streamlined compared to all those. It will do all the things they will do, but there's a lot more cohesive thought about the design and language, so it wasn't just 30 years of accreting ... Hey! There's that word again! Accreting features, and trying to modernize what is a very old language.
CW (47:55):
So it's pretty quick to learn if you're familiar with a few object oriented concepts, and if you're a Rust person, it's very similar to Rust in a lot of ways.
EW (48:07):
Oh my God.
CW (48:09):
Yeah. If you're doing embedded on Rust, and you're doing Bluetooth stuff, it's probably not that big a leap to start learning Swift. Some of the words are changed, which is kind of annoying to me, as somebody who is looking at Rust, but conceptually and syntactically, it's very similar, minus a lot of the object oriented stuff. So that's the big part that would take a while.
CW (48:33):
The nice thing is Apple provides a ton of ... I mean, the frameworks you get with iOS, the libraries and stuff, just does all sorts of stuff for you, like the Bluetooth stuff. It's complicated, but a lot of the complication is under the hood, and if you want to connect to a device and stuff, it's really straightforward, and a lot of it is callback based. "Oh, this device connected," I get a callback. "This device updated a value," I get a callback, and I just update my variable.
CW (49:04):
And some of the UI stuff is very nice and easy to deal with, but there's a lot of stuff with mobile development that's a big pain in the butt, like signing apps and having a developer account, and test flight for getting testing to other people, and ...
EW (49:21):
Yeah, you're right, this is a whole show. The tactical part of just getting started is interesting.
CW (49:28):
Okay.
EW (49:29):
So, yeah, we'll have a whole show about that at some point.
CW (49:33):
And if people have specific questions about that, send them in and I can think about them beforehand.
EW (49:40):
Cool.
CW (49:40):
And I'm not a super expert.
EW (49:42):
No. Sometimes the best time to teach something is when you're a beginner.
CW (49:47):
I'm not a beginner.
EW (49:48):
When you're just beyond beginner.
CW (49:52):
I just took the training wheels off. I'm sticking a playing card in my spokes. I'm at that level.
EW (49:57):
Good deal. All right, well that covers it. Do you have anything else you want to talk about? Any projects?
CW (50:06):
I have a box of projects upstairs that I haven't started with. I'm making, I have a ukulele kit.
EW (50:12):
You've been playing a lot of music.
CW (50:15):
I've been playing a lot of music. I got some music books, including a sight reading book for bass, which I'm 30 pages in and it's still just the same D note.
EW (50:24):
Over and over. That's what it means to play bass, right?
CW (50:30):
It has a bunch of rhythm stuff in the first 30 pages, but I found it hilarious that I just opened it and it's staff after staff of just D. Not all the Ds. I'm not learning different Ds on the fret board. Just the one. It's pretty good.
EW (50:49):
So, do you think there are bass players out there who have only gotten through the first 30 pages?
CW (50:55):
A lot of guitar players and stringed instrument players in popular music can't read music. So, yes. I can read music. I can read music for piano, I can read drum music. Reading for guitar is really hard.
EW (51:15):
Because the notes go in random order.
CW (51:18):
There is multiple places for things, and it's just ... And the fret board is just not logical. I mean, it is logical. There's obviously a linear relationship with the notes and stuff, but it's not ... I was telling my brother today ... We were talking about this, and he said, "On a piano, you look at the thing and you see the black keys, those are the sharps and the flats, and the white keys are the natural notes, and—"
EW (51:46):
A, B, C.
CW (51:46):
"Once you know all those, you know exactly where you are," and I said, "Yeah. On a piano, it's a thing that says, ‘You are here,’ when you look at it. On a guitar, the guitar hands you a map and a compass, and the map is chopped up into little pieces that you have to put back together."
CW (52:02):
Is this what this show is about?
EW (52:05):
I don't know what the show is about. I don't know why people listen, which is fine. I think they like to have beer with us, or coffee. Or do chores. I guess a lot of people are probably folding clothes right now.
CW (52:18):
All right.
EW (52:19):
All right, well—
CW (52:20):
Let's close this up.
EW (52:21):
Let's close this up.
CW (52:24):
I didn't do that, you did that.
EW (52:30):
All right, well thank you for listening. Thank you to Christopher for producing and co-hosting. Thank you to the dog for not coughing through the rest of the show.
CW (52:39):
The rest of the show, yes. The first half an hour we tried to get going, though.
EW (52:43):
And if you want to contact us, show@embedded.fm or hit the contact link on embedded.fm. There's also a Patreon. It's patreon.com/embedded, which you can also get to from the support page on our main page, which is embedded.fm.
EW (53:04):
And now, some Winnie the Pooh.
EW (53:08):
There was a small spinney of larch trees just here, and it seemed as if the two Woozles, if that is what they were, had been going round this spinney; so round this spinney went Pooh and Piglet after them; Piglet passing the time by telling Pooh what his Grandfather Trespassers W had done to Remove Stiffness after Tracking, and how his Grandfather Trespassers W had suffered in his later years from Shortness of Breath, and other matters of interest, and Pooh wondering what a Grandfather was like, and if perhaps this was Two Grandfathers they were after now, and, if so, whether he would be allowed to take one home and keep it, and what Christopher Robin would say.
EW (53:52):
And still the tracks went on in front of them ... Suddenly Winnie-the-Pooh stopped, and pointed excitedly in front of him. “Look!” “What?” said Piglet, with a jump. And then, to show that he hadn't been frightened, he jumped up and down once or twice more in an exercising sort of way. “The tracks!” said Pooh. “A third animal has joined the other two!” “Pooh!” cried Piglet “Do you think it is another Woozle?” “No,” said Pooh, “because it makes different marks. It is either Two Woozles and one, as it might be, Wizzle, or Two, as it might be, Wizzles and one, if so it is, Woozle. Let us continue to follow them.”
EW (54:32):
Embedded is an independently produced radio show that focuses on the many aspects of engineering. It is a production of Logical Elegance, an embedded software consulting company in California. If there are advertisements in the show, we did not put them there, and do not receive money from them. At this time, our sponsors are Logical Elegance and listeners like you.