Bitser? 1970s NASA-funded behavioral research

I just happened to google “bitser” and found two collisions. It appears that in 2009, somebody or some group created a Windows archival program called Bitser, and it’s been living at bitser.org for a long time. I was oblivious to this. I also discovered that a “bitser” is the term for a mixed-breed dog.

I don’t mind my domain being associated with dogs, despite being a cat person.  But call me a religious nut if necessary: I just can’t have my web site confused with anything even obliquely related to Microsoft Windows. I’m going to switch domains and move/rename this blog.  (This added in July, 2018: Never underestimate laziness. So I never got around to a domain move, and in the meantime my religious fervor about Microsoft being terrible has evaporated (I feel sorry for them now). I’ve even forgiven Intel for nearly killing Network Products with their dishonest treatment of us vis a vis the 80186 chip availability. Now we resume the original post.) But that will take a while, and in the meantime, folks may be asking themselves what I mean when I use the label “bitser.” The rest of this is my explanation.

When I registered the bitser.net domain in 2000, it was to create a web site that the Java JSR-121 Java standards project could use, as a couple week’s wrestling with Sun Microsystems red tape sumo wrestlers made it clear that the JSR-121 Expert Group couldn’t make practical use of Sun web resources (“Fill out this form; expect your web site change to be accomplished in one to two weeks. Heck no, you can’t administer it directly!”) As the JSR-121 “Spec Lead,” it fell on me to handle record keeping, and an easy-to-maintain web site that could be divided between private and public areas seemed the best way to go, along with a couple of GNU Mailman lists maintained by Doug Lea. Anyway, I needed a domain name, and “bitser” popped into my head and seemed as good as any. So I registered bitser.net and set up a web site hosted by QTH.com, an outstanding ISP based in Wisconsin owned by fellow amateur radio contester KA9FOX. This was all on my nickel, and I couldn’t afford to register bitser.{org,com}, which was, of course, the fatal flaw. (bitser.com is some kind of Internet store front based in Thailand. Update September, 2019: bitser.com is available but I’m still too cheap!)

But what is “bitser?” Bitser is the name of the first non-trivial computer program I  wrote. I worked for the University of Alabama in Huntsville in the 1970s as a “research assistant” and then “research analyst,” and apart from helping build and run a human factors research laboratory within the psychology department, my primary contribution was software development aimed at data collection, reduction, and analysis. We did  experiments to do with behavior in settings relevant to NASA, like living and working in a simulated spacecraft. In later stages four men and women spent 10 days in a very small  set of rooms that could be transformed from “bare walls and concrete floor” to “the lap of luxury”, or anything in between, depending on how productive they were. As part of this, we gathered fine-grained data describing the behavior of the experimental subjects. In addition to keeping track of all the work they accomplished and the “money” they earned and spent within our artificial micro-economy (the monetary unit was the ‘bit’), every six minutes two observers recorded what the experimental subjects were doing in terms of their senses and actions. We’d invented a “BInary OBservation System” (BIOBS) that just required an observer to make a series of choices to traverse binary decision trees, for example, rooted at “what the subject is looking at.” By making a series of “this or that” decisions, the state of a subject could be recorded as a set of nine four-bit binary numbers, each requiring four “this or that” decisions. That’s 64 billion combinations with 36 observational decision for each subject. It was actually less because some of the trees were not fully populated, and if you have the impression that designing those trees was very hard, you’d be right. But after a bit of training and a few hours practice, the lab staff got extremely fast. In practice the subject’s behavior tended to be about the same from one observation to the next, and we could memorize the commonly-used portions of the decision trees, and those of us involved with designing the trees tended to have them burned into our brains anyway. This scheme beat the hell out of all the alternatives we used  early on, but implementing it efficiently was a challenge, as computers were horribly expensive and hard to use at the time.

