I remember

I wasn’t going to post today.

Of course I remember where I was. I remember not quite understanding what was happening at first. I remember finding out friends of mine knew people who, just a few hours south of where I sat, barely made it out alive. Or didn’t.

But I also remember before. I remember an America that wasn’t scared. An America that didn’t see a world full of impossible problems and hidden enemies. I remember when we, perhaps with a tad too much pride, had the optimism and drive to work with the rest of the world with our sleeves rolled up and our eyes on a bright future.

What is the legacy of 9/11? Why do we let the loudest voices in the national monologue reopen this wound year after year in the name of remembrance? Does this patriotic posturing honor those who perished? Those who serve? It’s trite at this point to say that by staying fearful and angry that we have let the terrorists win. 17 years on, we are doing this to ourselves.

We need to heal. The loved ones of those who were lost that day need us to heal. Our children need us to heal, or the world we leave them will be meaner, colder, and dimmer than they deserve.

Of course we remember. But what have we forgotten?

Starting to Face Climate Change in a Small City

These are my notes for a citizen town hall organized in June 2017.  We were asked to bring a topic or topics of concern to share with the group. The process turned to be less formal than was originally planned, and I did not have a chance to share all of these thoughts, so I am posting them here for future reference:

Monmouth needs to take steps to help minimize and prepare for the effects of climate change.

Not that I think that our small town can single handedly solve climate change. Partially it’s because I believe we all have a duty to leave a more livable and prosperous world for our descendants. More immediately, though, is that these steps can make Monmouth a more affordable, desirable place to live. One that can attract more economic activity, and one that will be better prepared to manage the state and federal regulations that are bound to arrive when our nation’s leadership gets serious about tackling climate change.

We have two distinct advantages that give us an edge:

First, the electricity that the city buys is almost entirely fossil-fuel free.  While hydroelectric power and the tiny bit of nuclear power that feeds our grid have their own problems, they do not pose a climate risk.

Second is that we are an unusually compact community for a city of our size.  This is a key driver in the amount of materials and energy we use to go about our business.

As a small city we also have some challenges. We have fewer resources at our disposal to implement big ideas. A small population size makes it harder for businesses to establish themselves here and maintain a profit. And subsequently, many in our community have to leave town every day for work. Not only does this increase their carbon footprint, but it impacts their quality of life with a commute, less time with their families, and a sizable cost to their budget.

There are many things we can and should do, but here are some short term suggestions:

  • Work with public works and the bike/ped committee to revise the city’s transportation system plan to implement a complete bike network that feels safe enough for kindergartners to use.
  • Complete sidewalks on all arterial and collector streets.
  • Work with the CARTS bus service to address the last-mile problem in our own and surrounding communities to make transit a more viable option.
  • Make sure our building codes and approval processes encourage the construction and refurbishment of homes and buildings that are energy efficient and mixed use.

I believe the first and biggest step for Monmouth to come to grips with climate change is finding smart, desirable ways for us to spend less time in our cars. The risks of not doing so are great, and the benefits of taking action are many.  I hope we can provide an example for all the other small cities in the U.S. that taking on climate change leads to a brighter and more prosperous future.

Monmouth Oregon 2017-2018 budget, visualized

A handful of years ago I became aware of someone who put out a poster of the federal budget he affectionately called “Death and Taxes”.  To better understand Monmouth’s finances, I thought I’d try my hand at doing a similar visualization of our city’s budget.  I often find it can be easier to see a visual representation of a whole bunch of numbers instead of mulling them over in a spreadsheet.


The Willamette Master Chorus I sing with puts on a veterans concert each year.  This weekend was the concert's 10th anniversary.  It is because I participate in this concert that I've had to honestly grapple with what military service means - to me, to our world - and to ponder what it might mean to service members.

At some point at each of these concerts, we ask members who have served in each of our military conflicts and during peacetime to stand so we can thank them for their service.  There is something visceral seeing normal folks around the room emerge suddenly as veterans from World War II, or Korea, or Vietnam, or ongoing military conflicts.  It pulls history into the present. It puts human faces on contemporary political arguments.  Here they are. The people we have asked, for reasons good or ill, to kill and perhaps die for us.

I do not need to romanticize their motivations to join, or lionize their actions while serving, to see the profound impact being in the armed forces has had on their lives and their identities. They have served, regardless of whether their political masters have treated their offers to sacrifice with as much respect and forbearance as they deserve.

I have had to get used to the mix of respect, anger and sadness I feel when my thoughts turn to veterans.  It's uncomfortable to hold conflicting thoughts and feelings in my head at once, but I don't think comfort is the goal.  This is perhaps the messiest part of our messy world, and I do not think I need to relinquish my hatred of war, or my anger at bellicose world leaders, to understand that our veterans have sacrificed for me. For us.  And in my own, uneasy way, to be thankful for that.

Little Boxes


I understand the human penchant for categorizing things. We’re good at it. It's nearly automatic, and it's arguably a necessary survival skill. We cannot spend all of our time re-evaluating our understanding of every experience, every physical thing in the world, as though it were the first time. We need categories as a kind of cognitive shorthand – they let us wrap all we think we know about a set of things, place them in a little box, and add a label.

But when dealing with other people this quickly becomes socially corrosive. It is precisely because labels are shorthand – they stop us from new thought. We’ve already formed an opinion about the label the last time we used it, so the opinion just transfers to the next person, uncritically.

what is lost

When you use a label you are choosing, likely unknowingly, to not understand. All the nuance, the possibility that those labeled might have views that don’t fit into those neat little boxes, or haven’t fully figured out what they feel about an issue... that all goes away when the label shows up. We don’t see it anymore, and we stop thinking about it.

