Manufacturing guy-at-large.

A rural community at the heart of it

Added on by Spencer Wright.

As you may know, I'm fascinated with Chinese history and culture. I also like thinking about the way things are made and how that affects people. This article, then, was excellent: A thorough essay on Chengzhongcun, the urban villages that, now subsumed by cities like Shenzhen, play a distinct and unique role in Chinese urban culture. 

So, apropos of just that much, here are some passages that I thought were really great - partly because they feel so much like my (limited, for sure) experiences in urban China, but also because the vision of urbanity they describe are so much like the daily life that I want for myself.

The Chengzhongcun is a vibrant place which is alive twenty-four hours a day and there is a constant hum of activity. The ‘handshake buildings’ over look one another and it is easy to see directly into your neighbor’s living room. These facts should not be considered a negative, but they are the consequences of living at such a high density. It can be argued that such a model of living would not be acceptable in a Western society but in the Chinese context and culture this model is perfectly acceptable and actually thrives.

The boundaries between private and public within the Chengzhongcun as so blurred that even your own home becomes part of the public realm being overlooked. It can be said that this layered living actually reinforces a sense of inclusion and a sense of belonging almost, a sense of belonging to a place and a community. Unlike living in a faceless gated high-rise were you are sealed in your own apartment, living in the Chengzhongcun binds you to a place, you are constantly aware of the environment you are living in and constantly feel part of a wider social group. This is perhaps how a social trace of a village community has remained despite all physical traces of the village disappearing.

The constant flow of daily life spills out onto the alleyways and brings with it a vibrancy which can only come from people living on top of other people. The constant social interaction and the constant feeling of an urban society that is ever present within your life. The fact that everything you need from supermarkets to workplaces to entertainment is literally round the corner. These are elements that a mega-city designed in zones of activities and connected by vast transport links can’t replicate and these are the exact characteristics that give the Chengzhongcun their atmosphere and sense of place...

Only in China can the most extreme form of urbanisation be said to have a rural community at the heart of it...In fact an urbanism with community and social interaction, one which has grown out of a rural beginning can sit just as comfortably within the context of that most 21st century form of a mega-city like Shenzhen...
I believe if you truly want to understand contemporary China then you should try and understand the Chengzhongcun. The traces of history mixed with pragmatic development, the hap-hazard approach and determination to achieve progress, the self-regulation and social cohesion, the density and intense atmosphere of social interaction are all elements that are present at all levels of Chinese society. Here in the Chengzhongcun they are exaggerated and amplified given an insight into the Chinese mindset. For me the Chengzhongcun are in their way a summary of China at this moment in time. To have architecture achieve this is quite special, it was organically produced from the people themselves and the value lies with the villagers and migrants who live in these places, the people who produce the vibrant lifestyle and preserve the ancestral heritage and create their shared communal living. It is that quintessential Collectivity through Individuality that is so appealing and produces these fascinating communities and fascinating communal urban space that is uniquely Chinese.

All I know is this: they're doing *something* right.

Seatpost testing post-mortem

Added on by Spencer Wright.

This week I got my seatposts back from testing at EFBE. As you'll recall, these failed ISO 4210-09:2014, 4.5.2. 

The part's nomenclature

Both seatposts failed in essentially the same way: The shoulder straps rotated backwards, breaking the skirt in two locations and cracking both of the side legs as well. The front of the skirt separated completely from the carbon fiber post at the bottom, and the top/front of the seatpost cylinder appears to have slipped upwards (sheared) as well.

The "BLING" part (see this post for details on the difference between the two samples) failed slightly before the as-printed version, at 70,770 cycles. It's a bit hard to tell in the photos, but there are definitely some areas where I didn't have enough glue to form a complete bond. Part of this is operator error (i.e. my fault for not assembling the seatpost well), and part of it is engineer error (i.e. my fault for not designing the seatpost so that it could be assembled by any grease monkey). 

The as-printed part failed a bit later, at 80,904 cycles. Again, close inspection shows that the glueline had many defects.

I take a few lessons from this:

First, it's clear that my assembly design needs to be improved. It's possible that the part still would have failed with a better glue joint, but at this point in my process it's important that I'm able to isolate possible issues - and variations in bond quality makes that *really* hard. I suspect the best approach here is to make the glue cavity captive, such that during assembly the uncured adhesive is forced to fill the full volume between the seatpost head and the carbon fiber post.