Bitser was the interactive analysis program for BIOBS data. Because all the behavior could be connected to things that had been bought with the artificial money we called BITS, naming the analysis program “BITSer” made sense. It allowed staff and students to query experimental data and ask questions like, “How often did three out of four subjects listen to music while eating something and working on their stats course?” (The “work” the subjects did during many experiments was a statistics course that gave three semester-hours credit in 10 days flat! Every subject in every experiment except one passed the course, most with an A or B. In the outlier experiment, the “money” normally earned from course work that was necessary to buy almost everything in their environment was instead made non-contingent. That is, “BITS’ were put into the subjects account each hour no matter what was happening in that one special experiment. In that case, none of the four subjects did any significant work at all, and all failed the course. We called that experiment the “welfare paradigm” and it drove me to the conclusion that one open secret of a satisfying life is meaningful work.) Bitser was a few thousand lines of Fortran V that ran on a Univac 1110 mainframe with a 300 baud remote terminal, and my last listing is dated October 1973. Back then I wrote extremely dense code (I made a graphic version of Conway’s “Game of Life” program with 80 lines of code and a Tektronix graphics terminal  soon after Conway published the game). But I was young and Bitser was of course write-only code. I can hardly bear to look at the listings now.

[Update September, 2019: Looking back at this, and reflecting on what I’ve learned about the welfare system in this country, I realize naming the above non-contingent paradigm with the word “welfare” was regrettable. I, and perhaps all the folks in that research lab were clueless about the reality of welfare and the little detail Kahneman and later researchers determined that for somebody in poverty the “reference point” is unobtainable and regular dollar amounts of compensation may be perceived as losses, not gains!]

Anyway, so much for the “bitser” name. I’ll leave this domain in place so the JSR-121 interest link is stable (it’s referenced by a handful of journal articles and other sites), and this blog URL will redirect to the new place at the point I do the move.

For those who are interested in the research here are links for 1974 and 1973 publications (update September, 2019: The second link gives a 404 now. I’ve hopefully stashed the file someplace but had completely forgotten I found these files on the NASA site and only realized I’d found them when reading this posting again.) (This added in July, 2018. Never underestimate laziness. So I never got around to a domain move, and in the meantime my religious fervor about Microsoft has evaporated. I’ve even forgiven Intel for nearly killing Network Products with their dishonest treatment of us vis a vis the 80186 chip availability. Now we resume the original post.)

We Love Kroger

(Read this November, 2012 update first: Kroger will discontinue it’s “fuel points” discount at the end of 2012. Sigh. Further update from the future: Kroger is no more in this part of the USA and with its departure from Apex, North Carolina went hiring of challenged individuals. I boycott Harris Teeter when possible.)

Our daughter’s basic high school band expenses are $575 per year, not including trips, dinkles, t-shirts, calendars, and music cds. This year’s trip, a cruise, will cost at least $800. Add to this about $1200 for instruments this year (including an oboe made in France in the late 1930s gotten with a killer deal and refurbished by a local saint), the ongoing cost of instrument reeds and biweekly music lessons, and the cost soon begins to get to the hair-curling level.

Enter Kroger. The area Kroger groceries offer a “magic” gift card that can be used over and over again. All the money put on this particular gift card (actually one each for my wife and me) can be spent on anything they sell, which includes gift cards for other shops and gasoline. Each dollar spent puts a nickel in our daughter’s band account. In addition, each dollar spent on general goods results in a “fuel point,” and each dollar spent on other gift cards results in either two or four fuel points depending on periodic specials. Each 100 fuel points translates to 10 cents discount on gasoline, and one gasoline purchase can fill both our vehicles with a discount of up to two dollars per gallon. On top of all this, Kroger purchases earn a second flavor of “points,” and a few times a year we get $10-20 in coupons redeemable for anything Kroger sells in return for the points. Too bad we can’t feed those coupons through the Kroger card, but we don’t want to overheat their administrative servers with some kind of compounding runaway.

But to give an example of how cool these features can get with Kroger, consider this past North Carolina tax free weekend. We’d been preparing to get our daughter her first PC, carefully searching for a laptop she wouldn’t soon outgrow, and the cost came to about $575. We put the money through the magic Kroger card to get a stack of Best Buy gift cards. This transaction put $29 into the band account and will save about $38 on the next fill up of the two vehicle’s gas tanks. In combination with saving NC sales tax, we made over $100 of effective savings on a $600 computer. Thank you, Kroger. (And thank you, state of North Carolina, and thank you, Best Buy for the $70 discount on the computer).