As you can imagine, this is most prevalent in politics and religion. You’re an X or a Y. The assumption goes that your label dictates your beliefs.

It’s a problem for the person labeled. But it is even more of a problem for the labeler. You deny yourself the opportunity for understanding. It’s quite likely that the person labeled either won’t hold quite the opinion you thought they did, or if they do, the reasons why they hold that opinion may be novel. You might learn something. Regardless whether it affects your opinion on the topic, it will very likely have an effect on your opinion of the person. I have had this experience myself. Looking for understanding is far more satisfying than the false certainty of those little boxes.

At a larger scale, labels inflame rhetoric and reinforce a sense of otherness. If someone labeled X disagrees with someone labeled Y, the easy reaction is "well, it must be because they're X and Y." Suddenly it becomes an issue of irreconcilable membership, not a nuanced discussion of values. Done frequently enough and labels can evolve into institutions, degrading the opportunities for collaboration and understanding.

From the other side of the looking glass, labeling yourself gives both others and yourself permission not to think deeply about why you hold certain opinions on a given topic. You put up a barrier to conversation and understanding - people will generally assume you have just adopted the party line. You may find that when you pull apart the positions and issues that are lumped into your label, you reach a point where don't really know the reasons behind your opinions on a certain topic. I know I've had to reevaluate the boundaries of certain positions I thought I had figured out. I have also seen this happen for other people, when I approach a discussion with the goal of understanding. If you can challenge them to think about it, you may both learn something.

Passenger Rail for Georgia

Attention to high-speed rail in the United States has picked up recently with the inclusion of funds for it in the newly signed stimulus bill. I've been exploring high speed rail plans in my corner of the country, and passenger rail in general, since reading JH Crawford's book Carfree Cities.

appropriate modes of transportation for given distances

appropriate modes of transportation for given distances

As a form of passenger transport, rail can easily be the lowest energy per passenger-mile requirements. The 2008 US Transportation Energy Data Book places rail third (after van pools and motorcycles), but this is due to dismal ridership rates. It cites an average number of passengers per train at 24, which is less than even a bus can carry. Raising it to a mere 50 passenger average easily puts rail back at the top of the efficiency list (keep in mind that a typical train has capacity for 800 passengers). Also consider that new technologies and lighter materials can make the trains more efficient as well.

Rail also takes up far less land as compared to the multilane highways we rely on now to move large numbers of people (which, incidentally, typically do not move as many people as quickly as a well run rail line). And electrification of rail lines opens up the possibility of powering trains with renewable energy sources, compounding rail's climate and pollution advantages.

To get a drastic reduction in car-dependence for urban dwellers, you have to consider alternatives that provide reasonable autonomy and efficiency in place of automobiles. The good news is that in appropriately dense cities, and getting between them, rail provides a very good option.

 appropriate modes of transportation for given distances

current high-speed corridor plans

In Georgia, there is very little passenger rail service. Inner metro-Atlanta has MARTA, and there are all of two meager passenger rail lines run by Amtrak: one in the north, and one along the coast. The passenger rail options only directly serve two of Georgia's 10 most populous cities. Plans for extending MARTA to Atlanta's outer suburbs have stalled time and again. There are thousands of commuters into Atlanta, Augusta and Georgia's other largest cities that have no viable alternative except to wade their way through traffic jams day in and day out.

There is a set of nationally designated high speed rail corridors proposed for Georgia. However, I feel that there are real problems with Georgia's current rail plans:

  • The high speed rail only serves three of the state's top 10 most populous cities. It seems to avoid Athens (Georgia's 5th most populous city) on its way from Greenville, South Carolina to Atlanta for the sole reason of reusing the right-of-way already established by the current Amtrak route.
  • It makes a stop in Jesup, with a population of 9k per the 2000 census. Again, there's existing infrastructure here (an Amtrak station), but high speed rail benefits from as few stops as possible, so you want to make those stops count.

Atlanta was founded as a rail-town. Certainly Georgia ought to be able to reclaim some of its legacy by building a modern passenger rail system for its citizens.

better serving urban population centers

Georgia's most populous cities

Atlanta: 519,145

Augusta: 192,142

Columbus: 188,660

Savannah: 130,331

Athens: 112,760

Sandy Springs(1): 97,898

Macon: 97,606

Roswell(1): 87,807

Albany: 76,939

Alpharetta(1): 65,168


Johns Creek(1): 62,049

Marietta(1): 58,478

Warner Robins(2): 48,804

Valdosta: 43,724

Smyrna(1): 40,999

East Point(1): 39,595

North Atlanta(1): 38,579

Rome: 34,980

Redan(1): 33,841

Dunwoody(1): 32,808

(1) exurbs of Atlanta  (2) exurb of Macon

Part of the dilemma with providing effective rail service in Georgia is that the population is so spread out. The term "exurb", denoting the ever-expanding tracts of suburban living farther and farther from urban centers, could do with no better example than the metro-Atlanta region. Per 2007 figures (via Wikipedia), the city-proper of Atlanta is home to 519 thousand people, while an additional 4.8 million reside in the metro area, an area 62 times larger than the urban core. If where I live in Athens is any indication, even within the urban boundaries of most of Georgia's largest cities, the living arrangements are much more suburban than urban, making car ownership a near-necessity and hurting the chance for effective, ubiquitous public transit.

