Why I Hate Arduino

This week I got a nice little (semi-) surprise package, Smiley Micros‘ new book, “An Arduino Workshop“! Smokey and I go way back on AVRFreaks, and he seems to be under the misapprehension that I know what I’m talking about, so he likes sending me copies of the books he writes for review. I haven’t sat down to read it over yet, but during a discussion with Joe he asked me an interesting question:

I’d appreciate it if you could articulate why you don’t like the Arduino. If you can take the time, then write this out before you’ve had a chance to look at the introductory stuff in the book.

After I mentioned that I wasn’t a personal fan of the Arduino. I pondered this for a while, and I came up with the following response, which I think merits an open discussion.
Don’t get me wrong – I don’t wish that Arduino didn’t exist, any more than the Gentoo folk wish death upon Ubuntu for “dumbing down” Linux for those not wanting to learn how to configure and compile their own kernel from scratch. I think Arduino is a great learning tool, one which does a great job of teaching people how to make basic programs that just work, with the minimum of effort. I like that it’s getting people completely unfamiliar with anything technical (read: arts students) into a whole new world of embedded engineering.

That said, it’s not for me, because I’m simply too advanced for it to be much use. I like being able to examine/design the hardware, create drivers, and have complete control over the way everything works, to squeeze the most out of the hardware. I *like* pushing the hardware to the maximum, and knowing what bits go where. Of course, sometimes I just want to make a widget X that gets Y done quickly where such factors aren’t important, so in those cases the Arduino crutch becomes tempting. I see Arduino as this decade’s version of the BASIC Stamp product, a standardized set of hardware and software which the user can “wire up” to accomplish a goal. Much like scripting languages over statically compiled languages, you’re trading off performance for simplicity, and it’s a mark of a good engineer to know when the tradeoff is a good one. This is why PHP is so darn popular in web development; not many people have a scalability that demands the writing of all the scripts in C, and they just want to be able to create a page quickly and easily – so to in the embedded world, when an artist just wants a box to blink when someone presses a button, and doesn’t much care about how many milliseconds it takes to do it.

I think the best aspect of the Arduino environment is that it is using C as the backend, which means a vastly lower barrier for people to overcome when they want to move away from the Wiring library. People can use the library when they are unsure, but mix in bits of low level register tweaking as they feel comfortable. This is in direct contrast to the BASIC Stamp and other products of its ilk, where the “simple” development environment and language is generally far removed from those used “by professionals”. Arduino is like a series of black boxes, which the user can choose to open up and look into one by one as they get comfortable, or just trust that they work the way they do and not investigate further.

So that’s the long (rather than the short of it) for me; great concept, but one that I’ve outgrown the need for.
I’d love to hear other peoples thoughts on this. At first I was a bit perplexed by the astonishing success of the Arduino platform, but then I realized why people like it, because it makes making complex products simple. Believe it or not, the constant Arduino badgering got me into gear to write the LUFA class drivers, which have a similar performance-vs-convenience tradeoff. Originally I thought there wouldn’t have been much call for such a platform, but after designing, creating and working with them myself I saw the benefit immediately. Sometimes complex systems need a level of abstraction, otherwise the human mind tends to get caught up in the minute details which don’t matter past the initial implementation.

What do you guys think of the Arduino platform? Does it signal the decay of the industry and the experienced professional, or is it a shining beacon here to bring new talent into a niche area?
 

Comments: 28

Leave a reply »

 
 
 

Interesting post, and it doesn’t sound like you hate Arduino at all! In fact most of the post is explaining why it’s good for many people, but that you don’t happen to be one of those who fall within its intended audience. That’s all fine and good: different tools for different people or projects or requirements, as the case may be.

Does it signal the end of the professional embedded systems developer? No way. No more than the popularity of PHP has brought about the end of C. It’s just that the ecosystem has had an influx of people who wouldn’t otherwise have had anything to do with embedded systems development, and just as many C developers look at PHP developers as wannabe try-hards, it doesn’t mean that C developers are going to be beaten out of their particular niche in the job market any time soon.

 

The title is tong-in-cheek, I thought it would get people to read my rubbish ;). Actually, that was indeed my original stance on the Arduino platform when I first saw it; instinctive hatred. Now that I’ve had a bit of time to properly understand it I’ve come to the same realization you have; every tool has its place. You’re bang on with your comment – the reason Arduino is popular is that its getting more people into an area that has been traditionally niche, and outside the reach of all but the most dedicated. It’s a good think and a bad thing; it means more signal-to-noise ratio on help requests outside the Arduino forums, but it also means new and exciting ideas from people who previously had them, but had no way to easily implement them.

