Embedded - 248: I’m Not in Charge!
Episode Date: June 8, 2018Chris (@stoneymonster) and Elecia (@logicalelegance) answer listener emails. We did a show with Dennis Jackson about transitioning from software to embedded: 211: 4 Weeks, 3 Days Chibios RTOS: MyNewt ...or Zephyr may be more worth your time. Software tool: Beyond Compare for excellent differencing, including folder level Other people answer STEAM vs STEM (in about the same way we did). C++ standards for safety: NASA, ESA, JSF-AV rules, and Jason Turner’s C++ best practices. Elecia played with Javascript to make a watchface for her Fitbit Versa Chris got a Blackaddr Guitar Teensy Shield which uses the Teensy Audio Library to do amazing guitar effects via code. Elecia’s Twitter bot is @pajamaswithfeet (Tracery code on cheapbotsdonequick.com) Making Embedded Systems book Embedded Patreon
Transcript
Discussion (0)
Hello and welcome to Embedded.
This week it is Christopher and myself and Winnie the Pooh.
That is Christopher White, Alicia White, and Winnie the Pooh.
And we'll be talking about listener emails.
Okay.
And a few other things.
All right.
This is going well.
For me, it's going fine.
Lightning rod.
No, no, we don't do that.
Should I start with last week's quote from Bajan Stroustrup.
Sure.
Or are you just going to cut it off again?
No, I didn't do that on purpose.
I don't know.
It was just gone.
But the previous stuff was so funny that I had to leave it.
Yeah, thanks for that.
It would have been, if you think it's simple, then you have misunderstood the problem, which really applies to everything.
They're simple problems.
A few.
All right.
So we're just going to jump into emails.
Yeah.
I got one from Lady M, whom I don't know who that is, but you didn't write your email in properly.
So when I replied to you. We still don't know who you are. We still don't know who that is, but you didn't write your email in properly. So when I replied to you, we still don't know who you are.
We still don't know who you are.
But the listener says they're a robotics engineer who has been writing general-purpose C++ and Python code
for Linux work and hardware drivers.
They've started taking a real-time operating systems course and been enjoying it a lot.
And they want to shift their professional career from generalist software engineer to embedded systems engineer.
How can they achieve that?
Would any company hire an engineer like themselves with general experience for an embedded role?
And is doing personal projects on TI MSP boards or taking online courses count in hiring?
I feel like we've answered this question several times.
Well, the answer always changes.
That's because we're inconsistent.
Okay, so first we did answer it on episode 211 with Dennis Jackson.
I think that one's four weeks and three days.
Something like that.
But realistically, you're working in Linux,
on C++, and Python for robotics.
You're already an embedded developer.
More than halfway there.
And anybody hiring with a lick of sense would...
I don't think I would bat an eye at hiring somebody
for an embedded role with that experience.
I mean, there'd be some learning curve to be expected but i'll be sure you know what a semaphore is and and have a little bit of be able to draw out like pointers
they're doing device drivers in linux they know that that's true this is yeah yeah so i'd say
i'd say you're pretty much there and And yeah, I'm trying to think.
When I first did embedded,
with a capital E instead of Cisco stuff,
Cisco was sort of embedded,
but it was more software.
I wasn't doing anything
that really needed a lot of os knowledge uh or
hardware knowledge uh so my first real embedded job you know i only had that background um and
nobody really c++ general purpose linux mostly c at that point um i hadn't been doing c++
but a good generalist just i mean that's why the word is generalist.
You've seen a lot of different things
and can adapt. So I'm not sure
that the shift from generalist to embedded
is how I would describe
it, just adding
more embedded to your background.
Or if...
Or saying you wanted to go deeper
embedded. Yeah, because being a generalist
I think is still valuable.
Especially once you get into embedded and you find, oh, we don't have a good build system, or, wow, we need a Python script to do this testing or to bundle these things.
All that stuff is great knowledge to have, aside from being just a GPIO twiddling C embedded engineer.
Well, in the robotics, a lot of the robotics is done on Linux-based systems. Right.
Even if it's single-board computer-style Jetsons or Raspberry Pis or whatever,
and being able to do Python and C++. So many libraries are, you prototype in Python
and then you implement in C++ like Open Computer Vision, OpenCV.
So yeah, I think, I mean, maybe
you want to do more microcontroller stuff and build up a portfolio.
I'm never going to discourage people from that unless it's going to cause burnout.
But you're already there.
And then in the email I sent you, I asked you what region or application you were looking to work in,
because people seem to tell me about other people who are hiring.
Well, I think the last question, we probably addressed it before, but just doing personal projects on TI MSP boards
or other microcontrollers
or taking online courses count for people hiring.
I mean, definitely, unless they're needlessly obtuse.
I haven't figured out how to put online classes on my resume.
Well, okay.
It's not something... It's not something that's easy to put online classes on my resume well okay it's not something
it's not something it's easy to put in your resume but it's easy to discuss during the interview
yes certainly personal projects if you can start discussing a personal project in detail
you'll a impress people if you can describe it well and you can answer questions and b you'll
take up a lot of the technical question time
that they might be asking you something
that you don't want to have to...
Yeah, we mentioned that on Dennis' show.
The reason to bring in your portfolio
is so you can control the interview
and talk about what you do want to talk about.
Yeah, so no, I think that's all good stuff.
But yeah, like you said, it might not be resume fodder,
but it might be good for discussion.
Cover letter fodder.
Yeah, sure.
Who knows what to put in a cover letter other than gear person, please hire me.
People do.
The next one is an email, but we got a regular postage mail package from Frederick to our PO box.
Our PO box is listed at the bottom of our newsletter,
although you can always email and ask me what our address is and I'll give you our P.O. box.
But Frederick, you wanted us to sign for it and honestly, I only go to the P.O. box when I'm expecting something or around the first of the month so I can get all of the junk mail.
You can totally send us stuff, but it's better to tell me you're going to because otherwise I'll just get confused.
Or go to the post office when it's not open and then wonder why I have this card that I'm supposed to talk to people with.
Okay.
I felt bad because somebody was sending us something.
I'm like, oh no, did I miss it?
And it turns out it wasn't from the person who was sending us stuff.
Okay.
Okay, next question from roman aka nz
smarty i'm always glad i make them type in what you're what we're supposed to call them on the
show because they type in things uh question for the show when developing an embedded solution
and you need to consider human interaction,
what processes are available for building a UI
more focused on user experience?
When you start developing a solution,
you may address the specs pretty quickly,
but then you end up with a product that's difficult to use,
likely because the end user isn't a developer.
They're human, but doesn't think the same way
as a tech-minded person would.
A pretty short answer for this. Hire a UX designer. They're human, but doesn't think the same way as a tech-minded person would.
A pretty short answer for this.
Hire a UX designer or contract with one.
UX designers do get a lot of specific domain knowledge that engineers tend to not recognize.
The follow-up to that would be,
assuming you've done, hired a UX designer,
is to do focus group testing,
depending on the product.
But, you know, you want to test out prototype designs with actual humans
before you ship it.
I have found that, like,
note cards with little drawn pictures
of what you want it's even something
even something basic and stupid if you can't afford to hire a ux designer at least uh get
some books you know look at the i know the the apple human interface just um design guide from
years and years ago it's actually a pretty good reference. It's Mac focused, but some of the concepts still
make sense. Like font sizes.
That's actually weirdly important.
Font sizes and affordances and things
and
accessibility affordances.
Yeah.
If you're going to go without a designer,
at least have some knowledge that you've picked
up from somewhere.
And then,
like you said,
have,
have a bunch of ideas and put them in front of people and not other developers.
Cause we're,
we're terrible.
I mean,
engineering UI is called that for a reason.
It's,
uh,
you know,
I just realized that next week,
our guest probably,
this is their,
this is going to be the whole show is going to be about this. So good. Um, forget what we said. We'll just realized that next week our guest probably, this is going to be the whole show, is going to be about this.
Oh, good.
Forget what we said.
We'll just skip that.
All right.
From Brett Smith, next time we have an educator on, he'd like us to ask about their opinion on STEM versus STEAM.
STEAM is the addition of art to science technology engineering and mathematics
brett goes on to say so much of electronics these days is more or less plug and play
connecting of well-known circuits and modules together the focus of art and creativity is
really important the success of the bold port club and and artists like Sarah Petkus tell me that the
community is interested in circuits that work and look good doing it. But it seems like when a child
is smart and has an interest in electronics, the educators push for STEM and tell them to put down
the paintbrush and pick up a math book. Boy, I don't know how to answer that.
My flip response is, as soon as you put art in there, it's everything.
And once it's everything, there's no point in...
STEM plus art?
Stempa?
No, but you know what I'm saying. And I don't have anything...
I love art.
I consider myself an artist in various ways.
And I took a lot of art classes in school.
But.
Okay, here's a story about art class in school.
Oh, God.
Chris and I took an art class.
I think it was our senior year.
Yeah, it was the.
So we weren't like super.
Second semester senior year. Engaged. was the... So we weren't like super... Second semester senior year.
Engaged.
It was one of the final classes.
And, but we both enjoyed it.
It was a drawing class and it was an introductory art drawing class at a local college that
had more art than our college did, which was mainly STEM. And at one time he was flipping through some slides and asking people what was art.
And, you know, there were the big great painters, the things you think of as art.
And he got to the British subway map and asked if it was art.
And you could have just drawn a line of which people were engineers and which ones weren't.
Because all of the engineers could look at that and say, that is beautiful.
You could present that information in a way that was not clear, that was not attractive.
And all of the people who were not engineers thought's it's a subway map no that's not art
and then uh a few months later when we were doing our final projects we were given one final project
that was whatever you want you know it was it was clearly the the prof was having a day off
and we turned in i don't know what you turned in i don't know i think i painted something
and uh i turned in a copy of the single page notes i was supposed to have for advanced systems
engineering and so it was a summary of fourier bode plots pigsIGs, antenna design. It was comprehensive. And I mean, sometimes I post
my sketches now where they're in-depth notes, but they're also, I spend more time on them than just
writing down all the information. I make them pretty, in part because that means I have to
spend more time thinking about the information, and in part because I'll look at it again
if I find it attractive.
And he went around the room and kind of gave us very gentle critiques on all of our art.
And again, you could tell who were engineers in the room.
Because people were really impressed by my lovely little one-page mash of information.
And other people were just like, that's horrible, which I figure is like art.
Like, okay, so story over, because it was pointless.
I don't...
I think art should be taught alongside STEM.
I'm not sure that we should create another thing as part of that acronym.
Because that acronym has a purpose.
And it's to get...
Okay, it's kind of paradoxical, right?
Because this whole thing about STEM was created to get more people into STEM.
Because kids were dropping off from science and math and not going into that, right?
Because it's hard.
Because it is hard.
But if now, if you're going to add art to that, what are we doing?
Are we saying do all of those things?
Are we saying art is a part of STEM?
I'm confused, I guess.
I see the point of it.
I want to know what the goal of the acronym and the movement is.
Part of the goal and part of what I think Brett was saying here is getting kids involved with stem as a single thing is somewhat tedious and kind of
boring well sure you can work on robots sure you can work on i don't know whatever you want but if
you add art you give them an application of stem that is attractive on its own. And the Bold Port Club and artists like Sarah Petkus,
they make STEM engaging in other ways through art.
Art is a portal.
I would argue that the life sciences are a portal.
I would argue that working on cars is a portal to STEM.
There are many portals.
About the only thing that isn't is literature.
So that's my kind of instinctual reaction to this is,
if you're going to do that,
it takes meaning out of what was trying to be done with the STEM movement.
And again, I think art should be taught alongside it.
I think art should mix with it.
But some kids aren't going to engage with that.
There are a lot of kids who go into STEM who are not into art at all.
And they're analytical, purely analytical.
I wasn't into art, in part because my mom was an artist, and it was one of those things that I didn't think I could ever do. Yeah, I guess I don't really have...
And I wonder, well, why isn't M for music? Because drawing kids into science and technology
through music is very powerful, too.
Oh, you can do a ton of stuff, yeah.
So, I mean, I think you and I are on the same boat here that...
We're on a boat.
I don't know that the A is necessary.
But I do recognize other people feel very strongly about it.
And I think those people are the people who are looking at the arts budgets being cut
and they're trying to figure out how to put it back in
by making it more science and technology based
and then the art can come back
and that's totally fair
but
I just want to know what the goal is
I think there was a goal with STEM,
and there's probably one by adding arts into that.
I don't know.
Brett closed with,
it seems like when a child is smart and has an interest in electronics,
the educators push for STEM and tell them to put down the paintbrush
and pick up a math book.
And I agree with you, Brett. That's silly. Don't do that. Push for STEM and tell them to put down the paintbrush and pick up a math book.
And I agree with you, Brett.
That's silly.
Don't do that.
But also, don't force everybody who wants to go into STEM to go through arts either.
There's never one perfect path. I think everybody should take a couple of art classes.
Oh, I think taking a couple of art classes is good.
But I don't think that making it a part of everything else we're doing for everybody necessarily makes sense to me.
I don't know.
Okay, let's go on.
Do what you want.
The next one's easy.
Okay.
I'm not in charge.
Alan Barr asks if we are familiar with the RTOS ChibiOS.
I am not.
Which is not related to Chibitronics, the sticker-based art steam electronics system.
So, ChibiOS.
A couple of interesting topics on the project's forums.
The author of the project, Giovanni, appears to be spitballing some extensions for C for safer programs and embedded systems. Alan thought
it was an interesting idea, unlikely to gain momentum, and wanted to hear better on the
podcast. And Alan sent me the rationale for the RTOS and list of topics, which I duly reviewed and took a couple quotes from the page.
The author wrote, the author of the RTOS wrote, I wrote it 15 years ago, so it doesn't have many
features and I wanted another toy. So Alan, my feeling about the RTOS Chibi OS,
don't, no, no, don't, don't, no, no, no.
Is it open source?
I don't care.
Well, I mean, it might be something to play with and look at.
I don't care.
Wow.
I wrote it 15 years ago and I wanted a toy.
There are better things to do. Go look at Zephyr. Go look at wanted a toy. There are better things to do.
Go look at Zephyr.
Go look into my new.
These are modern things that are open source and are supported and aren't toys.
I don't want to look at other people's toys.
Not 15 year old unsupported.
Yeah.
No,
no,
no,
no.
Breathe in, breathe out.
I totally disagree.
You didn't even look at it.
I'm just trying to keep that going because it was funny.
Okay, let's see. Oh, this one is in an email.
This is just random things I put in the outline for the fun of it.
This is well organized.
Well, you can tell because this is not italicized.
Yes.
Okay, this is another story elicia says uh i applied for a job i really really really wanted i had all of the
qualifications all of the desired qualifications i mean like all of them. And I had a very good phone screen.
They liked me.
I mean, I was a little working too hard to be charming and just a little too hyper, but I was a very good phone screen.
I definitely got all of their questions.
And yeah, I did not get an in-person interview.
I did not get an in-person interview. I did not get the job. I got a nice email from
the manager saying that he enjoyed talking to me, but there's another job open at the position,
at the place, that is also very, very interesting to me. I sent my resume to that one. The manager I talked to sent my resume to that one. I haven't
heard back at all. This sucks. And I don't know why they didn't hire me. I don't know what went
on. I don't know what I could have done. But I wanted to point out that you are not alone. If
you're looking for a job and you're wondering, how can I ever succeed?
And you're one of those few people who think that I have it all figured out.
Because, I don't know, some of you think that.
Yeah.
I don't always get the job I want either.
Sorry.
Neither do I.
I mean, gosh.
Yeah, you want to be a banana slug.
What? Not like you want to work at UC Santa... Yeah, you want to be a banana slug. What?
Not like you want to work at UC Santa Cruz.
You want to be an actual banana slug.
I don't think that's accurate.
I don't recall ever expressing that desire.
Let's talk about your goals.
I would like to sit in the shade all day long.
Wow, you're just going to...
I was going to say something serious.
Oh, I'm sorry.
Go ahead.
No, no, go ahead.
Tell me about your banana slug aspirations.
I have none.
I was going to say is I probably applied for half a dozen or eight jobs that I didn't get either, historically.
Especially my first job.
You're not making the people who are on their 20th job application feel better.
I don't know how many.
It was a lot.
All right, fine. Whatever. I don't know how many. It was a lot. All right, fine, whatever.
I won't commiserate. I don't see why you got to...
Fine, we can move on.
I'm sorry.
No, I mean, just...
Yeah, well, all right, let's move on.
I need to be nicer to Christopher.
I haven't had that many jobs, so it's not like I've, you know...
And usually when you leave a job, you go to another job you've already gotten because you have friends there.
Right, that's happened a lot.
Yeah.
So probably 75% of the jobs that I've applied for, maybe 80 or 90% that I applied for cold, I didn't get.
Yeah.
Or they were awful in some way, and it was the equivalent of not getting them.
All right, next.
Trevor Gamblin, frequent listener from Ottawa, Canada,
wondering what we do to keep our skills sharp or learn new technologies
when your current work and or contracts don't provide many opportunities to use them.
Do you tinker on the side end or read blogs or other web pages or something else?
Well, Trevor, every week we ask people to come and tell us about their things.
And the funny thing is most of them say yes. And then we learn about C++ because somebody comes
and tells us about it. So if you would like to enjoy this sort
of scam what you do is you start a podcast because you're just laughing at me i'm afraid to answer
this because the answer is i don't do much of anything because by the time i'm done working
even if it's not keeping my skills up you know even if my work is not broadening my horizons much,
I'm a little tired of looking at computers.
So, I mean, I do feel guilty about that sometimes,
and like I should be doing more.
And there's certainly projects that I have laying about
that are in various states,
but I've kind of decided to do more music
with whatever time I have the energy for doing other things.
I don't really want to do more computer stuff.
I'm also getting really old and I'm tired of all of this,
so that's probably a factor.
Do you listen to any technical podcasts?
I used to.
But you haven't been.
Not so much anymore.
Any technical podcasts? I used to. But you haven't been. Not so much anymore. Any technical blogs?
Yeah, well, you know, I do read technical blogs.
I poke through whatever's coming up on Hacker News sometimes.
Stuff that's pointed from Twitter.
So I look at other people's projects and things and, you know, their project logs and that kind of thing.
I do a lot of reading, but what?
Why are you looking at me like that?
You were saying you don't do anything.
It's not much.
It's pretty passive.
That's pretty passive.
You do read.
Yeah, not that much.
And it's not that much, but it's a little bit.
And I know that you read because you sometimes share things with me.
And there's a few things we've done, like taking some of those classes.
The video game class we did a long time ago,
which we should do something else like that.
That was pretty cool.
And, I mean, you soldered things recently.
Okay, I soldered something.
I don't quite count that as continuing education.
And in fact, the podcast has that role.
That takes a lot of time.
It takes a lot of time, but it's also, I mean, for me, I do the cyber-stalking. And I have to spend more time with computers, which I hate.
But I read about the guest, and that helps me read about different areas.
You should do this direct-to-tape.
Then I wouldn't have to use a computer.
Okay.
Let's see.
I also, since I don't have a steady contract right now.
You're all side projects.
I'm all side projects.
I have been taking classes.
I have books, mostly about robotics, because I'm still working on my typing robot. You're all side projects. I do read blogs. I think the two that are the most useful are a weekly wrap-up on physics and a weekly wrap-up on artificial intelligence things.
I'll try to remember to include those in the link in the show notes.
And I don't look at Hacker News.
I do look at Hackaday and Tindy blogs, but I don't read them in detail.
I read stuff on Reddit a lot, our programming and physics and stuff like that.
Embedded.
I read our embedded occasionally and our robotics a little bit more often.
So, yeah.
I mean, you keep your skills sharp by looking in different places. I know other people are probably shouting at their radios or podcast players, but we can't hear them. IEEE has a lot of stuff. I was in IEEE for a while. I did the whole senior member.
Do you think people are shouting for this?
I don't know. I mean, I'm sure there are good resources.
I feel like there's a lot of people who feel like they should be doing more.
Yeah. I guess this is the time I should say I have a book. It's called Making Embedded Systems. It's published by Riley. It's a little older now, but I think it's still very applicable.
And I wrote it as an effort to be like a book you take to the beach or to the pool, it's not meant to be in front of a computer.
So,
um,
yeah,
if you want to do that,
you're welcome to.
As a poll,
everybody who hasn't heard about the book,
please write in.
Oh,
we actually have an email later in the show notes.
There's like,
just gauging at this point,
who doesn't know this?
I don't know.
Cause it's so weird when people are like,
do you know any books about embedded systems?
And I'm like, how am I supposed to answer this?
Yeah.
Okay, next thing.
We're so good at failing to answer questions.
This is going well.
I know.
I mean, we answered that.
Okay.
Okay, Eichelca Logic Scopes.
This looks like a hiring thing?
No, those were separate links, actually.
I don't remember what the other one was.
Oh.
Ica Logic.
They make little oscilloscopes and USB. They're oscilloscopes and logic analyzers, kind of like the Sali-A.
They're pen form factor, right?
Analog discovery things from Digilent. One of them is in a pen form factor. It was very small. bluetooth uh no it was wi-fi connects to my phone or my tablet and the app for doing
um oscilloscope stuff was weirdly cool how dare things be well done and the the thing
like you put it on the board and you have to push down a little bit. There's like a spring. That's how it engages the
take data now, which was both cool and annoying
because I tend to want to clip onto things and then leave them.
Seems like they'd have another way to do that, some other persistent switch.
I couldn't make that work. And they also sent me
a logic analyzer to try out
which i haven't so i feel kind of guilty about that um like i said their software was pretty
good i liked it quite a lot um and their oscilloscope pen thing, I thought I would use it all over. I mean, I thought I would use it a lot,
but maybe I'm just not. I would take it if I was going to a client debugging session,
but I haven't gotten much of a chance to use it. We went to a mini maker fair,
and someone said that their robot would follow black tape and I carry an
extremely tiny purse. And so the person I was talking to seemed a little surprised when I
pulled out black tape. And Chris asked me what else I had in there. And I said an oscilloscope,
which was true. I brought it in case somebody who was working there needed help debugging. And yet the black tape came out of my tiny purse, but the logic didn't.
So I haven't used it in the wild yet.
I'm still hoping to.
Have you been doing much stuff that requires scoping lately?
Period?
A little bit.
Not a lot.
Not a lot.
That's the truth.
Okay.
And there's this link from LinkedIn that I don't remember putting in the show notes,
so I'm going to assume you did it?
No, I haven't been here.
Data points that will help you recruit software engineers in the U.S.
Oh, this was about subspecialties and embedded systems
and how many embedded engineers there are versus others.
Basically there aren't that many embedded engineers and we write and see,
which is embarrassing to all of the other embedded software or all of the
other software engineers.
I'll put that in the link.
I don't think we need to talk about it very much.
It was kind of cool.
All right.
Jay Cosper wrote on a recent episode,
Christopher's hatred of CMake was alluded to.
We've done, we might have done previous episodes on build flows.
No, not really.
But Jay would find a discussion on build setup options and what does and doesn't work very interesting, including the dreaded CMake, which he found to be personally much better than Make.
I'm glad.
Defend your reasoning, Christopheropher i don't have to experience pain suffering confusion engineers who don't know how things work because
they don't have the special incantations to make the build system work yeah my experience with cmake was that while it was powerful in being very flexible
flexibility made it somewhat brittle it's also inscrutable and inscrutable um when there was
an error i had no idea how to fix it. And because it was 97 layers deep, even
when I figured out how to fix it, I essentially had to start over each time. So as I was trying
to adapt a large CMake-based system to another platform, it was awful and slow. I know how I would have done it in Make,
but my problems with Make would have been primarily with the porting.
And with CMake, it was primarily with the tools.
And if you have ever heard me rant
about how much I hate screwing around with tools
instead of what it is I think I should be doing,
which is usually software architecture,
then you understand why I don't love CMake.
I'm an old dinosaur.
I've never seen anything that doesn't work with regular old Makefiles.
And I've never been convinced by an argument that you need anything else.
And I know Makefiles are confusing and crufty and old,
but they're also simple and work.
Simple? Well, they're also simple and work. Simple.
Well, they're simple.
They're not easy.
They're only one tool.
They're not a stack of things that are built on top of each other.
Yeah.
CMake had a lot of cards on the bottom few levels,
and any of them that fell down just made the whole thing. I'm sure it's fine for a lot of cards on the bottom few levels and any of them that fell down just made the whole thing.
I'm sure it's fine for a lot of projects.
If I started using it, maybe I'd start
to love it. But everywhere
I've come in where it's already been implemented
or where it was added on by somebody else,
it's been a major problem.
And maybe that's because we just didn't
maybe you can't tack it on to a project
or make it work with a sub-project
very well. I don't know. But I don't have good onto a project or make it work with a subproject very well.
I don't know.
But I don't have good defenses for my hatred of it.
I have biases.
Biases, man.
If you don't like these, I have some others.
Yes.
And if you don't like CMake, please contact us so that we can confirm those biases.
It's fine.
Don't listen to me.
If you like it, enjoy it.
Exactly.
Jay also wrote another email talking about consulting,
which has mostly been in the hardware space for him,
but he's moving more towards firmware.
He wants to reinvest some of his earnings into tools
and wondered what tools, hardware or software,
we would recommend for the embedded space.
Well, he's already for the embedded space.
Well, he's already in the hardware space.
Yeah, so... So you're going to have most of the things.
I mean, you're going to have a power supply and an oscilloscope.
If you don't have a logic analyzer already,
get one of the $200 ones or the $400 ones.
A good DMM.
Voltmeter DMM, yeah.
And yeah, the logic analyzer might be the only piece you really don't have.
Well, the programmer might be a piece he doesn't have.
Yeah.
He finishes his question with what have been useful that the clients don't provide.
Most of my clients, I get them to provide the programmer on the idea that they are going to need it for manufacturing when I'm done.
Or for the next engineer. It's always good to have those around.
I now have my own super fancy JTrace, but I still try to make sure the clients have
some form of programmer that they send to me, at least for a little while,
so I can set up their manufacturing scripts.
Yeah, a programmer is probably worth having,
and you can do a bunch of ways to get into that
at the low end to start with, too.
Yeah, and you can get in at the very low end,
the $35 ones.
But if you have the profits to invest a $400, $600,
get one of the good ones.
Being able to walk through your code is really important.
You also mentioned software.
I'm not buying any compilers right now.
And usually the build environment is so specific to a particular client or company
that you really shouldn't waste your money or time setting anything up.
If they wanted IAR or Kyle, then they would
buy the license and I would transfer it back
to them. The only thing you might want to invest in
is a VM
host if you're not okay with
VirtualBox.
Because a lot of clients are going to be,
oh yeah, we're doing
our build environment is Linux and this version of Ubuntu.
It soon becomes very difficult to have a computer
that has the right setup for every environment.
So VMs are useful in that regard.
And then you can have client A's Windows and client B's Windows
and client C's Linux, and they don't really mix on your computer.
Actually, there is one piece of software I would recommend buying,
Beyond Compare.
Yeah, that's a good idea.
It's a diff tool, and it's just a really good diff tool.
I think it's $50, and it's worth it.
Yeah, it can do big diffs.
You take two folders, and in a, in a very easy to understand way,
tell you which folder doesn't have which file and which file's been changed.
And it's very good, especially for complicated operations
where you might have gotten into trouble with your source control system
or something like that.
Or I used it in a bunch of cases where we're dropping in a new version of a vendor library.
And okay, I want to see what's really different.
So diff these two folders,
the old version and the new version.
Let me see all the files that have changed,
been deleted and added, and just go through there.
And then you can see,
oh, do I really need to upgrade to this or not?
Yeah, the folder diffs are amazing.
Yeah.
John says that he's just a noodler.
By noodler, he means plays around with controllers
in this incredibly small amount of free time
and sometimes has to take or retake online classes
now and then to get up to speed.
It's a particular challenge
having learned about Arduino
and basic stamps
and all these things, microcontrollers.
But then when he finds a new
sensor component,
something new he wants to play with,
he spends
as much time messing
around with delivering 5 volts to the controller
and 3.3 or 1.2 or whatever to the sensor and then trying to mash it all together.
How do other people get around voltage level conversion?
Is that really the question?
Yes.
My answer to that is that there are SparkFun level shifters.
Yeah.
Or don't fall in love with a sensor that doesn't support your voltage level.
If you've done Arduino, then you're at 5 volts.
And there are some Arduinos that you can do that are 3.3 volts.
Embed boards are almost as easy as Arduinos, and many of them are 3.3 volts. And so when you see a sensor and it's 1.2 volts, just walk away. Even if it's the best sensor ever, just walk away.
In general, find a platform you like and stick with that voltage level arduino is nice because
a lot of people understand why you're asking for five volts um but what you want to do here
with mashing them all together it it can work level shifters exist they can work very nicely
sparkfun and adafruit both have a selection going from whatever voltage to whatever voltage.
But in general, find a platform, stick with it,
and don't do this.
Yeah, don't move around a lot and don't find shiny objects.
I mean, unless there's like a new class of sensor
that just doesn't exist that you want to use,
I mean, stick with what you've got
and keep working with the same things.
Because you're not really learning anything by...
I mean, you might be learning a little bit, but...
Learning frustration.
You're learning frustration and you're kind of resetting every time.
Yeah.
So I wouldn't say that's a good idea.
If you need to, I mean, if you really have a sensor you're excited about, choose that voltage level first.
Yeah.
And then go find a board that will support it.
Yeah, and you should be able to these days.
Yeah, even 1.2 or 1.8.
John also had a question about batteries and why they're based on 1.5 volts, which doesn't work out to power anything.
Chemistry.
That's the reason?
Yep.
Really?
Yep.
That's just the way it worked out with alkaline battery chemistry.
And as far as I understand it, it doesn't matter how big the cell you make,
it's always 1.5 volts with that particular chemistry.
And then we made rechargeable batteries,
which had to match it because you wanted to replace them.
So they tweaked the chemistries for those rechargeable batteries which had to match it because we wanted to replace them so they tweaked the
chemistries for those rechargeable
batteries but lithium ions are different
they're usually
3.2 to 4
per cell, something like that
yeah, it's chemistry
sorry
not a grand conspiracy
it isn't a grand conspiracy
it's a conspiracy of chemists
and you should be using a power regulator they aren't very big but they're worth it
don't just put the batteries straight to your processor because uh you will put them in
backwards and then you will blow everything up trust me
okay moving on did we answer that one you said we weren't answering them but that one i felt
like we kind of answered um i think we answered it yeah okay anton anton's company is is page shift
uh anton's company is oh oh wait sorry before somebody's gonna send me an email and they're
gonna say but what about 9-volt batteries?
If you open up a 9-volt battery, it's got a lot of little cylindrical 1.5-volt batteries in it.
So, just preempting that.
Fine.
Mental note, don't open 9-volt batteries unless you know what you're doing.
Anton's company has a long tradition of making embedded systems, which have been programmed mostly in C and now for several reasons that are
unavoidable.
Unavoidable.
They're switching to C plus plus,
which feels good,
but also scary.
Anton listened to episode 137.
That's Dan Sax's and felt a little better about his choices.
Hopefully he listened to our last episode and felt even better about his choices.
But what standards do we recommend
for going to C++?
Yee.
Well, we did talk to Jason Turner last week
about his best practices.
Having reviewed that, I thought it was pretty cool.
And you have some other links.
NASA has one that's pretty good.
It's a little old, but it's okay.
The European Space Agency also has one.
Essentially what I'm saying here is don't make up your own.
The space agencies have good ones.
The car systems have a decent one.
There's MISRA C++.
They're out there.
You can find them.
So don't inventure it.
We'll put all these in the links.
There's also the F35.
I mentioned it in the last show, the F35 coding standard, which I will dump a link into.
It's from 2005.
So a lot of these are pre- you know, C++11 and stuff.
Yeah.
I mean, if you're going to be working on safety-critical things,
it's going to be slow.
That's just how it works.
A question from Roger.
An embedded software test engineer with robotics background working for a medical devices company.
That sounds like fun.
Sounds like fun, and I said uh-oh.
Roger's manager left the company, and now he's looking for a new position.
Okay.
During a recent interview, the firmware manager says they're running C on bare metal. Roger was surprised to hear that a company would make the decision not to use
an RTOS given how commonplace they are
and how much they can accelerate embedded
development on complex systems.
Roger asked
why? Politely,
of course, and
wondered if it was something about cost or
how hard it can be to set up, and
was surprised to hear the manager justify
it as a means of limiting power consumption.
How is that possible?
Is there any merit to this?
Why are you speaking this way?
I don't know.
Sorry.
Sorry, Roger.
I'm totally putting emphasis and fascists on the wrong.
Yes.
So his question,
generally speaking,
do our tasks require extra interrupts
or resources that could potentially burn power?
So I think the thing, I've encountered this argument before.
I've made this argument before.
The idea that without an RTOS, you can, in your big loop, wake things up, do everything you need to do, and then go back to sleep for a long time.
And you synchronize all of your operations to be together.
And even in a semi-complex system where you have a display,
you can tweak it so that, okay, we wake up, we do the update to display,
we do this, we do this, and we go back to sleep.
I'm not super sympathetic to that argument for the reasons he states, that a
sufficiently complex system, you're going to end up with a disaster. And there are ways,
there's certainly, hard tosses are very configurable, and if you know how to use them,
you can certainly synchronize your event handling and other things in ways that are equivalent to
that. Um, so that's the argument I've heard is that, Oh, we don't need all this extra stuff
in the scheduler. I don't know what it's doing. The mysterious scheduler, Ooh, scary.
Uh, it's going to decide when to run things. We can't have that. Um, nevermind that there's
a billion ways to configure a scheduler to do exactly what you
want in kind of a deterministic way uh yeah it's all oh let's let's run let's run the cpu only when
we need to and turn everything off and then wake up and do everything and then go back to sleep
that's that's what i've heard what have you heard well i mean I mean, yeah, that is...
So an RTOS has to do some things, right?
An RTOS has to look through its event queue.
It has to look through its task queues.
It has to spend some time doing things.
It is a piece of software that runs in addition to your software.
Yeah, but it's generally governed by timers.
And it's generally very small.
Yeah.
If you...
I guess the question that I would want to go back in time
and have Roger ask the person who was interviewing him,
what percentage of battery life do you think you're getting?
Yeah, quantify these things.
When people make claims like this, I always want to say,
show me the battery life.
Show me the data that supports this claim,
other than just a feeling.
And I hate stuff like that where it's just a feeling.
And there are legitimate reasons for doing bare metal
if you're doing a simple system that's you probably can achieve a lot of gains and you can
drive out a little bit of cost and go okay i don't need there's some overhead associated with the
artos we won't have that less processing overhead less flash that's all true but these days most of
the time you're adding something on there embedded system, either Bluetooth or networking.
As soon as you do that, you're in RTOS land.
Well, Roger actually goes on to say that it was a sensor attached to a microprocessor plus BLE.
And that made me question some of the other things.
Most of the BLE processors have an rtos
if you're using a nordic yeah nrf whatever 52 whatever 80 whatever um you you have an rtos
i mean you may not realize you have an rtos but you have an rtos so
not using an additional RTOS
or not using the right terminology,
believing it's bare metal
and that BLE isn't running an RTOS,
yeah, okay, all those things happen.
I've seen them happen.
But if you have BLE,
you're probably not really doing bare metal
unless you did it yourself.
Which don't.
Which don't, yes.
So, I mean, I guess I would say, again,
you need to have demonstrable things.
You can't, this drives me crazy.
It's happened so much time in industry.
Going back to STEM, you know, science,
there's the scientific method where you have hypotheses
and you have evidence that supports them
and you try to prove
them. And so many times in software, even in hardware adjacent software, it's all about
feelings. And it drives me crazy. Well, it's really hard to quantify a system like, okay,
I write it with an RTOS and then I take it out and who paid for the time for me to goof off like this?
Well, you should be able to quantify idle time.
If you can't do that,
then you shouldn't be talking about any of this.
But idle time with an operating system and without,
that is what you're measuring, really.
And so you're still going with an operating system or without.
You should be able to speculatively
speculatively come up with the idle time without it's probably hard but if you're going to make
these decisions you should have some basis to make them um and if you can't make the decision
then decide the thing that's going to save you time because i guarantee there's very few problems
that are so battery sensitive that an artOS is going to make them not possible.
Right, because an RTOS is going to run only occasionally,
and you get to set it up the way you want.
And it will save other processes.
You can even set it up to work like a big loop.
Right.
You can do the thing you want with an RTOS
and then gain the synchronization primitives
and all the other stuff, the event handling,
that it gets, you know, being able to do interrupts in a proper way
where you're signaling from the interrupt handler and getting out.
Those are all great things that RTOSes give you.
And you can still do a big loopish thing with an RTOS.
So in summary, that was not the answer we would have given,
that low power is the critical thing.
RTOSs do take up some small amount of processing cycles,
but that wouldn't be what we would choose. take up some small amount of processing cycles.
But that wouldn't be what we would choose.
Now, on the other hand, if you want to run
bare metal because you want to run bare metal, because
you want the control, because you
find it easier to debug, because you don't have
an RTOS you trust, those are all
the answers. At least be honest
while you're doing it. At least be honest.
If you want to say it's because you
don't want to spend the RAM or the
flash. Or the money if you can't find one
that's free that you like.
Those are all fine answers. But you're going to spend a lot of
money developing the infrastructure that they would
have brought you.
It depends. I mean, a lot of the
chip vendors now have their little
house and are
set up. I go
back and forth on our tosses.
Sometimes I love them and sometimes I just get.
It depends on the complexity of the project.
But like I said,
if you're bringing in Bluetooth or networking or any some sort of
asynchronous event handling,
come on.
Yeah.
Save yourself a lot of hair or heartache and don't do it by hand.
Okay.
Next question.
Oh wait,
that's not a question. long is this outline well i
think we're gonna skip that last one and maybe we'll just have him on the show like six more pages
uh okay um christopher got me a fitbit versa or where got me is it was lying on his desk as a
production prototype and i stole it um i'm not desk as a production prototype, and I stole it.
I'm not sure that should be admitted, but fine.
No, no, it was fine.
There was a ticker on it that said Fort Elysia.
Yeah.
And I wrote my own watch face, which was funny.
I had to do it in JavaScript.
Yeah.
And I had to make my own pixel system, because somebody's graphic engine didn't work the way I wanted it to.
Yeah.
So, yeah, it was kind of amazing. You didn't make a pixel system.
You made a shape drawing system.
You didn't make anything.
You made a font drawing.
I had to do my own fonts.
You're mischaracterizing the problem.
Anyway, I did a JavaScript thing.
I wrote about it. It's on the blog. If, I did a JavaScript thing.
I wrote about it.
It's on the blog if you want to find out about Versa clock faces or whatever.
Wow.
My adventures with JavaScript.
Robotics update.
I already talked about Tysum,
and I already mentioned taking classes.
I really like the Peter Cork classes
from
Queensland University of Technology.
Those are fantastic and his book is pretty
good too.
Let's see.
You had a birthday.
I had a birthday?
Sometime in the last six months since we did one of these shows.
Sure.
Did you get any good presents?
I did.
Was any of them a Teensy?
Well, you got me this Teensy guitar audio shield,
which is this cool little board plus some connectors.
So it allows you to stick a Teensy in it,
and it'll do a bunch of dsp stuff for guitars so it's like a
guitar effect pedal uh platform basically and you can program it with arduino and the teensy audio
library which is super cool if you haven't heard about it uh for teensies it allows you to set up
hold dsp audio filtering chains chains sort of graphically.
So you go to this web page, and you can drop these blocks and connect them up.
So say, oh, I want a digital delay, followed by a flanger, followed by some EQ,
and you just drop the blocks where you want and connect them to the inputs you want
and draw the lines between them, and you press go,
and it outputs some code that links all that stuff up,
and then it automatically, if you have the Teensy audio library,
it runs that stuff in the main loop, and so you basically download that,
and assuming you have the hardware that handles the audio stuff,
which is what this guitar thing is, it just goes.
So super cool, and you can experiment with all kinds of effects and things.
And the guitar thing has guitar jacks.
So normal quarter-inch guitar jacks.
You can plug your guitar into it, and then it has an output
that you can continue on your signal chain to your amp or whatever.
It had more connectors than that.
It has MIDI.
Oh, okay.
Yeah, so it has MIDI, so you can kind of control the parameters from somewhere.
So you can plug a MIDI controller up to it
and write in your Arduino program, you know,
things that modify the parameters of, say, the delay or the reverb or whatever.
You can make your own guitar pedal doing almost anything.
Yeah, yeah.
Why did you have to buy the other big guitar pedal then?
Don't talk about things like this.
This is for experimentation.
That one's a professional.
He only talked me into it
because it had an octopus on it.
Anyway, it's really cool. I got it from Tindy.
You got it from Tindy? I got it from Tindy, yeah.
And, you know,
for people who say we are too hard on Arduinos,
I find it very cool for things like this.
That's only the Arduino software interface that you're using.
And I seem to recall there was some swearing with getting it set up properly with the libraries.
Yeah.
Because software is terrible no matter what it is.
All right.
Apologies to anyone looking at us.
Looking at us.
Looking for us.
I hope nobody's looking at us.
During Maker Faire.
We were not there.
We really, I bought tickets.
I got a hotel.
I was really planning on going.
I got extra stickers.
Yeah.
And then I fell down our front steps.
And I sprained my ankle and firefighters came to help me into the car because I thought
it was broken. Then Ben came and brought us snacks because we were at the urgent care forever.
And it turns out it's just a bad sprain and I'm getting better very quickly.
But I am sad that we missed Maker Faire and Bring a Hack.
Okay, let's skip that next question.
We'll just have him on sometime.
Let's see.
Basics.
Biggest six episodes.
The person who emailed and said,
I really like your shows, but not those.
And then the other people who email and say,
I like them so much,
I'm going to play them for my classes that I teach,
even though I'm a professor and getting paid to teach.
Jeez, that seems like an accusation.
Yeah, so the basics episodes where we get
somebody who's already been on the show a couple times, and we talk to them about
some thing we think is important, interrupts, binary, all that
stuff. Some of you like them, some of you don't.
We're going to keep doing them for a while until we get bored of them.
Certainly there are a few more topics I would like to be able to just throw at people.
Wait, we were only doing six shows.
What are we at?
What?
We were only doing six shows of this podcast.
We're close to that, aren't we?
Yeah.
We're going to wrap it up soon, aren't we?
255 is coming.
Version control is the next basics that's going to come up.
I've been promising that for like a month, but then the basics got canceled.
Version control is really a very exciting topic.
You know, the more I, so I tried to write a blog post about it.
I spent some time on Twitter talking about it.
I spent some time on our Patreon Slack channel talking about it. I spent some time on Twitter talking about it. I've spent some time in our Patreon Slack channel talking about it. And I have realized we do a hideous disservice
to new college grads by not helping them understand version control. And I was
privileged that we started out in school with CVS, which was dumb and useless and important
and taught me the concepts. And then I went to HP.
CVS was state of the art back then.
And HP had a different one, but it was still very similar. And then eventually I got to SVN,
which was different, but similar enough I could get there and then eventually to github everybody who's starting or to get everybody who's starting now with git and uh mercury
mercurio mercurio nobody starts with mercurio it's too good that's why nobody wants to use it
it's those are i mean how do you get from the concept of branching, backing up, and version control as a system
to the hideously complex world of Git and Mercurial.
I don't think Git and Mercurial are hideously complex.
I think Git's implementation is hideously complex.
I tried to write a one or two page
description of everything you needed to know
to use version control, and
I couldn't do it with Git. I could do it
with SVN. That's what I'm saying. Yeah, I think you could do it with Mercurial.
Really? Yeah. Oh, I'm switching.
Go look.
Go check it out sometime. Okay.
The backing is the
same concept as Git,
where you have distributed repos.
But the command interface is much more familiar.
Yeah, anytime you start Git, I'm already annoyed.
Anyway, it doesn't matter because Microsoft has purchased GitHub,
and soon all of that will change.
They're going to replace it with, what's their thing?
Clearcase? Perforce?
Visual Source Safe? I don't know what they are.
Oh, I remember using Visual Source Safe. It's all going to be it with, what's their thing? Clearcase, Perforce. Visual Source Safe. I don't know what they are. Oh, I remember using Visual Source Safe.
It's all going to be part of OneNote.
That's so awful.
All right.
So, yeah.
Who have we asked to help us speak about vision control?
I think it was Chris Speck.
He was next step.
But you know,
I haven't talked to him lately.
Hey Chris,
do you want to talk about version control?
I think that'd be great.
It's not what he says.
I don't.
Can you paste it in from a different show?
You want me to search all of our shows with Chris Speck and find something that sounds like I think that would be great?
Yeah.
I'm not doing that.
We'll find someone.
I know Dennis Jackson and Elizabeth.
Well, we have good.
We have friends.
We have friends.
We have friends.
Yes, we do.
We have all the friends
music
even doing more music
you said you were doing music
I don't want to talk about that in this context
I want to keep it separate
separate
then that's
let's see
Dustin in general I'm trying to learn more about
best practices, techniques, designs and strategies for handling multiple sensors connected to a microcontroller.
Do you have any suggestions or resources where he can learn about those things?
Minute 30 of the show?
I don't know, somewhere around there.
Okay.
Wasn't that where you talked up your book?
Oh.
So, Dustin, nothing in particular.
Application notes?
Application notes.
And it depends so much on the sensors.
If you're looking for inertial sensors and Kalman filters.
Well, he's talking about handling multiple sensors.
So, I think it's mostly a software problem.
Well, Kalman's help you put together multiple sensors.
You have to think about synchronous sampling versus... That's if you're doing a fusion.
Yeah.
If you've got like...
If you've just got different sensors.
Different sensors, like you're making a weather station,
you're not applying a Kalman filter to all of that stuff.
Probably not.
That's a pretty broad question that would need some specificity, I think.
All right.
Just an email again.
Get an RTOS.
Get an RTOS.
News interrupts.
One more thing.
One more thing.
How long has this show been?
Like six hours?
This is hour four.
All right.
I did a Twitter bot.
Okay, that's it. Goodbye.
Okay. And the idea is you put together some things and you fill in some blanks and you end up with things that generate their own art.
And they look smart and they look different and they look like things you wouldn't have written.
But it all comes out of what you did right.
And it's part of a neural network-based system.
And Trace3 was pretty cool, and setting up a Twitter bot was trivially easy.
Slightly scary, trivially easy.
But I used cheapbotsdonequick.com, which has some rules about politics and trivially easy bots.
My bot's name is PajamasWithFeet. And it is all the things that I
should have said when somebody said they weren't having a good time of it. So you know how when
somebody says, I'm having a bad day, and you're like, I don't know what to say to that. Or
something awful happens, and you're like, I don't know what to say to that. Or something awful happens and you're
like, I don't know what to say. And then you feel stupid, so you don't say anything at all.
And then the person goes away thinking you didn't care, but you cared, you just didn't know what to
say. So these are the things you can say. And I try to do the generative thing and I have kind
of failed. So if anybody out there knows how to do the generative thing, tell me.
Mine ends up sounding a little bit like
Mad Libs.
And not
generative enough.
And I don't know what the
chasm is.
Markov chains.
I'm just saying that. I have no idea.
It's the answer to everything.
Blockchain and Markov chains. Chains in general.
Chains.
All kinds of chains. That's where the future is, is chains.
Chain, keep us together.
Running in the shadow of chains.
Thank you to everyone who wrote in a note about making their commute better,
their job searches more bearable, making learning more interesting, or a general thanks to us. We thank you. We like hearing from you.
It's nice to hear that we are helping people.
It's nice to hear and it's important. So, thank you for listening. Thank you to
Christopher for co-hosting and producing and
fetching and carrying while my ankle has been healing.
If you have any questions, notes, whatever,
hit the link on embedded.fm
or email us, show at embedded.fm
or Twitter or Patreon or wherever you want to hit us up.
We're generally available, but just not responsive.
Pretty responsive. Pretty responsive. hit us up we're generally available but just not you know responsive pretty responsive pretty responsive we do a whole show where we answer all these emails that's i mean it's not fast
some of these were over six months old that's what i said it's not fast it may not be high quality
but it's you know it's personal it's personal yes okay i'm gonna do um i'm gonna read from
winnie the pooh are you ready do you have any did you have any final thoughts or or final questions
or oh no i'd like to i'd like to be done now okay okay i won't do the whole rest of the chapter then
well you can do whatever. It's fine. Christopher Robin?
Yes?
Have you an umbrella in your house?
I think so.
I wish you would bring it out here and walk up and down with it and look up at me every now and then and say,
touch, touch, it looks like rain.
I think if you did that,
it would help the deception which we are practicing on these bees
well you laugh to yourself silly old bear but you didn't say it aloud because you were so fond of
him and you went home to look for your umbrella oh there you are called down Winnie the Pooh
as soon as you got back to the tree. I was beginning to get anxious.
I have discovered that the bees are definitely suspicious.
Shall I put up my umbrella, you said? Yes, but wait a moment. We must be practical.
The important bee to deceive is the queen bee. Can you see which is the queen bee from down there? No? A pity.
Well now, if you walk up and down with your umbrella, saying,
Tut, tut, it looks like rain,
I shall do what I can by singing a little cloud song,
such as a cloud might sing.
Go!
So, while you walked up and down and wondered if it would rain,
Winnie the Pooh sang this song.
How sweet to be a cloud floating in the blue.
Every little cloud always sings aloud.
How sweet to be a cloud floating in the blue.
It makes him very proud to be a little cloud. 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.