Riddle me this: is it easier to convince more than 100 thousand people to relocate their city to be closer to existing rail structure, or to put down new rail lines that would better serve existing urban centers? This is the question regarding the designated high-speed rail corridor currently proposed traveling from Greenville, South Carolina to Atlanta, bypassing Athens. First, consider that high speed trains can't use existing cargo rail; they will likely require upgraded or entirely new track to achieve the speeds desired, so the only real loss rerouting through Athens would be the existing right of way, not the actual infrastructure.

Next, consider that Athens is home to the University of Georgia, with a student body 34 thousand strong. Student populations typically both have low car ownership numbers but are also highly mobile as they travel regularly between home and school. I expect that a high speed rail link into the Atlanta Airport (and Atlanta nightlife), as well as to cities beyond Georgia, would be most welcome and heavily used by students. This, paired with more ubiquitous public transport within Athens, would likely encourage more students to forego bringing cars to school; increasing safety, reducing pollution and the ever-expanding need for parking space. It might also alleviate the immense floods of traffic that converge on Athens whenever the UGA football team has a home game. Now also consider that all but one of Georgia's most populous cities have significant student populations.

In order to maximize use of inter-city trains (high speed or otherwise) each destination city ought to prioritize improving their public transportation within the city. In turn, public transportation benefits from denser city structure. Making it easy to walk or bike from home to a transit stop, or from a transit stop to a destination, increases the chances that people will choose transit over personal cars. It is also an endorsement for mixed-use zoning, which brings destinations of all kinds closer to hand.

of population and density

What is a Car Free City?

In this section I refer several times to the urban design specified in the book Carfree Cities by JH Crawford. Essentially it calls for high-density, mixed-zoning districts strung out in a transit-oriented city topology. For more background, visit the carfree cities website, or take a look at how I mapped this idea onto Athens, GA.

If I had a free hand to reshape Georgia urban and transportation policy to get as many citizens car-free as possible, it would look something like this. First, I am going to advocate that all designated cities follow something approximating the reference design from the Carfree Cities book. To determine which cities ought to receive this treatment, we need to look at some population and labor numbers.

Of the 9.7 million people living in Georgia, over half of them live in the metro Atlanta area. The reference design suggests a population of 1 to 3 million per city; Notice that in the top cities table above many of the designated cities are actually exurbs of Atlanta. To fit the 5.3 million metro-area residents, well designate 3 "sister-cities" linked by an intercity rail loop as Crawford advocates when dealing with populations larger than is practical for the reference design. On a whim I've named the new sister cities after the counties where they reside, but you could also call them collectively ""Atlanta"; and consider each sister-city a borough, similar to how New York City is organized.

3 cities for Atlanta leaves some room for population growth. We'll look at the rest of Georgia in the same light. I've chosen to designate 10 cities for the 9.7 million residents. But not everyone will live in these cities. Some will live in more rural environs, either by choice or as required by their vocation.

From the categories listed in the Georgia Department of Labor 2004 statistics I've gleaned that only 11.9% of jobs in Georgia do not work well in an urban environment (Agriculture and Mining; I've also lumped in Manufacture, to take into account that this may include heavy industry that you would not want in a human-scale city). So, understanding that jobs and population count are not a 1:1 relationship, using a naive model we can start by mapping 12% of the population to the countryside, and count on 88% of Georgians to live in our 10 cities.

These numbers need some padding, though. First, we need to consider that if Michael Pollan is right, we're going to need a lot more hands on the land in order to produce our needed food crops. There are also plenty of jobs that need to be filled in small towns to support non-urban workers. I don't have a good sense of this, but lets take a stab and say that 20% of Georgians will live outside of cities, leaving us with 7.8 million urban residents.

With 10 cities on my map, that gives us a lot of head-room -- anywhere from 2.2 million to a whopping 22.2 million new people. Now, even considering that 2008 estimates of state population indicate Georgia gained 1.5 million new residents since 2000, this is probably excessive. But you will see that I chose to designate cities that are already well-established as major population centers, distributed across the state. The Carfree Cities model speaks of 2 million as a comfortable size and 3 million as a practical upper bound for the reference design; cities can grow into the model by adding districts or transportation loops as merited by population count.

revised rail corridors

So, back to rail. The map here identifies 8 cities across the state as major urban centers. The Atlanta area gets split into three cities to handle the burgeoning population there, bringing the total number of car-free cities to 10. The blue lines are what I feel are a better routing for the currently proposed high speed rail corridors. I've eliminated Jesup as a stop on the coastal route, and included Athens in the Northern Route from Greenville, South Carolina to Atlanta. I've also suggested we extend the inland route up to Memphis, Tennessee, another major urban center and destination in its own right.

I've assumed that it would also be necessary to include a more local service along these same rights of way, though probably not using the same tracks. Particularly while Georgia transitions away from suburban sprawl, and eventually to service towns that support rural vocations, a local service will be needed to make rail available to a larger number of stops than is practical with high speed rail.

Aside from the intercity ring between the three Atlanta sister-cities, the black rail lines represent rights of way and local passenger service between Georgia's other urban centers. Eventually it would be good to see high speed lines laid down along these routes as well.

The speed advantages of high speed rail over car travel for the distances here are significant. 200km/h represents the lower bound of typical high-speed train speeds around the world, and more countries are starting to run trains at 300km/h or greater. I see no reason we should not have the ambition to operate the world's most effective public transit systems in this country.


Transportation is a major element of national infrastructure in any nation. A good metric for setting national priorities is serving the broadest number of people. Among the various transportation options, public transit clearly meets this criteria. Road-building only provides transportation to those who have enough wealth to afford the large up-front costs of purchasing a vehicle, and the ongoing costs of fuel, maintenance and insurance. As we're seeing right now, easy credit isn't an answer to closing that gap either. And even could the economic hurdles be overcome, broadening the availability of car ownership to everyone runs up against environmental limits -- air pollution, increased storm-water runoff from more and wider roads, and global warming.


