Computing stuff tied to the physical world

The steepness dilemma

In Musings on Dec 15, 2011 at 00:01

There have been comments occasionally about the steep learning curve involved with stuff from JeeLabs. This is very unfortunate, but perhaps not totally surprising. Nor easy to avoid, I’m afraid…

The thing is, I love to get into new adventures, and I also really want to bring across the joy and excitement of it all. But what’s new for me may not make much sense to you, and what’s new for you may not be new for me.

There is a huge variety in what you, collectively, dear readers, may or may not already know and in what interests y’all. Even if we narrow the field down to “computing stuff tied to the physical world”, as this weblog does.

My approach has been to just throw everything together and write new posts in a fairly chaotic whatever-comes-to-mind-first order. Sometimes about raw electronics or micro-controllers, sometimes about hardware or software techniques, and often simply about what catches my interest and keeps me occupied. My plat du jour, so to speak.

There’s a problem with this, and it’s perhaps gradually getting worse: it may not help you with getting started. This daily weblog has an alphabetical and chronological index, listed at the bottom of each page, and updated from time to time – but that’s a bit like trying to learn how to swim by jumping in at the deep end, isn’t it?


A few days ago, my daughter asked me about how to learn programming. I was shocked – because I don’t know !!!

What I do know is that learning something as complex as programming really well takes years (my take on it is at least a decade, seriously!). Of course you don’t have to learn everything in depth and become a pro at it all. More often than not, we just want to make a nice sandwich, not become a master chef or start a new career.

Malcolm Gladwell has written several times about the “10,000 hours rule”, which says that to get really well at something you have to throw at least 10,000 hours at it. Learning, struggling, wrestling, pondering, agonizing, and… enjoying your progress. For at least 10,000 hours, i.e. 10 years of 4-hours-a-day – being obsessed helps!

Wanna learn something really well? My advice: start today. And prepare yourself for a fascinating marathon.

The trick IMO, is to define success in smaller steps than you might normally do. Got a blinking LED? Celebrate!

Here’s the secret: there’s an incredible (yet vastly under-appreciated) advantage of open source hardware and software. That advantage is that every hurdle can be overcome. You’re not fighting a closed system, nor a puzzle which only others can solve. You’re fighting the challenge of figuring it all out. With nothing but hardware and software which can be 100% inspected and documentation which can be found. When stuck, you can have access to people who know more about it and are often willing to help you along to solve your specific puzzle.

Let me rub it in: there are no show-stoppers in this game. The worst that can happen is that you run into real-world limitations of either atoms or bits or time, but there’s an immense body of knowledge out there. Get ready for this, because here’s a fact for you: if it can be done, then you can do it. And if it can’t you can find out why. This is technology – it works on logic and insight, all the way down.

But there are two constraints: 1) it takes time and effort, and 2) nobody is perfect.

What this means is that sometimes it will take more time and effort to get to the bottom of a problem and solve it. And we all make mistakes, cut corners, run out of steam, or grow impatient at times. Part of the game.

I’m no different. I didn’t get to figure out things better than others. I stumble and fight as much as anyone, of course. But I do spend time and try to push through – especially when I get frustrated. Because I know there’s an answer to it. Always – though sometimes unexpected or unsatisfying (“it couldn’t possibly work, because …”).

Back to the real issue: how to get started with all this stuff.

Ok, to stay close to home let’s assume you want to learn more about “computing stuff tied to the physical world”. If you’re starting from scratch (which is a relative concept), my suggestion would be to look for example projects which interest you, and start off by trying to repeat the same project. Find a web site or a book describing a project which fascinates you, and … spend time with it, just reading. If it sounds too daunting to reproduce, then it probably is – in that case, look for a simpler project to get your feet wet cq. cut your teeth in. You’ll get a much bigger boost from succeeding with a simpler project at first, and then tackling the bigger one.


I used to have lots of practical experience in electronics, from years of fiddling around with it as a teenager. Yet here’s the project I picked as first one to get back into this game: a trivial electronics kit. It was a no-brainer in terms of complexity, and there was virtually no risk that I’d fail at assembling it. Sure enough, it worked. And guess what: this little project got me excited enough again to … write over 900 weblog posts, and spend the last few years fiddling with today’s hardware.

The reason it seems to work for me, is what Steve Jobs once described as: The journey is the reward. So true.

If you can set your goals and expectations such that you get a really nice mix of learning experiences (i.e. struggles ending in new insight) and successes, then you’re in for a wonderful journey. It’ll last a lifetime, if you want it to.

I will try to help where I can, because that’s one of my central goals with this weblog, but I’m not going to turn this site into a handholding step-by-step and just-follow-me kind of place. Because the second goal of this weblog is to encourage creative work. Which is what you get to once you get past some initial hurdles, and are (at least partly) on your way to becoming a 10,000 hour master of some topic aligned with your own interests.