This likely means eliminating the windows from the seatpost cylinder. It also means either creating a double lap shear joint (like Robot Bike uses) or making the joint blind on both sides (by capping the end of the carbon post, which I did on this assembly, *and* closing the top of the seatpost cylinder, which I didn't do). 

Second, I should probably be HIPing these parts - at least until I've isolated everything else and determined whether, and how, HIP affects performance.

Third, I'd like to dial in the inner diameters of both the seatpost cylinder and the saddle clamp cylinder. The latter can probably tolerate a bit of play, but the former directly affects the glueline and should probably be controlled more tightly.

On the upside: The failure mode on these parts wouldn't have hurt the rider, whereas failure in the shoulder straps could have been dangerous. In addition, I've got a chance to try this again - with the parts that REM treated for me recently. I won't be able to change the original design at all, but I can at least try to see whether a change in technique can improve the glue joint.

Regardless, it's good to get tested parts back. More soon!

Note: Thanks to Addaero Manufacturing for printing these parts, and to MicroTek Finishing for finishing them!

The Prepared - Where it's at, and how I'm doing with it

Added on by Spencer Wright.

Recently The Prepared, my weekly manufacturing newsletter, crossed 1000 subscribers. As a result of this (and because it's been on my mind for a few months), I wanted to post an update to the role that The Prepared plays in my life, and how I see it working in the future.

I'm going to cover three areas in this post. The first is about the actual execution of The Prepared - the time spent curating and creating the newsletter every week. The second is more operational, and covers the underlying infrastructure (and cost) required to make The Prepared happen. The third is on the impact that The Prepared has had on my own life and career - and, to the extent that I'm aware, the impact that it's had on my readers.

How The Prepared is made

The Prepared was spawned as a result of my own reading habits; its original purpose was to track and share the things that I felt might be important for me to know in the future. I read something like 50 articles per week. I don't have current stats, but in previous years that's worked out to between 4 and 5 million words per year, which at a speed of 273 words per minute (roughly my rate) averages to 5.5 hours of reading per week. Most of that happens on the subway, which I ride for roughly 5 hours per week (two half-hour commutes per day), and the rest happens in waiting rooms or while I'm on a plane taxiing around the airport (I can often blast through a backlog of reading while traveling). 

But reading is only part of it: Even after spending five or six hours a week reading and filtering down to a few dozen shareable links, I still need to actually compose the newsletter. This usually happens on weekends, and takes at least an hour or two. All in, I'd say that the average newsletter represents roughly seven hours of work - a commitment of over 250 hours per year.

I enjoy doing it, and a lot of the reading I'd do anyway. But it puts some pressure on my life - and I've spent a bit of time thinking about how that can be reduced. To start, I've asked Eric Weinhoffer - a subscriber to The Prepared - to curate the newsletter on a few occasions. I've been thinking of expanding my guest curation program, though I've been conservative about doing so. If you're interested in being a guest curator, let me know - I'll put you on my list.

Overhead & Infrastructure

The Prepared's stack goes Pocket -> IFTTT -> Gmail -> Mailchimp. For a long time, this whole process was free, but recently I've upgraded both my Pocket and Mailchimp accounts; the total annual cost of these is $344.99.

I've also put a bit of money into paid advertising. I bought ads on Twitter, Facebook, and Reddit, spending $40, $25, and $75 respectively. I did this as an experiment, to see who would sign up and how expensive it would be to expand The Prepared's reach. Of the three, I found Reddit to be a bit more effective - I got more referral traffic per dollar than Facebook, and longer session times as well (my Twitter ads were a leadgen campaign, which allowed users to sign up directly from the Twitter app; as a result it's a bit harder to compare results there). I'm not sure whether I'll continue to use ads to expand The Prepared's reach, but I'm glad to have seeded a few new users that I might not have been able to reach organically.

On the other side of the equation, I recently began soliciting donations for The Prepared. To date, I've received $76.25 from five readers, which averages out to about $0.07625 per reader. My hope is that I can bring in an average of $5 per reader in the second half of 2016 - an amount that seems ambitious, but not unrealistic. 

Speaking of which: If you read The Prepared, you should consider donating! As outlined above, it takes about 250 hours per year PLUS $344.99 in fixed costs per year. If you donate $5 per year, then that values my time composing and sending the newsletter at about $18/hr - a pretty fair wage, if you ask me.


It's a bit surprising to say, but somehow this weekly email - which I started without really wanting it to be a thing - has become one of my primary calling cards (the other big one is "the bin of broken dreams guy"). I get 3-5 emails about it every week; some are from people I knew before it started, but most are from folks who I probably would have never met otherwise. Usually one or two of these is a link submission, but many are just someone saying hi - something I never expected to happen. It feels great.

I've also developed a handful of significant relationships through The Prepared. I've met a few dozen subscribers in person, and have on many occasions turned to them for specific advice or expertise. I've also connected a few subscribers to each other, and on at least one occasion this has resulted in someone being hired for a job. 

Moving forward, I want to continue making The Prepared a way for people to connect and share ideas. Despite my slow rollout, I'm excited to have more people curate, and I want to find more ways to connect The Prepared's subscribers directly too. This probably means organizing meetups or drinks more often; I've also considered setting up an online meeting place.

The Prepared has taken up *way* more of my time than I could have ever anticipated, and has bought me more in return than I could have possibly hoped for. Here's to its continued expansion, and whatever the future brings.


Added on by Spencer Wright.

It's been more than a month since my last blog post. This is a result of a bunch of factors. Some of these are personal (it's summer, and I'm moving into a new place soon, and I've been conscious to maintain some personal time) and some of them are businessey and good (we've been *very* busy at nTop, including some big product updates), and some of which are more random (most of my projects are in holding patterns right now and there hasn't been much to update). 

Because I care, though, here's a quick recap of what I'm working on:

  • A new run of Public Radios. I've got a few small speaker changes in my backlog, and we're still chugging away at a few circuit updates. 
  • A printed lattice stem. I hope to have an update on this in the next week.
  • An update on my printed seatpost testing. I got the failed parts back last week, and want to write up a short post on those results. I'm also still sitting on some parts that were HIP'd and treated by REM, and I'm planning on assembling and then testing one of those too.

Totally separately, I spent an hour today updating some drawings for the parts for the leather wallet I made a few years ago. I made them in order to explain how to repair the hand stitching on the wallets, but the drawing looks nice (I usually think drawings look nice) so I thought I'd post it here. 

So, there you have it. I should have some updates here on some of these things soon :)

Seatposts, tested

Added on by Spencer Wright.

Today I got word from EFBE that two of my EBM seatpost had been tested - and failed.

These are the as-printed and the "bling" samples (see this blog post for details); they failed after 80,904 and 70,770 fatigue cycles (at 1230N), respectively. As a result of their failure, I decided to not test the third "fatigue resist" part.

I'll write up a longer description of the results soon, but two thoughts here:

  • These parts were *not* HIP treated - which might possibly have helped their fatigue resistance.
  • It appears that some delamination occurred between the printed parts and the carbon fiber post, which makes me question whether the glueline itself was faulty. If so, it's possible that by improving my glue joint I could have relieved some stress from the printed part. Regardless, I will note that the glueup process was kind of a pain in the ass - and I'd like to redesign that anyway.

As it happens, I have three more of these parts on my desk now. They *were* HIP treated, and I intend to glue one of them up and send it for testing. It won't be a perfect 1:1 test (these parts were treated by REM Surface Engineering, through a different process than MicroTek uses), but the results will be interesting at the least :)


(Another iteration of my) Bike stem

Added on by Spencer Wright.


The lattices here were, obviously, designed in nTopology Element Free (which is free!). I happen to have done the mechanical design in Inventor, but the rendering was done in Fusion 360 (effectively free, and totally capable of doing the mechanical design as well). I separated face groups and remeshed surfaces in MeshMixer (free!), and very well could have done the booleans there too (I used netfabb).

^ I just think that's a bit remarkable.

Anyway, it's ready. Printed part (DMLS titanium) soon.

An industrial map

Added on by Spencer Wright.

On a lark a week or two ago, I started putting locations of industrial stuff (factories, research centers, corporate headquarters, etc) on a custom Google Map. Many of these I've been to, on either public or private tours; others I hope to visit in the future.

If you know of somewhere that you think I should add, give a holler! I'd love to add more - especially if I can swing a tour :)

Being in New York

Added on by Spencer Wright.

A few days ago I went to hear Ron Conway, Fred Wilson, and Michael Bloomberg speak about investing, entrepreneurship, and civic engagement. At a few moments during the event, the conversation turned to the current state of business (specifically startups) in New York City, a topic I've been thinking a lot about recently.

I feel passionately about working in New York. So much good work - across such a wide range of disciplines - has been and is being done here. And between the vast feeling of cross-pollination, and the fact that people come here specifically to do stuff of historic proportions - to make the most of their lives - is unlike anywhere else I've ever been (outside of urban China).

On a daily basis I look up and feel these pangs of energy, and wonder, and appreciation. I feel it talking to the Burmese cab driver bringing me back down North Conduit Ave from JFK. I feel it walking off the A/C train, and out through the old AT&T Long Lines headquarters, and onto Canal St and the morning in lower Manhattan. I feel it when I'm walking my dog around Bed Stuy at night and look up, through streetlights dappled by sycamores, to nod at someone smoking a joint on their stoop.

And I feel it in my work. As Bloomberg said this evening: If you want to make a business that serves the world, you need to go where the world is. And I believe that it is here more than anywhere that the many aspects of human life and work coexist best.

NYC has proven time and again that it's capable of spinning up and maturing fully fledged industries. And while many cities tend to go from one primary industry to another with little overlap, NYC somehow manages to grow and sustain many world-class operations at once. This is perhaps the most powerful part of working here: the ability to cross from industry to industry on a daily basis, and to develop long term relationships with people operating in totally different time scales.

I'm enriched by it. It's a world class place to work, and there's no better city to spend your life in.

Teardown: Nerf N-Strike Jolt Blaster

Added on by Spencer Wright.

Last week I led a bunch of NYC hardware folks through a design for manufacturing exercise in which we tore down inexpensive consumer hardware and tried to understand how they had been engineered for manufacturability. It was fun seeing a range of things be taken apart, and I wanted to do the exercise myself here.

I chose my favorite product of the night: A Nerf N-Strike Jolt Blaster, sold on Amazon for a whopping $5.99. 

Note that I discarded the packaging before taking my camera out. It was very simple - a piece of printed cardboard, a thermoformed plastic sheet, and two pieces of clear tape.

The blaster (I guess I'll use "blaster" here instead of "gun," though it seems a bit silly) comes with two darts. I took those apart first. They're made of two parts: a piece of cut-to-length blue foam tubing and a piece of molded orange and white rubber. They're glued together, probably with cyanoacrylate aka crazy glue - everything in the blaster seemed to be glued together with CA.

Next I removed the four screws at the base of the handle. These were the only screws in the entire product, and they're installed directly into the molded plastic body so no nuts are needed.

Next I removed the two rubber parts on the plunger, which had a light coating of lubricant on it. First there was an o-ring, and then there was a molded button-shaped part which was installed underneath a rivet.

With the rubber parts off, I pried the rivet (which had a barbed shaft and was pressed into the end of the orange plunger handle) out of the assembly. 

Next I removed three orange parts off of the barrel of the blaster. These appeared to be completely cosmetic.

Next I removed the blue plastic cap off of the back of the blaster. This has little false screws (colored blue as well), and was glued into the blaster body pretty securely. Behind it was a light gauge spring and the dart drive mechanism itself.

Lastly, I pressed the trigger pivot pin out of the blaster's body. I used the cap from a small brass container I made a few years ago to hold the blaster off of the vise jaw, and a torx driver bit to push the pin through the blaster body.

Here's the entire product disassembled:

The whole blaster has 24 individual parts, plus packaging. The full BOM would have 21 parts on it, plus cyanoacrylate glue and two pieces of tape. It's possible that the screws and trigger pin come off the shelf (and conceivable that the o-ring and possibly the springs do too, though I suspect they're custom), but everything else would require a significant amount of custom tooling. I count about 25 individual assembly steps required to put the whole product together. Oh - and a few of the parts are painted, too.

All of this costs $5.99.

I think this is pretty incredible.

Element Free

Added on by Spencer Wright.

When I joined nTopology, our flagship CAD software - Element - was in closed beta. I had used it myself over the fall, and was impressed at how quick and easy it was to generate variable lattice structures. But the GUI was often confusing and many of the core functions were still very much prototypes.

Today, I'm proud to announce that nTopology has released its first public product - Element Free. We've spent a ton of time on this over the past four months, and have both streamlined the workflow and improved the core design tools needed to design and edit complex lattice structures. 

We'll be working hard to integrate more features into Element Free over the coming months - and will be releasing a Pro version this summer. Head over to the nTopology Product page to download the software yourself!


Added on by Spencer Wright.

This photo is of a conference table in Alcoa's headquarters:

If it's not clear, this little inlay is made from aluminum. Which is pretty rad, considering that Alcoa is an aluminum company.

As a project manager, I'm all about choosing the right tool for the job. But I'm also all about using the tools that are available to me in the most effective ways. This table didn't need an aluminum inlay, but the aluminum inlay that Alcoa gave it worked pretty damn well.

Reflections on three weeks of speaking

Added on by Spencer Wright.

I've given versions of the same talk three times over the past three weeks, and wanted to take a moment to note (mostly for myself) some observations I've had about both my own presentation and public speaking in general. 

First, I'm pleasantly surprised at how little nervousness I've felt. I've done a bit of public speaking in the past year or two, and in former lives have held jobs that required me to do somewhat better than commanding a room, but the past month's events have been less personal and had a higher chance of impacting my career - and still I've gone into them feeling more or less comfortable. Certainly some portion of this is my familiarity with the subject matter (my talk is not entirely a review of things I've written about on my blog, but there's a lot of overlap), but I dare say that I might also be growing into myself a bit. I recognize that this is kind of a weird thing to say of oneself, but I'm pretty sure it's at least partially true.

I think some part of my degree of comfort has to do with the fact that I've found a way of balancing my own deeply held philosophy with the fact that I'm selling something that speaks to that philosophy. This has been a long time coming, and probably deserves more than I can grant it here, so I'll leave it at that and move on.

I will note, however, that the entire experience of speaking at an event is noticeably more exhausting than simply attending. I suppose this is self evident, but presenting your work & thoughts is de facto an invitation for people to ask questions of you (and present their own work & thoughts one-on-one), and responding to that attention takes considerably energy. That's not to say that I don't enjoy it; indeed, eliciting a response is the primary reason to speak publicly in the first place. But it drains me a bit too - and I'll admit that I still haven't followed up on all of the business cards I've collected this month.

Lastly: I've also seen quite a few other folks speak publicly over the past month (conferences are conferences, after all), and I can't help but wonder what I would think of my own talk. If anyone out there has seen me speak recently and has feedback, send it along :)