A recurring complaint about passenger rail in this country is that it seems impossible for Amtrak to make a profit. Consider, however, that the subsidies that go to rail programs are a pittance to the hidden subsidies propping up road and air use. The airlines do not solely fund the construction and maintenance of airports; States and the federal government care for the roads as the public good that they are. And yet somehow we expect rail to be self-sustaining. It is good to see signs that this country is starting to take rail travel more seriously; it is yet to be seen whether this will turn into a sustained commitment, or merely a brief dalliance with sound transportation policy.

ETech 2009: Hopes and Expectations

I've landed in San Jose to attend O'Reilly Media's Emerging Technology conference, thanks to the generosity of my family members, as a deferred 30th birthday present. The theme this year is Living, Reinvented. A large part of the premise of the conference is technology in the context of a world moving from abundance to constraints; how emerging technology can help us cope and thrive under the limits imposed on us by our environment, energy demands, and social constraints.

Looming large behind all of this is climate change. Yet the refrain I have heard many times over the last few years is that the technology for solving climate change is not new - not "emerging". I am not talking about adopting the back-to-the-land, "druid" mentality of Paul Saffo's druid - engineer continuum of climate change solutions. Rather by tapping into existing , sensible crop management, urban planning and public transportation we will find ourselves far along the path to sustainability.

I do believe the personalities behind ETech are genuinely concerned about environmental degredation and climate change; so I am not expecting a simple greenwashing attempt on their part. It is with more optimism than skeptecism that I look forward to the events over the next few days. I only hope that as a conference we do not simply slide back into fetishizing shiny techno-fixes.

Book Review: Beyond the Culture of Contest

As a telecommuting programmer and father of a two year old, I am not the most social of creatures. But I do have several family members who would likely describe themselves as social activists of one stripe or another. I recall one particular conversation on a late night a few years ago with a cousin of mine where I asked whether protest had ever achieved any real change. I am very sorry to say that I do not remember her answer, but by that time I had been exposed to ideas that suggested that there were more constructive ways of effecting change.

In that light, a few months ago I finished reading Beyond the Culture of Contest, by Michael Karlberg. I thought I’d write about it, as I feel it should be on the reading list of anyone interested in sociology or social change.


After a lengthy discussion on what he means by the word “culture” in his title, Karlberg starts his thesis on a discussion on the dual nature of the word “power.” In common, everyday language, we use the word power to mean two very different things, depending on whether we are using it in an adversarial or cooperative context. In adversarial contexts, power denotes coercion, or between equals, a stalemate or at best a compromise. In cooperative contexts, power indicates constructive capacity – the power to accomplish a mutual goal.

Karlberg takes these two notions of power (which he shorthands as “power over” and “power to”) and takes them into the rest of his book to show how the currently dominant cultural institutions reinforce the “power over” mindset. He cites three broad areas of society where the culture of contest is assumed the natural state of things: in politics, the economy, and in legal disputes.

The Hegemony of Contest

For most people in the West, the idea that politics, the economy and legal disputes are competitions needs no explanation. From birth we are surrounded, unawares, by the language and practices of adversarialism. Karlberg demonstrates further how this “normalization” of competition is reinforced by commercial mass media (the “spectacle of conflict”), academia (grades as score-keeping, scholarly debate), and social protest (litigation, factionalization).

He points out that even in where we expect argumentation to produce useful results, as in scholarly discourse, that there are perfectly good ideas and suggestions that go unproposed simply because those who might bring them to the table are not comfortable with the character of the discussion. Rigor is still desired of course, but there are certainly ways to think critically about ideas without the adversarialism. And rather than dismiss these people as wimps, it is more useful to focus on the fact that we as a group are not benefiting from their potential contributions.

Karlberg does admit that there are times when the exigencies of a situation merit conflict in order to prevent disasters large or small. Yet he points out that such times are rare, and the need for adversarialism should not be seen as desirable; such actions can’t address much beyond the immediate crisis, and the residues of conflict can be corrosive to achieving longer-term goals.


But the book really starts to get interesting when Karlberg starts introducing us to living, working examples of the principles he is promoting in the book. It’s a glimmer of a way of interacting with each other as we might choose, rather than settle for what we’ve been told is the normal, natural and inescapable culture of self-interest and score-keeping.

The mutualistic practices he introduces us to come from a variety of sources: from cultural movements such as Feminism and Environmentalism, to general techniques such as Alternative Dispute Resolution. And he takes us on a comprehensive tour of the social implications of widespread mutialism as expressed in the Baha’i Faith.

The revelation of these practices as existent and successful was both stunning and inspiring for me. I’m conflict-averse at the best of times, but I had generally taken for granted that we lived in a rough and tumble world, even if I trusted that individuals are intrinsically good. That it is possible to choose another way, and a way that is still potent for solving problems and effecting change, gives me hope that I am not irreparably maladapted for making my way through life.

That’s not to say that mutualistic constructs are easy. Yet often the challenge lies in our development as individuals rather than struggle against external forces. Take, for example, the Baha’i practice of Consultation (collective decision making). It reads like a lifelong task in patience, selflessness, open-mindedness and trust. In brief:

  • It seeks to build consensus in a manner that unifies constituencies rather than divides them
  • It views diversity as an asset for decision-making; opinion and knowledge are widely solicited
  • Upon sharing an idea, an individual has ceded it to the group; neither the flaws nor the merits of the idea reflect on the individual, and the individual must detach themselves from the ideas they offer.
  • As an ongoing goal, participants try to moderate the tone and character of the discussion, in order to respectfully seek the best solution, not as a method to superficially paper over conflict.
  • If a consensus cannot be found, a majority vote will be accepted; it is then expected that every individual will attempt to enact the decision in a unified manner, regardless of their vote. In this way the implementation of the decision may be evaluated solely on its own merits, without doubt as to whether individuals are passively or actively sabotaging it.
  • By extension, ideas can be readily reconsidered if in their implementation they are revealed to be the wrong one.

