when you felt like you had power over the machine and today you’re just part of a mainstream movement
This is something thats been scratching around in the my brain for a while and has driven me away from software. To me, software used to represent infinite possibilities, this blob of clay that you could sculpt into anything you wanted it to be. These days software is quick to slap your hand away when you get too close to messing with the fiddly bits.
I'm a bit more jaded than this poster, but I don't think the Pi will be able to bring the lost world back to us. Tinkering isn't what it used to be in general. Instead of popping down a product and an accompanying RFC that allows anyone to write other software to interacts with it, creators want you in their playground, doing operation they approve or nowhere near the tech at all. They're not just tight-lipped, I even see encryption to keep the tinkerer out.
My brother is a snowmobile gearhead. He used to machine a piece of metal that went somewhere in the engine. I don't really pay attention to that stuff to know the full details, but essentially modifying that piece of metal would tune something in the engine. Whatever that piece of metal controlled has now been replaced by a computer chip. It is an awesome idea, with amazing possibilities. He could set up his machine on the dyno and just sit there adjusting variables to tune and get exactly the performance he wants. Iterations between adjusting and testing is infinitely faster because he doesn't need to go do metalwork.
But thats not the way it works. He can't change the values on the chip. It has gotten orders of magnitude less work to modify, but he is physically unable to. He can bring his sled to the Bombardier dealership where there, and only there, can he tune the sled. He can't tweak values to find maximum performance. He can choose from Configuration A, Configuration B and Configuration C.
This is where software is taking the world my friends. It is why I don't tinker anymore.
Sounds like the camshaft in a mechanically-timed ignition system. Those went by the wayside with the advent of fuel injection.
There's like a whole modder community around custom fuel-injection controllers with reflashable firmware. Serious performance wonks replace the entire board -- CPU, memory, everything except for the output lines -- to the fuel injector with something they can order online. The new board has like a flash memory chip that lets you sit there with a PC and tweak variables until the engine has the performance characteristics you want.
I was approached about the feasibility of writing an Android app so these people can do the tweaks with their smartphones.
The learning curve has become a bit too steep with today's modern SoC systems. You can't just wire a transistor to a parallel port and call PRINT LPT(0),128 or whatever the hell the call was. You need to write a program to call a userspace driver, or modify your kernel, or whatever else you need to enable in the platform.c file to enable the port to raise the GPIO to blah blah blah I quit.
So now his brother, if he wants to tweak a setting on his ECM, needs to understand how to hack into the module without bricking it. Then he needs the correct tools to create the new engine profile and burn it in. There's probably a hardware dongle or two involved. Does that make sense?
It could be that, but I'm out of my depth and operating on old information. He moved down to the snowless south years ago, so he probably missed out on whatever modding came to that world.
I must disagree. A big factor in avoidance of tinkering is the amount of money that goes into a tinkerable machine: once configured, one may not want to risk having to start from scratch because it's one of very few machines that works. BUT... for $25 I can devote an entire computer to one hobby use, screw it up as I see fit, and not worry about whether I'll be able to do bill-paying, read HN, or whatever else. Got a few ideas to kick around? A mere hundred bucks gets four of these little things, and I can keep each devoted to a different project and in varying state of disrepair, and still not worry about whether it will impact more serious tasks.
I'm watching my toddlers learn to play with iOS devices, wanting to let them explore yet concerned that they'll scramble or delete stuff (which they have). Better if I could say "this RPi is yours, go nuts" and guide them from playing Angry Birds (or some such attractor) into writing software, with nary a fuss about my beloved iPad. I started out with home computers being unused for "real" purposes, leaving them available for tinkering; now that they're an integral part of our culture, an accidental fork-bomb or rm -rf /. can really cause problems, and there isn't the money yet to shell out several hundred dollars per kid per tinkering inclination ... but with RPi, gimmie two (one in pink, one in camo green) and let 'em at it.
It's a computer, cool, but I think that most of the people who are looking for "fun" in computers are already finding it in things like the Arduino.
Something I will hope for is that this disrupts some hobbyist economics. Things like the IOIO board from sparkfun (plugs into android, gives you 50 GPIO pins) are still really expensive ($50).
The arduino is too...$30 for a board that doesn't have wifi or any way of connecting to a network without an external card (shield).
The real holy grail of this stuff will be an arduino or a raspi with a wifi chip in it that costs $30 or less.
These little computers are all good, but when you have to tether them to something or buy an expensive add on to make them see the rest of the world, it kindof ruins the form factor for me.
But I think this is the hope that everyone has for the Raspberry Pi. It has network connectivity, it's easy to program (HDMI port for audio and video, USB for keyboard and mouse), and (so far) it's easily expandable. I'm watching the GPIO video on their blog right now (http://www.raspberrypi.org/archives/500) and I can't wait until I can drop my Arduino set up and start programming in one of my preferred scripted (ruby) or functional (clojure) languages. I think it will make computers fun again.
I've tried something like that in the past - I've used ruby on Linux to program a robot, with I/O piped through an Arduino. It was painful. I've ran into lots of timing issues. The whole thing was incredibly unpredictable. Disabling the garbage collector improved things a little, but it's still annoying when your robot falls down because a cron job started.
An RTOS is much more suitable if timing matters, and a language with a more predictable runtime helps as well.
force a gc every time through the main sense-and-actuate loop of your control program
it's a trick used by lisp game programmers -- there are a few games floating around the app store written in gambit scheme and they all do this to avoid gc pauses
also why tf are you running cron jobs on your robot's computer?
where i work we deploy linux robots all the time, we control the software loadout so shit like this doesn't happen
I should have started with a disclaimer: this was 3 years ago and I don't perfectly remember all the details. It was a system cron job, not one added by me. I think it was logrotate. I've removed it, but finding out what was happening wasn't that easy. Which was my point, with the whole thing being so unpredictable, debugging the system sucked.
Linux is hella predictable -- darned near real time -- if all it runs is your stack and especially if you set the process priority high enough.
Next time start with a minimal system and build up, rather than starting with a fully-loaded system and trying to isolate and remove which of over 9000 processes kicked in to plage you with that slowdown.
PROTIP: /sbin/init can be whatever the hell you want. Symlink it to /usr/bin/emacs and you have a poor man's Lisp machine.
Oh, and uhh -- turn off swap.
One of the reasons why I left Debian was that it takes a very kitchen-sink-included approach to a base system -- including, as I found out the hard way, things with unpleasant exploitable vulnerabilities. And it's hard for a person of ordinary Unix skills, not versed in Debian arcana, to pare it back to a manageable state.
This is something thats been scratching around in the my brain for a while and has driven me away from software. To me, software used to represent infinite possibilities, this blob of clay that you could sculpt into anything you wanted it to be. These days software is quick to slap your hand away when you get too close to messing with the fiddly bits.
I'm a bit more jaded than this poster, but I don't think the Pi will be able to bring the lost world back to us. Tinkering isn't what it used to be in general. Instead of popping down a product and an accompanying RFC that allows anyone to write other software to interacts with it, creators want you in their playground, doing operation they approve or nowhere near the tech at all. They're not just tight-lipped, I even see encryption to keep the tinkerer out.
My brother is a snowmobile gearhead. He used to machine a piece of metal that went somewhere in the engine. I don't really pay attention to that stuff to know the full details, but essentially modifying that piece of metal would tune something in the engine. Whatever that piece of metal controlled has now been replaced by a computer chip. It is an awesome idea, with amazing possibilities. He could set up his machine on the dyno and just sit there adjusting variables to tune and get exactly the performance he wants. Iterations between adjusting and testing is infinitely faster because he doesn't need to go do metalwork.
But thats not the way it works. He can't change the values on the chip. It has gotten orders of magnitude less work to modify, but he is physically unable to. He can bring his sled to the Bombardier dealership where there, and only there, can he tune the sled. He can't tweak values to find maximum performance. He can choose from Configuration A, Configuration B and Configuration C.
This is where software is taking the world my friends. It is why I don't tinker anymore.