How to make your own custom concrete countertops, and part 2. It can be pretty stuff.
August 14, 2012
August 4, 2012
I got my bike back from the mechanic today with a new valve cover gasket and a new clutch cover gasket. No more leaking oil, and now I can reasonably consider taking a long trip with it! I had thought I might spend some time scrubbing the engine down after getting the leaks fixed, but it was way too hot today to do anything outside. When it cools off, I’ll install highway pegs on the bike’s much-abused crash bars and rework the headlight mount so it doesn’t wobble. I’m still thinking about mounting a couple of ammo cases as panniers, too.
July 30, 2012
Flexible and Economical UTF-8 Decoder
A UTF-8 decoder in C99, implemented in 27 lines of code:
Systems with elaborate Unicode support usually confront programmers with a multitude of different functions and macros to process UTF-8 encoded strings, often with different ideas on handling buffer boundaries, state between calls, error conditions, and performance characteristics, making them difficult to use correctly and efficiently. Implementations also tend to be very long and complicated; one popular library has over 500 lines of code just for one version of the decoder. This page presents one that is very easy to use correctly, short, small, fast, and free.
Thermite video
Here’s Adam’s recording of the thermite sculpture project on Saturday.
July 27, 2012
Ava and I spent four or five hours working on the playa scrambler today. We finished welding the frame together, and took turns pushing each other up and down the street. The suspension is amazing, totally springy – all three wheels are independently suspended, and with two deep-cycle batteries on board the sprung to unsprung mass ratio is high.
Next task is the steering linkage. It’s possible to control the machine as it is, with one handle for each front wheel, but it’s a lot of work keeping the wheels pointed in the right directions. A tie rod and some Ackermann geometry will help.
It’s much easier to push this thing along than I had feared – despite its weight, it rolls smoothly. I think our little 350-watt motor will have no trouble getting us up to the Black Rock City speed limit.
July 26, 2012
Radian’s async generators are finally done and shipped, as of yesterday. The project took much longer and proved substantially more difficult than I had expected it would, but now it’s done, and it was the last big piece of engineering work on my to-do list. What’s at the end of the to-do list? Not “Radian 1”, probably, but a version of Radian that can actually do more than just demonstrate how the language works.
Yes, it’s true, I’ve spent years building a programming tool that cannot yet do any useful work. I’ve been reluctant to push this thing out into the public eye, in part because there were simply too many unanswered questions about how all these ideas would work in practice. I wanted to preserve my freedom to revise the language without having to maintain compatibility with code people had already written.
The very next change I’m going to make would have broken every existing Radian program, if there were any. Now that the async task system is in place, I’m going to tear out the whole IO system and write one based on the ‘sync’ operator. It will be dramatically more readable, a lot easier for people to figure out – it’s one new thing to add instead of a whole different way to think about it.
July 18, 2012
In the week since I was ejected from Google I have been spending a lot of time working on Radian. I had intended to put in the equivalent of full-time hours, but somewhat to my surprise I find it only takes 3-4 hours before I run out of code to write. There’s still a lot of thinking to do, and some of that thinking is best done as a background task while I focus my attention elsewhere. I can’t just power through it by thinking hard. I’ve been fitting the coding work into spare hours during evenings and weekends, but how much further would I have gotten if I had whole work-days available for this project? In terms of hours invested, there’s probably not more than half a year’s equivalent of full-time labor in the project, but there’s no way I could have solved my way through all these problems in that short a time even if it were the only thing I was doing.
July 17, 2012
Odroid-X is a quad-core 1.4GHz Cortex-A9 board with 1GB onboard memory. It runs Android or standard Linux, sports an exciting array of microcontroller-type interfaces, and costs all of $129.
July 16, 2012
Motorcycle trip concept route
I spent a while roughing out a cross-country loop route for the motorcycle trip I mentioned the other day. I want to avoid the South, since it’s summer time, and avoid the plains states as much as possible, since they are boring. The route also prefers two-lane minor highways over the big interstates, and I routed it through parks and other less-developed areas whenever possible.
The result is a 6500 mile loop spread over twelve riding days.
My bike has practically-new tires, chain, and sprockets, so it’s in good shape for a long trip. I’d have to get the valve cover gasket replaced and add on a pair of highway pegs. It might also be a good idea to add on a set of panniers, instead of bungee-cording a backpack onto the seat rest – maybe .50-cal ammo boxes?
July 14, 2012
I’ve been half-seriously toying with the idea of riding my motorcycle across the country to visit my sister MJ in New York. Three thousand miles on two-lane highways sounds like a lot of beautiful scenery. I rode six hundred miles each way to Mike and Alissa’s wedding, and rode about 650 miles on my way back from Burning Man in 2009, so I was figuring I could do this trip in five days each way, with a few days in the middle to visit.
I mentioned this idea to my friend Joe P., an accomplished motorcyclist who once rode his KLR650 from Seattle all the way to Tierra del Fuego. His response – “HOW many miles per day? That’s…. insane.” … Oh. Hm.
July 1, 2012
I can hardly believe I’m about to do this, but here goes: I don’t like this weather. It’s July, after all, and even in Seattle we should have some sunshine by now. I’m happy with our usual nine months of grey and wet – that’s part of the reason I live here! – but most years we also get a few months of brilliant sunshine and vibrant, warm-but-not-TOO-hot summer weather. Last year’s summer was as much of a disappointment as last year’s ski season, and here we are in the beginning of July looking at a repeat. It’s wet and drizzly and cold: perfectly comfortable, but I was hoping to go outside and do things for a change.
June 27, 2012
A quick lunchtime trip over to Ballard and $154 later, I have a legal title for my KZ1000P frame. It’s not exactly a motorcycle, since it contains no motor, and neither it is a bicycle, since it has no affordance for human propulsion, but it is now registered for legal use as a road vehicle, license plate and all.
June 19, 2012
That “not getting fired” project? Not going so well. Decision due Friday, but it’s not much of a question right now.
Floodland? Cancelled. Land use permit denied. Summer project: evaporated.
Everything else is fine. I got a woman, she’s good to me, oh yeah, you know she’s the kind of friend I need. And somehow that matters more than all the rest.
June 11, 2012
Why people making compilers are superheroes:
Writing a compiler is fun! And by fun I mean it makes you feel like driving a metal rod through your brain. It’s fun in that rewarding Holy crap, did I just survive that!? I survived _that_? Damn.
The complexity is immense. The difficulty of discovering there’s a problem at all … even immenser.
Aww :-)
June 7, 2012
Principles of programming language adoption
New research paper looks into an interesting question: Why do some programming languages fail and others succeed?
Researchers in the social sciences have studied adoption in many contexts. We show how their ï¬ndings are applicable to programming language design. For example, many programming language features provide beneï¬ts that programmers cannot directly or immediately observe and therefore may not ï¬nd compelling. From clean water to safe sex, the health community has long examined how to surmount similar observability barriers. We use such results from outside of programming language theory to frame a research agenda that should help us understand the social foundations of languages.
June 2, 2012
Saturday.
Right, so, I woke up at 7 am today with the startling realization that Floodland is happening in only two months. I therefore spent the morning working on information to support the DNR permit process, after which I deposited a fat wad of cash in the ALTSpace bank account, spent three hours soldering up light modules for the spiderweb project with Serena, Kyle, Dona, and Kevin, then wrote a couple hundred lines of code for the latest round of Radian’s asynchronous generator feature. I just got back from dinner, at 10 pm; I’m hoping to power out an email recruiting volunteers for Floodland organization work, then I’m probably just going to crash.
edit: scratch that, I am tired. Going to bed now. Volunteer recruitment tomorrow. Gongkszzzzzzz.
June 1, 2012
$50 worth of diesel and too many hours of driving later, I now have what you might call a motorcycle kit: that is to say all of the essential parts required to build a rolling KZ1000P, minus motor and transmission, laying in a heap on the floor at ALTSpace. Crucially, I also have a license plate and all the paperwork necessary to get a copy of the title with my name on it, which gives me hope that all the work I am about to do turning this into an electric vehicle will be rewarded by the opportunity to ride it on public roads.
I’m now feeling that old familiar anxious buzz which lets me know I’m overextended. I’m going to deal with the paperwork tomorrow, but then I’m going to leave this bike project alone for a while, maybe a month. I have a couple days’ more work to do getting the spiderweb lights ready, but I also have a lot of Floodland organizing to do, and then there’s the ongoing problem of getting enough work done quickly enough to keep the day job which pays for all the rest.
May 31, 2012
I had breakfast with Martin M. yesterday, and told him a bit about my struggles with the async generator/task system. Radian’s generators, like many aspects of the language, are directly inspired by Python equivalents, and it so happens that Martin was the one who implemented generators in IronPython. His design went on to inform the implementation of async blocks in VB and C#, and watching asynchronous generators work in multiple languages is part of what convinced me it is a robust enough model to support the entire Radian I/O API.
We didn’t get deep into detail, but the conversation confirmed a growing suspicion that I’ve been doing it wrong and need to start over. Oh, well – sometimes you get it right, and sometimes you really just don’t. The parallelization scheme came together almost perfectly, almost right away, and works exactly the way I’d thought it would – but with the asynchronous generators project it appears I’ve burned almost half a year getting mostly nowhere. At least it should go more quickly this time, since the problem grows increasingly familiar with each attempt.
May 30, 2012
The original site linked by yesterday’s container cabin article is down, but I found its new home, with an explanation of the cabin’s history and information about building techniques. The builder has gone on to found HiveModular, which I don’t quite understand but seems to be a collection of architecture firms, one of which is Intermodal Design, who offers a page full of sample floorplans for container houses.
Trying again with the electric bike
Turns out that retrieving a lost title for a motorcycle is a really big nuisance, especially when you have no idea who the last registered owner was, and the motorcycle – currently nothing more than a frame, an idea, and some parts – clearly will not pass State Patrol inspection.
I’ve therefore decided to scrap the current frame and start over with a newer one which has its paperwork in order. The frame I’m looking at is a 2001 KZ1000P, a former cop bike which someone disassembled after taking it home from a government auction. It’s missing the engine and transmission, which I didn’t want anyway, but the seller still has the wheels, brakes, and all the steering and suspension parts, so that’s almost everything I need. I was probably going to end up making my own custom leather seat and LED lights anyway (seeing as it will likely end up looking more like this than this.)
We’ll see if the sale actually goes off – craigslist people are notoriously flaky – but with any luck I’ll have all the bits home and ready to bolt together some time tomorrow evening.
May 29, 2012
Looking at the cabin John is building on the plot of land he and Holly have up in Okanogan got me thinking about shipping-container architecture again. It’d work well for a remote cabin, since the containers would give you a sturdy, weatherproof frame and reduce the amount of on-site construction required.
This is a great example of such a project: two 20′ containers on concrete posts, with some wooden framing between and a slanted roof overhead. It doesn’t look like they even cut any windows into the containers: the light all comes in from windows in the wooden section.
May 25, 2012
When working with the arcane mess that is git, you can either jump in, grow a neck-beard, and learn to think the way git thinks, or you can just memorize a handful of arcane recipes that do what you generally need. In this article another git victim takes a step closer to wizardliness by figuring out just what the “reset” command actually does. (Hint: reading the man page will not help you.)
May 21, 2012
Zero Motorcycles has introduced a new police version to their electric motorcycle line. No information about pricing, and it doesn’t appear to offer anything their other bikes don’t (beyond the police-specific lights), but it’s good to see them going after a practical fleet market.
In a very different corner of the electric motorcycle universe, an Austrian company called Biiista has revealed a fanciful new line of electric bikes which look like nothing so much as giant, friendly beetles. Hub-center steering up front eliminates the traditional forks, and a smooth, curvy skin whose shape is reminiscent of art deco covers the battery pack, but it’s the mirrors mounted on stalks so long they look like antennae that really seal the effect. No price or other practical information available yet, of course.
Why do programmer’s text editors use one-based line counting? This is obviously wrong and I don’t understand why it persists. Programmers will argue over any convention, so why is this one so sticky? I may have to “fix” Radian to use an awkward one-based scheme for its error messages, just because all of the text editors are broken.
May 18, 2012
HuSL is a library which implements a new colorspace based on CIE LChuv, aiming for perceptual uniformity while offering the same basic controls as HSL. Most of my algorithmic color & light code uses HSL internally, so perhaps I’ll try this HuSL system next time and see if the results work more smoothly.
May 16, 2012
Current project status
- Radian: grinding away very slowly on asynchronous blocks. It’s discouraging work; I feel like I’ve bitten off more than I can wrangle.
- Electric motorcycle: it’s not clear whether it will actually be possible to get this frame registered, so I may have to scrap it and start over. This is less of a problem than it sounds; old non-running motorcycles are plentiful and cheap, and I’m sure I can find another frame that will fit the motor I’ve chosen.
- La petit piège (aka the spiderweb): fundraiser party last weekend went well, and the teaser lights did what they needed to. I’ve ordered the accelerometers for the full-blown modules and we have a work party scheduled for the 29th. This one is going smoothly.
- Floodland: conversation with DNR ongoing. First organizational meeting will be next Wednesday. Time to start recruiting help!
- Google: I still wouldn’t say I’m doing well, exactly, but I’m muddling along as best I can. Still possible that I’ll be fired if I can’t get all this spaghetti untangled, but all I can do is carry on and see what happens.
I don’t have any sewing projects under way right now. ALTSpace is running smoothly and sustaining itself. My gas-burning motorcycle needs some work (valve cover gasket is leaking oil) but I’m going to leave that work to a professional. The meshnet project is ongoing but I’m just showing up to meetings and not really doing any work right now.
May 14, 2012
Electric bike motor on the way
I just ordered a Mars Electric ME1003 from EV Drives, a distributor in Port Townsend. This is the most expensive single component in the project, and one which will influence all future design decisions. Now it starts to become real!
A guy with a desk job and a family goes looking for his cooler alternate self:
As a writer, I’d always been fascinated by the trope of the doppelgänger and its long literary life, from Dostoyevsky to Nabokov to Spider-Man. Often, in books, these physical doubles represent the worst a character is capable of. Lately, though, perhaps because at age 41 I’d begun feeling less like the captain of my life and more like its deckhand, I’d started wondering if there was someone out there who embodies not your worst self, but your freest one—a person who encapsulates everything you’ve ever dreamed of becoming. Let’s call him your Cooler Self. All those dreams that got lost along the way, the ones that were casualties of chance or duty or cowardice: There’s a “you” out there—a mountain climber or war photographer or race-car driver—who brought them to fruition. So I vowed to hunt down my Cooler Self.
May 11, 2012
It’s about time to buy the motor for my electric bike project. I have been thinking about the ME0709, since it has the right size and weight, with decent performance characteristics, and has shown up in a number of successful electric bike projects. But as I was shopping around for a place to purchase it, I noticed that the ME1003 is a bolt-in replacement with substantially higher current capacity – it cruises at 200 amps instead of 125 and peaks at 400 amps instead of 300. Same dimensions, it just weighs three more pounds and costs $625 instead of $485. Hmmm. So many decisions to make…
April 27, 2012
The Allwinner A13 is a 1 GHz Cortex A8 processor in a TQFP package: that is to say it’s a chip with pins sticking out the side, which could be soldered onto a board by hand. This opens up the possibility of constructing a full-blown modern computer of one’s own design, by hand, for the first time since the early 1980s.
I had this idea last year about building a single-board cluster, linking a grid of microcontrollers using their SPI buses… but with a chip like this one, you could get a much higher-powered solution for a very similar price, using the onboard gig-Ethernet as the bus.