Red Echo

March 21, 2011

Simple, clear, well-written introduction to Pratt parsers

If recursive descent is peanut butter, Pratt parsing is jelly. When you mix the two together, you get a simple, terse, readable parser that can handle any grammar you throw at it.

Pratt’s technique for handling operator precedence and infix expressions is so simple and effective it’s a mystery why almost no one knows about it.

I would guess that it’s overlooked because the programming tools world is still largely convinced that automatic parser generators are something more than a dead end. People who don’t know any better see all the emphasis on parser generators and conclude that parsing must be some kind of inhumanly difficult, heinously complex process far beyond the capacity of an unaided human mind.

March 1, 2011

Clump is a program designed to replace makefiles. It builds C programs in what the author describes as “the most intelligent way possible”, to wit:

– Determine which C files need compiling by analyzing header include
dependencies and checking timestamps on the .o, .c, and .h files.

– Determine which C files are main programs by looking for an “int main”
declaration.

– For each main program, determine the exact set of .o files that need to
be linked together to build an executable file. It does this by tracing
the header dependencies in a recursive manner (transitive closure). […]

– Determine which system libraries need to be linked into a program
based on any system includes. For example, if a C file says
#include , then clump will know to put “-lcurses” on the
link command line. This is all configurable in the clump.ini file.

February 25, 2011

Computer Name List

Computer Namer is a big list of names people have chosen for their computers, with a little like/dislike popularity scheme. Flip through looking for ideas, or look at the top-10 lists for the best and worst.

Dependency Injection Demystified

This author basically had the same reaction to this idea of “dependency injection” that I did:

When I first heard about dependency injection, I thought, “Dependendiwhatsit?” and promptly forgot about it. When I finally took the time to figure out what people were talking about, I laughed. “That’s all it is?”

February 24, 2011

I spent a little while last night whacking together a simple web site for the new shop. There’s nothing much there yet, but it’s a start:
airlighttimespace.org

February 16, 2011

Ava and I have moved into our new home. We did most of the work in one big push on Sunday, with a lot of help from Erin and Shane. It was a solid day of hard labor and I’m still trying to catch up on rest.

Ava has been working hard getting everything sorted out. The bedroom and bathroom are all tidy, and the storage closet is full of neatly arranged shelves and stacks of bins. We have almost no living room furniture and the office is nothing but heaps of books and boxes, but it’s a good start. It feels happy and homey. Ava seems to be just about glowing with contentment.

The shop project is on the edge of success at last. We’ve collected the money, set up a business account, and signed the lease: now we are just waiting for the landlord’s EFT to go through so he can give us the keys. We should be able to start moving in on Saturday.

February 11, 2011

The Maple IDE is a fork of the Arduino IDE, designed to provide a similarly smooth development experience for LeafLabs‘ line of STM32-based development boards. While the Maple IDE can’t program the STM32 Discovery board directly, due to the STM32F100’s lack of a USB port, one user on the LeafLabs discussion forum has figured out how to use the Maple IDE to build programs for the discovery board which can then be uploaded using stm32loader.py.

February 10, 2011

Here’s a decent little Hello World for the STM32, including makefile.

As a musically inclined nerd in the ’80s, I once tried to play what I called the “Startup Song” on a piano: the sound of the floppy disk drive seeking from place to place as the ol’ Macintosh Plus started up made a distinctive and recognizable melody. This video goes much further: it is Bach’s Toccata in D minor performed on an organ made from four floppy-disk drives. The performer has rigged them up with a microcontroller and a MIDI interface so that the seek sound generates usable musical pitches.

February 8, 2011

Douglass Rushkoff is organizing a conference to be held this October with the aim of getting past the current hierarchical limitations of the Internet and developing something new, something decentralized, something subject to no central authority:

Lately, however, what’s wrong with the net has become quite crystalized for me. It started with the corporate-government banishment of Wikileaks last year, and reached a peak with Egypt shutting off its networks to stave off revolution. The Obama administration seeking the ability to do pretty much the same thing in the US, Facebook’s “sponsored stories,” and the pending loss of net neutrality don’t help, either.

Here on Shareable, and then again in an OpEd for CNN.com, I suggested we “fork” the Internet – that we accept the fact that the net is built on a fundamentally hierarchical architecture, surrender it to the corporations who run it, and consider building something else for ourselves.