I find it important that the challenges presented by such a model can develop qualities in each of us that a great many people consider unalloyed virtues. Compare them with a few of the adjectives we often hear associated with being effective in the province of competition: aggressive, cut-throat, ruthless, and dominating; qualities that are more likely to win you sycophants and enemies than friends.

Karlberg is careful to rigorously define the vocabulary with which he describes the subject of cultural interactions, and includes generous endnotes and a lengthy bibliography. In his quest for accuracy, though, Karlberg hews to a style that is dense, precise, and methodical. It is not light reading. I found I absorbed his ideas best piecemeal, leaving myself time to ponder their implications a few pages at a time.

Ultimately his thesis does not discard the notion of competition wholesale. A quick etymology search on the word uncovers the latin origin -– “Strive together.” Competition can be useful when its venue is limited, and done in the proper spirit. What Karlberg proposes is that adversarialism is not our natural social state, but rather only seems so because our current cultural institutions have accreted over time to reinforce conflict rather than mutualism. We have lost much of the togetherness, and are left with only the striving. He asks us for a certain mindfulness, so that we might maintain an awareness of when we find ourselves slipping into the memes of conflict, and what we might do to bring us closer to a world of mutualism.

Personally, I am starting to wonder if our habits of adversarialism developed at a time when the world was far less crowded. It was both possible and easier to separate yourself, spatially or socially, from those you did not agree with rather than work to live with each other in harmony. Now, there is no “going away” – you just wind up in someone else’s back yard. What would the world be like if we all started treating everyone we met as someone we would have to live with for the rest of our life?

I do not think, given the entrenchment of our current cultural institutions, that we can expect a shift to begin with any sort of top-down change. Indeed, such mandates may be fundamentally antithetical to mutualism, which governs by consensus rather than by edict. This is grass-roots stuff. It requires individuals to take it to heart – bring it into their families, their peer groups at work and in their community. Living in this way is a learning process, and you can’t learn by proclamation, only by practice.

Your Mission Should You Choose to Accept It

At least in the field of computing, this is the engineering holy grail of our time:

...if you were an analog alien floating around in some kind of off-the-grid Galactica you might look down at one of our data centers and see 4MW going in and a mere few hundred watts coming out through an OC-48 fiber trunk and wonder "what the hell?" Watching it spew entropic HVAC waste heat, those bemused aliens could be forgiven for concluding that that these buildings with no obvious use must be massive sacrificial alters where silly humans offer up electricity and make their wishes or say their prayers (well, perhaps we do).

some context:

...given that a data center is really just a vast state machine, it would be really cool if its efficiency was tied to some kind of intrinsic cost of state transition rather than to trillions of leaky circuits. After all, cars burn a lot of gas, but the energy they use is at least in the ball park (an order of magnitude or so) of the intrinsic cost of moving their mass against friction and pushing air out of the way. But for data centers the real intrinsic cost is probably damn near zero, we're ultimately only processing information after all. So, all those megawatts are tied instead to the massive current leakage associated with the fact that we choose to maintain state in silicon instead of something more elegant (but currently impossible). Viewed as a physical system, data centers are about as efficient as a well cooled warehouse full of burning light bulbs

Rethinking Cities

Lately I've been thinking about the adverse impact of cars on our landscape. Most familiar are of course oil use, pollution, noise and traffic. Less commonly discussed are things like:

  • fatalities, injuries and accidents compared to other forms of transportation
  • miles of pavement in the form of parking lots and roads which contribute to stormwater issues
  • the sprawl of suburbia enabled by widespread car ownership.

But beyond even these things, I've started thinking about:

  • the primacy of cars and trucks over pedestrian and bike traffic (is it a natural condition to fear for your life walking across a road?)
  • the space taken up by the industries supporting or necessitated by a car-ful society (dealers with oceans of parking lots for their unsold vehicles, mechanics and gas stations)
  • the wasted time of police monitoring vehicle traffic.
  • how people can feel stranded and isolated if they do not have a car to travel the ever-increasing distances from where they live to where they need to be to work, socialize and shop.

There are surely more.

This line of thought started early this spring when I found Car Free Cities via a comment on Colin Beavan's blog. It described a plan for urban life that eliminated the need for cars (and trucks and buses). The stated goals of the car-free plan reclaiming urban space for people rather than vehicles, restoring social fabric and quality of urban life, with an eye to environmental benefits and energy efficiency.

I should note right away that this is only a design for cities. As the author JH Crawford states, there is no clear, desirable solution for eliminating cars and trucks in rural areas.

Design Metrics

There is an extensive list of design metrics that Crawford lists in his book to inform his design. Some of the broader aspects of the results are:

  • A reference design that comfortably supports 2 million people working and living.
  • Walkable mixed-use districts connected by mass transit depots at the center of each. A topology of districts that maximizes public transportation efficiency.
  • Streets limited to pedestrians, bikes, with permits for low-speed electric vehicles, and when necessary emergency and construction vehicles.
  • Ample green space within a short walking distance from every front door.
  • An average building height of 4 floors, of varying unique architectures.
  • Freight and mass transit handled below-grade by separate subway lines