– Dean

 

The good thing/bad thing is what happens when anything goes mainstream.

I came to the whole microcontroller party very late (just this year), but I spent my formative years doing crazy low-level software and hardware stuff on a C64. The Arduino confused me when I was first looking at it. There was such a buzz about it I thought I must be missing something. It wasn’t until I started reading about what people were doing with it and seeing the kinds of questions they asked that I understood that i wasn’t its target audience.

So now I think I get Arduino, and I like the idea, and I have recommended it to a couple of friends interested in getting started (Sparkfun have a great starter kit – no soldering required!). For me though it took a couple of days to muddle through the datasheets to the point where I got an AVR and a few lights and switches down on a breadboard and had it doing things. And everybody’s happy!

 

Yes, the title pulled me in 😉

I think Arduino is a great way to learn basics of microcontrolllers, as you pointed out. If people want to know what’s really going on, they still can dig deeper and can leave the Arduino path.
If anyone is new to this, I always recommend Arduino. It’s just too easy to google e.g. “Arduino servo”, then copy’n’paste and have it working.
Another thing that I really love is the kind of new ideas the people came up with, if they don’t know anything about electronics and microcontrollers. Most of us who are a bit more familiar with it, tend to stuck on the same kind of projects and problems.

Cheers,
Alex

 

Just my two cents –

I appreciate Arduino – Without it, I probably wouldn’t have gotten into microcontrollers. Like you’ve said, I think it’s a great tool to get people started in harnessing the power of the microcontroller, since it is kinda amazing that we have access to more computational power than probably the space shuttle for $3, and Arduino allows you to make easy things quickly.

That said, I have 3 big problems with it, other than the non-standard pin-spacing thing, which they can’t change now:

1). setup() and loop(): Who named these things like functions!? I can get that it’s maybe a little easier to be like, “Oh, you want to set things up? Put them in the setup() function!”, but it hides the fact that the loop() function is calling setup() at the start, so why don’t you just go ahead and tell people in the examples that if you want a setup function, write it, then just call it first thing in your properly named main() function, not some non-standard loop() business.

2). The Arduino IDE. Now, I guess I could fix it since it’s open source and all, but it’s terrible. While the serial port monitor is great, actually writing code inside of it is just kinda a pain – no real support for multiple source files, compile errors that don’t make any sense (although maybe I’m thinking of Processing about that), and some other odds and ends.

3). People who buy two. Just joking, but there seems like the arduino traps people into thinking that they should pay $30 each time they want to make a microcontroller project, when for $50, you could get a cheap ISP programmer, a solderless breadboard, and a handful of AVRs and possibly make 4 or 5 projects. I need to look into resources about transitioning from the Arduino to AVR development, but it’s kinda a series of articles I’m thinking about writing.

Anyhow, basically I think that Arduino is great, just that it gives you some non-conventional naming for no good reason, gives you a code editor that seems kinda limiting for anything long, and doesn’t do much to encourage people to move beyond the Arduino (which I guess is a feature for them…)

 

Alan,

Nice to hear from you again! Hope you’ve settled back down in the states.

1). setup() and loop(): Who named these things like functions!? I can get that it’s maybe a little easier to be like, “Oh, you want to set things up? Put them in the setup() function!”, but it hides the fact that the loop() function is calling setup() at the start, so why don’t you just go ahead and tell people in the examples that if you want a setup function, write it, then just call it first thing in your properly named main() function, not some non-standard loop() business.

Actually, that’s one thing I don’t totally mind. Yes, having a regular main() function would be better for the transition to “serious” microcontroller development, but the two functions at least state their intentions. Imagine if new developers had to write their own main(); we’d have the same “main should never return” issue we get on AVRFreaks, and the user would be required to explicitly call the Arduino runtime setup code. It’s not totally correct that loop() calls setup() – both are called by the Arduino startup core once the Arduino timers and resources have been properly configured. One workaround for that would be to use the GCC “constructor” attribute to inject the Arduino setup into the code before the user’s main() is called, but that would probably just confuse people even more.

