Mar 14, 2018 — Clifton

Let’s Face It, Connecting Nodes Sucks

Let's Face it. Connecting nodes sucks.

I remember back in college I foolishly decided to dive into a generative design studio. I set out to use Grasshopper for the first time. It was magical. I created a point with three inputs, a second point with three more inputs, and then I connected the two points with a line node. The total effort? 15 nodes, 1 line, 30 minutes, three online tutorials, and one tall coffee.

Given this introduction to visual scripting, I had in the back of my mind that mass adoption would take decades because the barrier to entry was so high. Drawing a line on paper is easy. Drawing a line in CAD requires you to type "line." Drawing a line in Grasshopper requires a 30-minute tutorial.

Visual scripting nodes vs custom C algorithm — performance comparison

Introduction to Algorithms

Hello. My name is Clifton Harness. I am a CEO. I have a B.Arch from The University of Texas (Hook 'Em) and I worked in Real Estate Development for two years. I made the conscious decision to quit my job — a fiscally irresponsible one — to do a software startup. TestFit was founded to help architects and developers get to the highest-and-best use for real estate (nearly) instantaneously. In this post I will describe four algorithms that we built, and how they stack up against Design Script (Dynamo).

What is an algorithm? Easy. It's a list of steps to follow. You do them all the time, every day. Here's the algorithm for not waking up:

  1. Realize sleepy time is now over
  2. Open Eyes
  3. Heavy sigh
  4. Roll over
  5. Close Eyes
  6. Fall back asleep /* Stay in this loop */

An Algorithm for the Placing of Fire Walls

This one was extremely difficult for me to put into words, but my partner came up with an amazing solution. We wrote some C code to do this instantaneously. Some basic rules:

With this code, I will never draw another polyline. Ever.

An Algorithm for Placing Staircases

All we need is some rules to follow.

An Algorithm for the Placing of Units

This one was much harder. The basic premise is to course units perfectly given the shape of the building and the size of building mass you are attempting to fill. Units have criteria on widths, depths, size, and glazing requirements.

An Algorithm of Many Algorithms

When we take these three algorithms and have them work together, we have a useful test-fit solution for multifamily buildings. I skipped a lot of detail — that is our intellectual property — but gave enough for you to get a sense of what is actually going on under the hood.

The Future of Generative Design

Point solutions for specific typologies and morphologies written in custom code will knock Generative Design out of the park. We did 120 iterations on a site and came back with a fat stack of data to analyze. Trace paper cannot compare. The problem is that most generative platforms don't constrain the geometry enough for the result to be worth anything. With TestFit, we get to the point where the geometry is constrained enough for generative design to make sense:

Without a proper constraint engine that encompasses almost everything, the goals to achieve are useless. We are building that constraint engine, right now, and for us it starts with TestFit.

Side note: we started our journey branded as Residential Engine, and are in the process of changing names to TestFit.

Five tools worth building on this
  1. Algorithm step counter — translate a Dynamo node graph into its equivalent C step count
  2. Constraint chain visualizer — show how firewall, stair, and unit placement algorithms depend on each other
  3. Building generation speed benchmark — iterations per second for constraint-based vs generative approaches
  4. Firewall placement algorithm demo — adjustable max building area, watch firewalls place in real time
  5. Generative design parameter counter — how many parameters does your tool actually constrain?