July 2013 Archives

July 31, 2013 @ 22:01 EDT

297/365: Jaguar


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Project_365

July 31, 2013 @ 21:54 EDT

296/365: Competition

There are quite a few of these guys scattered around our building. A different sort of security system, eh?


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Project_365

July 30, 2013 @ 21:08 EDT

More ramblings about Google

Back in January I was cold-called by a Google recruiter regarding an opening with their Site Reliability teams. To make a long story short, I aced the initial screening only to flub the first (and only) phone interview. They declined to take it any further, but said they'd keep me on file for future opportunities.

Mere days after I'd accepted my current position at SMD, they popped back up again asking for an informal chat. I never heard back after I told 'em my status had recently changed.

Nothing until this evening, that is. My inbox has a confusingly-worded message, leaving me wondering if this has to do with the candid feedback I left after the initial interview, or about something new entirely.

It's a shame I can't talk about what I'm up to at the moment, the reasons I relocated, and why I'm here for the forseeable future. The joys of startups in stealth mode!

Folks that have read my occasional ramblings may know that my views on Google have soured considerably over the past six months. That has nothing to do with my experience interviewing with them; instead it's more due to Google abandoning their old gung-ho stance on open standards and loosely-coupled-but-interoperable services with an attempt to integrate everything both vertically and horizontally, ala Facebook.

I recognize the business necessity behind many of those transitions, but I am still pretty disappointed that they're trying to justify those business-driven decisions by falsely claiming they're driven by engineering needs -- while chastizing others for doing the very same thing.

Google isn't some scrappy underdog any more; in many ways they're now the dominant incumbent trying to dictate TheWayThingsShallBe(tm), with a growing all-or-nothing attitude. That isn't something I can support, and it pains me to see Google become the "evil entity" it once decried.

Ah, well. I should take something for this headache and just go to bed. I think tonight is a lost cause.


Posted by Solomon Peachy | Permanent link & Comments | File under: Life and other BS

July 27, 2013 @ 08:41 EDT

Gutenprint/CUPS unified dyesub backend committed; what's next?

I just committed the unified 'gutenprint+usb' CUPS backend into the upstream gutenprint tree. It ends a two-week-long flurry of slicing and dicing the old standalone backends into a cohesive whole, including fixing the inevitable pile of regressions.

