The Clever Monkey

The Agony of Buying Power

For a few months I’ve been doing a little research to decide if I’m going to replace the aging Macbook Pro that is my main development tool at home with a more modern lappy. The idea is to get something that runs a bit cooler, lighter, and longer on battery that I can use for general purpose hackery. As I’ve mentioned before, I think I’ve gotten about as much life out of this Macbook as I can reasonably expect, so I should probably replace it.

I have no particular interest in staying with a Mac, though it is a decent development box. But I can get all that with Linux these days. Sure, I’ll have to resort to tinkering to get stuff to work, but this already happens with the Macbook regularly, so this is really shifting the problem around to a different flavour of tinkering. So, after learning what some of the new acronyms for computer equipment mean these days, I narrowed things down to a Lenovo Carbon X1, running some sort of Linux.


Rexx Fortis Vocat

So, I’m home sick from work today and, as one does, I’m idly playing around with some emulation stuff. Earlier I was researching my KIM-1 emulation project (which is turning out to be a bit harder than I thought).

Then, for some reason, I decided to get IBM PC-DOS 7.x/2000 working on VirtualBox. This is not for any particular reason, though I’ve occasionally needed a real DOS environment to mess about with abandonware. So, this image may be put to good use one day.

But for now, an almost-complete PC-DOS system. I haven’t figured out the networking stuff yet, but it has CD-ROM support, loads DOSidle so it doesn’t burn up my Mac, the usual assortment of high/upper/confusing/WTF memory settings that DOS requires, and so on. I don’t think networking will be that hard, but my Google-Fu is not finding the PCNet ethernet drivers that VirtualBox is emulating. So, for now I’m using sneaker-net.

PC-DOS 2000 on VirtualBox running Rexx

Yeah. So, that’s a Rexx script being called via the command interpreter via a pseudo hash-bang mechanism (think of /* ... */ as the shebang line). There’s a reason I liked to run PC-DOS instead of that other one.

What’s going to bend your noodle is that I actually paid for a copy of PC-DOS, lo, those many years ago. So, I’m technically not pirating anything, matey.


Well, that was easy. Started the PCNet packet driver and ran DHCP from the mTCP project. I was even able to annoy some people on IRC.


Oh no. Beta.

Well, the Retrocomputing StackExchange site I talked about earlier is now in open beta. So far, lots of chatter about old Apple and Commodore equipment, but nothing (yet) about truly old-school things like Altairs or KIM-1s.

I hope to remedy this in the near future.

Anyway, like many beta SE sites we are sorting out the scope of the subject we are going on about, which should be hours of popcorn fun.

It’s interesting to see how people define “retro”. There has been discussion about whether emulators, gaming consoles, or even coding (at all!) is on-topic. I’ve been surprised by some assumptions, because I cannot imagine retro-computing without emulators, coding emulators, and coding on actual retro systems.

Ironically, because of this sort of thing, it may turn out that my questions around emulating a KIM-1 with full RRIOT support may be deemed off-topic there. Which highlights both the great strengths and the great weaknesses of SE sites, in general.


Relentless Coding for 6-year Olds

There is a good chance that the Cubetto Kickstarter I backed will also mature sometime around the kid’s 6th birthday this year.

As ecogrrl says, who cares if this is the right thing to do vis–à–vis female STEM and engineering and all that. The girl loves robots with exposed parts that she can command. I mean, the other day she called me up after bedtime to tell me she wants to design a digging robot for the backyard. She already had an idea of the actions such a robot would require, and how to go about telling a robot how to do these actions. (And, of course, my brain went right to how I could retro-fit a Tonka digger with servos and motors to solve this problem. I swear, if I had a budget I could make the best toys.)

Again, this is likely to go over well. Or we are raising an evil genius.

The Cubetto stuff has less hacking potential for me, but is definitely more kid accessible, and game and story oriented. It will be interesting to see if any of this stuff actually scratches the itch she has expressed.

Because, as we all know, scratching itches is what drives the hacker ethos.


W.I.G.L.

So, I got my daughter a dancing robot for her birthday.

Wigl

I think this is going to go over well.


Born for it

Over on Martin Fowler’s site, Birgitta Böckeler provides a nice introduction into the gendered nature of early computing, and the historical fall-out we live with today, that is a very compelling read.

The stereotype of the socially-awkward, white, male programmer has been around for a long time. Although “diversity in tech” is a much discussed topic, the numbers have not been getting any better. On the contrary, a lot of people inside and outside of the IT industry still take it for granted that this stereotype is the natural norm, and this perception is one of the things that is standing in our way to make the profession more inclusive and inviting. So where does this image come from? Did the demographics of the world’s programmer population really evolve naturally, because “boys just like computers more”? What shaped our perception of programmers? This text is about some possible explanations I found when reading about the history of computing.

This is a very interesting synopsis and overview of scholarly looks at the history of computer programming from a gender perspective.


Everything I know about electronics I learned from Mims

Stop reading this right now and go throw money at the Circuit Classics crowd-funding effort. Throw all your money at them.

Still reading? Ok. Let’s try again:

Someone had the awesome idea of creating a set of electronic kits that perfectly capture the design and aesthetic of “Getting Started in Electronics” by Forrest M. Mims III, down to the beautiful hand-written notes that accompanied each circuit design.

They are a joy to behold.


Paranoid Android