Seatposts assembled

Added on by Spencer Wright.

Before I send these three seatposts out for testing, a quick update:

The seatpost heads (which I wrote a detailed post on a few months ago) are now glued to carbon fiber posts. I also added a thin carbon fiber disc to the top of each of the posts, so that water can't get into the bike's seat tube. The whole thing was assembled using 3M DP420 epoxy.

These are headed back to EFBE this week, where they'll go through the same ISO test as my seatmast topper was subjected to. More details soon!

Point modifiers

Added on by Spencer Wright.

Just a quick update to yesterday's post - here are some screenshots showing a little bit of how I'm controlling thickness on my lattice stem.

Our variable thickening algorithm allows the user to input minimum and maximum beam diameters. If a beam isn't within the range of any point modifiers, then it's thickened to the minimum value. If it's within range, then its thickness is determined by the falloff curve of the modifier that it's within range of. If it's within range of multiple point modifiers, then the greater thickness value is used.

As you can see above, the Modifier Editor allows the user to preview the effect that the modifiers will have on a part; blue means that a region is not within range of a modifier (and will be the minimum thickness), and red means that it's within range (and the maximum thickness will be applied). We allow you to preview this on any mesh in your project. Here I'm looking at a variably thickened lattice, but generally I'd start with a uniform thickness lattice and then play around from there.

