Joy had left her hot-air hair-curling thingamajig plugged in, in the bedroom.
Huckleberry had turned it on, leading to panic.
I think Top Hat had also been there, and fled in the opposite direction.
Anyway: wide awake now. Outdoors: rain. This morning, once it gets light: I'm on setup crew for an outdoors wedding. Forecast: not terribly informative, but it looks like we won't get rained on too much.
At least I won't be standing around on a blazing hot afternoon wearing a sport coat and slacks hastily acquired at Goodwill (i.e.: polyester).
They tend to have a particular, shared Attitude, which is this:
This software project is Mine, and all the files for it live in My working directory, along with all the other software projects that are Mine.
And so we end up with code under Eclipse stored in ~/workspace, and code under Arduino stored in ~/sketchbook, and, in general, everything organized by toolset.
Thing is, this just doesn't match up well with the way real projects are organized. The software, for any given language and target architecture, is just part of the project.
Typically, I'll have a directory tree which is a working copy of a repository, and that tree contains various subprojects, and for each of those there may well be one or more programs for an MCU (or for more than one MCU), and CAD files for the board (possibly more than one board), and mechanical CAD files for housings and whatnot, and drawings, and documents, and Ruby scripts for the Linux host, and test cases, and....
Well, there's a lot of stuff under there, but it's all organized by project and subproject, which makes sense, as opposed to being organized by which particular program I used.
And having SVN/Git/whatever version-control integration in the IDE doesn't help much when it comes time to check in a revision with new hardware, new firmware, and new specifications all nicely synchronized.
Seriously, guys: don't take the approach of old DOS apps that stored all "their" data in their own places (word-processor documents stored under the word-processor installation directory ring any bells?); let the user put the files where they make sense for him, and keep a list of where they are. (Also, pleeeeease have some easy way to see where the entries in that list are pointing.)
Awake at 0200 with a pseudoephedrine-resistant sinus headache.
Took the last of the on-hand pseudoephedrine anyway (which is how I know it's pseudoephedrine-resistant, duh) and such painkillers as were handy, then back to bed. Didn't get much more sleep.
Also, I have rather a lot of sore muscles, possibly related to lugging around sacks of fence-post mix and sand, and mixing and carefully pouring sub-fence-post batches of concrete down at ground level.
And I really need to get some work done this week... in among yet another flurry of Family Stuff.
Oh, well. At least I should be able to get out for morning walkies today (I don't do that on weekends on account of the crowds, and missed yesterday because of the dental appointment), so maybe I can get somewhat caught up on fresh air & exercise.
Well, not necessarily Teflon® brand polytetrafluoroethylene*, per se, but some manner of slickery bioinert synthetic lubricant. Something to coat the teeth and discourage accretion of stalagmites and whatnot.
* Spelling checker suggests polyethylene, counterrevolutionary, or perchance electroencephalography.
Back to tinkering with the (now repaired) FRDM-KL25Z board and, at the moment, mbed.
Since I've got a few things on the horizon that could plausibly use KL20-series chips and want some sort of basic comm channel over USB, I fiddle with the USBSerial_HelloWorld demo app.
Obvious test is to install the app, connect the board's target-USB port, and cat /dev/ttyACM0, but that doesn't seem to work: sometimes gets the first character of the intended output, but more often not even that.
I try gtkterm, and it (a) doesn't think ttyACM0 is a thing, so I have to type in the name manually, and (b) doesn't work.
After some 'net wandering, I try PuTTY, and it works. So does screen.
C'mon, now, guys. POSIX used to make serial ports nice and transparent. If Linux is going to stick with POSIX's sucky, PDP-11-era fixed list of predefined Baud rates, it should at least make CDC-ACM devices act like the various kinds of USB serial UARTS, and actual serial ports.
Guess I'll have to see what PuTTY and screen are doing differently, and make sure whatever libraries I write for talking to my gadgets do the same thing.
(I don't have any other CDC-ACM devices handy, apart from maybe an old cellphone. I thought treating /dev/ttyACM0 like /dev/ttyUSB0 or /dev/ttyS0 used to work. Has Linux changed, or is there something different about the mbed USB stack? Maybe it's emulating flow control?)
Oh, well: I probably want to check out Freescale's RTOS offering, too, and I'll see if its USB-serial thingy behaves differently. The final applications will tend to need some combination of PWM, ADC, I2C, and SPI, and various amounts of multitasking. Significant consideration: KDS has the nice (?) GUI for configuring pin assignments, device configurations, and so on, though I still haven't gotten far enough to determine just how useful that really is.
Update: A USB CDC demo program built & installed using KDS does indeed seem to behave as expected (once I figured out that the demo program was missing a call from main to the actual innards; I'd assumed there was a task configured somewhere, and there wasn't)... so there's something wonky about the mbed implementation. Given that the intended application is more MQXish than mbedish, maybe I need to get up to speed on the whole KDS/MQX thing. After I find time to get some actual work done, that is.
Update 2: I guess the demo in question isn't even using MQX; looks like it's on the bare metal, plus device drivers and maybe CMSIS or something. Gotta get up to speed on the Cortex M culture (which has been on the to-do list for a couple of years now, but it's (still) not revenue-track).
There was that one trying ever-so-earnestly to survive on the paltrow sum of $29/week for food. And failing. WTF?
Sanity check: a skinny celebutard or an overweight desk jockey needs around 2000 calories/day. That's right around 1 pound of rice. At the white-people mart, in modest-size bags, fancy rice goes for a bit over $1/pound, and plain blah long-grain white rice for a fair bit less. So meeting the basic caloric intake on a tight budget, even shopping in white-people stores here in Silicon Valley, is no freaking problem. (This falls apart if you insist on shopping at Whole Foods.)
Lentils also run under $1/pound. Pinto beans are even cheaper. Rice & beans, or rice & lentils: the basis of the peasant diet, and you need about a pound per day, combined. So there's $7/week for your calories and protein; less if you can get a little bit ahead and buy in bulk.
I neglected to check the price of a 2-pound bag of store-brand mixed veggies, but they're pretty cheap. That helps fill in the nutritional gaps. For something fresh, add an apple a day, or maybe an orange a day would be better. Anyway, something appetizing that's not too pricey this week.
You'll need fats, too, so some sort of cooking oil... but you don't need much.
Now, if you want to make the rice-and-legumes palatable, it's time for a trip to the ethnic market (where you might have found the basic ingredients cheaper anyway). Mexican, Indian, Chinese... all have affordable things to add to the bland stuff to make it tasty, and possibly more nutritious.
Or you could try primate kibble, though that seems to have gotten more expensive since Dr. Pournelle's college days*.
But if you're going to eat on a peasant budget, you need to embrace the peasant diet. Stick to the cheap, well-known staples for the bulk of your calories, skip the trendy stores and the trendy foods, and look for bargains on fresh stuff. Drink tap water; unless there's something horribly wrong, it's better for you than most of the alternatives.
And, if you're doing it as a stunt? Don't sweat the vitamins and micronutrients. As Tom Lehrer remarked: It's only for a week, so have no fear! Be grateful that it doesn't last all year!
If you're experimenting with this sort of diet for prepper purposes, because you can stockpile your pantry with rice-and-lentils for cheap, then you have to worry more about long-term nutrition, as do actual poor people. Cheap vitamin pills are your friend. So is a kitchen garden (which can also be a stress reliever, and get you outdoors for some vitamin D).
* Oh, wait. I find someone peddling Primate Maintenance Biscuits at $1/pound. So, yeah, that trick still works, if you're trying to maintain a grown primate.
Y'know, if I were running a business that sails as close to the wind as a towing company - one in which basically every operation is a felony but for specific conditions being met - I'd make damn sure to keep detailed records to show that said conditions were met, every single time.
Because you just never know when generally-applicable laws will suddenly start applying to you.
For towing, you'd think a respectable company would, at minimum, have records of make, model, color, license, location, time, and reason for towing (red zone, no permit, or even "dispatched by AAA for burst upper radiator hose"), plus photos showing the vehicle and the appropriate context (the red curb, the expired meter, the spot on the car where the permit should have been).
And you might even think that the authorities that license such companies would require those records as a condition of the license. Because, otherwise, it's pretty much a license to steal.
If enough angry voters got up on their hind legs and demanded that the authorities rein in the racketeers... maybe it would happen. Maybe.
But they won't, because Martin Niemöller got it fundamentally wrong (I have an essay on that subject vaguely fermenting: in short, when they came for the X, I cheered, because I've always believed that X are somehow icky). Tribalism trumps all, as we see in the current foofaraw.
See, what's got predatory towing in the headlines this week is not the predatory towing per se, but a video of a skinny blond celebutard abusing a hapless two-company employee. Said video was apparently shopped around for some time by the tow company, and has been trimmed to avoid showing whatever provocation went before. Also, I don't see the company providing the detailed records showing that the tow in question was legit.
So instead of calling attention to the problems of predatory towing and government-licensed racketeering, it gets reactions such as:
Oh, a skinny blond celebutard abusing a working stiff? She's a horrible person!
A suspension isn't enough! She should be fired, and no one should employ her again, ever!
She deserved to have her car towed! [Assumes facts not in evidence.] How dare she be mad at a mere accessory-before-and-after-the-fact?
Yup. It happened to a skinny blond celebutard, therefore it didn't happen at all. Just as Trayvon Martin and Mike Brown were harmless children, or Eric Garner and Walter Scott were dangerous criminals who needed killin' (pick your tribal position).
We can't unite for the common good, because people we don't like might also benefit. And besides, this time the bad thing happened to a member of that other tribe, and we don't want to prevent that, now do we?
You may gather from this that I'm not a member of the skinny-blond-celebutard tribe, and from other posts that I'm not a member of the rich-and-politically-connected tribe. Doesn't mean I want 'em all rounded up and sent to the camps... just the ones who do stuff that would get us commoners locked up.