There were also a small pile of (non-regression) bugfixes that made it in, plus the ability to deal with printers that report no serial number (I'm looking at you, Shinko S2145)

Additionally, support for the Kodak 6800 was beefed up, and full support for the Kodak 6850 was added.

This commit pretty much wraps up my task list relating to printers, barring bug reports and/or another printer showing up on my doorstep.

Meanwhile. My next meaty software project is likely to be microcontroller-oriented (ARM Cortex-M series). It's still in the planning stages (a glorified science project) but coming out of it will be skeleton project that others can re-use.

My motivation for this is that if you're entering into the microcontroller world after being used to a typical F/OSS workflow (ie gcc+make+gdb) it's a bit of a shock to discover that IDEs and proprietary tools/libraries are usually crammed down your throat, and there's a dearth of information out there on how to set up a modern hello world project that is written in pure C, is well-documented, and doesn't rely on proprietary bits or third-party "magic handwaving happens here" binaries.

It'll include a modern GCC C/C++ toolchain (via crosstool-ng), debugging support (via OpenOCD and GDB), and a basic FreeRTOS example/port. All of this will be supplied in source code form, even the toolchain.

I haven't decided on how to license this framework, but it'll probably be something ultra-permissive (eg MIT/X) rather than the copyleft (GPLv3) I normally use for software I write.


Posted by Solomon Peachy | Permanent link & Comments | File under: Free Software

July 26, 2013 @ 20:03 EDT

The problem child, two weeks later

The truck's still out of commission, and the mechanics are stumped.

The runs-then-it-doesn't problem happened to them too; after they replaced the distributor and the computer (the first time), it ran fine (if a little rough), only to refuse to start the next morning when they tried to adjust the timing.

Two more computers and a consult with a heart surgeon later (seriously, they called in someone who specializes in diagnosing computer issues), they're pulling their hair out. At this point, all signs point to a short or broken wire that feeds into the computer.

Armed with the only meaningful symptom (the computer isn't generating the reference signal to the distributor) and the list of stuff they've already checked, I've spent quality time tonight with the GM shop manuals, enumerating all of the wires in the computer's harness. There are a total of 56 wires across two harnesses, of which 21 appear to be unused. Only a handful of them are actually inputs into the computer:

  • Ground signals (two)
  • Battery supply (two)
  • Ignition "on" signal (unlikely, as the fuel pump kicks on and the check engine lamp illuminates)
  • Throttle Position sensor (No signal == no run!)
  • Manifold Absolute Pressor sensor (unlikely; should result in running rough rather than simply not working at all)
  • Engine Coolant Temperature sensor (No signal == no run!)
  • Cranking signal (unlikely, but worth checking)
  • Knock sensor (also unlikely, but again, worth checking)
  • Fuel Pump run (unlikely, as it's normally off when cranking)
  • Oxygen sensor (irrelevant)
  • A/C signal (irrelevant)

The good news is that testing these wiring runs is actually pretty simple; all you need is a multimeter, a length of wire, and some time. Assuming the wiring is all good (unlikely!) the sensors themselves need to be tested.

The ECT sensor itself is easy, as it's just a measurement of resistance. The other sensors are more involved, needing a reference signal. It's a shame the truck is locked up in the mechanic's lot over the weekend; I have the tools (and time) do all of this grunt work myself.


Posted by Solomon Peachy | Permanent link & Comments | File under: Life and other BS

July 25, 2013 @ 20:36 EDT

295/365: Blue Wall of Death

The darker blotches were due to unsynchronized screen refreshes and a fast shutter speed, but the screens were unevenly illuminated all the same.


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Project_365

July 25, 2013 @ 20:24 EDT

294/365: Hunting Party

Underneath the Congress Avenue Bridge in Austin, Texas, is the world's largest urban bat colony. Every evening, the better part of 1.5 million Mexican free-tailed bats take flight to eat some 10 tons of bugs every night.


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Project_365

July 24, 2013 @ 11:40 EDT

293/365: Temple of the Carnivore

Sunday night I ate at The Salt Lick, out of Driftood, TX. This delicious spectacle was the heart of their operation.

Their meat was excellent, especially their ribs -- However, their peach cobbler was truly O-face divine.

As an aside, showing up at a BBQ joint wearing a snow-white shirt is not advised. I somehow escaped unscathed.


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Project_365

July 20, 2013 @ 11:00 EDT

292/365: Not-so-little buddy

To give you a sense of scale, the body of this lady is about three centimeters long. She's set up under an overhang at the new office, keeping us safe from the supersize bugs of South Florida. And small birds.

Amusingly, as I watched, she kicked a potential suitor out of her web; he fell about ten feet to the ground. At least he escaped with his life, eh? (The male's total leg span was smaller than her body alone!)


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Project_365

July 20, 2013 @ 10:50 EDT

291/365: Classic Raytracing

If not for the noise and dust, anyway..


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Project_365

July 17, 2013 @ 20:14 EDT

The Kodak 805 works!

I just received the replacement Kodak 805 in the mail. I plugged it in, added its USB ID to the Kodak 1400 backend, and kicked off a test print.

It worked perfectly... and there was a distinct lack of smoke escaping!

In other news, I've fixed the last of the bugs in the Shinko/Sinfonia CHC-S2145 backend, resynced everything with Gutenprint, and now it's time to start unifying the various backends.

This ought to be fun. And by fun, I mean fun. Yeah, I need a life..


Posted by Solomon Peachy | Permanent link & Comments | File under: Free Software

July 16, 2013 @ 10:54 EDT

290/365: Plug #3

There is a lot more scorched than is visible in this picture. The plug (and/or its wire) failed. The car's back up and running, with a new set of plugs and wires.


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Life and other BS, Project_365

July 15, 2013 @ 18:33 EDT

289/365: Great Blue

This guy greeted me as I left for work this morning. I love my little neighborhood.


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Project_365

July 15, 2013 @ 18:21 EDT

Okay, I'm officially Jinxed.

Got an update on the truck -- apparently they found a broken wire in the distributor, which was also pretty much rusted out. The working theory is that the wire broke, shorted out the distributor, and cooked the truck's engine computer in the process. Sigh. They will get a replacement computer from GM (another $130) in the morning, and I have to imagine the labor involved in getting to it will be in the same ballpark.

Meanwhile, due to not wanting to drive the tin can, I hitched a ride home with a colleague. While trucking along at 70mph on the highway, the air conditioning compressor in his car siezed. Complete with the belt smoking until we figured out what was going on.

Moral of story -- don't let me near anything mechanical for a while.

That said, I'm biking to work tomorrow, via the Tri-Rail. I've already picked up the new spark plugs and wires for the tin can, and will change them out in the morning with the engine properly cold. I just need to find a gym bag or something to pack the handful of tools I'll need (torque wrench, spark plug socket, gap tool) and a change of clothes.

But first, dinner, and relaxing a little.


Posted by Solomon Peachy | Permanent link & Comments | File under: Life and other BS

July 15, 2013 @ 15:40 EDT

Make that two broken vehicles...

The truck's still in the shop; the last I heard from them there were metal shavings under the distributor cap and everything looked torn up. That explains the symptoms, especially if the pickup coil was damaged -- that's what tells the computer where the engine is in its rotational cycle. No pulse implies no rotation, and consequently no fuel or spark delivery. We shall see if that turns out to be the culprit, but in any case it needs replacing. I'd planned on replacing the distributor cap/rotor/coils (along with the plugs, wires, belt, etc etc) this fall anyway.

Unfortunately, when leaving work for lunch today, the tin can started hesitating and idling roughly, along with an intermittently blinking check engine light. By the time I got back to the office, it was consistently worse, along with the classic pop-pop-pop sound of unburnt fuel coming out of the exhaust. Plugged in my trusty code reader and it returned code P0303, aka "Misfire, Cylinder 3".

The symptoms indicate no spark (or no compression) in that cylinder. Fortunately the initial things to check are pretty straightforward; The ignition system is definitely sending a spark to that plug, so the plug is the most likely culprit. I've had them fail on me before.

So, on the (undoubetdly slow and limpy) way home I'll pick up a set of plugs and wires, and once the car cools down, install them and see if that improves things. Too bad I don't have the spark plug socket with me, or I could do this in the parking lot here in about ten minutes.

Not unlike the truck's situation, I was planning on doing all of this in another four thousand miles of so (along with a new timing belt and water pump)

If the spark plugs + wires turn out to not help, a bad injector or ignition coil is the next likely culprit. Given that only cylinder #3 is misfiring, it's not likely to be a general fuel system problem. Worst case, the cylinder lost compression which means a valve job or a complete rebuild. We'll see..

You'd think both vehicles acting up at once wouldn't be likely, but this happened to me last summer too -- the tin can lost its starter and the truck burst its radiator.


Posted by Solomon Peachy | Permanent link & Comments | File under: Life and other BS

July 14, 2013 @ 17:19 EDT

And the Dyesub printer train continues

The Shinko/Sinfonia CHC-S2145 driver and backend are functionally complete, though bugs remain with the auxilliary commands. I must say it's nice seeing the printer spit out one of my photos in only few seconds, knowing that I wrote much of the driver code. The auxilliary commands work, but there's still something wrong with my handshaking since the printer hangs after the response comes back.

I still have little idea as to the printer error codes, but I found some docs via google that at least enumerate the various errors that are displayed on the printer's LCD screen.

Today I distracted myself a bit and spent some time reverse-engineering the spool format and printer protocol used by the Sony UP-DR150. I committed the initial cut at a backend, and if it turns out to work, I'll go ahead and add that to gutenprint as well.

I find myself wondering if I should just unify all of those disparate backends into a single 'gutenprint-usb' backend that handles everything. I'm already up to five backends, and that number will only grow.

While all the backends basically do the same thing, there isn't very much directly common code, and trying to genericize the almost-but-not-quite common bits will make things much more complex without really buying us anything. That said, presenting the system with a single executable may be the right way going forward.

The Sony UP-DR200 and DNP DS40 may soon gain improved support as well.

In other news, I had a report of a crash with the CW1200 driver when trying to use Monitor mode. Unfortunately in the process of moving I seem to have lost all of my serial cables -- so I can't get a console on my development board and recreate the crash in a full debug-enabled environment.

I need to do someting about this ASAP.


Posted by Solomon Peachy | Permanent link & Comments | File under: Free Software

July 13, 2013 @ 20:19 EDT

288/365: Little Buddy


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Project_365

July 11, 2013 @ 20:48 EDT

An update

Phone turned out to be on my bed. Whew.

At this point, either the fuel pump can't maintain enough pressure to get things going, or there's something more serious going on electrically (ignition system or engine computer gone awry).

I'm kicking myself for not checking to see if there was a spark; that would have definitively told me if it was a fuel system problem.

In any case, getting the damn thing towed seems like the best bet. I'll take care of that tomorrow. Along with my tooth, hopefully.

Anyway, back to work.


Posted by Solomon Peachy | Permanent link & Comments | File under: Life and other BS

July 11, 2013 @ 14:53 EDT

From good to ... wtf?

This week has gone pretty well in general. My to-do list has been shrinking, my house is nearly completely unpacked, everything's in hand...

...until today happened. So far:

  • Hard drive corrupted on my HTPC. Won't boot any more.
  • Leave home in a hurry for some reason.
  • Truck abrubptly dies backing out of the driveway. Crap.
  • Got truck going after a couple of minutes. Huh.
  • Had to stop on the side the road to close the hood. Crap x2.
  • Release the parking brake half a block later. Sigh.
  • Discover that I don't have my cell phone. Crap x5.
  • Temporary crown pops off of my tooth when eating breakfast. Crap x10.
  • Truck refuses to start at work when I want to go home for it. Crap x100.
  • Last day at the old office (hence bringing the truck to help move)

So, I have no idea what's up with the truck other than the motor is not getting any fuel. I don't know if it's purely a fuel system problem (pump, injectors, relay, filter, etc) or something wrong with whatever turns on the fuel system, possibly affecting the ignition system too. Given the initial portent of it dying (briefly) in my driveway, it's looking like it's someting deeper. It ran great on the way here.

Fuses are all good, motor cranks great. No fault codes reported by the ECM. No apparent voltage across the fuel pump fuse connector. Uh-oh.

Even if I am able to diagnose the nature of what's wrong, it'll still need to get towed away from the parking lot of my old office, So I'm leaning towards having AAA just tow the damn thing to a mechanic and let them worry about it.

In a little bit I'm getting a ride home so I can get my car and cell phone (I hope), after which I'll drive back down here and figure out what I'm going to do with this thing.

I wonder what else can go wrong today?


Posted by Solomon Peachy | Permanent link & Comments | File under: Life and other BS

July 10, 2013 @ 09:51 EDT

cw1200 driver is officially mainlined

As of about eighteen hours ago, the ST-E CW1100/CW1200 WLAN device driver was merged into the Linus's mainline linux tree, culminating more than a yearlong effort to get the driver into shape.

I'm now trying to get official permission to have the necessary firmware included in the linux-firmware tree. This is stymied by ST-E's recent implosion and the fleeing of all of my former contacts, but I'm told the WLAN group will live on, most likely under the STMicro name.

There's also the open question of support for the CW1x50 and CW1x60 successor chips. I need access to hardware to do any meaningful development, and I have no idea where to obtain that.

Ah, it's a good day.


Posted by Solomon Peachy | Permanent link & Comments | File under: Free Software

July 08, 2013 @ 19:19 EDT

287/365: Inner Life


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Project_365

July 06, 2013 @ 22:13 EDT

286/365: Life is hard...

...then you nap.


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos, Project_365

July 05, 2013 @ 23:16 EDT

Photo printer developments

Today, I picked up a 20 kilogram package from FedEx. Upon opening the more-than-a-litte-abused box, buried in the sea of foam peanuts was a tightly-bubble-wrapped bundle of high-end kiosk-scale photo printer -- A Sinfonia (nee Shinko) CHC-S2145.

It was express-shipped to me by LiveLink Technology, a photo kiosk solution provider based out of Merry Old England, for the express purpose of getting it to work with Linux (by means of Gutenprint). LiveLink bucks the industry trend by using Linux under the hood wherever possible, so by sponsoring this work they benefit through lower costs and greatly improved flexibility, and the community benefits from the native support of a truly professional printer.

The Sinfonia CHC-S2145 carries enough media to handle seven hundred prints at a time, spits out a 4x6" print in seven seconds, and will do so day in and day out. As a testament to their robustness, this one came heavily broken in to the tune of nearly 78,000 prints.

Anyway. I've already committed the initial support to Gutenprint, which now generates proper raw spool files that match the output of the Windows drivers. Unfortunately (as I've come to expect) this printer requires an intelligent, two-way backend, which will take a bit more time to put together. Fortunately I'll able to reuse large chunks of the backend code I've written for other dye-sublimation printers.

In other news, earlier this holiday weekend I polished most of the rough edges off of the Kodak 1400/805 Gutenprint code, and should have another '805 in a few days -- the seller agreed to send a replacement after the first one aggressively blew the magic smoke out of its power supply.

It's been a productive few days. But now it's time to produce some sleep.


Posted by Solomon Peachy | Permanent link & Comments | File under: Free Software

July 05, 2013 @ 21:02 EDT

Market Segmentation


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos