Embedded - 273: Off the Topic of My Jammies
Episode Date: January 11, 2019Chris and Elecia chat with each other about the new year. All is fine until she starts quizzing him about some language details of his new project. Many object-oriented resources suggest using composi...tion (has-a) over inheritance (is-a-type-of) (wiki). Where do swift extensions fit in? It seems to me (Elecia here) that extension is invisible composition that allows adding of functions. For example, say you want a TiltSensor and you already have an ImuSensor object so you need to add a function for TiltComputation. You could make the TiltSensor contain an ImuSensor (composition). You call the ImuSensor functions to check the readings when running TiltComputation function. You don’t need to know what is in ImuSensor, only what the API is. You could have TiltSensor be a child class of ImuSensor (inheritance) so that TiltSensor responds to all ImuSensor functions as well as its new TiltComputation function. You could use the variables in ImuSensor directly for TiltCompulation but you will need to know what is in ImuSensor for that to work. Or, in Swift, you could have TiltSensor be an extension of ImuSensor. Except it wouldn’t be called TiltSensor, it would be part of ImuSensor: any file that had access to your extensions would be able to create an ImuSensor instance and call TiltComputation as if it was part of the original ImuSensor API. The TiltComputation function would only have access to its extension’s variables and ImuSensor’s API. You get to add new functionality without breaking backward compatibility. Some more resources on this topic: Composing Types in Swift Swift Language Guide: Extensions Swift Programming: The Big Nerd Ranch Guide by Matthew Mathias and John Gallagher iOS Programming: The Big Nerd Ranch Guide by Christian Keur and Aaron Hillegass LinkedIn Learning Courses Blender Beta with EEVEE renderer The Clean Coder: A Code of Conduct for Professional Programmers by Robert C. Martin Code Complete: A Practical Handbook of Software Construction by Steve McConnell Gelly Roll Glitter Pens (by Sakura) Google Podcast Link (or see the Subscribe page)
Transcript
Discussion (0)
Welcome to Embedded.
I'm Alessia White, here with Christopher White.
And it's just going to be us today.
What do you want to talk about?
I don't know. Happy New Year, everyone.
Happy New Year, indeed.
And for those of you keeping track,
Christopher still has astronaut ice cream and a set of Smarties on his desk.
It's the same as it was before.
How do you live like that?
I didn't accumulate anything new.
Did you get any good Christmas presents?
Yes.
Do you remember what they are?
Yes.
Incusatory.
I got a Penn & Teller magic kit, from which I have learned one half of one magic trick.
And I got a flying X-Wing.
A drone, yeah. That was pretty cute.
That was pretty cool. It came in like a ridiculous collector's box that played music when you opened it.
The box was a bit much.
Yeah, I got some books from my parents, and you got a spectacular kite.
I did.
I got an octopus kite that's six feet by four feet with tails that are at least 15 or 20 feet.
And it's huge and it flies in like no wind at all.
And it just takes up the whole sky.
I was worried after talking to Andre about big kites and whether or not they could hurt you.
His view is yes, they can.
But this one isn't quite that big.
Yeah, I don't think you...
But it was really fun.
I don't think you have to worry too much about that one.
I think the handle would break before you did.
Well, I didn't want my fingers to...
Yeah, all right.
But no, I didn't get any embedded gifts.
Nor did I purchase any.
That's true.
We have bought each other Dove kits, haven't we?
Well, not exactly, but parts and bits and things.
You got a music thing.
I mean, you bought it for yourself at the beginning of December,
so I'm counting that as part of your Christmas presents.
Yeah, didn't I already talk about that on the last one?
Maybe not.
It's another synthesizer.
Nobody cares.
Oh, all right it's a it's a polyphonic analog synthesizer it does polyphony polyphony polyphony all right um well i guess
let's get into the show thought that was the show i I guess so. Let's see.
We had a listener question, actually from the Embedded Slack channel that you get with Patreon, about your iOS development.
Oh, God, we're going to start with that immediately?
Yeah. I can't think.
I thought it was funny when you talked about iOS development.
It made me think back to when the iPhone first came out.
Yeah.
And we took that class.
And we developed these little dumb, there was a Stanford class.
Oh, yeah.
And it was Objective-C, and it was so weird.
It wasn't exactly first when it came out, because it was a couple of years before they even had anything approaching an SDK.
Okay.
The first step they had was, here, write an SDK. Okay. The first,
the first stuff they had was here,
right?
Web apps.
Yeah.
That'll solve your problem.
And,
um,
but yeah,
we,
we done a little bit and I'd played around with it a little bit on my own
for,
for fun.
And then I think for a client,
I did something,
but I cheated and used cute instead.
Um, causet supported iOS
or it started supporting iOS and Android
pretty well actually
I mean you wouldn't want to build a native app
if you didn't have to
but that was what I knew at the time
and that was what the main system ran
so it was easier just to port over code
but that's about all I had done
before switching over at work.
And so now at work, I am supposed to be doing iOS development.
Full time.
Yeah.
And we had a couple of months to spin up, which, to be honest, not enough time.
But yeah, I don't know what to say about it, really.
Do you have leading questions or am I supposed to monologue?
So you're using Swift, not Objective-C?
I'm using both.
You're using both?
There's some legacy code that's Objective-C, and the newer code is Swift.
And then you have to intermix.
And do they intermix well, or is it by file, or is it by function?
Oh, no, you don't mix in a single file.
Oh, good.
That would be like mixing, I don't know.
Peanut butter and chocolate.
Well, C and Rust in a single file or something.
They're totally different languages in the compiler.
It's the same thing.
The compiler looks at the postfix of the file name to figure out what it should do.
No, but there's things like in C++
where you do X turn C and that kind of thing.
It's not quite as simple,
but there's ways of wrapping things
so you can call back and forth,
which is weird because they're both object-oriented,
so there's some complication there.
But they both...
The Apple stuff is all built on the same frameworks.
So whether it's Swift or Objective-C,
it calls into the same utility libraries and UI libraries.
And do they mostly look alike between the two languages,
or do they have different naming conventions?
The names look the same. That's nice. The calling conventions they have different naming conventions the names look
the same that's nice the calling conventions are all different or the calling syntax but that's a
function of the language not something they chose i mean they designed swift but yeah we're gonna
ignore that part did you i know you did a couple of classes you started a few more you had access
to all of the safari online, and you ordered a couple books.
Yeah.
Did you find anything that worked?
So, there were some quick online courses.
All the stuff, all the really intro stuff starts and covers kind of the same material.
Hello World?
No, it's beyond that.
It has to be.
Well, no, I mean, is it how to get something onto the device?
It's really not.
No, and most of the courses I took had nothing to do with the device.
They were Swift.
Okay.
And most of the, so some of them were, yeah, you open a project in Xcode, but Xcode has, Xcode is, for people who don't know, is Apple's ID for developing Mac apps and iOS apps and anything for Apple products.
And it has a thing called Playgrounds within it. And so you can just pull up an editor and it kind
of, you can write code and it executes it in real time. So you write Swift code and it kind of
executes it as you're typing and you see results
at a little panel at the bottom so most of the courses that i did kind of you followed along in
that and so i said okay type this and see what happens okay now change this and they were video
courses and you could see what they were doing and follow along in a pdf or something the tough thing is swift is for a c developer it's a big
brain change and if you haven't seen say design patterns a lot and i'm talking the real design
patterns from the gang of four with all the names and everything or if you haven't seen a lot of
modern object oriented stuff so not c plus plus from the early aughts or late 90s
you have to turn your brain around a lot because it's it's very different very very different
what do you mean by that is there a particular example i want to go back to playgrounds too but
so coming from c you you have a way of thinking about, say, memory works or variables work or things get passed around.
One of the things that I think they wanted to fix in Swift coming from C or C++ or Objective-C was don't worry about any of that.
No pointers.
No pointers.
There's value types and there are reference types.
And there's very few reference types.
And it's basically, don't use a reference type unless you really need to.
So it's a little weird from that standpoint,
but there are still concepts like things being nil.
So you can still have a variable that's nil, but it's not a pointer.
It's just it hasn't been defined yet. And you can ask if it's been
defined. So having that, there's all sorts of protection around, you know, have you initialized
this variable or not, and things like that. And then it's just the modern object-oriented stuff
where you've got classes that everybody remembers, but then instead of doing a lot of inheritance
it's now encouraged to do things like extensions where instead of taking a class and making a
subclass that does everything the the old class did plus some extra stuff you actually tack on
an extension to the to the class which might be one additional function
or one additional property or a couple.
And then you have a new class that kind of implements that.
Is extension copy and paste?
No.
It's not inheritance, though.
It's not inheritance.
Is extension a totally new concept,
or is it available in C++?
I don't know.
I mean, because that's, I know you can include an object that you might have inherited otherwise
and then access it through your own interface, but that's not inheritance, that's including.
It's extending.
Well, yours is extending, so I'm wondering if I have it right. So one of the advantages is, let's say you don't have the source code for a particular class.
Yeah.
You can still extend it.
Okay, so when you extend it, you create a class car with windows.
Yeah.
And then do you have a car class inside of that that goes to your, or do you?
No, so you'd have class car with windows.
Okay.
And then you'd have extension moonroof.
Okay.
And that would provide the moonroof functionality.
And you would this still sounds like inheritance it's not it's not now you're gonna i did not expect to have a
swift exam on the show all right um okay i guess the the best way to explain it, and extensions is not the way to keep from inheritance necessarily, but if you wanted to modify a class in such a way that all other instances of that class get the new functionality, you could use extension if you wanted to make a new class that's specific so instead of car with window
you make a subclass that's a car with uh moonroof and windows car with moonroof and windows but
instead you're it's like maybe you came out with a new car a new model of car with window that had power door locks, and you add the power door lock extension.
And it's retroactive to all the previous cars.
This is terrible.
I mean, that sounds really useful, but I don't understand how you'd implement it.
Well, see, this is how learning Swift is going.
All right.
I think that's Christopher's indication to stop asking him interview questions.
And if I'm fired after this podcast, you'll know why.
C Sharp apparently also has extensions.
So it's not a, it's not a specific Swift concept.
So going back to Playgrounds.
Yeah.
That is just the editor.
It doesn't have anything to do with the app?
You can kind of build parts of an app maybe in it,
but it's mostly for playing around with code.
So if you were just screwing around with Python.
Okay, sort of a scratch. Is it interpreted?
It's both.
I think it does either just-in-time compilation or interpreting as you go,
but it acts like it's interpreting it.
But it's really useful for just small stuff.
So you're not writing an app.
You might be like, okay, let's see how arrays work,
or let's do a little algorithm and see how that works
and play around with it.
And then you can see a lot of stuff as you hover over it,
values and things, and it shows you in a sidebar
all the variables, values as you go. it's not really like a debugger um but it's sort of a real-time
exploration tool so having just come off uh an embedded deeply embedded system with a debugger
and an ir and then not ir sort of of SEGGER style debugger.
How is it different to do it on the app?
Can you just do it all on your computer?
An actual phone, tablet thing?
You can do it two ways.
There's a simulator.
And you can basically run the whole app in the simulator on your computer.
I don't know what the limitations are.
Obviously, you can't do some hardware things very easily.
I don't think you can hook to a Bluetooth device, for example.
So if you're developing a Bluetooth,
as most embedded people are these days,
and developing some sort of app to go along with a Bluetooth device,
you need a physical device at some point to really test it. So there's
a simulator and you can add breakpoints and walk through it as you normally would on the simulator.
And you can, you hook your test device up via USB. And there's a whole mess of stuff I don't
want to talk about in terms of getting access to being able to download stuff to a real device.
Because you have to register with Apple and some certificate garbage.
And it's gotten a lot easier, but it's not quite as simple as just plug it in and go.
But yeah, once you've plugged it in, it'll download the app to the real phone,
and then you can set breakpoints there too.
So it acts pretty much like you'd expect any other development system from that standpoint.
Well, more like a PC development system than a deeply embedded system.
Why?
I mean, you have unlimited breakpoints and full view of the memory.
Yeah, and it's got even more crazy stuff.
The ability to go backwards?
No, I don't think so.
Okay.
But it does have a bunch of kind of tracing facilities
that will graph stuff for you
and show you your memory usage
and things like that over time.
So on the topic of interface and graphing,
you showed me this super weird tool
that was the UI stuff.
Yeah.
What was that?
Part of the IDE is just a UI editor.
And everything that has a UI that isn't an embedded system,
so Android phones and iOS phones and Qt comes with one,
has some sort of UI designer portion of the IDE
where you can visually design your applications look and feel.
Oh, sure.
Okay, I'm not gobsmacked at the idea of that.
Right, so I'm heading, I'm leading into it.
I'm like, I've seen that sort of thing before.
So what the Apple one has is while you're running the actual app,
you can, in the debugger hit a thing and it will mirror so it'll go to the part of your designer
for the code that's running and show you that and then you can hit a button and it'll rotate it
and split everything up into stacks so that you can hover over any element and it shows the entire class hierarchy of all of the
elements on your screen in 3d so you can so that at the bottom there would be like the super class
like ui view and at the top might be a button that's within a table cell that's within something
else and so those would all be stacked and you can can hover over it, and it'll tell you, oh, this is this one in your code over here.
So it's pretty useful for actually visualizing
what's going on in the code
in terms of what's on the screen.
And debugging what's on the screen.
Yeah.
And figuring out what's behind stuff.
Yeah.
Okay.
Is there anything else I should ask you
about iOS development?
I mean, I don't know.
I mean, there's lots to compare and contrast with embedded development.
I'm sort of diving in at the deep end
because not many people start out as iOS developers
and then become expert in it and then get jobs.
I'm kind of thrown into the deep end and saying, being told, learn and be productive now.
I mean, that happens to a lot of people.
Yeah.
I mean, a lot of people end up getting learning embedded that way.
Yes, I commiserate.
And there's an existing code base.
It's sort of a challenge and and a blessing um
the challenge is it's a very very very big code base and i don't know much about it and it's not
easy to navigate and navigating super object-oriented stuff with the design patterns yeah uh a lot of
people have asked oh how do i go about reverse engineering code you know that i don't or documenting code that I don't well understand? And with C, it's kind of like, well, you know, you look for main, you see what that calls, and then you move top down from there. And, you know, you kind of map out the calling structure and the flow of the program. And you look at the major data structures with these kinds of things. It's like, well, here's a pile of code.
It's a pile of code.
And there's no flow because they're all objects.
Everything's asynchronous.
Everything's kind of loosely connected,
which can be great when you're first starting to design a program.
But if you're just trying to figure out what one is doing uh from scratch it's it's kind
of it's kind of challenge but it is a large enough program that pretty much every kind of thing
that could be done is done somewhere so if i have to add a new feature that's like
go to a website and grab certain information and parse it there's like eight examples
of varying age so varying languages well yes that too uh that i can pick from to say okay
this is kind of how i would do this um so that so that's kind of cool because it's not totally
coming in blind it's like here's this feature and i've got to go, you know, invent a way to do it. And that's a great way to learn anything is finding examples.
But yeah, it's weird to learn a brand new thing. It feels like a really brand new thing. I mean,
it still feels like writing code, but it feels like somebody transported me 25 years or longer.
Yeah.
Sometimes the embedded things, I'm working on one project that has a PIC 32.
And...
You went the other way.
Yeah.
I feel like I fell back a few years.
And then my other project is with the TX2.
And I'm just mentally pulled apart, which is great.
I love both the projects.
It's just they're so far apart.
So before I completely failed to explain extensions
and then ended up editing out at least a half an hour of this podcast
where I sounded like a moron.
That's why it's going to be short today.
You were at House to What Learning
Resources. Right, right.
So, there was actually
a class on LinkedIn.
LinkedIn had LinkedIn Learning. That was the one I did
a lot of. It was fine.
I did a little
bit on, I think, a
Udemy class. I'm not sure.
And then
there was a some uh other online stuff that i that might
have been uh youtube like things there apple has a course uh that i didn't use um i probably should
go look at it uh that's on their uh itunes university thing i think i think it's a stanford
course and they update that year after year.
Um, but the thing I actually got most,
and maybe this is specific to me,
the thing I learned best from was a couple of books.
And,
uh,
one,
one of them was from,
let me look it up.
Big nerd ranch.
I think big nerd.
The skateboard on the cover. Big Nerd Ranch, I think. That's the one with the skateboard on the cover.
Yeah.
Swift Programming.
Swift Programming colon The Big Nerd Ranch Guide.
And it's quite good.
And it feels like...
It's written in a way that it feels like it's being taught to babies.
Okay, this is sounding wrong it's written
in a way that feels like oh this is very low low level in terms of difficulty like it's very
friendly and yet by the time you got three i got three quarters of the way through like oh wait
some of these concepts are really deep and they're doing a really great job of teaching them
and it goes through most of the language features.
So that's just Swift.
They don't talk much in that book
about iOS development apps or anything.
And then the other book was also from Big Nerd Ranch,
iOS Programming is the book, which is very good.
And it does take you through some of the UI framework stuff and how to build an app.
With those two books and some of the online stuff, the free online stuff
it's not hard I think to get a basic app up and running.
Unfortunately that's not the place I live.
So I'm maintaining a very complicated, very big legacy code base.
Well when you're ready I have some game ideas for you.
Yeah, well, that's a whole other...
I'll just do that in Unity.
So it's been interesting.
And I'm happy to have the opportunity to learn something new
as part of a job after being there for a while.
It's nice to have variety.
Well, as long as I'm quizzing you about technical things.
Blender. Yeah.
Aren't those from Margaritas? Yes, they are.
You're just going to torture me now. I know. This is embedded.
So far we've talked about iOS development,
and now you're asking me about a 3D modeling tool.
So Blender is a 3D modeling tool.
Yes.
It's funny because I'm using it at one of my clients
for some simulation modeling,
where I'm using it means,
oh, please just hand me the data when you're done generating it.
I don't want to see anything inside that box.
But all I know for me is that there's a world and a model and data comes out.
And don't click anywhere.
Don't breathe near that box.
I'm not doing it for anything useful.
What are you doing it for so it's cool
maybe i think it's cool i ever do anything with it uh so a lot of people put music on youtube and
people listen there so i was thinking oh you know that's that's where i should put some music and we
have um but usually it's behind like a static album art or something. And I was thinking, well, it'd be cool to have little, maybe 3D music video
or something, a music visualizer that I could throw on a song that would kind of modify itself,
depending on how the song beat changes and what have you. So I don't have to necessarily direct
a music video and do 3D animation every time for a different song, but I could just kind of
modify it a little bit and have it do stuff.
So I'm trying to learn enough 3d animation to kind of do that.
And foolishly I found what seemed to be some simple tutorials on YouTube,
um,
which did kind of what I wanted.
Um,
but they weren't quite as sophisticated.
And,
uh,
so I,
I've been trying to learn a little bit more.
The problem with YouTube,
the tutorials I've been finding on YouTube for Blender
is I want a very specific thing.
So I like look for music visualizer Blender
and maybe there are three or four videos,
maybe ones like with particle systems or something.
The hard part is they don't really teach you anything.
It's like learning to drive by watching
by having somebody tell you how their arms and legs are moving yeah so i push the accelerator
halfway okay now i turn left 20 degrees okay now i push on the brake all the way
so it's like click on this click on this thing, click on this thingy, click on this thingy. And literally
they're saying thingy and their mouse is flying across the screen. So I'm having to pause. So
it's like a 10 minute video with maybe, you know, five major concepts in it that they're clicking
through on the UI, but I'm having to pause every 10 seconds and see what they clicked on because
they're just flying through and they're mumbling.
But it's still, these are the only videos for the specific thing I want to do.
And God help you if you want to like find a book or something that tells you how to link
the FFT of your song to particular parameters in a 3D animation because it just doesn't exist.
So it's kind of been challenging. And then I kind of gave up on it a few days animation because it just doesn't exist. So it's kind of been challenging.
And then I kind of gave up on it a few days ago
because I finally was like, this doesn't make any sense.
And these people do not know how to teach.
And, you know, thank you.
It's free.
I understand you're just putting stuff out there,
but maybe abolish thingy from your lexicon.
And then I say, um.
And these are, I think i got to one point where the interface just confounded me completely you were pretty irritated it's like this is ridiculous
uh there's like different modes and stuff wouldn't draw and it's really easy to just
pollute your entire screen with sub windows and not, not know how to get rid of them. Finally gave, and well, I got to the point where I had something
I thought was a cool animation, but it was impossible to see in real time. I had to render
it out, uh, using what they call the cycles render, which render, which does full ray tracing
and stuff. That's what I was using. Cause I wanted it to look cool. Uh, unfortunately,
if you want it to look cool, there was no way to really preview it and tell that you were making huge
mistakes. So I rendered out about a thousand frames worth and that took several hours on my
poor computer, even at half resolution. Got it out and played it and realized I'd created the
ultimate epilepsy generator. It was a little flashy. It looked really cool in the preview as i was doing one frame at a time
and things were evolving slowly one frame at a time but when they're evolving at full speed
it was just kind of flashing flashing and twitching uncontrollably um so that sucked
and i kind of said this is impossible i can't figure this out. And then I went to, I think, the Blender Reddit,
and everybody was talking about Eevee.
And I was like, what is this Eevee thing?
And I was looking in my copy of Blender,
and there's nothing called Eevee, E-E-V-E-E.
And finally got some more information about it,
and it was like, oh, there's a new renderer.
And it lets you do all the stuff that Cycles does in real time.
And I was like, okay, how do I get this?
And I looked it up, and it's part of the Blender beta,
which is a, it says 2.8.
The release version is currently 2.79,
so it seems like it's getting close to release,
or they would have numbered it like that,
but maybe they'll come out with 2.79x or something beforehand but not only does it have the ev render which is super cool and i could
look at my entire video in real time rendered almost as as well as with the the ray tracing
renderer but they've overhauled the entire UI completely, like unbelievably completely.
And it's way better,
even though there's no documentation I could find
on the new layout.
It's organized much better.
You can find things.
There's different kind of views
for the kind of operation you're doing.
So if you're doing 3D texturing,
there's a tab and you hit that
and it rearranges the UI so that, okay, these are all the things you operation you're doing. So if you're doing 3D texturing, there's a tab and you hit that and it rearranges the UI so that,
okay, these are all the things you need for doing that.
You want to move over to your animation,
it switches to that instead of having sub windows
with all kinds of different functional areas
that you can open at will
and kind of design your own UI,
but it gets very confusing the way it was.
So I was pretty happy with that, and I'm going to
continue with that, even though it's a beta
and maybe things will change.
You make it sound like it's an IDE
that has gone through an enormous
change. Some of the IDEs
now you can go into different modes
for debugging versus writing code.
It's like that.
But cooler. Well, I don't know if it's cooler.
It's a vast improvement to me.
I know there are probably people who love the old interface.
If you've mastered it, it's going to be hard to switch out of it.
Maybe they have a legacy mode.
I don't know.
But yeah, there's no real point to sticking with it,
except it's something interesting to learn.
I know some people do
3D print modeling in it
and other things like that.
It's way versatile.
Oh, really? Way versatile.
You can do almost anything with it.
It has game engine
kind of components and movie making
kind of components and
sculpting and art
components. So it can do anything but the problem is it can do anything.
Exactly.
So, yeah.
Cool.
Let's see, what else do I have?
As long as I'm interviewing you,
I heard recently you had some advice for when people have to do their self-reviews.
No, I'm not revealing this.
No.
No.
No.
No.
All right.
You're on your own for self-reviews.
Sorry.
I mean, it doesn't even apply to most people probably.
I refuse to answer on the grounds that it may incriminate me.
All right.
Slack channel people.
What else do they have for us?
How do I get better at firmware?
This is like when somebody asks me about pointers and I'm just like,
it's just there.
I don't know.
How to get better at firmware.
First of all, what is firmware?
Exactly.
I guess, I mean, there's the do it.
Do more firmware.
Do more firmware.
Read more firmware code,
which we will be talking about some next week.
Oh, I have a book.
You might want to read my book.
It's called Making Embedded Systems.
It's not the newest book in the world, but it isn't.
But it's not the oldest book either.
It's not particular about a specific embedded system.
It tries to go over lots of different things
and give you a good overview on how the whole process works.
Yeah, it's a difficult question because firmware is not well-defined.
Better is not well-defined.
And I is completely well-defined. No, but I mean, how do you get better?
What does better mean?
Knowing more sensors to know how to talk to,
knowing more techniques for communications,
knowing more sophisticated C programming
or assembly language programming, knowing more sophisticated C programming or assembly language programming,
knowing more processors, just being a better coder.
These are unanswerable questions.
But being a better coder is actually a good one.
There are books about how to just be more aware of what you're doing.
And I'll link a couple.
I'm blanking on some names.
I can only think of Bob Martin's, which are good.
But I'm sure there were other ones that I've read that were also very good.
Hey, these shows are just us, you know.
Sometimes we just start with Winnie the Pooh.
It's always good when we schedule them for the end of the day
when we're already burned out completely.
For better code, I mean, there's just a lot of resources.
That's the problem.
It's a matter of reading.
There's a lot of good blogs out there.
Our blog has a lot of information.
Just to cancel... He's got a newsletter.
A newsletter that every week has a ton of stuff.
Embedded Artistry has a nice blog.
Embedded Artistry has a nice blog.
So I think just reading a ton
and doing,
you know,
if there's something,
you have to be focused.
You have to pick
something you want
to improve.
You can't just say,
I want to be better.
So,
if you want to be
a better coder,
okay,
learn about
how to do testing.
Learn about
and maybe spend
a month
working on a project that's test driven and see how that goes
and maybe the next month you learn about how to do
circular buffers if you've never done one before come up with a project on an arduino or something
that requires a circular buffer but you gotta got to give yourself reasons to learn stuff, I think.
That's the way I get motivated.
I can't get motivated if there isn't something to do.
I need the application too.
It was really hard, going back to Swift,
to motivate me to sit down for weeks with some videos and books
and not a project.
But I knew I had to do it because I had a project, but I was completely incapable of
doing anything with it until I had at least spent some time studying.
So that kind of thing can be a challenge.
And then in that case, guilt and, you know, fear of future failure is a pretty good motivator. But if it's just a nebulous, well, I'd like to be better at this,
you kind of got to give yourself some reasons.
I don't know.
That's probably not what they were looking for.
But a lot of times I feel like some of those questions are,
and I do this to myself, it's like, well,
there was only a five-minute solution to improve myself.
That would be great.
First, you get a magic wand.
Yeah.
Once you have a magic wand, it all becomes much simpler.
Yeah.
No one knows where to get a magic wand.
I have one in my magic kit.
You do, actually.
All right.
What 2018 technology trends are probably just hype?
Did we talk about this with Chris Gamble?
First, let's look. I think we tried to. No, maybe not. It doesn't matter. I can do it again.
Probably a different answer.
Okay.
What's a 2018 technology trend?
Machine learning.
I don't think that's hype. I think there's hype associated with it. I think it's certainly being applied in some cases where it shouldn't be.
Laughably shouldn't be.
Laughably shouldn't be, but I don't think it's something that in five years people are going to look back on and say, remember machine learning? That was funny that everybody got into it and then it was not important i don't think that's
going to happen i mean that's true of iot and cloud computing as well i don't yeah i think
those are technologies that are going away yeah they may be overhyped i don't think they're
overhyped well again i think they're overhyped in marketing terms but i think they're
they've taken over i mean everything we do even in embedded if you don't have
i mean if you don't have some connected component uh you're you're making a niche product these days
so it may feel like they've been overhyped and there's a lot of consumer hype about certain stuff
with the flooding of
the cameras and the this and the
remember the egg thing
yes the egg carton
see I think the egg carton was
peak IOT hype and we've actually
we're over the hump
and that was years ago
but no I don't think that stuff's going away. I can't think of anything that's really,
that I think is laughable. Like, that's just not going to go anywhere. I mean, I know everybody's
like, self-driving cars! Everybody says they're coming soon, and they keep not coming soon, but
yeah.
10 years, and I'm still, will still be thrilled.
Yeah. I mean, it'll'll still be thrilled. Yeah.
I mean,
it'll get better and better.
It's not like we're going to click over and have self-driving cars.
It's just going to get better and better.
And until,
and jumps and slow iteration,
both.
Yeah.
I think,
um,
Bitcoin,
that was overhyped.
That wasn't a 2018 trend.
I don't feel like 2018 was particularly noteworthy
in terms of anything new.
Like, it was all just a continuation of stuff
that had been happening for the previous few years.
I mean, machine learning certainly wasn't the 2018th.
It didn't become any more prevalent in 2018
than it had been in 2017.
I'm trying to to think with that,
I don't have any,
like every year there's always,
they always build.
Yeah.
Um,
what about 3d printing?
Do you think we're,
we're there?
No,
no,
I think,
uh,
that's going to be,
I think it's got,
the printers have gotten better.
Oh yeah. Uh, and I've already talked about the one I have. It going to be, I think the printers have gotten better. Oh, yeah.
And I've already talked about the one I have.
It's really good, but it's still really slow and finicky.
And you have to, unless you're just pulling down designs from other people,
you have to learn how to 3D model stuff.
Which is not a small hurdle.
It's extremely useful and I think
I think it's changed a lot of
industries in small ways
SpaceX and other companies
are 3D printing whole rocket parts
and things
but I don't think it's
going to be the consumer
everybody's got a 3D printer on the desk
and you know
we're printing household goods on the regular.
I don't see that happening.
You just put in carbon and you have a replicator and it makes food.
Yeah, I don't think we're quite to tea Earl Grey hot yet.
Okay, let's see.
What tech-related things have you changed your mind about in the past year?
I actually got a listener, since this was on the Slack channel, um, Tom Anderson replied to that
one. And his reply was actually quite startling. He has changed his mind about glitter pens. In particular, Jelly Roll rollerball glitter pens.
And the truth is, I understand that Jelly Roll rollerball pens are weirdly good.
But that wasn't what I expected anyone to say.
So I was pretty amused by it.
That's not really technology.
No, it was technology because they changed how the rollerball part.
Oh, I see.
Changed my mind about not Rust, although Swift and Rust share a lot of syntax, so I feel
like I'm backdoor learning Rust, which is a little scary.
Risk 5?
It's, I mean, it's fine. It's one of those,
I get skeptical about stuff that other people are excited about. And that's not their fault.
It's my fault. When people get too excited about things and want me to be excited about them too,
I instantly get unexcited. So that's a personal failing. Contrarian.
Having said that, RISC-V is interesting, and
I look forward to seeing more
actual chips. How's that?
That's good. I was going to go for commercially viable as my term, but yeah.
And I know it's getting used in places, but they're small places so far.
But also, I don't really care. I mean, it's just another processor architecture.
God, I sound old.
But, you know, it's open source.
I know that that's good for some value of good and freedom and puppies and all that.
That's great.
I'm happy about it.
No, really, seriously, I am.
Keep digging.
I'm old and, you know, I'm not going to use it for anything unless, you know, it comes up on a comparison sheet and it wins for some particular reason.
So I'm certainly not going to be at some place where we're rolling our own SOC.
You say that now, and yet.
But I've done that, so I don't want to do it again.
I know.
Let's see, has there been any technology I've changed my mind about?
I guess VR was before this year.
That was way before this year.
It was two years ago.
Yeah, I'm still pretty in love with VR
and I still,
apparently I'm a little too aggressive
in my,
have you tried VR question?
Because people were-
So you're that person.
I'm totally that person.
That's something that was overhyped, I think.
I don't think that's, that's something it was overhyped i think i don't
think i don't think that's that's had a flat to sort of maybe okay not flat but a very linear
adoption curve it hasn't really gone it's still so expensive well but there's lots of other things
i mean there's there's oculus has it's not that expensive for For a couple hundred bucks, maybe $300 or $250, somewhere in that range. I don't remember exactly. Oculus has
a standalone. There's a bunch of standalone things coming out
that aren't very expensive. Standalone being you pay for it and you get
the games or it plugs into Steam? No, it's
a self-contained unit. No computer. It's got a phone
caliber thing, computer in it,
and you just put the headset on, and that's it.
So that stuff's moving along.
It's a weird technology, though.
It is.
It has so much potential, but it has to get over its adoption.
It has to be adopted, which I think is a price thing.
Well, it doesn't have anything.
There's nothing drawing people to it right now.
There's no like, oh, have you seen this game?
Okay, there's some fun games that are mostly indie.
There's a couple of big games that are ports of existing games.
And that's, you know, and experiences.
And they're all fun and cool, but it's not going to make somebody run out
and spend a few hundred bucks.
I mean, I love the whale experience, but it only lasts an hour.
If Nintendo comes out with Super Mario VR, then you'll know it's, you know, a thing.
Yeah.
Let's see.
Any changes you're seeing in the job market?
We probably shouldn't answer that one.
Why?
I don't know.
Are you seeing any changes in the job market?
Still seems pretty hot.
Still seems pretty hot.
Seems actually hotter, which is weird because I feel like things are getting worse.
So maybe there's a delayed reaction
in the job market, but
yeah,
there's still a lot of activity
in recruiter activity.
And aggressive recruiter activity.
We're in dire need
of...
Well,
yeah, if you're
a recruiter, don't use the word dire anywhere in your job requisition or emails to people.
And then don't follow it up with the safety critical system.
Yeah, anyway, we shouldn't say who that was.
What kinds of guests are you looking for in the new year?
Really, really famous ones.
No.
And funny ones.
Yeah.
Funny ones and famous. No. And funny ones. Yeah. Funny ones and famous.
No.
No.
Hmm.
My favorite guests tend to be people who...
Who have nothing to do with Embedded.
Come on, admit it.
Well, no, no.
Exposed me to something that I just really hadn't thought about before,
deeply, had have cool
perspectives on stuff um none of our guests have been bad so it's it's it's kind of hard to to say
I want anything different um yeah I just like talking to people about their jobs and what
they're excited about what they're doing um we've had a few professors on lately and I kind of like that, but I also liked having authors
on and musicians. And I guess we haven't had as many entrepreneurs on lately because I haven't
really been in the whole, I want to be an entrepreneur state, but.
There's only so much you can say about Kickstarter.
Yeah.
You know, projects and things like that.
I mean, it's interesting to talk when people bring a new product and they want to talk
about how it works and things.
That's cool.
But the process of Kickstarter, I think we already know.
It's kind of beaten into the ground.
Everybody knows it's a minefield.
So probably not too much of that in the near future.
I like some of the in-depth stuff.
I hope we talk more with more people who know a subject really, really deeply,
like the professors you're talking about,
and when we can talk to them about how they're processing some particular image or signal or whatever.
Because I think we haven't done too much of that.
We haven't done the deep dives as much this year.
There's no reason.
It's just how booking goes.
Yeah, to some extent it's the booking and what I'm thinking about when I'm doing it.
And yeah, it's a lot more ranting than you expect.
Sorry.
Okay, I have one more question.
Well, no, I have three more questions.
Maybe I should...
This is escalating rapidly.
Merchandise for the year.
Merchandise for the year?
Yeah.
We had a quest for coffee mugs.
Coffee mugs?
I don't know.
Might be cool.
Embedded coffee mugs.
And then I had to think about what we'd put on it,
and of course the logo, that makes sense.
But then what do you put on the other side?
Do you just make the logo so big you can't see it all?
You just put the logo on both sides,
or embedded.fm on one side and logo on the other side.
Anyway, we don't need to design it here.
Well, then I had the idea that someone suggested
we should use our show titles.
And so I wanted to make the show titles be vertical all the way around
so you had to tilt your head or the coffee mug in order to read them.
Yeah.
And then put our logo on the bottom after they've spilled their coffee.
Like Masa's cup in the IT crowd?
He had his face on the bottom so he could tell it was his.
Yeah.
Sure.
We could do something like that.
If you were interested in
coffee mugs uh like like really interested then maybe drop me a line and i'll if there are more
than 10 of you i will seriously consider doing coffee mugs or enamel pins i want an animal pin
yeah trading pins chris wants trading pins if want trading pins, send me like six emails
because those suckers, you have to buy a lot of them.
Funny.
Google and Android Google Player.
Yes, I don't know what's wrong.
So we've gotten several complaints that we don't show up.
So Google came out last year with their own podcast app for Android.
Which is not to be confused with Google Play Podcasts, Google came out last year with their own podcast app for Android. Like iTunes.
Which is not to be confused with Google Play Podcasts,
which is where they publish podcasts within the Google Play Store,
which used to be just music, but it's music and podcasts.
But no, this is their new Google Podcast app.
Indexing service.
Well, the indexing service is part of the app. Yeah. But it's just fors app. Indexing service. Well, the indexing service is part of the app.
Yeah.
But it's just for their app.
So instead of doing the smart thing and just using the Google Play Podcasts index
that they already have for podcasts
to give you a directory,
they created a new thing
where apparently they crawl the entire web
looking for websites that look like websites for podcasts, which involves having an RSS feed
and some other stuff on the front page. So that's great. But for some reason, our fine podcast
does not show up in the Google Podcasts app
for either everybody or just some people, I'm not sure.
I don't have an Android device, so I cannot test this myself.
However, we have done everything that Google says we should.
If we go to the website where Google says,
put your podcast website here,
and if we give you a link, then you're in the directory,
and it gives us a link.
So according to Google, everything's working.
According to everyone else, it's not.
So there is nothing further we can do at this point.
There's one more thing we can do.
Except scream at Google, what?
So if you're listening to this show, which I don't know how,
you can go to the subscribe page on Embedded.fm.
Right.
And then there's a little Google button.
And if you push the Google button on your Android app, it should just poof magically appear.
If you push that on your Android device, it will open the Google Podcast app if you've installed it.
And it should go to our podcast in there.
Yes. Google Podcasts app if you've installed it and should go to our podcast in there. You'd think that eventually
with their AI
it would figure out that that's a podcast and should be
in the directory. I don't know if there's a confusion
because there's another podcast called
Embedded and their directory
screwed up. I'm not sure.
I don't know if it was because Libsyn has making embedded
systems for some stuff still.
Libsyn doesn't enter into it.
Oh, it's all just RSS on Squarespace.
It's Squarespace provides the RSS feed.
So confusing.
There's another podcast that uses Squarespace exactly the same way we do, and they're in the directory.
Because we copied them.
I compared the two page sources, and they're identical.
Same tags, same RSS feed.
Except they have a different show name.
They have a different show name, yes.
And some other different content.
But the way it's laid out is exactly the same.
So I don't know what the problem is.
If you see that it does show up in search, let me know.
Yeah.
I'll keep kind of an eye on it.
And if I run across somebody with an Android phone
I can borrow for a few minutes
I might poke around
but I'm not going to go buy one to search
there are like 900 other ways to listen to our podcast
use YouTube
don't use YouTube
you know your visualizer could go on our YouTube channel
not actually easily
because that's auto-generated last question You know, your visualizer could go on our YouTube channel. Not actually easily. Oh, all right.
Because that's auto-generated.
All right.
Last question.
What non-embedded slash electronic project was your favorite for the last year,
and do you have any plans for the next year?
Music.
That's still electronic, but it's not really.
I think music is separate.
Yeah, music.
We released some stuff last year
not as much as I wanted to but
we have a big backlog of things.
Where we is you and your brother
and the name of the
tube band.
12AX7.
I have some electronic things that he's put some stuff on And the name of the tube band. 12AX7, yeah.
I have some electronic things that he's put some stuff on and some electronic things that I've done.
I don't know where I'm going to release that kind of stuff,
but maybe under the same band,
and we'll just have random genre switching,
or maybe separate.
But yeah, I'd like to do a lot more music this year.
And magic.
Don't forget magic.
And magic, yes, because the cool people are magicians,
as everyone knows.
I got him the Penn and Teller.
I'm going to grow a little weird goatee.
I'm going to start dressing in weird black suits
with starched shirts, hidden pockets everywhere.
And jammy pants.
Jammy pants?
You have Batman jammy pants.
I can picture you in your...
What does that have to do with looking like a magician?
Well, it was only going to be the top half that looked like a magician,
and the bottom half was going to be,
yeah, I'm secretly a podcaster who works from home.
Then you could do Skype magic.
What are you looking forward to?
Getting off the topic of my jammies.
I have been doing more drawing and some of it technical-ish. Some of it on paper.
Some of it on my tablet, which is kind of new.
So I've been doing more drawing.
I'm planning on doing more drawing in the future.
I joined a little over a year ago a writing group in which we all critique each other's writing.
That's odd.
Good, but odd.
I've never been part of something like that.
I've edited stuff for other people.
I've had my stuff edited, but it's never been this round-robin thing.
And the most interesting part of it for me
is learning how to critique other people's work.
I mean, if I critique an engineer's
work, usually they take it as given that if I sound cranky, I'm not
because I use usually
I have notes that say this isn't it, you don't have to change it.
Or this is important. That's not how you spell your.
But this is people who are not super technical sharing criticisms. And it's really interesting to see how to go from my, I don't think that's a good idea at all, to someone more gently saying that in a way that is usable um so i guess writing and learning how to critique are the other things um but i'm mostly writing fictiony things
so yeah you probably won't read it
what else i should say gardening because I should garden,
but I've not been in a gardening mood.
I'd like to do some surfing.
That would require, for various reasons, a lot of effort.
So that's not really a project.
I would surf.
I know you would surf.
You would go swimming right now and it's storm.
No, it's dark.
Stormwater. Well, I mean, stormwater,. No, it's dark. Stormwater.
Well, I mean, stormwater, yeah, but it's dark now.
90% logs.
Yeah, it's not as much fun.
And 10-foot surf.
That's the fun part.
Yeah, I don't think it's as fun as you think it is.
All right.
I think now we should get to the project of making dinner.
All right.
So let me read a little bit of Winnie the Pooh.
All right.
Thank you, listeners, for listening.
We do appreciate your ears and your attention.
I'm not nearly as dumb as I sounded in the first section about Swift.
He's really not.
I did kind of spring it on him, so.
Okay.
Okay. of spring it on him. So, uh, okay. Chapter two, in which Pooh goes visiting and gets into a tight
place. Edward Bear, known to his friends as Winnie the Pooh, or Pooh for short, was walking through
the forest one day, humming proudly to himself. He had made up a little hum that was very,
very moving as he was doing his stoutness exercises in front of the glass. Tra-la-la,
tra-la-la, as he stretched up high as he could go, and then tra-la-la, tra-la, oh help-la,
as he tried to reach his toes. After breakfast, he had said it over and over to himself until he had learnt it off by heart, and now was humming it right through properly. It went like this.
Tra-la-la, tra-la-la, tra-la-la, tra-la-la, rum-tum-tiddle-um-tum,
tiddle-iddle, tiddle-iddle, tiddle-iddle, rum-tum-tum-tiddle-um.
While he was humming this hum to himself and walking along gaily, wondering what everyone
else was doing, what it felt like being somebody else, when suddenly he came to a sandy bank,
and in the bank there was a large hole.
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.