A Car Free Athens

The idea looks radical, but reasonable. It tries not to make too many decisions about how we lead our lives aside from three: transportation, density, and green-space. There are suggestions and implications within about energy generation, urban social life and more, but these are ideas rather than prescriptions.

I wondered what it would look like in the city I now live in. A lot of the talk on the car free forum is about building districts or even whole cities from scratch, but I was more attracted to the idea of transitioning the existing areas of the city to the new design.

Athens has no subway (it has a growing bus system), a vibrant downtown and a lot of suburbs. Its major roads are actually already laid out radially which could be well suited to adapting it to the reference topology Crawford presents. So I started delving into what I could find online for maps and reference data. My goal was to hew closely to the plan advocated in the book, and so I wanted to understand what existing infrastructure and institutions could be accommodated, and which would have to go.

I mapped out the existing hospitals and schools, historic districts, bodies of water and took into account where metro stops could line up with existing roads, where they would be immediately useful even before the city went fully car free. I found that I couldn't quite get all the schools to fall within the urban districts using the reference topology, but those which did not make it in were few. I should also note that my current house would not fall within the diameter (just barely) of the carfree city design. Likewise the historic districts didn't line up well with the plan for the car free districts, but in truth most if not all of these historic homes are single-family units of no more than two stories -- it is unlikely they would provide the necessary density as advocated by the car free plan. Crawford advocates green space surrounding all the urban districts, and with good cause, but exceptions could be made for the sake of historic preservation.

One of the major stumbling blocks for building a subway system as advocated by Crawford is Athens' topography. If you've been to Athens you'll know it's fairly hilly in places. As one example, from the center of downtown to the river there's an elevation change of 53 meters over a 700 meter distance. That 7.9% grade is far steeper than ideal grades for a railway which do not exceed 1%.

Grade separation (keeping different modes of transportation from interfering with each other) is paramount to an efficient mass transit system. Ideally (for issues of weather cover and train automation) the whole system would function best underground. However, given the extreme changes in elevation around downtown there may need to be some compromises. These would probably be done at either extreme; burying some of the highest elevation subway-stops deeper underground than would usually be done, and having the subway emerge onto an elevated track over some of the deepest valleys.


Stages of Development

The Walmart District

To get a practical sense of how big one of these walkable districts is, I overlayed a circle of the proper diameter (760 meters) on one of the shopping areas in Athens. What you see here is a Walmart (white roof) and a Lowe's (dark roof) off one of the major arteries southwest of Athens. The large patches of dirt are now strip malls. So the car free plan would provide housing for twelve thousand people and work for eight-thousand (for the sake of calculation, schooling is considered "work" for the children of the district) in the space of two big box stores and two strip malls. This may feel claustrophobic to those used to suburban living (I'll attest to that myself), but take away the noise, pollution and expanses of pavement for driving and parking cars and trucks, and it instantly becomes a much more pleasant place to be.

Putting aside for the moment that Athens isn't even currently considering a subway, what could the stages of development be to transition the city to the car free plan?

I think I would start with making downtown progressively car free. It is already a heavily pedestrian environment, given that the UGA campus is just to the south of Broad Street. It would help acclimate people to car free living. The many parking lots could be turned instead into more shops with living spaces on the upper floors.

Ultimately I would look to make the north-south streets into pedestrian right-of-ways (bikes allowed but with caution), and the east-west streets as bike-ways (with ample room on the edges for pedestrians, of course). I'd probably start by turning College Ave into a series of plazas, intersected by the east-west roads, as this is the heart of downtown. Next the city could limit downtown delivery vehicles to blocks of time in the morning and night, similiar to Lisbon's Bairro Alto area.

The other item that could be changed early on is to rezone the areas that would become car free districts to allow for mixed use and to allow a building height appropriate for the desired population density.

The biggest undertaking would be to begin building the subway. Securing the rights of way for the trains (both passenger and freight) will probably be as big an issue as finding funding for the system as a whole. That sort of work ought to begin immediately, as you do not want people investing in and building on space that will ultimately be reclaimed for the transit system.

The subway will have to be built in stages, if for no other reason than that Athens does not have the population to merit as extensive a system as laid out in the reference topology. The city's population is just over 110 thousand, a mere 5 percent of the suggested city in the book. Whether it makes more sense to develop one of the 3 subway lines at a time, or start on them all from the middle out and extend them as the population merits it, I do not know. In either case, while the ends of the line or lines are under construction, the subway can begin to operate on the finished sections by shuttling back and forth until a loop is complete.

The other subway question is when to introduce the "metro freight" concept, where all goods coming into and leaving the city are transferred by standardized shipping containers on a below-grade rail system. Getting people out of their cars and into mass transit is only half the equation. We will still be saddled with the noise, pollution and safety risks of surface vehicles if we do not have an efficient and desirable way to move goods around. I would suggest that this won't be viable until at least a few of the "utility districts" proposed in the car free plan are implemented, complete with a well developed intercity rail link for freight.

Intercity rail for passengers will need to be addressed as well. For the forseeable future there will still be a large number of commuters into metro-Atlanta, and it would be a shame if they had to take the subway out of the edge of the city only to have to get in their car and drive the rest of the way in. A commuter rail link has been a long time coming, and it's unclear when that will finally come to pass.

Other Considerations

While working through the car free idea I've gathered a number of ideas and considerations not mentioned in Crawford's writings:

Passages for wildlife: each district is connected to its neighboring district by a boulevard for bike/ pedestrian/ emergency vehicle traffic. Since the rest of the district borders on green space, it would probably be wise to engineer wildlife corridors under or over these roads.