Update September, 2019: All 14 Kroger stores in this part of North Carolina were closed a few years back. The aspect that hurt the most is the fact that the ones we shopped at made a point of employing people with handicaps of various types (one wonderful lady had grown up deaf, a few staff had some cognitive challenges, etc). Kroger’s remaining stores here (Harris Teeter brand) have no such diversity employment.

Raspberry Pi with little SD cards

If you have an old SD card that’s less than the 2gb needed to run the blessed Raspbian (Debian Wheezy) Linux distro made for the RPi, or like me, you had a 4gb SD card but a bad spot turned it into an 870mb SD card, fear not. If you’ve got a thumb drive you can trivially carry on. Here’s how.

First thing is to copy the image file to both devices with commands like this, after:

1) BEING SURE you substitute your /dev/paths and

2) Unmounting the card and/or thumb drive before copying images over the top of them

sudo dd if=2012-07-15-wheezy-raspbian.img of=/dev/sdk ; **>>MY<<** thumb drive

sudo dd if=2012-07-15-wheezy-raspbian.img of=/dev/sdi ; **>>MY<<**SD card

If the SD card was 64mb or better, then you should have an intact copy of the FAT filesystem on the front of your card, and if you have a current Linux system it automagically mounted . If not, mount it with something like mount -t vfat /dev/sdi1 /somepath and then cd into /somepath (or the actual filesystem typically under /media).

Edit cmdline.txt to look like this:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline rootwait

Then cd out of this filesystem and umount it, put the card into your Raspberry Pi and the thumb drive into one of it’s USB sockets (or a hub socket) and power it up. The command line above will tell the system on the SD card to mount the root filesystem on the thumbdrive instead of trying to use the (uncopied or corrupt/incomplete) 2nd partition of the SD card.

 

Linux can’t tolerate a spewing USB device

I’ve been spending a lot of time with TI MSP430 chips using the incredibly inexpensive LaunchPad eval board. This board ships with an MSP430 chip pre-programmed with a temperature measurement demo program that immediately spews temperature readings out its UART pins, which by default are routed through the USB interface to the PC. This causes my Linux system extreme indigestion. It appears that Linux can’t properly identify and set up to interact with a USB device that mindlessly sends data at it right from the get go. I’d gotten over the severe disappointment of the incredibly powerful TI Eclipse-based Code Composer Studio IDE for the MSP430 not supporting the LaunchPad board on Linux (a classic big-corporation screwup: Good luck getting core Arduino-lovers interested in MSP430, TI!). I thought I was being clever to run CCStudio on Windows within a VirtualBox VM session on my Linux system, but I could not get joy. I eventually found a clue about why the LaunchPad wouldn’t work and temporarily disconnected the serial port path from the chip, brought up the board, and put a tweaked version of the program into the chip that paused a few seconds before its spewage.

Coincidentally, a somewhat similar bug manifested in the Arduino Duo IDE when I had an application that output serial data in an uncoordinated fashion. In this case, the Java-based IDE crashed with an unkillable JVM process that hung the Linux USB device connected to the Arduino, forcing me to reboot my Linux system. I even had a case where the X11 session hung with a frozen mouse pointer and stopped keystroke echoes. Apart from a misbehaving NVidia graphics driver and power failures in the past (and a maddening keyboard “autorepeat” bug that I’ll be writing about later), my Linux system never goes down, and I never have to reboot for updates or package installs. So having to reboot Linux every few minutes while trying to figure out how to hold my face with the Arduino board and its IDE became obnoxious in short order. The two bugs below describe similar issues registered with the IDE’s developer bug database. I wish I could say anybody is doing anything about these bugs, even so far as explaining what’s really happening, how to work around them ,etc. Unfortunately these bugs are unloved, and my mail to the developer’s list pleading for more information was ignored.

Relevant Arduino IDE bug reports 1 and 2.

