Episode Transcript
Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Matt (00:00):
Hi everyone.
And welcome to the Router, theofficial podcast of the UQ
computing society, where weexplore the human side of tech.
I'm your host, Matt.
And today I'm having a chat withWill Toohey also known as@mon on
Slack.
He currently works at MOVUS as asoftware engineer, but in his
spare time, he is a passionaterhythm game fan and a hardware
hobbyist.
Today, he's going to be tellingus all about his experiences
(00:21):
working on these side projectsand how you can get into
hardware too, no 4-yearelectrical engineering degree
required.
Welcome to the router.
Will, how are you doing?
Will (00:39):
I'm doing great.
How are you?
Matt (00:41):
I am all right.
Um, so I thought a good way tostart would kind of just feel
like, uh, if you could give abit of an intro about, about
yourself.
Will (00:48):
So I'm William Toohey.
Um, I finished a softwareengineering degree from UQ a
couple of years ago.
Um, currently I'm working for astartup coming out of UQ's ilab
called MOVUS that works inpredictive maintenance.
And on the side, my major hobbyis making and selling and
manufacturing, uh, controllersfor arcade games and interface
(01:13):
things for arcade games andbasically making PCBs and
designing PCBs.
And that's my hobby at themoment.
Yeah.
Side hustle.
You could call it
Matt (01:24):
Side hustle.
Yeah.
Yeah.
Um, so, so that's interesting.
So you only studied softwareengineering, um, so you didn't
study computer engineering oranything like that?
Just,
Will (01:33):
Yeah, so I actually, I
started doing mechatronics, uh,
but it turns out that I don'tlike the mechanical side of
things, so I switched tosoftware and aerospace because
it seems cool, but the math wastoo heavy.
So I went to straight software.
Fair enough.
But I focus mostly on thefirmware side of things.
I really get a kick out ofoptimizing software to make it
run on constrained platforms andgetting the most out of a piece
(01:55):
of hardware.
Matt (01:56):
Hmm.
So, so did you do a little likeembedded systems programming
kind of stuff that you need thatkind of thing?
Will (02:02):
Um, I think the deepest I
went, I didn't actually do
embedded systems.
The closest I went was CSSE2310actually.
And also CSSE310, which Ibelieve is the FPGA course.
Yep.
Yep.
And that was about the deepest Iwent apart from that it's just
applying standard softwareengineering stuff to embedded
and making sure to optimize allthe time.
Matt (02:24):
Sounds good.
So, um, so you mentioned PCBs,uh, I guess to anyone who's so,
so as someone who's not super ininto this kind of thing, um, I
know that it sounds a printedcircuit boards, right?
So it's a kind of like the greenlittle things.
Uh, you have all your, like yourcircuits printed on them and all
that.
(02:44):
Um, but could you maybe give alittle bit of an intro to those
like more software inclinedpeople like, like myself, I
guess you kind of don't knowwhat's, what's involved in, in
getting a PCB or printing one.
Will (02:54):
Yeah.
So if you do I believe teamproject, uh, there'll be a PCB
component there and it'seffectively, okay.
You've got your software on yourcomputer, but you want something
to happen in the real world.
Maybe it's as simple as akeyboard.
In my case, it's a slightly morecomplicated keyboard with a
couple of knobs on it, butreally all you want to do is you
want to attach those knobs to acontroller that talks over USB
(03:17):
to your computer and gets inputinto your thing.
Or it could be a standalonething, whatever you want, but
it's effectively just designinga circuit that connects all the
components together that you'dwant to connect together and
putting that all into a flatpiece of fiberglass and making
it easy to manufacture and youstick it all together.
(03:38):
And instead of having to wire upeverything by hand, you're just
solder everything to the boardand it's all connected for you.
Matt (03:43):
Oh, very nice.
And then, like, if you had likeany, like, I guess I/O or
anything like that, you kind ofjust do that after the fact,
right?
Like on the top of the board,
Will (03:52):
Uh, what do you mean by
that?
As in like connections to otherthings?
Matt (03:55):
Yeah.
So you felt like your, like yourrhythm game controllers or
anything like that, you'd havesome sort of like USB port or
something, right?
Will (04:01):
Oh yeah.
So you're just solder on a USBport and you'd get a USB cable
and plug it in.
And as long as you haven'tmessed up your PCB design and
everything's connected properly,you plug it in and you get that
beautiful boom, boom.
And off you go.
Matt (04:13):
All right.
Sounds amazing.
And I guess like, yeah, so that,that would be like the next step
off.
Do you have some sort of like a,uh, maybe like an Arduino or
something as what you'd first beor how
Will (04:22):
You always have to start
with an Arduino on a bread board
because there's no faster way toprototype things really.
Matt (04:27):
Um, and then PCB is kind
of like the polished finished
version I guess.
Will (04:32):
Uh, I've got several
unfinished PCBs.
I can assure you.
Matt (04:35):
I know, unfinished or
finished depends on, it depends
on the state of the project.
Will (04:39):
Definitely a lot less
broken than wires all over your
desk.
Matt (04:43):
Yeah.
I think like with, um, thestudents who don't really go
into, um, do team project oranything like that, um, the most
that software students getexposed to nowadays, I think is,
is really that breadboard kindakind of thing from a CSSE2010.
Um, they're like, yeah, they'rethe tiny little cables that
(05:03):
break and all that.
So
Will (05:05):
Yeah.
And I think CSSE2010 inparticular, I think is an
absolutely fantasticintroduction.
Um, if, for example, you're in astream, is it, is it optional in
any streams because if it'soptional, I recommend taking it.
Yeah,
Matt (05:17):
Yeah.
Yeah.
So studying computer science andsoftware engineering, it's
definitely compulsory.
So yeah.
Good.
Yeah.
Very good.
I loved it as well.
Um, so another question, I guessI had, um, so with these
hardware projects, could you goa bit into, uh, you mentioned
rhythm game controllers, uh, forthe uninitiated, uh, um, what,
(05:39):
what are those, what does thatentail?
Will (05:41):
So if you're not sure what
a rhythm game is, you might've
heard of osu!, You might'veheard of guitar hero, you
might've heard of dance dancerevolution, there's music on the
screen and notes that you haveto hit in time to the music.
And I got really into thisrhythm game called Sound Voltex,
which is, um, effectively sixbuttons to hit with your fingers
and knobs, to twiddle with yourfingers.
And it's quite unique and it'svery difficult to simulate knobs
(06:01):
with a keyboard, um, thereexisting controllers on the
market, but they're massive.
They're about$200 and an extra$150 in shipping.
And I thought I can do a bitbetter than that.
I can make this smaller and abit more portable.
So I designed a small PCB put onan ATmega controller, similar to
the one you might be using in2010 slapped on a couple of
(06:22):
buttons and a bunch of encodersmade a PCB for it.
And it actually worked fairlywell.
And so I started iterating onthat and made it bigger because
it was too small and too crampedand slowly over the course of a
couple of years design thisthing, um, posted about it
online and people thought it waspretty cool.
So I made a bunch more and Ithink I've sold about 300 so
(06:43):
far.
Matt (06:44):
Cool.
Very nice.
Um, yeah, I'll, I'll make sureto chuck the link as well, if
anyone is interested in, inSound Voltex, uh, in the
description.
Um, but, um, so that's kind ofcool.
So, so how long did it take tobuild the first version of that?
Like the first workingprototype?
Was it over like a, like a oneweekend of just like crazy, uh,
(07:08):
prototyping or was it kind of along term?
Will (07:11):
The first prototype
actually?
Yeah, it was about it prettymuch was a weekend project.
I just drew up and I was usingAltium at the time because you
get to use Altium at uni.
Um, I just threw this thingtogether, drew up what seemed to
be the right idea, put stuff onthe board, um, sent it off to be
manufactured by a random Chinesefab place received it two weeks
(07:33):
later.
And there were a couple ofproblems with it.
The USB connector, for example,I had wired and correctly and
had to hotwire some of theconnectors to actually make it
work.
But yeah, you can really throwtogether a quick test PCB in a
weekend easily.
And if you get a bit morepractice under your belt in a
couple of hours, sometimes I canget a PCB just to test a concept
(07:56):
because sometimes even withbread boarding, I don't like
breadboarding, it's a lot ofeffort to plug in all the wires
everywhere.
Sometimes I'll just design a PCBto make my life easier.
Matt (08:06):
So again, I guess like
over that weekend, you kind of
used a lot of the like PCBdesign tools and things like
that.
How much of that was, was pickedup from uni and how much of it
was stuff that you just kind ofhad to like, you know, mucked
around with and, and Google, isit kind of like when, when, like
when you walk into an entirelysoftware project?
No, at least for me, um, a lotof the time is spent just going
(08:29):
on stack overflow and looking upvery ad hoc solutions to the
problems I kept running into andsolving it that way.
Um, was it kind of like that or?
Will (08:39):
In PCB design, at least
for me as a software person.
So I wasn't trained inelectrical engineering.
I don't know some of the moreadvanced electrical aspects of
it.
It's kind of a, a feeling, uh,intuition that you get for how
to make things and not have anyproblems.
So, and that just comes withpractice.
One of my initial designs, Iaccidentally had a ground wire
(09:02):
that instead of going from pointa to point B looped around the
entire PCB and then got to pointB.
And when I got the board,sometimes when I was turning the
knobs, the buttons would startturning on by themselves and the
board would start resetting ifyou spun the knob too fast.
And without an oscilloscope, Ijust kind of looked at the board
(09:23):
and eventually realized thisground wire was too long.
Um, I fixed that in the nextrevision and it worked fine.
So electrical engineers probablyhave a bit more official
teachings.
I know that there were a coupleof PCB design lectures in one of
the team project, uh, lectures.
Oh yeah.
Um, which definitely gave youkind of the basics, but yeah, a
lot of it's just a wire needs togo from point a to point B
(09:46):
direct from point a to point Band StackOverflow is still quite
useful.
Um, sometimes I'm not sure forexample, USB, they say that you
need to have differential pairsin that the wires need to be the
same length.
Um, so I looked up the USBrouting best practices on stack
overflow.
And the end result is a lot ofthe time.
It doesn't matter too muchbecause the traces that you're
(10:08):
making are maybe 10 centimeterslong, the USB signals to be good
can be somewhere within 20centimeters of each other, which
on a small PCB is huge.
Matt (10:19):
So instead of looking up
how to do stuff, you just look
up some concept and then bestpractice and stack overflow ends
up giving you pretty goodresults that way.
I see.
Yeah.
So, Oh, interesting.
I guess like for me personally,these hardware projects are
super intimidating.
Cause it seems like there's somany ways in which you can, um,
(10:40):
get things wrong.
But
Will (10:41):
I think the main mental
block as well.
Yeah, there are so many thingsthat can go wrong and PCB
design.
The main thing is just acceptthat everything's going to go
wrong all the time.
Eventually it will stop goingwrong because you learn, but
things always go wrong.
You just iterate and try again.
Think about how many timesyou've hit compile on a C
program and you've had acompiler or how many times
you've thrown some JavaScriptonto a website and you've
(11:03):
uncovered some stupid bug.
The only problem with printedcircuit board is it cost you
about$10 every time thathappens, but it, things will go
wrong.
As long as you commit toactually iterate your project.
You'll get there in the end.
Matt (11:16):
Let's see.
Um, do you have anyrecommendations, I guess, for
those who want to get started?
Like, so you need to findsomewhere to, to manufacture
these, these PCBs, to print themout.
Um, do you have anyrecommendations?
Will (11:28):
So for the longest time
I've been using Seeed Studio
because they've been cheap andreliable, but recently JLC PCB
along with, if you follow anyoneelectronics on YouTube, they
advertise a lot, but thankfullythey actually, they actually
provide a fairly good service.
Uh, they're very, very cheap.
I think it's$2 for a set ofPCBs.
Plus don't ever forget the$15tax.
(11:49):
They ship it to you, but thePCBs themselves are quite cheap.
The traces are all quite nicelyrouted.
The silk screen is crisp thesilk screen.
Of course, being the writing onthe PCB that tells you which
parts that go where, um, butthere's a bunch there's JLC PCB,
there's Elecrow there's seedstudio.
There's a couple of others andthey're all fairly similar.
The PCBs are under$5.
(12:11):
If they're 10 by 10 centimeters,you get five of them and they
get delivered by us now, now,
Matt (12:16):
Oh, see you get multiple,
you get multiple PCBs.
Will (12:19):
Oh yeah.
You're always, you always getfive copies.
So if you want to cut a PCB upand see what it looks inside, or
if you want to completely ruin aPCB, um, if I've got some trace
that is connected to acomponent, and I'm worried that
if you hit this component toohard, the trace might come off.
I'll just solder the componenton a, rip it off myself because
I've got five more PCBs to testit with.
And that way you get a reallygood feel for exactly how strong
(12:41):
these circuit boards are.
And they actually are quitestrong.
Matt (12:45):
So yeah, I get more
opportunity for trial and error
than I thought.
That's cool.
Yeah.
Um, and I know we'll, we'llleave that in the description.
And just to clarify, we are notsponsored by, uh, any sponsored
by no one.
Yeah.
Just, uh, it's the word of mouthrecommendation.
Um, but cool.
Um, I guess, were there anyother projects that you kind of,
(13:08):
uh, I I'm guessing that ithasn't been your only project.
Will (13:10):
Yeah.
If I go into my products folder,I've got something like 30
different things in variousstages of things.
Matt (13:17):
Any, any, any good
stories, any like, um,
Will (13:23):
I've got, um, there's some
interesting stuff with the
Pocket Voltex, which is theSound Voltex controller is the
initial version.
I wanted the RGB LEDs and Iwanted them to be side mounted,
but side mounted, RGB LEDsdidn't exist in a very
convenient form.
So I got these through hole LEDsand bent the legs on them, but
(13:43):
then I needed to drive them andI didn't want to get an
expensive controller chip.
And it turns out that you canpush an ATmega chip a fair way
past its stated maximum limits,as long as you do it
infrequently enough.
So if you've ever heard ofmultiplexing, it's powering
something for only a smallperiod of time.
So if you have 60 LEDs, youpower one at a time when you
(14:05):
loop around and do them all inrows and columns.
So I multiplex the LEDs togetherand an Arduino's pins I think
are specified for a maximum of50 milliamps per pin constantly.
And I was able to push, I thinkabout 120 milliamps through the
pin because I was only firingthrough that pin about 10% of
the time.
(14:26):
And that's the really good thingabout being a hobbyist is you
don't need to worry aboutproducing 10,000 of these or a
hundred thousand of these.
If you're doing something that'sa bit naughty, if you can get
away with it, it doesn't matterbecause it still works.
So you can often drive thingsfaster or use the wrong resistor
.
And it doesn't really make muchof a difference.
Matt (14:43):
So kind of, kind of going
against like the super rigorous
principles, but it's all right.
Cause you know, it's your ownlittle.
Will (14:50):
Throw stuff off the wall
and seeing what sticks.
Matt (14:52):
Yeah.
Um, one question as a is a moremoderately curious software
person with little experience.
Um, I've always been worriedthat I'm going to like fry my
fingers or hurt myself in someway when playing with all these
like, you know, electronics,cause I don't know what, what
I'm doing.
(15:12):
Uh, would you say that it's atall dangerous or if there are
any basic safety precautions,you would recommend the people
who are messing around withhardware for the first time he
want electrically trained.
Will (15:24):
There are really only two
big things to be very, very,
very afraid of.
And that is 240 volt AC powerand batteries that go into like
drones or scooters or e-bikes.
Those are very scary and I wouldrecommend staying away from them
unless you're extremelycomfortable with them.
Everything else, it's all lowvoltage, five volt, 12 volt.
(15:46):
There's not much that canhappen.
The worst things that I've doneis you plug in your board,
windows says this USB port isusing too much power and you see
a small little wisp of smokerising from the board and you
realize something's gone wrong.
Now, obviously the first, uh,the first thought you have after
that is to touch it and see howhot it got.
But don't do that because youwill burn your fingers doing
(16:07):
that.
But apart from that, it's, it'sall such low power that it's
very difficult to hurt yourself.
You might stab yourself on asharp pin more often than you'll
hurt yourself with, uh, blowingthings up.
Matt (16:22):
Hmm.
Sorry.
So low risk, as long as youavoid AC power from your
straight from there.
Okay.
All right.
Um, one last question I kind ofhad, um, was about, so, you know
, you mentioned, so you onlystudied software engineering,
um, but you mentioned 2010, um,as well, 2310, 3010.
(16:43):
Is there anything else you'drecommend if you wanted to learn
about this kind of thing?
Cause, cause for, for softwareengineers, right?
Um, and, and computer sciencestudents, we don't actually do
the team projects anymore.
Oh no, we do.
We do, uh, design computing,which is kind of more like, uh,
uh, entirely software focusedkind of like there's like a game
design thing and there's thinglike that.
(17:05):
But, um, would you recommendanything for those wanting to
get into this kind of thing,
Will (17:10):
Any courses that are all
similar team product, if you
have to make something that willbe infinitely more useful than
any other optional course thatyou could do because just
forcing yourself to actually gethands on and as well, being
surrounded by other people whomight know something that you
don't, that's the best thingthat you can do.
Um, as well as going to placeslike the edge in South bank who
(17:31):
always have a bunch of peoplemessing on random hardware
products or I think hackerspaceBNE has some very interesting,
Matt (17:36):
Oh yeah.
I've heard about hackerspace aswell.
Um, warehouse or something,right where with all the stuff.
Will (17:43):
So that was my real
introduction to the hardware
projects was being lucky enoughto be surrounded by all these
smarter people than me at uni toget me excited about it.
Matt (17:53):
Yes.
That's great.
That's basically it for me.
I guess I want to ask if there'sanything you wanted to, to say
anyone, any other advice or,
Will (18:01):
Oh yeah.
There is one more thing I wantto talk about actually.
Get into Kicad.
Kicad is an absolutelytremendous piece of software.
If you haven't heard of it, itis a free PCB design software
sponsored by the guys at CERNwho do the large Hadron
Collider.
Um, five years ago it wasacceptable, but not really
great.
It was kind of janky they'verecently, not recently last
(18:23):
eight months or so.
They came out with a newversion, version five and it is
really a tremendous piece ofsoftware.
Now completely lowers thebarrier to entry.
You don't have to worry aboutpaying$10,000 for Altium.
You don't have to worry aboutAltiums free cloud offering.
That means that if they ever godown, you lose all your PCBs.
It's all local.
All the PCBs are text files.
Often I'll find a bug withkeycard where they won't let you
(18:45):
do something, but you know, it'stechnically possible.
You can just edit the text file.
Matt (18:49):
Hmm.
Oh, so that's cool.
So this, this would kind ofreplace any like other kind of
software, but it's text based?
Will (18:57):
Well, the, you edit it
using a GUI, but Altium for
example, even Microsoft officeLibreoffice, no matter what
you're looking at, if you'retrying to open up a document in
there, it's a bunch of XML filesand zip things together can be
quite complex.
PDF files, especially anextremely complex, whereas
keycard, you can look inside itand you can instantly understand
just as a human being.
(19:18):
Oh, okay.
This is a piece of line on thecopper layer on the top.
And if you want to change thelayer from f.cu, which is front
copper to back.silkscreen, ifthe GUI is too dumb to let you
do it, you just modify the textfile and reload the GUI.
And it works because it doesn'treally care too much.
Matt (19:37):
Oh, that's cool.
Is it?
And this is all like opensource.
Will (19:40):
Yeah.
Completely open source andPython scriptable as well.
So if you have a massive PCBlayout, I'm designing a keyboard
that has 64 switches on it.
Um, in Altium you might userooms that lets you do that.
But I just wrote a Python scriptthat laid out the board for me
in a perfect grid.
And every time I wanted to moveone thing, it moved them all
forming.
(20:00):
And there's a, there's actuallyquite a community around making
scripts for Kicad that let youdo interesting things like that.
Matt (20:06):
I guess that would be,
that'd be kind of cool.
Cause it would cater to all theprogrammers, you know, who just
want to try messing around withscripts or whatever to make
their little PCBs.
Oh, that's cool.
Will (20:17):
And one last thing I
wanted to say as well, if you
are a programmer wanting to getinto PCB design, one thing I've
noticed about the small hobbyistindustry is that it's full of
people who don't actually knowhow to write code, but they're
really good at the hardwarething.
So if you can bring yourprogramming knowledge into the
hardware space, you can producesome incredibly valuable PCBs.
(20:37):
You can make some gorgeousinterfaces that connect your PCB
to your computer.
Maybe you want to make a reallycool audio amplifier that no
one's done before, or whereaslook something and go, if you
need inspiration, look at aproject that you use or a
product that you use and think,can I do this better?
Or even if you're starting out,just can I do this?
Try and replicate something, putyour own spin on it.
Matt (21:00):
Would you recommend a
rhythm game controller?
Will (21:03):
Only if you're into rhythm
games, but if you are, it's
quite fun because they're,they're very simple.
It's just a USB controllerbuttons, maybe some knobs.
Matt (21:13):
A mini, basically a mini
keyboard right here.
Will (21:15):
Yeah.
It's basically a small keyboard.
In fact, that's also a goodstart.
If you wanted to make your own60% keyboard from scratch, you
just make your own PCB put in abunch of diodes, a bunch of
switches wired all up.
It can be quite therapeuticwiring, a PCB.
Matt (21:28):
Hmm.
Well I guess there you go,anyone who's listening.
If you want to mess around withhardware, um, it's not as
intimidating as you might.
You might think, you know?
Um, and uh,
Will (21:38):
I basically live in the
projects channel in Slack.
So feel free to, if you want anyhelp with hardware stuff, feel
free to ping me.
I'd love to give you a hand,
Matt (21:46):
Right?
That's it#projects on Slack andI'll link anything that was
mentioned in the description ofthis episode.
So you can, um, look into itfurther.
All right.
Thanks so much, Will.
Will (21:55):
Fantastic.
Thanks for having me.
Matt (21:58):
All right.
That's all we have time fortoday.
Thanks for joining us.
As usual, our next episode willbe out in a fortnight.
So until then come join us onour Slack community at
slack.uqcs.org or listen to pastepisodes of the router at
router.uqcs.org.
(22:19):
My name is Matthew Low and thispodcast was created by the UQ
Computing Society with gracioussupport from our industry
sponsors.