Private outdoor space: something I am used to as a resident of suburbia is private outdoor space to cultivate as I choose. Is this something that is inherently impossible in a city? Is my gardening/landscaping hobby not compatible? Would we need to be able to afford a "country home" to indulge in these hobbies? Does that leave this activity only available to the wealthy?

Subway station designs: Having been an architecture student in a past life, I'd like to think that we could make subway stops that are bright and full of natural light, rather than feeling like caves. Crawford's plans puts the metro stops under the main boulevard running through each district. This may be an efficient use of space, but limits the sort of architecture possible to make them inviting spaces.

Hospitals: Crawford mentions locating hospitals in the middle of the green space within each subway loop. I would rather see that remain green space and instead see clinics built in each district.

Planning: It might be a useful planning tool to have a heat-map of the age of all buildings/locations in the existing city. Both for historical preservation and for individual sentimental value, it may be hard to persuade citizens to raze older structures as part of the reorganization of the city. It could bias districts to include these areas rather than leaving them in the designated green areas for reclamation.

Misattributed Motivation

It seems to me that legal fines, late fees, or other sorts of punitive charges paid to municipalities, states or the federal government ought to go into a rainy-day or special projects fund. This would force government to budget based on taxes and other more regular and predictable sources of revenue. This would have two obvious benefits:

  • It would help the government to save for either hard times or worthy special projects that would otherwise be too costly.
  • It would take away the monetary incentive behind levying fines and focus more on the appropriateness of the punishment.

That second point is the important one. If the motivation for enforcing rules is to bring in operating revenue for government and law enforcement (the seizure of drug money to fund the purchase of policing equipment, for example) rather than simple justice, the metrics for which issues to focus on become skewed.

Reversing this, without the monetary incentive the importance of the infraction itself becomes the metric for enforcement rather than the cash benefit.

That seems a much more just way to apply the law.

Explain Yourself (but Don't Repeat Yourself)

The Making of Pod::Literate

Some time ago I encountered the concept of Literate Programming. I was intrigued by the idea but never really explored taking up the practice. I don't really remember why, though it probably had something to do with a lack of tuits and no obvious support for it in my main language, Perl. I also was not really at a point in my programming career where it would have occurred to me to implement tools for Literate Perl.

I was reacquainted with it more recently when I started to learn Haskell, which has native support for literate programs. Haskell is a language that has some intrinsic appeal for me that I can't quite put a finger on, but again between not having yet grasped the Haskell mindset and not having time for a new project I let that slip by too (I suspect the former will not occur until I have time for the latter).

More recently I've been on a DRY (Don't Repeat Yourself) kick in my day-to-day programming. Of course I'd always practiced DRY to some degree, but lately I've been getting more insistent with myself that I really keep on top of duplicate or near-duplicate code.

This probably came to a head when I read Steve Yegge's rant about code-base size. The code base for my main projectis large enough that I don't visit all it's layers, nooks and crannies on a regular basis. The main problem of code maintenance as many programmers will attest is memory loss. Our own, that is. Remembering why you wrote code they way you did when you haven't seen it in a week, much less months, is a major hurdle when returning to it. The two solutions I see to reduce the effects of memory loss are solid documentation and reducing the amount of code that needs remembering in the first place. Naturally, I chose to look at the latter.

Dispensing with Boilerplate

I imagine that any programmer who takes DRY seriously will at some point take a hard look at boilerplate code. More incantation than instruction, boilerplate code tends to have a very low signal to noise ratio; most of the code is instead there to make the compiler happy.

Being Perl, most of the boilerplate code was of my own making. So I hacked and refactored and experimented with shorter ways of expressing the same intent (another story for another time) and made some good headway towards weeding out the verbosity of my code, without sacrificing (and in some cases enhancing) clarity.

As all good things must be taken to extremes, eventually I started eyeing some of the standard Perl incantations and wondered about doing away with them.

First, library files (modules) in perl must have a final statement in them that evaluate to true in order to compile. I am not clear on where this legacy comes from, but the convention to make sure all is well with your module is to append a "1;" at the end of the file to keep the compiler happy. A whole whopping 2 characters, but it wasn't adding any meaning to my code, and I aimed to remove it.

Second, best practices recommend coding under &"tric"; mode, and at least during active development, under "warnings" mode as well. This makes the Perl interpreter the least tolerant possible of your errant ways, and I take these best practices to heart. In fact, the forthcoming 6th version of Perl makes "strict" the default state, so rather than pronouncing strict mode at the top of every file, you instead only declare when you intend to be naughty by explicitly shutting off strictures. I (and many others) are impatient for Perl6's arrival, and I decided I wanted this little bit of code reduction here and now.

A Preprocessor

These got me thinking about writing a preprocessor. I didn't want to give up strictures, and I needed the compiler to accept my modules, but I also did not feel it was doing me any meaningful good adding these incantations to each of my files. The ""1;" for the module was legacy nonsense and the strict and warnings pragmas were policies I'd rather set once across my whole project rather than for each file. So I figured I could add these in programatically.

At about this point I ran across the literate programming idea again. I figured that as long as I was already running my code through a preprocessor, I may as well have it convert my code from a literate style at the same time. I can't really recall what I ran across that brought it up, but by some route I found myself reading an older article by Mark-Jason Dominus, Pod is not Literate Programming about how POD lacks certain key features of a literate programming system. He pointed to noweb as a language agnostic tool for Literate Programming, but for some reason that did not appeal to me. I thought, well, this is Perl! There must be something on CPAN.