Allman Brothers and Lynyrd Skynyrd from a different viewpoint

Last night my wife and I worked seven hours at food and beverage concession stands to make money for our daughter’s high school band expenses. My wife was a “runner,” assembling and handing off items to the cashiers at one of the main food concessions while I was a cashier/runner at the smaller pizza concession.

For a college instructor and career counseling professional and a software engineer used to being around nerds of the Nth degree, this work has been an incredible experience for both of us. It’s been character building, to say the least. We sold a lot of food and beverages, I had to inform a couple folks that they’d had enough beer for one night as they struggled to stay upright, and I got to hear the “Free Bird” guitar duet through my window, albeit with 70% bass and 30% treble because of the  angle and distance to the stage.

Here’s the crummy-phone pic of what the pizza concession looks like from the front (partner manning the left window).

Walnut Creek West Pizza
And here’s the the view from the inside.
Walnut Creek concession

Goals for my Raspberry Pi computers

I have two Raspberry Pi boards now, and both seem to be finding a long term role. The first I’ve been using for some time as a PC at Splat Space meetings. Connected to the meeting room’s LAN, a mouse, keyboard, and USB-based hard drive, this RP makes a usable stand-alone Linux system for keeping up with email and the like. A fellow Splat Spacer is making a case for this RP with his 3D printer (thanks, Geoff!). Instead of hauling all the pieces and parts and plugging them together for every meeting, I intend to strap the RP, hard drive, USB hub, etc to the back of the monitor. A wireless bridge is needed, too. I still have several left over from when our broadband was via Starband and I was my next door neighbor’s ISP.  This RP is named kludge-pc.

The other RP is destined to live on my home LAN. The original charter I had in mind for it when I ordered it in February was as a low power, battery-backed “overseer” to monitor the various bits and bobs in the house and make available clues as to what’s right or wrong with things. I especially want it to be able to diagnose common failure modes, such as when the wireless repeater gets unplugged for the sake of the vacuum cleaner and then we all wonder what happened to the Internet connection. But since deciding on this job for it, I’ve since realized we badly need a local caching DNS server to make today’s URL-heavy web content less painful to access. Before we could get broadband at this house in the boondocks, I ran an autodial modem-based LAN, and a DNS server was key to making it tolerable. The problem with that (bind-based) setup was that it had to be highly available, and apart from it becoming painful to reboot while others were using computers in the house, I begrudged the watts of electricity. I can’t use my main Linux system because I can’t guarantee it being up all the time (of all things the Arduino development IDE is capable of killing it: more on that in another post.) But a 3.5 watt board like the Raspberry Pi will be perfect. Finally, the GPIO on this board in combination with the Adafruit Linux distro will naturally tie into various monitoring functions, such as how many hours a day the water pumps are actually running. The obvious name for this RP will be eye.

Windows 8 first try

I downloaded the Windows 8 release preview and set it up under VirtualBox 4.0.12 on my 4-core AMD system running Ubuntu 10.04. (I’m “this close” to switching that system to XUbuntu 12.04 now that I seem to have found an alternative to the new “improved” Gnome that is in fact UNUSABLE Gnome.) Windows 8 installed very quickly and with an impressively small number of inputs on my part. But when I tried to shut the VM down and save the session it hung badly, and for the first time in my experience, VirtualBox has a process running that doesn’t respond to a “force quit” GUI action. It did respond to a kill 9. This was with the 32 bit version of W8, and I realize I specified “Windows/other” but maybe Windows/Windows 7 (32 bit) would be a better choice. I made this choice and reinstalled and then did a shutdown of Windows (spending only 3-4 minutes trying to find the interface for this, giving up, and finding the secret on the net: hover around on the right side of the screen to get the “charm bar”, click on “settings”, then on “power”, then on “shutdown”). Now I can start up W8 each time under VirtualBox. However it’s still the case that trying to just save the VM state for a quick restart results in a VB failure dialog and another hard to kill process.

The Windows 8 user interface is astonishing and I’ll leave judgments of that for others. My goal now is to determine what the device support situation is.