The big change in the design yesterday was adding point modifiers in four locations: On either side of the handle bar clamp, and on the top and bottom of the steerer clamp. These modifiers have steep cosine falloff curves, meaning that they have a big effect on a relatively small region of the part. I've controlled the range and falloff so that just the beams on the edges of those surfaces are affected.

I also have point modifiers at all of the bolt holes, and a few that control thickness on the rest of the clamp surfaces, and then two point modifiers that make the transition from the clamp surfaces to the center of the extension a bit more gradual.

We've been thinking a bit more about how to develop modifiers in the future - stay tuned!

Stem update

Added on by Spencer Wright.

A friend asked me yesterday what was going on with my lattice bike stem design, and after telling him that it's been on the back burner I played with it a bit and made some real (if subtle) improvements. 

First, I should note here that I'm *not* worrying about overhanging faces. That's mostly because I'm working at nTopology to break down manufacturability of lattices into its component parts, and am tabling all of my DFM concerns until I have real data to back them up. In addition, I'm focusing on using variable thickening to maximum effect right now. I've used variable thickening a lot in the past, but the next software update of nTopology Element pushes it even more into the forefront, and I want to dogfood myself a little before we release it into the public :)

I don't have screenshots of the whole process, but this part was designed in much the same method that I was using last fall. I used Inventor to make a design space, and Meshmixer to generate surfaces to grow a lattice on. Then I used Element to:

  1. Create a surface lattice with beams at every edge in the Meshmixer model
  2. Create a volumetric lattice (based on a hex prism cell shape) inside the part
  3. Merge the two lattices by snapping nodes on the volumetric lattice to nearby nodes on the surface lattice
  4. Creating attractor modifiers at locations that I know I'll need more thickness in my lattice, e.g. mechanical features
  5. Applying variable thickness to the lattice based on those modifiers
  6. Refining the resulting mesh & reintroducing mechanical features via Booleans