2). The Arduino IDE. Now, I guess I could fix it since it’s open source and all, but it’s terrible. While the serial port monitor is great, actually writing code inside of it is just kinda a pain – no real support for multiple source files, compile errors that don’t make any sense (although maybe I’m thinking of Processing about that), and some other odds and ends.

Good lord yes. After trying it out for an hour I honestly cannot believe people put up with that garbage. I can only assume they expect you to write your code in a decent editor and just use their IDE for programming it into the target. The odd error messages are annoying too from what I hear, on the most mundane (and correct) preprocessor code. That’s an artifact of all the translations and stiching together the toolchain does behind the scenes, which is a bit disappointing considering it’s aimed at the non-technical folk.

3). People who buy two. Just joking, but there seems like the arduino traps people into thinking that they should pay $30 each time they want to make a microcontroller project, when for $50, you could get a cheap ISP programmer, a solderless breadboard, and a handful of AVRs and possibly make 4 or 5 projects. I need to look into resources about transitioning from the Arduino to AVR development, but it’s kinda a series of articles I’m thinking about writing.

Yes, they’re selling the microcontroller equivalent of LEGO, but people don’t realize you can buy the pieces you need directly rather than purchasing complete sets every time you need a new piece. However, given that it’s aimed towards simplicity where even the “Shields” have a defined footprint and layout, I can see why people would be coaxed into re-purchasing boards rather than transferring their design to a breadboard or dedicated PCB once they’ve completed it. It’s a bit of a shame, really.

– Dean

 

Before this descends into deep discussion on the best IDE, chips, and boards. I would like to support your first point:
“I like that it’s getting people completely unfamiliar with anything technical (read: arts students) into a whole new world of embedded engineering.”

Arduino is a bridge from our embedded community to many other communities who deserve to have these computing and control capabilities, and are usually better at exploiting them than we are.

While I would likely never use an Arduino myself, I spend a lot of time developing for the Arduino, because it is so rewarding to support these other communities. I can’t do many (most !) of the things they do, and they can’t do many (some !) of the things I do, hence the bridge.
The Arduino forum may appear dumber than AVRfreaks, but I wish I had done or even thought of many of their projects. The other communities understand and trust the Arduino platform, and also can get support and education on it.

This said, the latest Arduino IDE has gone a dumb too far in hiding the intermediate source compilation files, making it more difficult to help them when things do go wrong.

I don’t love Arduino, but I love Arduino users.

 

Before this descends into deep discussion on the best IDE, chips, and boards. I would like to support your first point:
“I like that it’s getting people completely unfamiliar with anything technical (read: arts students) into a whole new world of embedded engineering.”

Whoops, I forgot to edit that from my original response to Smokey. That remark was supposed to be a joke, honest! I agree that the Arduino platform has given artists with minds far more creative than mine a new medium to explore. That’s one benefit of the Arduino platform to “pure” AVR users like myself; I can see all the new ideas these people are coming up with, and design my own versions – or at least get some inspiration for my own off-the-wall projects.

– Dean

 

G’day Dean,

Interesting thoughts, and I definitely agree with the BASIC Stamp analogy. Arduino has the simplicity to be usable for people outside the hardcore electronics field. There’s another aspect, though, which you might not be seeing.

You want to get up to your elbows in the detail of the hardware and firmware, and optimize the bejabers out of everything in sight – which is fine for you. That said, there are people in industry who need quick and dirty solutions that work, and these simplified bricks of function can be useful there.

That’s where I sit. I’m no longer involved in electronics for a living, but I was for forty years, latterly in control systems. Over the years I’ve programmed in lots of high-level languages – huge numbers of dialects of BASIC, xBase, proprietary weirdies you’ve never heard of – and never really wanted to get to C or assembler, mainly because my job wasn’t to write code but to run a process. Programming was something I had to do to make that happen.

I got into embedded micros via the BASIC Stamp, PICBasic and now Bascom-AVR. I’ve never used Arduino, and don’t need to. Now when I need a fairly smart box of electronics I grab an ATMega8 and some Veroboard, fire up Bascom and away.

Anyway, the point I want to make is that there are situations where prefab hardware and simplified programming are a good answer – particularly if you’ll only ever need two units and you’ve got a fortnight to deliver.

Keep up the good work!

Cheers, Colin

 

Oh my. Where does one start with a topic like this! So I could write a what’s good and what’s not of arduino, but no one is interested in what I like about arduino so here’s what I don’t like.