And indeed there were several attempts on CPAN at implementing Literate Perl, but none addressed one of MJD's core issues with Pod, which was that it doesn't let you rearrange your code from human-reading order to compiler-reading order.

The closest I found to what I wanted was Audrey Tang's Filter::LiterateComments. She chose a style very much in keeping with Haskell's notation, which is unsurprising given her background with the language. But being a source code filter it never had a chance to do code reordering, and on its own it would not be able to create typeset documentation.

Pretty Documentation

Now that I was committed (in both senses of the word) to writing a preprocessor, I wanted to one-up the typesetting question by prettifying the code as well as the explanation in the documentation. I knew there had been some work done with PPI to do syntax highlighting, and I had already decided to rely on Perltidy to enforce code formatting conventions. Further, I recognized that there were several perl operators written in ascii (such as -> and =>) that were really just stand-ins for untypeable symbols. I figured in the interest of legibility I ought to replace them with their intended entities in the documentation.

So the plan involved extracting each code block in the source code, running it through perltidy, then PPI::HTML, and then doing a search-and-replace on operators that were stand-ins for more legible symbols. That way something like this:

    sub dump_code {
        my ( $parser, $extension ) = @_;
        my $source;
            <<replace anchors with code snippets >>
            $source .= "use strict;\n"   if $parser->{_use_strict};
            $source .= "use warnings;\n" if $parser->{_use_warnings};
            $source .= join(

                map( { $parser-&gt;{_code}{$_} }
                    grep { defined $parser-&gt;{_code}{$_} }
                        @{ $parser-&gt;{_code_sections} } )
            <<source code amendments based on file type>>
            return tidy( $source );


into this:

sub dump_code {
my ( $parser, $extension ) = @_;
my $source;

«replace code anchors with code snippets»

$source ⋅= "use strict;\n" if $parser{_use_strict};
$source ⋅= "use warnings;\n" if $parser{_use_warnings};

$source ⋅= join(

map( { $parser{_code}{$_} }
grep { defined $parser{_code}{$_} }
@{ $parser{_code_sections} } )

«source code amendments based on file type»

return tidy($source);



As a tool for literate programming, naturally I wanted to be able to write the library itself as literate perl. The dilemma of course, is that the literate format can't be executed until it's translated into regular Perl. What I found was that I had to first develop the code in a non-literate style, and get to a point where I could process literate perl. At that point I could then run the "compiled" non-literate version on the new literate copy of the module in order to get a runnable version of the newest code.

Where To Go From Here

The system I have written works well, but there are still a few things I need to do before I can release it to CPAN

  • The preprocessor does not spit out a pure POD version of the docs, which is what CPAN wants for module documentation. Indeed, the literate documentation isn't really even the sort of documentation CPAN users are looking for. It may mean putting the overview documentation in a separate pod file, or marking a certain portion of the literate document as appropriate for extraction for use on CPAN.
  • I actually need to write a bit more of the documentation. While the Pod::Literate module and the literate preprocessing script are written in the literate style, there are still some longer code sections that I have not augmented with appropriate documentation.
  • Similarly I have not written any tests. Running it on it's own source code has been a pretty good test in itself, but I know I will get frowns from the community if I ship without a good test suite. For the tests-first segment, I'm sure I'm already getting those frowns.

Then there are a few things I'd like to do (or have done) but aren't critical. I'd really like a literate-aware version of perltidy that I could use to clean up the literate source. Right now it wouldn't know what to do with it. Similarly I'd like to investigate what it would take to make Perl::Critic compatible with the literate style files.

Pod::Literate source

URI Escaping in Haskell (or, reinventing the wheel in style)

As part of my efforts to learn more about functional programming in general and Haskell in specific, I chose a small project that was tangentially related to the work I do in my web programming work at Enterity. If anyone out there knows of a built-in for converting from Int to Hex and back again, I'd be much obliged. I didn't see anything skimming the standard libraries via Zvon.org

module Main where

import System.Environment
import Char
import List

main :: IO ()
main = do args <- getArgs
          case ( args !! 0 ) of
              "encode" -> putStrLn ( encode $ concat $ tail args )
              "decode" -> putStrLn ( decode $ head   $ tail args )

-- --------------------------------------

encode :: String -> String
encode str = concat $ map encodeChar str

decode :: String -> String
decode ""     = ""
decode (c:cs) = case c of
        '%'       -> fromHex( take 2 cs ) : decode( drop 2 cs )
        otherwise -> c                    : decode cs

-- --------------------------------------

encodeChar :: Char -> String
encodeChar c =
    case isLegalChar c of
      True      -> c   : ""
      otherwise -> '%' : ( toHex . ord ) c

isLegalChar :: Char -> Bool
isLegalChar c = any (c==) ( [ 'A' .. 'Z' ] ++ ['a' .. 'z'] ++ [ '0'..'9' ] ++ "-_.!~*'()" )

-- --------------------------------------

toHex :: Int -> String
toHex 0 = ""
toHex x =
    let rem = x `mod` 16
        in toHex( ( x-rem ) `div` 16 ) ++ [ toChar rem  ]

fromHex :: String -> Char
fromHex hx =
    let a = fromChar $ head hx
        z = fromChar $ head $ tail hx
        in chr( a * 16  + z )

-- --------------------------------------

toChar :: Int -> Char
toChar x = ( [ '0' .. '9' ] ++ [ 'a' .. 'f' ] ) !! x

fromChar :: Char -> Int
fromChar x = case findIndex (x==) ( [ '0' .. '9' ] ++ [ 'a' .. 'f' ] ) of
                 Nothing -> 0
                 Just y  -> y