This “Contact” event sounds like it is designed to get together people who are interested in all the various peer-to-peer / mesh networking / open routing / open social-graph projects and see what kind of cross-pollination can come about. I might go to this.

How to build a Mac OS X-hosted GCC cross compiler for AVR or ARM architectures.

February 7, 2011

The landlord has finally finished drawing up the lease paperwork for the new shop space. I still have to go set up a bank account for the LLC and get various other paperwork signed, but it’s very close now. We should all be able to move in this weekend.

At the same time, Ava and I are moving out of Sunrise. We have rented a cute little two-bedroom apartment of our own, located in the same complex as the new shop space. It’s small but nice, with hardwood floors and classic trim. We’ve been living and working in one big room, which sounds nice in a sort of romantic bohemian way but hasn’t actually worked out that well. With the new arrangement, we’ll be able to separate the art mess from the rest of the living area, Ava will have a quiet private place for herself, and I’ll have lots of room to host work parties and tackle big messy projects of my own.

February 1, 2011

Research on the feasibility of ad-hoc 802.11 wireless mesh networks: it’s not encouraging.

We also show that the traffic pattern determines whether an ad hoc network’s per node capacity will scale to large networks. In partic- ular, we show that for total capacity to scale up with network size the average distance between source and destination nodes must remain small as the network grows. Non-local traffic patterns in which this average distance grows with the network size result in a rapid decrease of per node capacity. Thus the question “Are large ad hoc networks feasible?” reduces to a question about the likely locality of communication in such networks.

January 31, 2011

gostm32 is a single-topic blog about using an STM32Discovery development board with open-source dev tools.

The STM32Discovery is an absurdly inexpensive breadboard-compatible product bearing an STM32F100RB running at 24 MHz. It’s not the hottest Cortex-M3 chip on the block, but compared to SparkFun’s Cortex-M3 board or the LeafLabs Maple, which each use an STM32F103RB, this appears to be a very good deal indeed.

The Serval project has successfully implemented 802.11-based mesh wireless communication between Android phones. This project sounds interesting: they have similar goals to what I was trying to do with the “walkie-textie”, only they’re doing it with stock phones.

January 30, 2011

Swedish guy hunts down and destroys hydrogen-filled balloons with a radio-controlled, roman-candle-armed, camera-equipped tricopter: a video of rarely-paralleled awesomeness.

January 29, 2011

Planning for the new shop space is taking up much of my free time. I am increasingly certain that the project is going to be a success: the location is about as good as it could possibly be, the group has a broad-but-overlapping array of interests, and the people involved are all getting along smoothly.

Mike T. and I went to a garage sale in Fremont this morning: an old metal shop was closing down and selling off their tools. We decided we didn’t really have room for the plasma table, and none of the welders really fit our needs, but we found a good assortment of hand tools and a couple of classic metal power tools. The prize was a $20 bench grinder. It’s all sitting at the Rocket Factory for now, but it’ll all end up at the nameless new space sometime in February.

January 22, 2011

I had dinner with Martin M. this evening. I hadn’t seen him in a while and called him at random last night, thinking it would be nice to catch up. We had a nice talk over beer at Smith, on 15th; he’s enthusiastic about his new(-ish) job at Google, and we traded speculations about the future of the computer industry.

After getting home I spent some time working on my electronic music device. I’ve stepped back from the all-in-one drum machine idea; it’s definitely the right direction for a commercial product, but I am daunted by the long list of unknowns I’ll have to deal with to get there. For the moment I’ve cut the box in half and am working on another Rhythm Robot: this one a complete sequencer, including the features of the Steadyrocker metronome gadget. I’ve designed the control layout, and am now working on the best way of connecting 92 individual LEDs, 10 7-segment LED digits, 12 lighted buttons, and 6 rotary encoders to an ATMega328 controller. I’m sure there will be a handful of PCF8574 I2C IO expanders in there, and perhaps some TLC5925 LED drivers too. The latter only seem to be available in surface mount packages, though, which scares me.

January 21, 2011