The trickiest thing by far here is setting the attractor modifiers to the right range & falloff. I've got three things going on here:

  • Bolt holes. These need to be maximum thickness (1.5mm) to accept threads and distribute the load from the bolts.
  • Clamp surfaces. Where the stem clamps to the steer tube and handlebar, the part needs to have relatively high surface area. All lattice beams should lay on the surface itself, and thickness should be high as well.
  • Mechanical stress. I haven't done a full analysis of this part, but in general stress will be concentrated near the clamp surfaces and will be lower in the middle of the part.

Clearly this blog post would be more effective if I ran through every attractor one-by-one and explained how editing them changed the resulting structure, but we'll have to forego that for now. Suffice it to say that the part above weighs 105g and has roughly the mass distribution I was looking for; I'll update with more details soon :)

Termites, not tornadoes

Added on by Spencer Wright.

Again, from The Mythical Man-Month - emphasis mine:

When one hears of disastrous schedule slippage in a project, he imagines that a series of major calamities must have befallen it. Usually, however, the disaster is due to termites, not tornadoes; and the schedule has slipped imperceptibly but inexorably. Indeed, major calamities are easier to handle; one responds with major force, radical reorganization, the invention of new approaches. The whole team rises to the occasion. 

But the day-by-day slippage is harder to recognize, harder to prevent, harder to make up. Yesterday a key man was sick, and a meeting couldn't be held. Today the machines are all down, because lightning struck the building's power transformer. Tomorrow the disk routines won't start testing, because the first disk is a week late from the factory. Snow, jury duty, family problems, emergency meetings with customers, executive audits — the list goes on and on. Each one only postpones some activity by a half-day or a day. And the schedule slips, one day at a time.