The “steepness” of this weblog is not there to frustrate, of course – it’s unavoidable, IMO. And I encourage you to bite the bullet with each bump you run into. It’s part of the game to be able to find your way in, and when you do you will have gained the experience that everything in this field can be explored, learned, and reasoned about.

I’m not handing out pre-packaged fish, I’m trying to show you the fun that comes from fishing!

Having said that, I do have a request for y’all, dear readers: if you’ve wrestled your way through some of these weblog posts, and came out wishing that something very specifc had been presented differently, or summarized, or linked to, then please do let me know (in the comments or by email). Most people who struggle and come out on top quickly move on to the next challenge, happy they now understand something better than before. But you can do your fellow future readers and strugglers a huge favor by explaining what the difficulty was. It’s often as simple as “if you only had mentioned at the start that …” and things can sometimes becomes so much clearer. I’m at the writing end of this weblog, see, and I never know where the confusion or lack of detail sets in. Please help me learn – about you, about how to reduce unnecessary steepness, and about all my mistakes, of course.

Anyway. Onwards with the adventures!

  1. Nice insightful post, one is never to old to learn! The current blog format is perfect for me, I enjoy reading it on a daily basis.. Keep up the good work!

  2. Thanks for another very interesting post…yes, I think a few roadmaps (with links to the weblog post that apply) would be very helpful. I imagine a roadmap for the unexperienced, another for the experts and probably one more for the electronics hobbyist (but lacking of some software skills). One fast track would be: buy the kit xyz from jeelabs, then run the examples in the posts a,b and c, etc. Or, if you do not have any hardware, then you can simulate some sensors by running these demos, etc. all in all, I continue to enjoy these posts and I am one of those users willing to try the software parts (server, charts, Tcl, javascript,etc) but not have the hardware yet. and finally, the “musings” category is becoming one of my favorites (besides software) :-)

  3. What about creating 2 lists with possible starting points? One list which is aimed at people coming from the software field which gently introduces electronics, the other list is for people with a more electronics oriented background, which gently introduces programming. (I think that most new folks have at least one of those two backgrounds)

    Not all posts have to be on those list, just a few key ones (like about 20 or 30, 50 tops) so there is a guideline for starters…

  4. JC, first of all I want to say that I really enjoy your weblog as it is and I also appreciate all the excellent work behind it, dot!

    If I would be missing something, it could possibly be the definition of a clear ‘big goal’. Where will (or could) all this lead to? Maybe we are ‘only’ watching someone having fun with electronics and/or software (that would be perfectly ok for me!). We could possibly help you (either having more fun or reaching the ‘goal’).

    • the definition of a clear ‘big goal’

      Maybe that’s a bit like asking about the purpose of life…

      I think, for me, there is no over-arching big goal. Only lots of smaller ones (though they do add up, I must admit): learning about technology (i.e. what others have invented so far), solving puzzles, reducing our consumption of natural resources, improving things around the house, sharing the fun of it all, encouraging people to push further, and – perhaps most of all – finding ways to tap our innate playful and creative energy.

      Having said that … it does sound like an ambitious set of goals after all.

  5. Hey, I think you have a perfect level in your postings, always interesting (almost.. ;) ) always well written. It’s great to not know what will surface here, but still being able to trust there to be another gem of information every day.

    I understand there may be a getting started frustration, and maybe there may be some more guidance on how to get started, but that would really be something that you’d learn as you start being curious about micro controllers in general. Myself come from a tiny bit of simple trials with C/C++ for plain atmega, then I found the Arduino and then the amazing jee node. Indeed it is a journey, and it is a great reward.. :) Ohwell.. end of ramblings. :P

  6. Hey, weblog is realy great. But beginners will have some difficulties. You started very well for beginners with the”Projects On Foam (POF)” but with the light sensor it stops for the beginner in programming. Perhaps you and we can continue?

  7. I love the postings (I follow the newsfeed) and have quite a good understanding of uc and programming in general but, perhaps you should start a series of tutorials focused on jeenode itself covering topics like how to use libraries like ports and rf12, communication between nodes, reading and writing to the ports, etc

  8. I follow your blog on a daily basis. What makes this blog exciting for me is (I think) your excitement to explore, which resonates with me. So I don’t really have much for improvement. One thing maybe: Sometimes your blog feels to me like a “lone wolf” in the EE world. It would be great if you can create connections to the EE community (maybe other blogs, or whatever is there). Might be a link to a blog post you found great, or a book, or a project which intrigues you, etc.

  9. I am a new follower in this space. I am wondering when you do the post on mind reading b/c I have just been wondering how best to train myself on the basics of the physics side. I like the idea of a electronics guide for software types… I am looking for a good starting point in reading the circuit diagrams as well as a better grounding in the physics of electricity.

    In any case, this whole site is a great addition to the network and we are all (should be) grateful for the work you are doing…

Comments are closed.