Mayhew Labs is offering a Rotary Encoder LED Ring: a PCB with surface mount LEDs and a SPI-controlled TLC5925 driver chip. It’s set up so that you can either mount the encoder on the PCB itself or use a panel-mount style encoder and screw the board onto the encoder’s shaft. Unfortunately it is marked as “not available yet” with no indication of price or availability….

January 18, 2011

Tribler is a BitTorrent client which includes peer-to-peer resource discovery and search: that is, you don’t need a central tracker, and you can search among torrents advertised by other Tribler users. It’s available for Windows, Mac, and Linux. They have some interesting ideas on decentralized spam suppression; I wonder how well it will all work in practice.

I have no idea whether the implementation is any good, but the concept is interesting: a peer-to-peer VPN that self-configures via your XMPP contact list.

It is apparently now going to be possible to write apps for Android without having to use Java. I can’t imagine why I would want to write a mobile app in the first place, but Android has definitely come to seem like the most appealing of the mobile app platforms, and not having to use Java is a nice bonus.

I imagine I can understand now how the old mainframe programmers must have felt about the rise of the personal computer. All around me the computing world has been going crazy over phone apps, and I just don’t care. What can these tiny little platforms possibly offer me, all locked down and controlled by evil megacorporations? They’re just toys! Give me a real computer, and get out of my way with all that appstore nonsense!

And yet here they are, apparently taking over the world.

January 14, 2011

Rhythm Robot control panel layout, revision 5. The box I’ve selected is 7″ deep by 11″ wide, with a 1/2″ lip around the top edge. The boxes with the rows of dots along the top and bottom are 7-segment LED digit displays; the squares with three dots underneath are rotary encoders (knobs); the smaller boxes with six small dots in them are lighted pushbuttons; the small vertical rectangles are LEDs. Not shown are the rings of 3mm LEDS around all but three of the encoders.

January 12, 2011

Useful guide to developing STM32 Cortex-M3 code from Ubuntu Linux. Suggests starting with the Olimex header board for the STM32F103RB, which is the same chip used on the LeafLabs Maple. I like the Maple since it has the convenient USB bootloader and the Arduino-style development tools, but the longer I work at Synapse the more comfortable I get with a lower-level development experience. (I’ve just finished writing a custom serial bootloader for the MSP430…)

Mars update, projects

Right, so, I’ve been busy. Ava and I had to get a new car after the little red 325 met an unfortunate end on a rain-slicked stretch of I-5. Neither Ava nor the occupants of the other car were injured, but my car came out of the wreck several inches shorter than factory spec, so I decided it was time to scrap it and find something new. Ava and I spent a day shopping and picked out another BMW 325: this one a 1994-model 325i convertible, dark green, with a manual transmission. Sexy.

We promptly took the new car on a 1600-mile road trip, visiting my family in California for Christmas. Getting all of my siblings in one place at one time is an increasingly difficult challenge, as we all grow up and more of us acquire mates and thus extend our families in multiple directions, but it’s a delight when we can pull it off. We stayed in Sacramento long enough to attend Carolyn’s 21st-birthday party, then drove home in one long rainy day.

New Year’s: Ava was tired and opted to stay in, so I went out a-rambling on my own. I met up with Adam over at Ryan’s place, joined Ryan and Maya’s dinner guests for a champagne toast, then picked up Michael, Candace, Michael, and Likhita and went out for a walk. We had the astonishing good luck to be passing by T.T. Minor park, on top of Capitol Hill, when some crazy people started up a renegade fireworks show. They had a whole line of mortars set up, and they just kept feeding in the shells. They launched dozens of them, one after another bam bam bam, and it was glorious – then as quickly as they’d started they bagged up their gear and disappeared. What a way to start the new year!

Later I went by AND for their late-night chill-out party and had a good time chatting and relaxing while Michael H. played the funky mash-up beats. Good times.

I’m still trying to get the new shop space set up. We’ve established an LLC but haven’t signed a lease yet – we’re getting close, but still have some landlord concerns about noise to work out. I feel good about this project; the location is good and there are lots of people interested in being part of it.

With all this going on, I haven’t done much in the way of creative work lately. I haven’t touched the juggling balls project or the walkie-texties in a couple of months, and I have not yet started a new sewing project after finishing my ski jacket.