No small slips

Added on by Spencer Wright.

Also from The Mythical Man-Month:

Let us consider an example. Suppose a task is estimated at 12 man-months and assigned to three men for four months, and that there are measurable mileposts A, B, C, D, which are scheduled to fall at the end of each month. Now suppose the first milepost is not reached until two months have elapsed. What are the alternatives facing the manager?
3. Reschedule. I like the advice given by P. Fagg, an experienced hardware engineer, "Take no small slips." That is, allow enough time in the new schedule to ensure that the work can be carefully and thoroughly done, and that rescheduling will not have to be done again.

If you need to reschedule, take responsibility - and make sure you only need to reschedule once. 

This book is good.

Conceptual Integrity

Added on by Spencer Wright.

I'm reading The Mythical Man-Month, and this section jumped out at me hard. Emphasis is mine:

Most European cathedrals show differences in plan or architectural style between parts built in different generations by different builders. The later builders were tempted to ''improve'' upon the designs of the earlier ones, to reflect both changes in fashion and differences in individual taste. So the peaceful Norman transept abuts and contradicts the soaring Gothic nave, and the result proclaims the pridefulness of the builders as much as the glory of

Against these, the architectural unity of Reims stands in glorious contrast. The joy that stirs the beholder comes as much from the integrity of the design as from any particular excellences. As the guidebook tells, this integrity was achieved by the self-abnegation of eight generations of builders, each of whom sacrificed some of his ideas so that the whole might be of pure design. The result proclaims not only the glory of God, but also His power to salvage fallen men from their pride.

Even though they have not taken centuries to build, most programming systems reflect conceptual disunity far worse than that of cathedrals. Usually this arises not from a serial succession of master designers, but from the separation of design into many tasks done by many men.

I will contend that conceptual integrity is the most important consideration in system design. It is better to have a system omit certain anomalous features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas.

It's not that I don't like Chartres; indeed, there's something incredible about projects that outlive their original intent. But when it comes to the most compelling products & systems in my life, I find conceptual integrity to be a *really* powerful force.

See also: the last section in One type of swing, etc.