|Standing alone - 02 December 2014|
I guess since LibraryBox's default site has web fonts served locally, I can do the same thing, so never mind the derp.
And then I realized that the stats and chat stuff on a LibraryBox happens via PHP. I've just been thinking, "oh, it's a stripped-down little box, don't wanna run any code on it," but it's got Perl. "Stripped-down" doesn't really mean what it used to. WE'RE LIVING IN THE FUTURE!
In other news, I'm kind of tempted to use Bootstrap templates here as well, though that's moving away from the 1996 ethos. If I can figure out template switching, maybe I'll use this template as a default.
I've also started populating the "local" section of the files. Magnet school applications (the neighborhood middle school is a hifalutin' magnet, which means neighborhood kids get bused down to a failing middle school on the south side of town even though there's a building right next to the elementary school), city council agendas (which no one will read, but I pull out the relevant bits of in blog entries), water-saving appliance rebates, blog entries in PDF form, whatever I can think of that people might find useful.
I'm hoping some of the neighborhood music sources will upload some stuff. There's a local bar that's done a lot of live music, and has some informal recordings on YouTube. There's an annual music festival (metal, I think... something I'm too old for, anyway) that has plenty of local-band contacts, and would probably find a festival-covering LibraryBox (or maybe PirateBox) useful. And there's a recording studio or two that probably has some aspiring musicians who'd like to get their music out there. I ordered a non-portable version of the unit, so I can compare ranges and test inter-box communication ideas, and so I have one to park somewhere permanently here soon.
|Doing the math - 04 December 2014|
And now for something completely different:
I'm doing the math to see what it would take for Carl to be able to quit his job before hunting for another. I'd have to take some kind of job, but I don't think it would take a very high salary (or hourly rate, as case may be).
See, his boss made a really, really boneheaded, PHB maneuver.
Carl came on board the mower company nine years ago, with seven years of sysadmin experience (and the early years of that under some really good mentors). We've been kind of struggling with the fact that he really likes it there, except for the 75-mile commute (and we'd about decided to pull up roots, twenty years of roots, from Delano and move closer), but the raises just haven't kept up with the cost of living (and definitely not with the price of gas). But in the last couple years, well. Not only have the raises not kept up, but the workload has been ever-increasing because they can't retain people or hire quality replacements (again with the raises... and this is a company that's setting new sales records each year, so it's not "the economy.")
So in what he claims was an attempt to ease Carl's workload, his boss decided to make him a full-time developer. Yep, you've been a sysadmin/architect for sixteen years and you're so irreplaceable we can't make you manager but not so irreplaceable that we can't just change your career for you without even asking because we can't find anyone else who's stupid enough to even apply for a dev position in a tiny Kansas town. That wouldn't be so bad, just tone-deaf, if he hadn't simultaneously promoted Carl's protégé... to manager. Which Carl has been in all but name and salary and boss has been putting Carl off about that for two years, and that after Carl basically turned down the directorship when it opened up because he felt his technical skills were needed as sysadmin/architect, and instead pushed for his now-boss to be put in that position... in hindsight, a stupid career move. And one I'm not sure his boss is even aware of. Said boss is an ex-schoolteacher, not really an IT guy, and frankly doesn't understand there's a difference between dev and architect, but he at least ought to recognize that there's a difference between leading a team of skilled junior sysadmins and leading... a bunch of consultants.
Did I say tone-deaf? He didn't tell said protégé about Carl's transfer or tell Carl about the protégé's promotion - they texted each other after work and found out. Boss is baffled, just baffled that Carl has taken it as a not-so-subtle signal to "pursue other opportunities." Boss genuinely believes, apparently, that he was doing him a big favor. "I thought you'd like less responsibility." I suspect, to be honest, that perhaps it's the grandboss sending the signal and using boss as patsy: grandboss is a Koch alumni who is strongly in favor of outsourcing all IT work above tape-monkey pay grade. I gather Koch Industries never allows irreplaceable linchpins, to borrow some Seth Godin terminology.
Apparently it's going to take giving notice to get the message that you don't just put your best IT guy in a dead-end job just because you can't fill it any other way. And if it's "no, I don't have a better offer outstanding, I'm just that confident that they're out there," well, that's a message that ought to finally get through.
(And they are out there. We've decided to be open to "pursuing other opportunities" than Wichita or even Kansas, in fact; we have both sides of the family here, and pulling up stakes is tough with aging parents, but Kansas has had a tone-deaf boss of its own for the last few years.)
So there's that.
|refactoring - 04 December 2014|
If you've been following the Github repo you've noticed my commits are somewhat erratic. I commit when I code, but that's not every day, and not for very long on days when I do get a chance to code... generally I'm cramming a day's worth of work into two weeks or more. So progress is slow.
Lately I haven't done much except a few bug fixes (it's a little awkward that my dev/test setup is also a production server of sorts). My excuse is that it's December, there are other things in my headspace, and I'm working up to a major refactor.
The current Spice.pm is a bigtime god-object right now, a result of sort of diving into the project without much advance planning. It's not usually the way I approach things, but again with the hour-here, hour-there approach I at least got something useful working (even if it was sort of an offshoot of the "real" project).
But now I'm debating things, in particular the language choice. Perl is an old familiar friend, but maybe Java is more marketable. And I'd rather have something other than Minecraft server plugins to show a prospective employer in that case. (Note to self: get around to putting the plugins in Github anyway.) So maybe I'll just leave the current critter as it is, feeding the database and producing Atom feeds, and start my "refactoring" from scratch.
|Bad math - 05 December 2014|
Well, crud. The thing that I had hoped wouldn't factor into the math looks like it's going to, which most likely means an unexpected $2-3K monthly expense is going to hit us early next year. That puts a bit of a different light on "have three months of expenses in the savings account before quitting" idea.
On the positive side of things, the other LibraryBox has arrived. Now I just need to find some time to update both of them and get one out in the field.
|Really bad math - 07 December 2014|
The whole situation at Carl's employer hasn't made sense, and I've always had the feeling I was missing a piece of the puzzle. Now of course I only get insight into the situation by way of Carl's viewpoint, but still, it didn't make sense: why would they go from telling him his performance is great except he's too indispensable to promote to telling him they're shunting him off into a corner and promoting the guy behind him? And then telling him they're going to continue to try to fill the position he's now in, when what are they going to do if they do, demote the other guy back to give Carl his old job back? And when he calls them on it, act totally surprised and like they don't understand why he thinks any of this is a bad thing?
And then right in the middle of talking to someone about it on Twitter this morning (after I ran across a new ad for his job while looking for a dev job for me), everything became crystal-clear:
Me: Last week Carl's boss changed his job. This week they put an ad in the paper... for his new job: Software Developer
Her: Um.... that's.... I'm speechless.
Me: Did I mention they immediately made his old position a management position? Yeah.
Me: Thing is, they know Carl can't quit because we have a potential $3k/month medical expense coming up... and oh shit, you know what?
Me: They self-insure. Suddenly not so crazy. Shit shit shit. Of course.
Me: (Pardon my French.)
Her: And there it is. Damn. So sorry!
So there it is. Sad part? The insurance company almost certainly isn't going to cover that $72k anyway, self-funded health care or not. Which is why I'm looking for a dev job, and why I ran across that ad.
I guess the good news is, Carl can quit trying to analyze his every move over the last few months looking for what he did wrong. Now we know.
|Back to the library - 09 December 2014|
The LibraryBox, that is. It fell victim to yak-shaving this weekend: I should flash the new unit. Well, first I should work on the new web pages for them. But I should write a utility that builds a database so I know the source of each document on it so I can set up a non-wifi mirror without having to host that much data. And so on.
Part of that has involved trying to decide whether I can use it as an email hub, and whether that would be useful at all. I'm probably putting the cart before the horse there: I don't yet know how many potential users have some Internet access versus ones who have hand-me-down unlocked phones. If everyone walking around with a Tracfone has a GMail account that they access via wifi even if they no longer have cell service on their phone, I don't need to get into serving email accounts. On the other hand, if they don't have cell service, asking them to text somewhere to get an account won't work. I'm so far assuming that users will have some cell service, and that they're just going to be stingy with using it.
But in trying to figure out exactly what I could install on the Boxen if need arose, I ran across DebWrt, a full(ish) Debian install for routers. Nifty. Neither of the models I have are on their list of devices that have had DebWrt installed on them, and I'm not sure yet if I want to risk bricking mine experimenting. Probably I should wait until I run into an actual barrier with OpenWrt.
In the meantime, I'm updating my résumé, and I've set up a Java project in Eclipse for Pumpkin Spice (currently it runs, with the grand accomplishment of printing "Hello world"... hey, I've been busy).
|A five-pound sack - 12 December 2014|
Today I'm trying to put over twelve million items in a 16GB LibraryBox.
I mean, clearly that won't work. But what I want to do is put an index on the Box, so you can go through it and request an "inter-libary loan" wherein the next update goes out to the Internet Archive or Project Gutenberg or whatever and fetches it for the local collection. But daaaaaang, even the indexes are huge and unwieldly, and I haven't even tried to make them mobile-accessible yet.
Project Gutenberg's machine-readable index is a monster tree of RDF files. That's pretty parsable, and most of the information I can throw away (lots and lots of format metadata). Internet Archive is... a little more problematic.
Doesn't help, of course, that @textfiles just announced on Twitter that the Bay storm has knocked out IA power. So I'll stick with PG feeding the index for now. (It should help that @textfiles is also ~textfiles, but if you finger him, he's among the... do we have a name for people who haven't been back since the initial enthusiasm?)
|Holiday break - 23 December 2014|
I didn't exactly plan to take a holiday break, but I don't have much news.
But hey, holidays. I think I'm done with shopping. Tomorrow is present delivery for all the neighborhood folks; right now there's a gingerbread cake in the oven for our diabetic neighbor, tomorrow I'll stir up a batch of refrigerator roll dough and get the absurdly tiny ham (long story short: apparently our CSA raised pot-bellied pigs accidentally? The hanging weight was 75 pounds. No, there isn't a digit missing) and lamb roast out to thaw. And that's about it. Almost everything's wrapped, I even have a tree up (admittedly, one of those instant tinsel jobs, but it's survived the cats surprisingly well) and, well, it's a nice unstressed holiday so far.