I’m still pecking away at the rhythm robot, however. I had been planning to create three separate devices – a loop sequencer called “rhythm robot”, a master clock called “steadyrocker”, and a percussion synthesizer named “hammerbox” – but I’m now combining all three functions into a single box. It’s a marketing thing: separately, the devices are unlike anything else on the market, but when you put them together they become an unusual but perfectly recognizable drum machine. Drum machines are a well established product category, so I can describe my system by comparing it to other products, instead of having to explain it from scratch. It is also a product category with a price range high enough that I should be able to break even without having to risk lots of cash on a large production run; this was going to be a challenge if I tried to produce individual devices.

The down side is that the bigger box makes for harder design work. There are more constraints to juggle, more complicated arrays of resources to manage, and fewer checkpoints where I can verify that I’m still on track. I also have a demanding customer who knows exactly what he wants in music gear and has imposed all kinds of challenging design constraints on the project! Oh, well. I’ve designed the algorithms, settled on the parameters and their ranges, assembled a parts list, and worked out a schematic. I’ve gone through three revisions of the UI layout now, and it’s coming together; one or two more and perhaps I can start laying out the circuit board.

January 5, 2011

Concise electronics for geeks: one long HTML page outlining just about everything a geek hobbyist might want to know about electronics. It starts with basic physics and keeps on chugging, heavily annotated with links to further reading, all the way to an explanation of digital circuits like flip-flops and multiplexers.

January 4, 2011

Sunset, on the planet Mars.

December 23, 2010

Home schooling infographic: numbers, results, averages. There’s nothing too surprising here, but it’s always interesting to get an outside view into one of the more unusual features of my childhood.

I have mixed feelings about the whole anti-institution of modern home-schooling. It definitely worked well for me, and I feel fortunate to have had two intelligent, well-educated, well-read parents willing to pour so much time into teaching. I’m reluctant to advocate it for anyone else, though: the features which make home-schooling work are hard to find outside the fundamentalist Christian subculture where it thrives.

One great thing about the high profile of the Wikileaks situation is that it seems to have gotten a lot of people thinking about practical steps we can take to further decentralize the web. Aaron Swartz’s proposal combines certificate authorities, mirrors, URL-hash-lookup services, Tor, and the new simple concept of a reverse URL hash lookup to produce a system which allows people who want to publish controversial data to do so without fear of censorship.

December 22, 2010

Bruce Sterling has the deepest, most thoughtful commentary I’ve read on the whole Wikileaks situation. This is very much a cryptopunk project, and Sterling understands that background like very few others; he’s also looking at this with a broader perspective, explaining the deeply nerdy worldview that spawned Wikileaks without losing touch with the bigger culture around it.

December 20, 2010

One shop space ends, another begins

The three-year lease Adam and I signed on the Rocket Factory space is nearly finished, so we’ve been making plans to vacate. The shop never really worked out the way we hoped it would – it’s too far away, the roof leaks, and it’s impossible to keep the place warm or clean. Nor have we taken on any of the large Burning Man projects we intended the place for, so it’s been sadly underutilized. We gave it a good try, but it’s time to let the place go.

In the last week, however, I’ve stumbled across a new vacant commercial space much closer to home, written up a plan, gotten four of my artsy friends on board, and set myself up to launch a brand new shop / studio / makerspace. It’s a great venue: right near home, in the Burner Triangle neighborhood where most of my friends live, with a garage, good power, heat, and light, running water and its own bathroom and shower – at the same rate per square foot we’ve been paying in Ballard! In four years of looking at shop spaces around Seattle, this is the best place I’ve ever seen. Given the zoning restrictions on Capitol Hill and in the Central District, I would bet that the total number of spaces like this in existence could be counted on one hand. I feel very lucky to have found it and glad that there are other people willing to join me in the venture.

This will be a bigger project than the Rocket Factory was: more space, more people, more uses – but it feels like the right place and the right crew at the right time. It won’t be open to the public, like Metrix or Jigsaw Renaissance, but it is definitely supposed to be a social hub, albeit on a smaller scale. I’ve believed for years that the groovlabs / mezbian burner community could do great things with a shared art space, and this time around maybe I will be able to make it happen. I’m looking forward to seeing what we make of it.

First, we need a name.

« Previous PageNext Page »