07/14/2016 06:44pm Blog Entry
I just updated the website to list Junk Box Arduino. The cover price is $34.99, although as usual from Amazon, you never pay full list. Also, I noticed something in the book. If you buy the hardcopy, which quite a nice book, by the way, you can get the ebook for $5.00. Full details on the last page of the physical book, or on the website it points you at, which is here: http://www.apress.com/companion. Cool. I didn't know about that.
07/14/2016 12:21am Blog Entry
So I got an email from my publisher today. My review copies of Junk Box Arduino: Ten Projects in Upcycled Electronics are on the way. Hokey smokes, I've got a new book in print. :) Apress seems to be spreading the word far and wide too, There are even (allegedly) torrents of it. While that's bread off my table, still, I've never had a project big enough that anyone's stolen it before. I'm back in the saddle, hanging on for the ride.
Of course, this means my part in this project is pretty much done, so I've been tinkering with some new ideas for the next book. Presently leaning toward programmable logic - start with TTLs and work my way up (perhaps) to FPGAs. Here's what I want to be able to do next. I want to build a computer, from scratch. Not from boards sourced in China. I've done that. Not from boards sourced in Oregon, and parts sourced from everywhere and solder. I've done that. I'm still doing that, and it's still fun. But I want to design one myself. I'd like it to have ICs that don't require a microscope to work with, but that's really impossible once we get to the FPGA world. They're creatures of the modern era, and thus, SMD. I don't know how this project is going to look yet, whether it will be a breadboard monstrosity (the current model) or stripboard or perfboard, or even wire-wrap (probably not.). If I make good on my FPGA threat, it might wind up designed and built inside a single pre-made board, although that smacks of magic again, and I really don't like treating electronics like magic.
Anyway. Book in print good. Review copies coming. I have a list of people I've promised review copies to, so expect to hear from me soon.
PS: the book link is here: https://www.amazon.com/Junk-Box-Arduino-Projects-Electronics/dp/1484214269
06/04/2016 09:50pm Blog Entry
So Google has announced that the Chrome App Launcher isn't cool enough, and it's being discontinued. Since I was one of the eight people who actually used it, I was a little annoyed by this, so I set out to replace it with a plain old launcher.
First, kick off Chrome, right-click on the bookmark bar, and tick "show apps shortcut." You need this.
Next, go ahead and delete the Chrome App Launcher from the usual panel.
Now right-click on your panel where all your other launchers are (yes, I came from the Mac world and my panel #1 at the bottom of my screen looks remarkably dock-like,) click panel, add new items, and select Launcher. Then click on Add.
Right-click your new launcher and select "properties." Click the plus button to add new items to the launcher. Search for Chrome first, and add it. So long as Chrome remains the first item in the list, the icon will remain Chrome, and that's really what we want.
From your Chrome window, click the apps shortcut at the far left of your bookmarks bar. This will list all your apps.
Right-click on each chrome app and select create shortcut. You can put them in your applications menu if you want to, but the one that's most important is a desktop shortcut. Do all the apps you have.
Select all the google app shortcuts on your desktop and drag them to the Chrome launcher properties window. Then close the properties window. You can delete the shortcuts off your desktop, too.
That's all there is to it. Now, if you click-and-hold the icon, or click on the little up-arrow beside it, you'll get the menu. Click on one of those, and Chrome will launch with your app running. If you just click on the icon itself, you get Chrome.
Now I just have to figure out how to make this happen in Raspbian, although at the speed Chromium for Raspbian is updated, I should have another decade before Chromium launcher goes away.
04/04/2016 07:17pm Blog Entry
Looking Glass and Irreconcilable differences are, at last, on Createspace in dead tree editions. Yay! I'm back in the printed book business. :)
03/16/2016 07:47pm Book Review
The Velvet Monkeywrench - Two stars.
Another book that wrestled with the civilization's post WWII discomfort. Muir writes well, and is the author of the best example of tech writing I know: How to Keep Your Volkswagen Alive, a Manual Of Step By Step Instructions for the Compleat Idiot. This book is his attempt to fix civilization. While it has a great breadth of imagination thinking about hacking civilization and making it better, and while some of what he suggests came to pass with the birth of the internet, Muir's vision is awfully mechanistic (as one might expect from a mechanical engineer and a mechanic), and while it gives lots of opportunities for human-ness, the system is at least as inherently inhuman as the one it would replace.
As a read for amusement's sake, it's frankly a flop. As a cultural artifact of the 1960s to early 1970s it's interesting, and for John Muir fans who want to see his only other work (richly illustrated with Peter Aschwanden cartoons, much like the VW book) it's interesting. There are some good ideas, but it gets awfully dry in spots.
03/16/2016 07:37pm Book Review
Honestly, I'm not sure the marketing text of this book actually has anything to do with the book. Here's what I see. In the 1960s, there was a growing sense the the post WWII civilization wasn't right. The experiences were too homogenized, too sterile, too stifling, even if you were white and male (and Heaven help you if you weren't.) The result was the 1960s, but in particular one result was this book. Persig is going after something quite specific, in a slow, carefully told story. What makes a thing "of quality?" The conclusion, as I understand it, is that it is a perception before abstraction, and once the experience is abstracted into memory, it is only the memory of quality, not the quality itself.
The story is about a man who's had psychiatric problems finally getting to know his son while they travel across the country. It's not an easy journey. Both of them have scars, and neither of them really talk about them, but the shared experience, the quality of the moments does what words have not been able to do.
The story is partially autobiographical.
There's an epilogue to the version I read that is, after the quiet healing of the story, crushing. I won't spoil it (if that's the word) because you can find it in the Wikipedia entry for Robert Persig. He does manage to find hope, even then.
It's a book that explores abstractions and experiences and how they fit together. That he developed the philosophical end before modern brain science essentially bore him out, that the first time you experience something it's far more strongly experienced and remembered than repeat experiences. He had no way of knowing that this is how our brains work, but he hit on the essential truth anyway.
Or I got lost along the journey and missed the essential truth he was after.
03/16/2016 06:57pm Book Review
The Martian - Five stars.
I admit, I peeked at the end to find out Mark Watney's fate before I bought the book. Happily, knowing what happens did not in any way detract from the story. Well told, well paced, a simple, linear story about a guy trying to stay alive using his brain. Sure, some of the characters can be a little thin. The third person narrative comes from nowhere in spots, and that always grates on me. It's easy to get caught up in the craft (or politics. ugh) of writing and lose sight of the fact that first and foremost, the writer's job is to tell an interesting story. Weir makes some rookie mistakes, but he nailed the last part, and the rest is small potatoes indeed. (Hee!) I really must see the movie soon.
03/16/2016 02:21pm Blog Entry
For some time, I've had a Minipro TL866CS eprom programmer that I got on Ebay. While it works very well, its software is windows only. I'd like to move it downstairs permanently where all the eproms and whatnot live. I'd also like to move my logic shrimp (a logic sump compatible open source logic sniffer) down there, as well as have a terminal and a browser and email and all that good stuff in my workshop.
The obvious answer would have been a PC. If I had a spare that worked. Since I don't, I turned to one of my stack of Raspberry Pis, in this case a model 2b, formerly my desktop Pi before the model 3s came out.
The upshot: my basement Pi now has minicom for terminal/rs232 stuff (I still need to test that with a USB rs232 dongle) OLS, the logic-sump compatible software I'm used to (which I also still need to test with the logic shrimp). I figured it would be a simple matter to download the minipro software from here: https://github.com/vdudouyt/minipro, compile, plug in the minipro and go.
Nothing worked. The minipro flashed its red LED continuously. It wasn't getting enough power. I'd stumbled over the solution to this before. Edit the Pi's /boot/config.txt file and add the lines:
# Increase max USB current
to it. Now the Minipro's LED stayed on, but the minipro open source software still wouldn't talk to it.
lsusb showed the 866's USB ID, 04d8:e11c, properly, but listed it as a Microchip Technology device. Which tells us who made the USB chip. This was different from my x86-64 Linux machine's enumeration, which I suspected was why the software wouldn't see it. I'm not sure this step was necessary, but it didn't hurt anything. I coped /usr/share/misc/usb.ids file from my desktop linux machine to /usr/share/misc/usb.ids on the Pi. Now the 866 enumerated identically to how it did on my desktop PC. The software still didn't work.
My next attempt was installing the latest libusb-1.0.yadda. I'm fairly certain this step is unnecessary, but I downloaded libusb-1.0.20 from http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.20/ , built, and installed that. It worked fine, but the minipro software /still/ didn't work properly. So I dug into minipro's source.
The problem I was having turned out to be unrelated to USB (Or I'd solved all the USB problems already. It's hard to tell in retrospect.) the minipro software was built on an x86-64 system, where chars are all signed in C. On arm architectures like the Pi, chars are unsigned. In the parsing function of the minipro software, the author uses one variable, a char, to store the output of getopt() whether it's valid or -1, which getopt returns when it runs out of options. If you store -1 in an unsigned char, you get 255. It's not equal to -1, which the line tested for, so it tried to parse it. Finding no valid commands with that character value, the parser loop promptly decided I'd fed it garbage, gave me the instructions, and terminated the program.
Once I understood that, the fix was pretty simple. Edit main.c and change the char c into int8_t c. (Coding on Arduino has made me paranoid about making sure my data types really are what I think they are.) I've sent a pull request to the original author with these changes, or you can download my fixed source here:
https://github.com/jrstrick/minipro (Update: the Minipro dev accepted my pull request, so the main trunk should now work properly.)
You might be aware there's a Qt GUI for the minipro software out there. You can get it here: https://github.com/wd5gnr/qtl866 , but I have not yet gotten it to work with the Pi. It gives exactly the same error the command line used to, even with the fixed version, so I'm suspicious of how its option string is being built before it calls minipro, but I don't know Qt at all. I may hack at it more later.