I don’t like the fact that for many people, it completely belittles the skills of (what I would call “real”) embedded developers. All too often someone tells me they can “do microcontrollers” when they really mean “I can plug in a USB device and send code I downloaded off the internet too it”. I applaud people for having a go and getting involved, but they need to realise and understand the level at which they are at.

I don’t like the fact that it isn’t scalable and people don’t understand where it’s limits are. I will not name the certain project, but there is quite a large (5k+ hardware units sold) project out there which originally used two arduino’s because just one didn’t have enough pins. The new generation hardware, let’s call it v2, now uses a arduino mega (ATMega1280) AND two more normal arduinos (ATMega328). They have a very high complexity system now, three code bases for three microcontrollers and inter-mcu communications. Everything this hardware device is doing, could be easily accomplished with a single ARM Cortex M3 (or similar), but since they started with a single arduino board it was “easier” to just add more arduinos than to re-write the code base.
To summarise this point, I don’t like that people don’t know when to stop using arduino and start using something “proper”.

I don’t like the IDE, It’s horrible and java so that goes without saying.

I could go on, but I will leave it there on the following note:
Ardunio is built for artists, the creators maintain this and say this will never change.
If you want to use arduino, are you an artist or an engineer?

 

“5k+ hardware units sold” sounds pretty cool. I would say both artists and engineers to get that from Arduino. Especially when you consider their target market is likely also in a process of technological enlightenment.

There will always be an embedded software technician sitting with an M3 saying they could have done it better. But if there is user trust in the Arduino and it delivers, then this should be enough.

I saw this ad for an Arduino workshop and thought it an exciting description of some of the Arduino communities:
“LAB is a new open group of makers, artists, designers, hackers and doers from across Nottingham and a space to make, mend, learn and do almost anything. They want to connect with bakers, makers, fashionistas, craftsters, knitters, hackers, designers, DIYers and create essentially a school of everything, a creative skillshare, platform for collaboration and new projects and foster an environment that welcomes the prototype and stimulates collaboration.”

They may be not using something “proper”, but I would suggest they are doing something proper.

 

Hey all,

I used the PIC in school, and reached its limit on the first project I worked on. Moved to the ARM7 core in one of my senior level classes but it was new to everyone, including the instructor, and we spent more time getting the toolchain functional than we did actually writing code. I loved it, but had to put it aside when I got my first job because I wasn’t lucky enough to work in embedded design. Coming back to this a couple years later on a new computer (and going through all the headaches of that Eclipse IDE toolchain again) was incredibly frustrating.

Enter the Arduino.

I got my first blinky light working 2 minutes after opening the box. Serial comms in another 5. I had a number of simple projects working in the following days and even though the limitations of this system are apparent from the outset, its remarkable ability to get you up and running and “just work” is impressive. Say what you will about the Arudino IDE (I certainly won’t argue), but I will always have a sour taste in my mouth for Eclipse, and having something that just works is a refreshing change.

Now that I’ve started on a couple more complicated projects, I feel that I’m ready to move into the “real” world of embedded systems design once again. The fact that Arduino is built on the AVR platform simplifies the process of choosing a microcontroller.

I see where you’re coming from, but I think it’s important to understand that if you can write an internationally-accepted USB library at 21 years of age (kudos, by the way), something like the Arduino is simply not intended for you.

But it does very well at exposing the rest of the world to what we do, and enables creative people to make creative things. As a bonus, it also serves as a suitable transition aid from other types of engineering (my day job) into “real” embedded design (my dream job).

Just my two cents…

 

“That said, it’s not for me, because I’m simply too advanced for it to be much use. I like being able to examine/design the hardware, create drivers, and have complete control over the way everything works, to squeeze the most out of the hardware.”

You can do it all, it’s up to you, because it’s Open Hardware!

Arduino is also important as Open Hardware, there are small local shops and people earning his lifes selling and working around Arduino.

The 3D printer RepRap project for example, it uses Arduino and it makes the life easier to everyone, because is relative cheap and accessible on local shops.
The only thing I don’t like Arduino is because it uses AVR that don’t have Open Debugger tools as ARM, but that is changing right now as ARM Cortex M3 and M0 are taking the place of 8bits microcontrollers 🙂

 