The only constant is change.

So, the wheels have turned ever so slowly, and now it looks like I am to be an Android application developer, at least for the next few months.

This new position I took recently has, so far, been the usual tour through Java and C++ with the expected diversions into Ant and Jenkins. However, I’ve found out this week that I’ll have to get up to speed fast on Android on a set of embedded devices (i.e., not strictly a phone of some type). So, not only will I have to sort out Android app development using the Android APIs, but also how that fits into a highly custom runtime we’re targeting.


Maybe Harder is Better?

The Internet of Things. It is all around you. It is there when you pay your taxes. It is there when you take out your neighbour’s trash. It is made up of cloud-based web apps and Node.js powered interfaces.

I have a few colleagues that are honest-to-goodness embedded systems developers, and they all without fail absolutely hate these newer embedded toolchains. Most embedded developers I’ve known may have played with IDEs over the years, but eventually go back to plain old POSIX command line development. Maybe they choose a fancy text editor that can run Make or Bitbake for them, but that’s about it. Other than commercial ICE products (sometimes a necessary evil) most of these folks prefer to never see a GUI. For many pros a web-based or Javascript based toolchain is an anathema.

But for weekend warriors and hobbyists, setting up various toolchains for cross-compiling can be a real problem. To be fair, it’s a problem that’s often measured in hours as you sort out all the steps and read blog postings (yay for the internet, because in the old days you had to figure this stuff out seriously out-of-band) as long as you are reasonably good at hacking away on computers and figuring problems out in a step-wise manner.

The problem I have is keeping these toolchains up-to-date and working over time. I’ll get things working so I can, for example, hack on my EZ430 Chronos, and then put that down for a few months. When I come back to it often some unrelated system change has broken some key step, or I need to update part of the toolchain which causes a ripple effect of connected failures. So, we are back to a few hours of busy work putting things back together, which often burns up the time I’ve blocked out for the project, or my interest (or both.)


A Glitch in the Matrix

If you like retro-computing (and I know you do) maybe you might like to see a Retrocomputing StackExchange site?

Such a site is being proposed right now.


Learning Astable Multivibrators Like a 5-year Old

My daughter finds my basement shack fascinating, mostly because it’s full of interesting junk she can wade through. The other day she saw my collection of electronics parts and couldn’t get them out of her mind. Which is to be expected. I mean, have you seen electronics parts? They look like robot jewelry, which (now that I think about it) is like catnip to a 5-year old.

So, I promised I’d show her a few things that you can do with the parts. I know she had visions of robots wandering around answering to her commands. But, I figured it would be an education in bottom-up design to just, you know, flash an LED. So, I collected a 555 timer, an LED, and a solderless bread-board and showed her how boring it is to debug a circuit. It had been awhile since I made a multivibrator circuit, so I grabbed the first 555 datasheet I found on the internet and went for it (thanks, TI!)


Update Roundup Clip Show

I authored an entry on my new camera, but Prose.io ated it. Anyway, I recently got a sweet deal on a Pentax Q-S1, so I went for it. I’ll probably talk about this more in the future, once I’ve had a chance to play with it more.

It feels like years ago, but I pre-orderd a Tessel 2 when it was announced. I had a very specific idea of what I wanted to do with it, but now I can’t remember what that was. For now, I’ll add it to the list of embedded devices. I’m sure I’ll talk more about that in the future.

I’m also pretty sure I’m about to get an oscilloscope so I can finish trying to fix the TRS-80 Model 100 basketcase I have. No sense in letting the beautiful pleather slip-case go to waste. I even have a perfectly capable cassette player ready to CLOAD some BASIC goodness into it once it’s running again.

All this and more, I promise. Thought, right now I’m immersed in some for-pay C++ hacking. Because, for some reason, I keep getting hired as a Java or Lua coder and end up hacking on C++. All I’ve learned to date is that header files are weird, structs are weirder, and new is evil.

clvrmnky, out.


National Girls Learning Code Day

There was a local Twitter call-out for “mentors” to assist with teaching girls, age 8-13, in learning HTML and CSS for National Girls Learning Code Day. So, I thought, “why not”, and volunteered my time; now it looks like I’m showing up at 10AM tomorrow to act as a sort of web coding expert.

There was a brief moment when I panicked about my spotty HTML and CSS experience, and started to plan a crash course review of HTML 5 and CSS selectors and…


Ruby Tuesday

On Monday I had a meeting, and today (Tuesday) I blew the space-dust off of my copy off of the Pick-axe Book and, Crom save me, re-re-reinstalled Ruby On Rails on my lappy.

These two things are tangentially related, of course, and this will be discussed in a follow-up. But, since I’m in a mood to Learn All The Languages, I may as well refresh my L33t Ruby Skillz while I’m at it.


Wherein the Author Attempts to not Learn Python

I recently ran across an article discussing strategies for learning a new computer language (while still having a life) that was both inspiring and a little depressing. I agree that success at something as mushy and large as “learn a new computer language” is best approached as a “series of little wins”.

Inspiring, because I recognized many of the techniques the authors uses to bootstrap learning a new language: we both have a similar approach, where we grok enough of the docs and READMES to get a purchase, and build from there. This can be a very good way of iteratively building up a new skill while side-stepping information overload. Experience has taught me that I do not do well trying to sip from a firehose, and I’m at my best taking the smallest sips.