
Level Up Your Coding Skills With exercism.io

When we think of the term radio, “high-tech” isn’t the first word that comes to mind anymore. A lot of people will think of analog commercial radio (“FM/AM“), something that started up around the 1920s. In fact, many airports, public safety organizations, and businesses still use conventional analog radio to communicate. However, digital radio completely dominates cellular communication and is increasing in usage with public safety organizations.
Given how low-level analog radio electronics are, how do software engineers and computers fit into the picture? Software-defined radio (SDR) is a way of performing radio communications using software components in place of hardware components (e.g., mixers, modulators, filters, etc.).
I’m just realizing that this here blog just celebrated its first birthday — my first ‘hello world‘ post here was May 1, 2012. This seems like a good opportunity to go looking through the archives and point to some older posts that newer visitors/subscribers may not have read.
Ryan Brubaker did a great three part series on using CoffeeScript and Backbone.js:
CoffeeScript has been all the rage lately and I’ve been wanting to hop on board the bandwagon. I’ve also seen Backbone.js mentioned quite a bit and was even more intrigued after listening to this .NET Rocks podcast. I decided to convert some plain JavaScript code I had in a side project to use both CoffeeScript and Backbone.js and see how things went.
The project is a simplified morse code simulator that animates morse code being sent over a telegraph line. The complete source is available here and the running code can be seen here.
I was interested to learn this week that the folks at github recently updated their JavaScript style guide to require that all new JavaScript code be written using CoffeeScript. That’s a pretty significant vote of confidence in my eyes — if you’ve been assuming that CoffeeScript is just a fad, maybe this will prompt you to re-evaluate that stance.
Steve Huey dropped a whole bunch of useful iOS/OS X-related posts:
Along the way, I contributed a few pieces talking about the idea of programming as a liberal art, and as something that most people should learn how to do at some level:
I believe that everyone should learn to write a little code, and play an instrument, and make things out of wood, and tend a garden, and cook, and, yes, do a little plumbing, too. They shouldn’t learn these things because they’ll use them every day to earn a paycheck, they should learn them because it makes them better thinkers, and better able to take care of themselves. On top of that — if vast empires were being built on top of plumbing the way that they’re being built on software, I’d say that anyone who was happy to ignore it as a black art practiced by wizards was making a big mistake. The value of acquiring a new mode of thinking isn’t affected by the fact that most people won’t need to use pointers or recursion on a daily basis.
If you missed these the first time around — check them out.
It’s been a long time since I’ve done a link dump here. The recurring (but not exclusive!) theme today is that specialization is for insects. (more…)
Yesterday, I got pointed to this recent video of a TEDx talk by Mitch Resnick, who runs the Lifelong Kindergarten program at the MIT Media Lab, where he’s built a number of environments used to teach young children about programming:
[youtube=http://www.youtube.com/watch?v=42_30Rgf6F0]
A couple of points on this —
I’ve written here several times before on the value of teaching programming as a liberal art. Much of my thinking on this topic has come from a book that Resnick wrote for the MIT Press in the 90s. “Turtles, Termites and Traffic Jams” talks about two things:
In the first few years of her career, my wife taught the original (non-parallel) version of the Logo language in her 3rd grade classroom, and I had gone in to her classroom a few times to help out. At the time, her efforts were frustrated by the lack of training she actually had been given (no one had ever shown her how to define functions, for example), the amount of time in a week that could be devoted to it, and the fact that her entire class had to share a single Apple ][. The textual nature of the language also made things more difficult for her students (I’ve been coding for a living for over 20 years and I still waste time because of typos; imagine an 8 year old doing hunt-and-peck with two fingers).
In the video above, Resnick shows examples created with the Scratch software that his group has developed at MIT, and that has come into fairly widespread use in schools. It gets around the problem of “coding means typing stuff into an editor” and presents useful constraints to make success more likely. Both of my kids spent time playing with Scratch when they were younger, and the fact that it felt like ‘playing’ instead of learning something boring kept them at it longer than they would have otherwise.
As Resnick points out in the video, even if only a small percentage of the kids who learn programming ever become professional developers, the skills that they’ll acquire are directly applicable skills in normal adult life. Even of they don’t become professional developers, they may end up needing to write code anyway as part of a job (go hang out on Stack Overflow sometime and see all of the biologists who are needing to learn how to program to analyze gene sequences. There’s a major push in the world of library sciences to get librarians programming.)
It was never a good idea for programmers to be some sort of elite priesthood, but I understand why things started out that way. I’ve read somewhere (probably an Alan Kay quote that I’m too lazy to track down at the moment) that you’re not fully literate in a medium unless you can both consume and produce in that medium. By presenting a tool with a low barrier to entry and high rate of success, Scratch and its progeny can open the doors to fuller computer literacy starting at a very young age.