The one thing about Arduino that bugs me is that they announce that is is programmed in “Processing”, which sounds wonderfult but turns out to be just “C with some libraries”.

Why not call it “C with some libraries”? That’s not scary. And also tell people that these libraries set up the machine to work in a specific, simplified manner so you can get on with doing cool stuff but if you need to you can bypass them go straight to the metal, and here’s how.

That would remove the problem of thinking you’re developing in a “new language” only to see the experts end-run the syntax to do their tricks like C programmers always have using mysterious unexplained macros, pointers and magical values. Once I got what the environment is and found the source code it all started to make a lot more sense.

 

Sorry, the “Arduino Programming Language based on Wiring”. It’s still C with some libraries, not a new language.

 

That tripped me up too when I started; I didn’t connect the “Processing” language (as the page stated) with “C library”. It’s original intention was for PC use, so perhaps on there it is a legitimate seperate language and the Arduino folks just ported the APIs to an existing AVR supported language for ease-of-use and extendability. I confess I haven’t looked into the origins of Processing much beyond looking at a few Arduino sketches.

– Dean

 

[…] everyone for your thoughts on some of my recent blog posts – I was quite (pleasantly) surprised to see so many people chipping in with their […]

 

[…] several month heads-up on it, but the new Arduino boards are here!Many of you will remember that I wasn’t the biggest fan of them in the first place. Actually, nothing’s changed in that respect; I fully intend to keep on using raw AVRs the […]

 

Well, just a comment from the other side of the fence.

I work in the IT industry, and have some basic electronics understanding via my old man (HAM radio & helping him build Motorola 6809 computers in the late 70s). I can read a circuit diagram, and I know the basics of what electrical components do. But have no real experience around actually building circuits and certainly no microprocessor programming experience.

My slot car club has a requirement to replace an aging computer-based laptiming system for a 4 lane track (which uses photo interrupters physically wired into an old AT-connector keyboard to fire keypresses into a DOS-based compiled QBASIC laptiming application).

To modernise this system, and remove our dependencies on hard to support/source hardware, the only real option is setting up a system which has USB connectivity into a PC. My job is to figure out how to make that happen, and in a fashion which is supportable by future club members when I am no longer president of the club.

My research has shown that the existing setup is not likely as accurate as we would like due to software clock precision in DOS. USB would then add its own latency to the story as well.

Something like a Phidget looked to be an ideal option, but appears that it will typically only give us about 8ms accuracy. And thats not taking into account latency within the PC application as well. This pointed to an external timing system being required which then sent laptime data to the race control application.

I found the Arduino on the net. It appeared to have the chops to do what I need, and the barrier-to-entry looked low enough that I wouldnt have to spend 6 months learning how to make the electronics work. In other words, I didnt automatically dismiss it as a ‘too hard’ option.

Having played with it now, Im finding that I will need to push the Arduino in certain areas and move outside the standard stuff (eg using pin change interrupts and reading pin state registers directly), but I can still do that with the Arduino. It seems to hide the complexity, but still seems to let you dig deeper if/when you need to.

In addition to my actual task requirements, Im seeing all sorts of fun things I could do with it in the future, and may have found a new hobby.

Sure, with the right background (in programming micros) I could do all this without the Arduino, but it also provides a very rapid development environment when you dont need all the smarts. At the end of the day, time is money, and the result often matters more than the approach.

Rob.

 

[…] Minibloq. Those who have been reading the junk I put up here for a while will remember that I had mixed feelings about the Arduino platform last year, but I’ve since mellowed out and realized that as a platform, to a specific user […]

 

Nice article, and interesting replies.

I like the effect the arduino has had in opening electronics to a wider audience. It’s an innovative tool for artists and people in related areas.

The downfall for engineers is that the plug-and-play simplicity it’s built on just doesn’t exist the in the professional engineering world.

In terms of my own preference, all of the joy I take in programming is from swimming in datasheets and details. Arduinos target this like a bullseye. I certainly relate to Deans “instinctive hatred” when I first heard about them.

 

Hi Guys, Just a brief contribution. I have taught Picaxe very successfully (I believe 🙂 to middle secondary school students in Victoria Australia and for me it really hit the spot. However for the smarter senior secondary school students and lower university students I can see the Arduino really is an excellent step away from the Basic of Picaxe into the world of C++ and OOP programming. Highly desirable, but for the senior university and research level students, the rasp-pi will push this concept even further with ARM programming, and not just hight level C++ etc, but within a sophisticated OS.

Horses for courses, and hopefully many of our younger builders/programmers will climb this ladder with aplomb. They are lucky to have such excellent choices to build their skills.

Best wishes, Rob

 

I can enjoy the luxury of driving a car, and not know how it works under the hood. In the same way, I can put together a project using an Arduino, without really understanding the function of each and every component.
Thank goodness for people like you who can put these boards together, and sell them to me, so that I too can join in the FUN !

 

I don’t agree that Arduino is just for “prug n pray” use. One may delve as deeply into the system as they desire; I’ve downloaded and run straight up AVR code (with assembly) on my Arduino with no problems what-so-ever. It is, after all, a simple uC on a board, nothing more.
I do very much see Arduino as “embedded for the masses”. I’ve been intensely interested in embedded things for years, but as a hobbyist I couldn’t cough up hundreds of dollars for a JTAG programmer and embedded design system. Enter Arduino – $18 Pro Mini and an FTDI breakout, a bit of software, and *poof*, I’m on my way. One simply can’t beat that with a stick.
I happen to like Eclipse, and I didn’t even finish a project before I’d moved to Eclipse and the AVR plugin, ditched setup() and loop() in favor of a more normal code structure with main(), and jettisoned 90% of the “Processing” add-ons to use straight up C++ with direct port/register manipulation. An Arduino is as flexible and usable as a naked 382P, but it lets *me* decide how “deep” I want to go. It lets me grow without placing much in the way of roadblocks in my path, is how I see it.
Personally I think Arduino is a superb product that has a bad rap because of it’s target market – rank newbies. As long as one understands what its limitations are and builds within those limitations, there are no restrictions on what one can and can’t do with an Arduino. There are literally hundreds of perfectly valid applications for even a lowly 8-bit processor, and there is no reason why an Arduino can’t satisfy any number of them.

 

Ragnorok,

Some very good points. As a slightly more experienced engineer than the target market of Arduino I still see it has value as a hardware platform standardization; for general projects, there is something to be said for being able to just put “buy an Arduino {VERSION} board and download this code onto it” for those who just want to get it up and running without having to design their own hardware. As you said, in the end it’s just a platform built from standard components which the user can replace as required for their application.

– Dean

 

I have taught embedded system development in sophmore and junior EE and ECE classes in top 25 universities. I would NEVER use the Arduino as the development hardware & environment. Engineers need to understand all the details of what goes on in real development environments and associated languages and compilers. May be ok for a 10 yo to be exposed to programming/embedded controllers, not for the person developing systems for cars/planes/whatever. Learn the difficult stuff in a university and play with the legos in your spare time, is much better than trying to learn the real methodology on your own.

 

There was a time when people started using 8 pin PICS (or similar) to blink an LED as one part of a small project. And people scoffed and said they could do it with a 555 timer. And wrinkled old veterans would grumble that – they – can blink an LED with a couple of transistors, caps and resistors. Probably somewhere there were guys saying “real men” used valves. Meh.

Seems to me much of the blog post and many of the comments are spot-on, but also many of the comments are elitist grand standing.

Of course you’d not be using an Arduino to control “cars/planes/whatever”; but to write Arduino off as for “a 10 yo” is silly (and disrespecting the inventiveness of some of those 10 year olds). For some uses (beyond educational), many people have found it’s just a nice balance of cost, effort and capability.

 

When it’s data logging or intelligent control systems you’re about, neither the IDE nor the programming complexity should slow you down. This coming from a career control systems and applications programmer, now retired. The object is to get the thing out there and let it do its job as quickly and simply and reliably as possible. I happen to love the Arduino approach _because_ of its simplicity. I also love Grove. I also love Xbee and L-comm antennas for range. I’ll take any shortcut that minimizes dev time while not compromising integrity. The projects aren’t always pretty, but I’ve never had one fail. I spend most of my time analyzing complex data and controlling external equipment. The programming part should be no more complicated than it needs to be. I also love 12VDC deep cycle batteries and (sometimes parallel) 7809s. So sue me.

 

Leave a Reply

 
(will not be published)
 
 
Comment
 
 

 

Vital Stats

  • 33 Years Old
  • Australian
  • Lover of embedded systems
  • Firmware engineer
  • Self-Proclaimed Geek

Latest Blog Posts

RSS