Life & much, much more

Edmondson Park – a retail and residential development by Frasers and HDR

Three weeks ago, 30 kilometers away from the Sydney city centre in the rural suburb of Edmondson Park, Frasers Property Australia opened the doors of their display centre to the public. This brand new town centre development with residential and retail environments was designed by HDR Inc, of which I am part of the team of architects. I haven’t really talked much about my architecture work before, but a brand new town centre in a previously uneventful part of Sydney is perhaps worth a blog article.

Perhaps let’s start with the blurb of the development which I’ve copied directly from the Frasers official Ed Square website:

From the makers of Central Park Sydney, Ed.Square brings inner city edge, but with so much more than you expected.

Ed.Square is a diverse urban neighbourhood of restaurants and cafes; shopping and entertainment; playgrounds and parklands; a market place and Eat Street; adjacent to the Edmondson Park train station and all within walking distance from your own front door.

Ed offers an array of residences crafted by some of the worlds best architects that cater for every lifestyle. Whether you are a first home buyer or a multi-generational family, you’ll always feel at home with Ed.

Sydney’s South West is one of Sydney’s growth trajectories, and so the Edmondson Park development is one of those which will supply the population growth.

Despite working on the development, I probably don’t have any permission to use any marketing material, so you’ll have to visit the Frasers website to see all the pretty pictures and marketing.

However, I did take some snaps of the display suite, so here it is! Let’s start with the view you get as you enter. To the left are some display town houses. They are three storey products which surround the town centre. If you use some imagination you can read that there is the huge word “Ed.” written in bright yellow in front of it. Ed’s pretty hip, and is the anthropomorphism of the neighbourhood. To the right, you can see a cafe by the display centre itself, which apparently serves some pretty tasty dishes that the local community loves — but it was closed when I arrived.

Edmondson Park display village centre

Here’s what you see as you enter…

Edmondson Park display suite entrance

And a snap of the physical model…

Edmondson park model

Let’s zoom in! The orange letter “T” is the train station, so you can see that the town centre is literally adjacent to it. The white buildings have yet to be released, so stay tuned.

Henderson Road model shot

Here’s another angle, showing the grand cinema facade.

Edmondson Park cinema

There’s a display apartment too …

Edmondson Park display apartment

… which shows some of the apartment, such as this fancy kitchen.

Kitchen in display apartment

Here’s another view from the balcony of one of the town houses looking at the display suite. In the background you can see a huge pit where construction will occur, surrounded by Cumberland Plain Woodland. I hear there could be koalas living there.

enter image description here

If you live in Sydney, feel free to drop by!


How to download the Australian BioNet Database

Did you know that there is a nest of endangered long nosed bandicoots living just beside the popular Manly beach in Sydney, Australia? Well, I didn’t, until I looked at BioNet. The Australian NSW government created BioNet as a government database of all flora and fauna species sightings in NSW. It’s absolutely fantastic. If you’re an architect and want to see how you might impact the urban ecosystem in NSW, look at BioNet. If you’re an ecologist of some kind, you probably already use it. If you’re just a good citizen who wants to remodel your back yard to improve urban ecology, BioNet is there for you.

Fortunately, BioNet comes with an online search system called Atlas. It’s simple to use, but unfortunately it has limits on the data it produces. It won’t show you all the fields associated with species, won’t show meta fields, and has a limit to the quantity of records shown. Thankfully, BioNet comes with an API which can be queried with programming knowledge. I’ve written a bit of Python which will allow you to download regions of data; but before we get to that, let’s see a graphic!

Sydney BioNet species map

I’ve plotted every species on the database close to Sydney in the map above. Size is relative to the number of species sighted (logarithmic relationship). I haven’t done any real filtering beyond this, so it’s not very meaningful, but it shows the data and shows it can be geolocated. It also looks like someone murdered the country, but I’ll post the interesting visualisations in a future post.

The Python code works in two parts. The first queries the API for json results divided into square tiles from a top left and bottom right latitude and longitude coordinate region. This’ll give you a bunch of *.json files in the current working directory. Edit the coordinates and resolution as necessary, and off you go. I’ve put in a series of fields that should be good for more general uses, but you can check the BioNet Data API for all fields.

import os

start = (-33.408554, 150.326152)
end = (-34.207799, 151.408916)

lat = start[0]
lon = start[1]

def create_url(lat, lon, lat_next, lon_next):
    return '$select=kingdom,catalogNumber,basisOfRecord,dcterms_bibliographicCitation,dataGeneralizations,informationWithheld,dcterms_modified,dcterms_available,dcterms_rightsHolder,IBRASubregion,scientificName,vernacularName,countryConservation,stateConservation,protectedInNSW,sensitivityClass,eventDate,individualCount,observationType,status,coordinateUncertaintyInMeters,decimalLatitude,decimalLongitude,geodeticDatum&$filter=((decimalLongitude ge ' + str(lon) + ') and (decimalLongitude le ' + str(lon_next) + ')) and ((decimalLatitude le ' + str(lat) + ') and (decimalLatitude ge ' + str(lat_next) + '))'

i = 0
resolution = 0.05

while (lat > end[0]):
    while (lon < end[1]):
        lat_next = round(lat - resolution, 6)
        lon_next = round(lon + resolution, 6)
        url = create_url(lat, lon, lat_next, lon_next).replace(' ', '%20').replace('\'', '%27')
        os.system('curl \'' + url + "\' -H 'Host:' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Cookie: NSC_EBUB_CJPOFU_443_mcwjq=ffffffff8efb154f45525d5f4f58455e445a4a423660' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' -H 'Cache-Control: max-age=0' > " + str(i) + '.json')
        i += 1

        lon = round(lon + resolution, 6)
    lon = start[1]
    lat = round(lat - resolution, 6)

Now we’ll run another little script which will convert all the json files in the directory into a single csv file. You can read this csv file in programs like Excel or QGIS for further analysis.

import unicodecsv as csv
import json

f = csv.writer(open('bionet.csv', 'wb+'), encoding='utf-8')
number_of_json_files = 352

i = 0
while i < number_of_json_files:
    data = json.load(open(str(i) + '.json'))
    for x in data['value']:
    i += 1

That’s it! Have fun and don’t forget to check for frogs in your backyards. If you don’t have any, build a pond. Or at least a water bath for the birds.


A history of rendering engines and modern trends

When working in the architecture industry, we often look at rendering engines from many angles, if you’d pardon the pun. We use simple renderings for diagrams, realistic rendering for architectural visualisations, real-time rendering for virtual reality prototyping, point cloud renderings for landscape and heritage scans, and so on. As the penultimate goal in archviz is to both represent abstractly and lower the costs of realistic prototyping, it pays to see what the future of rendering holds for the industry. But first, I’d like to briefly look at rendering’s history.

When the CG industry first considered how to render an image on the scene, they were mostly concerned with the hidden surface determination problem. In short, when you have a polygon, which surfaces are visible from the camera’s POV, and which are not. This mentality of thinking about how to “colour in an object” as opposed to how to simulate light lead to the development of one of the first rendering techniques: flat shading.

In flat shading, the rendering engine would consider the surface normal of each surface with respect to a light source. The more face-on each surface was, the lighter it was, and the more incident the surface was, the darker it was. If the path between the surface normal and a light source intersected with another surface (i.e., was blocked), it was shaded black. I’ve attached an example of flat shading in the first image below. This is roughly analogous to an actual physical phenomenon – that the angle of incidence to a material matters.

This was very simple, and also not very realistic. Flat shading was then combined with specular shading, which was essentially the same but heavily biased the angle of the surface normal, and had another parameter to control the falloff of the highlight. Although this created a convincing metallic glint (see monkey two in the image below), it was again just an artistic trick and wasn’t based off an actual physical phenomenon. Nevertheless, it stuck, even to this day.

Shading techniques improved when a Vietnamese gentleman invented the infamous Phong shader. He had the idea of interpolating the vertex normals between vertices to give a gradient of colour through the face. This created much more realistic results (see monkey three), but again, had no real world equivalent.

The next improvement to the shading model was when people observed completely black shadows. In real life, global illumination and ambient light ray bounces mean that almost everything can be very effectively indirectly lit. There was no computationally efficient solution to the problem at the time, and so an ambient light constant was added to simply bump up the global lighting (see monkey four). This sort of formed the segway into modern day rendering, and thus ends our history lesson.

Flat, phone, interpolated, and ambient light shading

The moral of the story is that almost all the shading approaches had no real-life equivalent, and all the subsequent improvements were based upon a method that considered how to colour in a shape from the point of view of the shape itself. This is fundamentally incorrect – in the physical world, how an object looks (at people scales, forget quantum mechanic scales) depends on rays of light that are emitted from objects that are giving off photons (e.g. hot objects) bouncing around and losing energy. Energy is deposited and is reflected upon materials in very different ways depending on the microsurface imperfections of the material, and the chemical properties of a material.

Luckily, in parallel as these artistic shaders were being developed, physically-based “ray-tracing” rendering engines were also being developed. These ray-tracers traced rays of photons from and to cameras and light sources in the same way that the real world worked. Back then, they were cool technical demos, but always were too inefficient for any practical work. However, theoretically we had proven that if you throw enough computing power at the problem, you can get photo-realistic results. Nowadays, of course, everybody knows about ray-tracing and it’s practically the norm in the market. I’ve shown an example of a chrome Monkey below reflecting the environment – the textbook example of what ray-tracing can achieve that traditional shaders could not (well, not without hacks and light maps and what not). You can see another example of photo-realistic rendering with Cycles that I’ve done too.

Glossy ray tracing render

Almost every single popular rendering engine nowadays, such as Blender Cycles, V-Ray, Maxwell, Renderman, and Arnold are ray-tracers. They are getting faster and now combining both GPU and CPU to provide almost real-time rendering. In recent years, Physically Based Rendering, better real world scanners, and improvements on texture painters are three among many advances that make photo-realistic rendering easier and easier.

Basically, photo-realism is becoming really easy. An interesting subtle trend to additionally note is that we are actually getting more scientifically based. In the past, these ray-tracers, although somewhat physically based, had many approximations to the point that real-world units were ignored in favour of arbitrary values.

The reason why this is important is because penultimate photorealism comes from scanning in real-world data at increasing levels of fidelity. Engines, no matter how physically based they are, will find it hard to use this information if they are unable to be easily linked back to physical units and measurable scientific values.

Thankfully, this is actually improving. Simple things like using more IES profiles in lighting, or falsecolour luminance images are starting to be possible with mainstream renders. The popularisation of the Disney shader is slowly getting engines working on interoperability, and the ultimate interoperability, much like penultimate photorealism, depends on scientific values.

At the very least, we know that if we throw more computers at the problem it will eventually converge and leave us with a beautiful real image.

This is great news for architecture – the industry I’m in. Architecture is no stranger to smoke and mirrors when it comes to renders and a trend towards scientific rendering makes it easier to both cheaply prototype and still promise the same results to eager clients.

Until then, let’s play with photoreal game engines and VR while the hype lasts.


Basic rendering tutorial with Radiance

Radiance is the authoritative validated rendering engine out there. Unlike other rendering engines, which focus more on artistic license, Radiance focuses on scientific validation — that is, the results are not just physically based, they will produce the exact same output as measured by a physical optical sensor. This is great if you’d like to produce an image that not only looks photo-realistic, but actually matches what a similar setup in real life would look like. As you’d expect, this appeals to scientists, and designers who work with light and materials.

In addition, Radiance is open-source, completely free, and is Unix-like. If you’ve used other tools that claim to do all of the above, it probably uses Radiance under the hood anyway and rebrands itself with a more friendly interface. However, working with Radiance directly will give you a finer grain of control over the image you produce, and as I will likely write about in the future, scale up to do highly complex renders. Today, we’re going to dive into the guts of the tool itself and render a simple object. This can be a bit scary to those who are not particularly technical, and there’s not a lot of friendly material out there that doesn’t look like it’s from a 1000-page technical manual. Hopefully this walkthrough will focus on the more practical aspects without getting too bogged down in technicalities.

To begin, I’m also going to assume you have Radiance installed, and know how to open up a terminal window in your operating system of choice. If you haven’t got that far yet, go and install something simple like Ubuntu Linux and / or install Radiance. Radiance is not a program you double click on and see a window with buttons and menus that you can click on. Radiance is a collection of programs that work by typing in commands.

Let’s create a model first. Start with a simple mesh with a minimum of polygons. I am using Blender, which is a another open-source, free, and Unix-friendly software. In this case, I have started with a default scene, and arbitrarily replaced the default cube with a mesh of the Blender monkey mascot. I have also given the mesh a material, named white.

Default scene with Blender monkey

Using Blender is optional, of course, and you can use whatever 3D program you like. Radiance works with the OBJ format, which is an open format, plain text, and beautifully simple. As such, export the mesh to get yourself a resultant OBJ file, of which I have named model.obj. The exported accompanying model.mtl file is largely unnecessary right now: we will define our own materials with physical units, of which the .mtl file is not designed to do. When exporting, take care to only export the mesh, and ensure that the proper axes are facing up.

In the same directory that you have your model.obj and your model.mtl, let’s create a new file which will hold all the materials for your model. In this case, there is only one material, called white. So let’s create a new plain text file, called materials.rad and insert the following in it:

void plastic white
5 1 1 1 0 0

It’s the simplest possible material definition (and rather unrealistic, as it defines an RGB reflectance value of 1, 1, 1), but it’ll do for now. You can read about how “plastic” (i.e. non-metallic) materials as defined in the Radiance reference manual. In short, the first line says we are defining a plastic material called white, and the last line says that there are 5 parameters for this material, and their values are 1, 1, 1, 0, 0 respectively. The first three parameters refer to the R, G, and B reflectance of the material. This definition is provided in the Radiance manual, and so in the future it will serve you well to peruse the manual.

Now, open up a terminal window in the same folder where you have the model.obj and materials.rad file. We are going to run a Radiance program called obj2mesh which will combine our OBJ with the material definitions we have provided in our materials.rad, and spit out a Radiance triangulated mesh .rtm file. Execute the following command:

$ obj2mesh -a materials.rad model.obj model.rtm

If it succeeds, you will see a new file in that same directory called model.rtm. You may see a few lines pop up with warnings, but as long as they are not fatal, you may safely disregard them. This .rtm file is special to Radiance, as it does not work directly with the OBJ format.

Now, we will create a scene in Radiance and place our mesh within it. There will be no other objects in the scene. Let’s call it scene.rad, a simple text file with the following contents:

void mesh model
1 model.rtm

The first line simply defines a new mesh in the scene called model. The second line tells it that it can find the mesh in the model.rtm file. The final line (the zero) says that there are no parameters for this mesh.

Now, we will convert our scene into an octree, which is an efficient binary format (as opposed to all the simple text files we’ve been writing) that Radiance uses to do its calculations. We will run another Radiance program called oconv to do this. So open up your terminal window again and execute:

$ oconv scene.rad > scene.oct

You should now find a scene.oct file appear in the same folder as the rest of your files. This is the final file we send off to render. But before we do this final step, we will need to decide where our camera is. A camera in Radiance is defined by three parameters. The first parameter, vp, or view position, is the XYZ coordinate of the camera. The second parameter, vd, or view direction, is the XYZ vector that the camera is facing. The third parameter, vu, or view up, is the XYZ vector of where “up” is, so it knows if the camera is rotated or not. When specifying a parameter to Radiance, you will prefix the parameter name with a hyphen, followed by the parameter value. So, for a camera at the origin facing east (where +X is east and +Z is up), I can tell Radiance this by typing -vp 0 0 0 -vd 1 0 0 -vu 0 0 1.

Radiance camera definition

Calculating these vectors is a real pain unless your camera is in a really simple location and is orthogonal to the world axes like in my previous example. However, here’s a fancy script you can run in Blender which will calculate the values for the camera named Camera.

import bpy
from mathutils import Vector

cam =['Camera']
location = cam.location
up = cam.matrix_world.to_quaternion() * Vector((0.0, 1.0, 0.0))
direction = cam.matrix_world.to_quaternion() * Vector((0.0, 0.0, -1.0))

    '-vp ' + str(location.x) + ' ' + str(location.y) + ' ' +  str(location.z) + ' ' +
    '-vd ' + str(direction.x) + ' ' + str(direction.y) + ' ' + str(direction.z) + ' ' +
    '-vu ' + str(up.x) + ' ' + str(up.y) + ' ' + str(up.z)

The output will be in the Blender console window. For those on other programs, you’ve got homework to do.

Once you know your coordinates and vectors for vp, vd, and vu, let’s use the rpict Radiance program to render from that angle. Please replace my numbers given to the three camera parameters with your own in the command below. We will also specify -av 1 1 1, which tells Radiance to render with an ambient RGB light value of 1, 1, 1. Of course, in real life we don’t have this magical ambient light value, but as we haven’t specified any other lights in our scene, it’ll have to do. We will also specify -ab 2, which allows for 2 ambient bounces of light, just so that we have a bit of shading (if we didn’t have any light bounces, we would have a flat silhouette of our monkey).

$ rpict -vp 7.481131553649902 -6.5076398849487305 5.34366512298584 -vd -0.6515582203865051 0.6141704320907593 -0.44527149200439453 -vu -0.32401347160339355 0.3054208755493164 0.8953956365585327 -av 1 1 1 -ab 2 scene.oct > render.pic

Great, after the render completes, you should see a new file called render.pic in your folder. Let’s look at this image using the Radiance ximage program.

$ ximage render.pic

You should see something like the following:

Final Radiance render

One final step. It’s quite irksome and technical to run all of the commands for rpict, oconv and such, and so it’s much better to use the executive control program rad. rad allows you to write the intention of your render in simple terms, and it’ll work out most of the technical details for you. Of course, everything can be overridden. The rad program parses a .rif configuration file. I’ve included a sample one below, saved as scene.rif:

# Specify where the compiled octree should be generated
# Specify an (I)nterior or (E)xterior scene, along with the bounding box of the scene, obtainable via `getbbox scene.rad`
ZONE=E  -2.25546   4.06512  -3.15161   3.16896  -2.94847    3.3721
# A list of of the rad files which make up our scene
# Camera view options
view=-vp 7.481131553649902 -6.5076398849487305 5.34366512298584 -vd -0.6515582203865051 0.6141704320907593 -0.44527149200439453 -vu -0.32401347160339355 0.3054208755493164 0.8953956365585327
# Option overrides to specify when rendering
render=-av 1 1 1
# Choose how indirect the lighting is
# Choose the quality of the image, from LOW, MEDIUM, or HIGH
# Choose the resolution of mesh detail, from LOW, MEDIUM, or HIGH
# Choose the light value variance variability, from LOW, MEDIUM, or HIGH
# Where to output the raw render
# Where to output a filtered version of the render (scaled down for antialiasing, exposure correction, etc)
# The time duration in minutes before reporting a status update of the render progress

Execute rad scene.rif to get the results. If you’d like to interactively render it, on an X server you can run rad -o x11 scene.rif. I used the above .rif file and ran it against a higher resolution mesh, and I’ve included the results below.

Rad rendered image

All done! We’ve learned about bringing in an OBJ mesh with Radiance materials, placing them in a scene, and rendering it from a camera. Hope it’s been useful. Of course, our final image doesn’t look exactly great – this is because the material and lighting we have set are basically physically impossible. Similarly, the simulation we’ve run has been quite rudimentary. In the future, we’ll look at specifying a much more realistic environment.

Life & much, much more

Space architecture – a history of space station designs

To quote the beginning of the full article:

This article explores different priorities of human comfort and how these priorities were satisfied in standalone artificial environments, such as space stations.

If you’re impatient and just want to read the full article, click to read A history of design and human factors in Space Stations.

… or if you want a bit more background, read on …

I began investigating in more detail the field of space architecture last year. Although I had a bit of experience from the ISSDC, I was much more interested in real current designs as opposed to hypothetical scenarios.

Space architecture, and its parent field of design is a broad one. It’s an engineering challenge, an economic challenge, a logistical challenge, a political challenge, you name it. As an architect, the priorities of space station/settlement designs lie with the people that inhabit it. Simply put, you don’t call an architect to build a rocket, but when a person is living inside that rocket, especially if they’re stuck there for a while, that’s when you call your architect.

This means that when an architect looks at designing a space station, although they need to be aware of the technical constraints of the environment (gravity, air, temperature, structure, radiation, transport, health), their true expertise lies in understanding how to make people comfortable and productive within that space. This means that space architects need to understand to an incredible amount of detail how we perceive and are affected by our environment. Much more so than Earth architects, who have the advantage of the natural world, which is usually much nicer than whatever is indoors, as well as existing social and urban infrastructure. Space architects don’t have this benefit, and so the entire “world” is limited to what they can fit inside a large room.

This point: space architects are responsible for the happiness of humans, is an absolutely vital one, and unfortunately often missed. Too many architects are instead raptured by the technological pornography of the environment, the intricate constraints, or even the ideological ability to “reimagine our future”. No. The reality is much more humble: space architecture is about rediscovering what humans hold dear in the world. You cannot claim to reinvent a better future if you do not yet understand what we already appreciate in the present.

And so if my point has made any impact, please go ahead and read A history of design and human factors in Space Stations, where I walk through the history of space station designs, their priorities, and what architects are looking at now.

Space architecture - how cosy

Cosy, isn’t it? Also, a TED Talk on How to go to space, without having to go to space shares many of my thoughts, and would be worth watching.


USyd Architecture Exhibition website released

Today I’d like to officially release the Usyd Architecture Exhibition website.

USyd Graduation Exhibition Website Homepage

USyd Graduation Exhibition Website Catalogue

Taken from the site itself:

The University of Sydney Architecture Faculty puts together an annual exhibition for its graduating Bachelors and Masters students. This gives students an opportunity to showcase their best projects. An event is held to exhibit these works, and along with this a hardcopy curated catalogue and a digital catalogue is released.

So as expected, the site hosts this year’s digital catalogue, and will continue to host future year’s submissions. There are currently about 100 submissions listed across five diverse project briefs. Feel free to look around, but I’d like to issue a word of warning to my readers that you might find the project descriptions more affiliated towards the romantic and social science-esque narrative.

If you’re wondering why a lot of the work is more art than design, I’d like to highlight that we aren’t incapable of making functional, logical and real-world problem solving designs. However it does seem that a lot of students aren’t taught how to write, and end up romanticizing the design into an artwork. That said, some designs do aim to be utopian and speculative, but I guess if you’re going to be spending the rest of your life looking at glazing and bolts, you’re excused for a little fun during university.

I’d also like to get the chance to highlight my own submission on the website.

Flinders Street Hotel Proposal Render

My project this semester involved proposing a Flinders St Hotel. It’s a rather large scale project, and would take too long to explain fully, even for the generous space that the online catalogue allows. I recommend viewing my project page and reading the full description there. It gives an overview of the project.

Finally, I’d like to quickly highlight the under-the-hood of the website. The website runs on vtemplate, is responsive, and has it’s technology colophon visible at its humans.txt. In particular, it was designed to be quite generic and highlight the work itself, and function on a phone or iPad as you scanned QR codes during the event itself. The entire website is open-source (view repository), and I’ve just tagged 1.0.0 today :)

Life & much, much more

Sydney revue coming up from the architecture faculty!

As some might remember, I was involved in a Sydney revue last year by the university of Sydney architecture faculty as the musical director. It was called Game of Homes (a shameless pun on the Game of Thrones series). Not only was I involved with music, it also gave me the wonderful opportunity to create a 3D animation for its opening sequence based on the original (and very well done) Game of Thrones sequence. You can view the animation sequence and corresponding revue poster in this post.

As this is an annual event, I’m happy to say that I’m again involved in it this year (as music again) and would like to present Floorless, a spaghetti western with a particularly complex pun for a title. It’s a joke on both the film Lawless, and on Flawless with an architectural twist. Get it? Nope? That’s alright. Me neither.

Sydney revue architecture

Anyway, you can tell that this is a quality Sydney revue because it has a quality poster. This means that if you’re in Sydney on the 5th, 6th or 7th of September, you should buy a cheap ticket and watch it.

Sydney revue poster alternative

It contains all the right ingredients for a successful western. These include bandits, sherrifs, the town stranger, the town drunk, the fastest shot in the West (which may sometime be the town drunk), the banjo brandishing hillbilly, the lonely harmonica player, a whip*, the mayor, Mexicans, the fine lass, and a Final standoff with capital F.

Also, there used to be an official revue website somewhere but as I can’t find it I assume that someone forgot to renew the domain and the site no longer exists.

Cheers, and see you at the event!

  • the whip may or may not be used at the actual event, and audience are recommended to not buy tickets for the front row.

So then I built an oil lamp

A few months ago I was walking in the park near my university and stumbled across a rather warped but stylish fallen branch. Immediately I knew that this branch was destined to become an oil lamp. A couple months later of on-and-off work, I had finished.

enter image description here

The lamp itself was made out of laminated rings of wood, which encased a copper oil container. A sculpted nozzle allows the wick to raise out of the wooden container and light up. The container is hinged and can be refilled whilst the lamp is burning. The nozzle was made out of laminated ply, whereas the alternating colours of the container were various hardwoods. The heat distributors were zinc (if I recall right), and the glass was cut out of an old soya bean milk bottle.

enter image description here

The branch itself didn’t become the lamp, but rather the stand for the lamp. The slight uneven and rustic look makes it suited more for the outdoors, placed on top of lawn.

enter image description here

The wick passes through a wick raising mechanism. The design for the mechanism, built from steel and aluminum, was actually taken by a patent advertised by the International Guild of Lamp Researchers (yes, you read that right).

It consists of two cogs, one with pointed teeth, and another indented so that they mesh together. These are encased inside a block with a two channels – one for the cogs to fit into, and one for the wick to pass between them. Turning the cog with teeth catches the wick, and allows you to raise and lower the wick. This feeds in extra wick when existing wick burns out, and allows you to “dim” and “brighten” the lamp.

Each cog spins on an axle, but the indented cog’s axle has a extended slot, and by twisting a screw outside, you can push the cogs closer to one another. This allows the wick mechanism to accommodate for differently sized wicks.

enter image description here

This entire project was built from scratch (with exception of the wick and metal fastener at the top with the ugly blue plastic which was bought), with thanks to the helpful folks over at the university workshop.

enter image description here

All in all, I call this project a success. I’ve learned a ton about woodwork and metalwork, and got myself a rather unique lamp in the process. I hope you all enjoyed taking a peek too :)

Life & much, much more

Architecture’s existential crisis

Four posts ago, I took a break from the usual technical and on-going project posts, and instead went on a four part spree talking about Architecture. In particular, I tackled the question of Architecture’s existential crisis. It talks about issues about discipline and professionalism (actually inspired by Bob Martin’s similar talks in the software industry), the philosophies that architecture idolises, and overarching goals of the profession and the world in general.

The reason I spent so much time on this is because I believe that it is wrong to treat architecture as superficially as an art form. It is not a commodified object of entertainment like a book or movie. It isn’t something where people are given the choice to consume it. Instead, it is inherently part of our day to day lives and affects everyone. This means architects have a responsibility to others.

I’ve converted the rather long post into a LaTeX-compiled PDF, so those who haven’t read it due to the sheer size can enjoy it. Download it here.

Will resume to the usual topics after this.

Life & much, much more

Architecture’s existential crisis pt 4: Timeless frameworks, and where do we go from here?

In part 1: Architecture is not a Profession, I outlined architecture’s distraction with competitive theories rather than acting as a professional discipline and serving society.

In part 2: The Foundations of Architecture, I talked about what architecture is currently based upon, and how to unify these into a governing framework that encompasses all architectural ideologies based off Vitruvius.

In part 3: Goals, ethics, and the people element, I placed the framework within society and introduced aspects of a professional ethical responsibility to serve other people.

In this final conclusion, I talk about future proofing the efforts of an architectural profession, and hint at what where we go from here. What did this (very long) series conclude? Now what have we learned? What can we now set out to tackle?

The final element: Resolving timelessness

The architectural framework has addressed a need for a foundation as well as the need for professional goals. There is still one thing missing: the ability to solve these goals.

The world is complex. As architecture is a justified solution to a predefined problem using the world as its medium, many of architecture’s goals will also be complex.

Complex goals take time to solve. There isn’t much use in introducing a framework to solve larger issues if we don’t have time to solve these issues past a certain number of years or generations. We need time to understand the nuances of the world, test our solutions, and figure out where we went wrong.

This does not suggest that time is all that is needed to work the world out, if that is possible at all. It merely suggests that prolonged effort may be a good thing towards achieving goals.

To support complex goals that may bridge theories and allow us to carefully consider when we choose to advance a theory, I propose a final element to bind the first four. I propose time.

The word time refers not to itself, but its effects. This may be impermanence, permanence, change, conditions and their propagation.

  • It is encompassing. It is based upon time, the flip-side of built form, which is equally a universal constant for all built forms.
  • It is descriptive. It does not dictate an effect of time or a belief of how time works, but simply an awareness of its existence.
  • It is agnostic. As people and built forms all are part of physical phenomena, they are all subject to time, regardless of psychological belief.

Again, many theories have already considered time, such as metabolism, who felt the urgency to adapt, Nazism, who modeled a 100-year Reich after Roman’s “eternal classical architecture”, and sustainable architecture, who thought about future effects. Theories which are neo, post or somehow reactionary or a revival towards an older theory or even future-looking are all addressing issues of time. All consider that time happens.

The reason time binds the first four is because it helps us frame the era where theories are valid. It makes us state exactly how universal our proposals are trying to be. This influences theories to be seen not as standalone items but as part of an ongoing process. This awareness of a larger process helps share traits across theories that tackle the same goals, giving us a little push towards spending longer on a goal before giving up.

Nature of a framework

The final framework: firmness, commodity, delight, ethic and time is nothing new. By definition it has to have existed, been practised and seem blindingly obvious to the profession in order to work. This is the final proof of its validity as a binding force to the profession and to its three outlined characteristics.

Although the framework is presented rather dogmatically, it is designed to be extended and interpreted by its users. The only restriction is in the way it is extended: in the form of theories which state their position on each of the considered elements before elaborating into detail.

If extensions of the five elements are considered, they should be considered being well aware of their goals. For example, this framework differs from the original intentions of Vitruvius, and the later famous extensions by Alberti. Whilst Vitruvius tells how buildings are built, and Alberti tells how buildings are to be built[1], this framework’s goals falls somewhere in between. It is created neither to establish a new discipline or open a new epoch, as Alberti did, nor to be a custodian of tradition, as Vitruvius did. It is a guide between the two to solve an existential crisis.

As a guide, the framework is designed into architectural education. Instead of assuming a guidance of inspiration and genius, a framework provides a rational base. This ensures not only that architects are theorising and building, but join the two in a way that they are in full intellectual command of what they are designing[2].

Current architectural mentality - a timeline of ideologies

The current mentality. A time-focused view with each theory dominating. This model creates periods of existential crises.

A new view based on a framework, where ideologies are linked to society and seen as assets - strategic tools to use.

Architecture’s foundation – a framework to achieve goals. Theories are no longer marked as irrelevant after a certain time period, but may be reapplied depending on the society. Existential crises can no longer exist as long as everything is described against the framework.

Architectural discipline is its true value: as a tool and indicator to help define architectural goals that are larger than individual theories. It converts theoretical argument into a greater synergy across the profession.

A framework is also a declaration. It declares an understanding that we cannot predict the world, but can’t ignore it either. Even if we choose to ignore elements in the framework, it will have to be a conscious decision.

Finally, perhaps the most important nature of a framework is its communicability. Its simplicity allows it to be understood by those outside the profession and quickly empathised by those entering it. This concreteness helps form the basis of any abstractions used in the industry and distils it to useful, beneficial applications. Because we can once again connect to society on disciplined, measured and focused foundation, we can once again serve it as a profession.

Where to from here?

With an army of theories at our command, hundreds of tested implementations, and a framework to generate new ones should we need to, the only thing left is to actually define goals.

The question is, does architecture have a political meaning? The answer is, self-evidently yes. Should architects, like Le Corbusier or anyone else, today, try and change the world? The answer is also yes. Should architects have a blindness to who the client is? The answer is no.

Ricky Burdett, London School of Economics[3]

While the framework cannot prescribe goals, I can propose some as an individual. But what long-term, with high ethical standards, widely recognised, measurable, focused, disciplined, world changing goals are appropriate for the needs of society and the interests of others?

[The eight Millennium Development Goals] form a blueprint agreed to by all the world’s countries and all the world’s leading development institutions.

United Nations[4]

Is it possible? Certainly not at the current state of the industry. Not with focus on theory and undisciplined schisms. Not without foundation. Not without society oriented goals and time to solve them. But perhaps it could be, just perhaps, if we became professionals.

  • [1] Alberti, L. B., Rywert, J, 1988, On the Art of Building in Ten Books, typeset Asco Typsetting, Hong Kong, printed USA.
  • [2] Breitschmid, M, Architecture \& Philosophy: Thoughts on Building, Blacksburg, Virginia, USA
  • [3] Barbican Five Points for An Ethical Architecture, Architecture Foundation London, viewed 4 October 2012,
  • [4] Background, United Nations Millennium Development Goals, viewed 20 October 2012,
Life & much, much more

Architecture’s existential crisis pt 3: Goals, ethics, and the people element

In part 1: Architecture is not a Profession, I outlined architecture’s distraction with competitive theories rather than acting as a professional discipline and serving society.

In part 2: The Foundations of Architecture, I talked about what architecture is currently based upon, and how to unify these into a governing framework that encompasses all architectural ideologies based off Vitruvius.

In this part, I will extend the framework to hint at the goals and responsibilities of a professional discipline.

The role of a framework in determining goals

Whilst outlining the framework gives us a foundation as a profession, it says nothing about the precedence of welfare, health and safety of the community as needed in a profession. To do this, we need to refine the architectural framework to pinpoint goals in society.

I use the phrase “pinpoint in society” because a framework does not prescribe goals. It is descriptive. It doesn’t claim that the profession knows everything about the world and is authorised to make decisions for it. However, by outlining elemental considerations when people decide on a goal, it is able to influence these goals (This is still the case even if an element is marked as unimportant.).

The current framework has three elements: structure/firmness, commodity/function, and delight/design/beauty. The first tackles built form itself whereas the latter two tackles community reactions towards built form. Whilst these latter two elements may tackle some aspects of the welfare, health and safety of the community, I believe the addition (Unlike previous attempts to extend Vitruvius’ statement[1], this adds a new element rather than providing detail about existing elements. This is because providing detail converts the framework into a theory.) of a fourth community element may pinpoint this.

A new element: People are as important as built form

Architecture is a discipline where it is impossible to escape values. It’s radically value-laden. I think it’s possible that you can become an architect and see it as somewhat autonomous and not as a political act, which is incredibly naive. I try to make students aware of the radical, political, cultural, social nature of our work and how it’s impossible to escape those responsibilities.

-Thom Mayne, Morphosis

The element outlined above comes in the form of values and responsibilities. What governs our values and how to respond to these responsibilities are ethics (Ethics, morality and ethos (original Greek) can be used interchangeably.). As ethics also fits the requirements of a framework, I propose for ethics to be added as a fourth element:

  • It is encompassing. It is based upon people, which is a universal constant for all built forms. Whilst Vitruvius already targets the aesthetic judgement (when people react to firmness), the moral judgement (when people react to commodity) is left unconsidered. Whether or not we are consciously making decisions based on ethics, it will have effects nonetheless.
  • It is descriptive. It does not dictate the alignment of the moral compass but instead just highlights its presence as a quality of an architecture.
  • It is agnostic. All cultures have a moral compass, and as such, applies to all cultures. Ethics also covers the relation between groups and individuals, which won’t exclude individualistic cultures or the third architectural body who does what they please.

To further prove ethics as an element, we can list some theories who highlight their consideration to ethics: sustainability, where the primary value is that our decisions should not inhibit the opportunities of the future, modernism, where the moral value of truth was translated into an aesthetic quality, and then post-modernism, where the populist ethic was rejected[2]. As for older examples of theories, any theory governed by religious or political ideas has by definition shown consideration of ethics.

Ethics is also a useful addition as it fills a gap left by the original three elements (Vitruvius did mention aspects of ethics[3], such as relationships between men, politics, and precepts, but treats it in the form of a prescribed theory, not a framework). The original three elements either consider the built form itself or the relations between people and built form. Noticeably missing is people themselves. A recognition of people themselves is needed to highlight the distinction between the roles buildings play and the roles people play. Ethics covers both people themselves and the relationships to built form.

This coverage of people themselves and relationships to architecture cover societal aspects: aspects such as politics, environment / sustainability, humanitarian needs, urban planning, right down to individual clients. Including ethics as an element clearly strengthens the link to the welfare, health and safety of the community – one step closer to an architectural profession.

All architects have two clients whenever they work – one is the person that actually pays the bills, and the other is society in general. I think an architect that doesn’t see they are working for society in general doesn’t know his job.

-Joseph Rykwert, Architectural Historian[4]

Understanding of the interests of society is a prerequisite for ethics to be considered. This means that adding ethics as an element helps encourage consideration of our actions in the interests of others.

Although it is not the job of a framework to govern the application of its elements, it’s important to make sure that it can be applied in the first place. ie. to ensure that ethics is not “good in theory but not in practice”. This allows the element to be carried into architectural theories, and then implemented in architectural styles. We can prove this by citing religion, as well as agnostic hierarchies of ethical systems[5]. This practical side of the element means not only can it seed theories, it can fulfil the frameworks goals as a measurement tool.

Ethics is also complex. The inability to create a set of non-conflicting simple rules to govern ethics[5] over humanity’s history suggests a NP-complete nature. This means not only can it be applied in practice, it can also take many different forms that will continue to change over time.

This consideration of the interests of others, nature, welfare, health, and safety changes Vitruvius’ framework into a professional framework, ie. a framework pinpointed in society. We now have a framework consisting of firmness, commodity, delight, and ethics.

  • [1] Watkin, D, 2005, A History of Western Architecture, Laurence King Publishing, London, UK
  • [2] Boje, D. M., Toward a Narrative Ethics for Modern and Postmodern Organization Science, viewed 10 October 2012,
  • [3] Wotton, H, 1651, The elements of architecture (translated from De Architectura, Vitruvius), Thomas Maxey, London, UK
  • [4] Barbican Five Points for An Ethical Architecture, Architecture Foundation London, viewed 4 October 2012,
  • [5] Singer, P, 2011, Practical Ethics, Cambridge University Press, New York, USA
Life & much, much more

Architecture’s existential crisis pt 2: The foundations of architecture

In part 1, I outlined architecture’s distraction with competitive theories rather than acting as a professional discipline and serving society. In this part, I will talk a bit about the categories of architectural theories and styles, and how we can unify these.

Why theories and styles are inappropriate

Goals and foundation are equally important to a functioning profession. However, although we have plenty of candidates for goals as offered by theories over the years, we only have a few candidates for architecture’s foundation. As of now, we seem to mainly compete over architectural theories and architectural styles. These become our two initial foundational candidates.

An architectural style describes the physical characteristics of an era. This may be as specific as pointed arches in Gothic architecture, or as vague as chaotic forms in Deconstructivist architecture.

An architectural theory is a set of ideas that outline an approach towards architecture. These ideas are non-arbitrary, which may be implemented in one or more architectural styles. For example, modernism’s “form follows function” is a theoretical approach towards architecture, and one stylistic implementation is by removing ornamentation from a building.

Creating this distinction between style and theory is important as it reveals that styles are insignificant. They are merely a single manifestation of an idea that people copied. They are fleeting, superficial, and aesthetically subjective–but more importantly, they represent a lack of understanding of the discipline behind a building (This has been identified in the second group of the architectural schism.). These are not hallmarks of a good foundation to base the architectural profession upon.

In contrast, an architectural theory is normally based on the religious, political, social, technological and ethical ideas of the time. This encompasses more aspects of our total experience of the world and thus makes it a better candidate for an architectural foundation.

Theories have been described as that which identifies the practices, production and related challenges of architecture. They re-evaluate architecture’s intentions and relevance\cite{newagenda_. Although it shares the same intentions as a foundation, the fact remains that theories die and have a short-lived existence compared to architecture’s full lifespan.

If theories and styles are both inappropriate, a third route is to consider that theories are simply strategies executed underneath a global and timeless architectural framework. The theory is not the foundation of architecture, but an instance which tackles the issues that the framework proposes. This is in the same way that a style is an instance which tackles the issues that a theory proposes. Identifying this global and timeless architectural framework, and in turn, foundation, is the first step to resolving architecture’s crisis.

Characteristics of a framework

A framework is a basic structure underlying a system or concept. Rather than attempt to elaborate on this phrase, I will instead immediately present an architectural framework:

[in Architecture, an operative art] the end must direct the operation. The end is to build well.

Well [an ideal] building hath three conditions: firmness [sturdy], commodity [useful], and delight [beautiful].


For a quote which has survived more than 2000 years, it seems to remain relevant and encompasses all architectural theories. No matter how different each theory is, each theory first prioritises these three elements, and then prescribes a strategy to showcase their prioritisation. For example, Gothic architecture may be seen as prioritising firmness and delight, or Modernism may prioritise firmness (technology) and commodity. Some believe all are equal (Vitruvius), but all theories form a stance in relation to these three.

We also notice that the framework’s elements are neither prescriptive, proscriptive, affirmative or critical of anything. It is a listing of attributes which must be considered for a building, but offers no more guidance. It is a description, not an arguing point.

These elements are also agnostic. They do not rely on a culture, religion or belief. All physical forms have an element of structure (firmness). All living beings all have an intent (commodity). And when living beings are put together with structure, we give an aesthetic judgement (delight). This characteristic has given it a timeless nature.

These three characteristics (encompassing, descriptive, and agnostic) upheld by three elements (firmness, commodity, and delight) form an unquestionable architectural framework. Architects are now free to juggle different theories as strategies governed by the framework, but must consider all elements of the framework. They are also still free to implement a theory as an architectural style. Each style considers a theory, and each theory considers the framework.

A new hierarchy of Framework > Theory > Style shifts the focus of architecture away from the details of theories towards a set of commonalities. This allows us to treat theories as just another item in our toolkit towards solving bigger problems. It’s no longer about getting caught up in the details and their changing natures, it’s about selecting the right tool for the job.

This means that theories can be marketed as what they truly are: an approach towards a defined society, not a law unto itself. This helps prevent arguments about details and encourages speculation over the elements in the architectural framework as a root for theoretical strategies.

A resulting increased emphasis on society as a specific audience per theory allows us to be more aware of society’s needs. This allows us to tackle multiple types of societies simultaneously with each theoretical solution tailored towards their interests. This satisfies the professional requirement of working for the benefit of society.

Because of the framework’s characteristics, it may always be applied in all situations at all times without prescribing goals–a simple, agreeable outline that has always affected what we had done in the past, without restricting what we do in the future.

In part 3, I will explain how this architectural framework is incomplete without a compass to guide its application, and introduce the question of architectural ethics.

  • [1] Wotton, H, 1651, The elements of architecture (translated from De Architectura, Vitruvius), Thomas Maxey, London, UK
Life & much, much more

Architecture’s existential crisis pt 1: Architecture is not a profession

A while back (half a year ago), I planned to attempt to solve architecture’s long-lasting “existential crisis”. I thought of creating a framework where people could understand what a theory was and how to generate new ones. The more overarching goal was to look at architectural theories in a positive and constructive light, rather than as points of debate. However in this first part, I just want to highlight the symptoms of the problem.

In architecture’s 8,000 years or more years of existence, it has had about 112 distinct architectural styles (not counting regional differences)[1]. Each style represents a theory or a subset of one. More than half of these theories were formed in the past 250 years – a mere 3% of architecture’s lifespan. At this rate you will encounter 10 more architectural theories during your average career. Simply put, architecture has an existential crisis.

But what is an existential crisis? It’s a stage of development at which an individual questions the very foundations of his or her life: whether their life has any meaning, purpose or value.

An existential crises creates two problems. The first is that we are unable to define goals unanimously as an profession. Without goals, our efforts become divided and ineffective towards serving society.

Uncertainty has spilled over into our schools of architecture. Thirty years ago Christian Norberg-Schulz charged that “the schools have shown themselves incapable of bringing forth architects able to solve the actual tasks.” Things are no different today although we are more likely to meet with challenges to the very notion of “the actual tasks”. Do we know what these tasks are?
– Karsten Harries[2]

The second problem is that we lose a professional foundation. We are unable to be disciplined in our actions, measure standards of success, and focus on the needs of society. These are all professional traits that a foundation provides.

[A profession is] A disciplined group of individuals who adhere to high ethical standards and uphold themselves to, and are accepted by, the public as possessing special knowledge and skills in a widely recognised, organised body of learning derived from education and training at a high level, and who are prepared to exercise this knowledge and these skills in the interest of others.

Inherent in this definition is the concept that the responsibility for the welfare, health and safety of the community shall take precedence over other considerations.
– Australian Council of Professions[3]

As a result of undefined goals and non-existent foundation, we get lots of theories vying for the industry’s attention. However, at any one time only a few theories are marketed as relevant, each describing a certain type of society. Not only does this mean we are limited in our ability to serve types of society, but we get a schism in the architectural body into:

  • Those who apply theory as a discipline to the relevant group in society with shared interests. ie. part of a profession.
  • Those who apply theory as a discipline without understanding which society it was meant for. Exercising knowledge without considering the interests of others is not part of a profession.
  • Those who disregard theory and do what they please. This lack of discipline is also not part of a profession.

With architectural fame dominated by theoreticians who build, it is encouraged to critically observe the previous generation’s philosophy and debunk it with your own[4]. This is childish bickering–creating a dog-eat-dog industry where we aggressively defend our individuality and treat it as a good thing.

This lack of discipline and resulting schism is why I propose that either the state of architectural profession is a short-lived movement waiting to be debunked, or we do not have one. Extending this movement into something that is timeless and bound by the definition of a profession is how we can solve the existential crisis.

Some might argue that continuously questioning our approach is a sign of dedication towards relevancy in society and see it as a good thing. This, however, is missing the point: it isn’t about the details of each theory or how they are formed. It is about how theories are marketed.

Architectural theories are marketed as the be-all and end-all of architectural approach. Although hindsight continuously proves this to be wrong, our impression of current theory renders past theories outdated and somehow irrelevant. Our resistance to change then fixates our attention on the theoretical details between past and present, leading to arguments. This hinders our ability to see larger goals.

Additionally, we are still unable to outline goals or foundation despite increasingly and continuously questioning our foundations. If we continue generating theories at a rate of every 3-4 years without being able to highlight any one of these theories as being correct or still relevant today, then perhaps we are searching in the wrong place.

Coming in part 2: What are the foundations of architecture and why are they inappropriate?

  • [1] Timeline of architectural styles, Wikipedia, viewed 11 September 2012,
  • [2] Harries, K, 2000, The Ethical Function of Architecture, Massachusetts Institute of Technology, USA
  • [3] Definition of a Profession, Australian Council of Professions, viewed 4 October 2012,
  • [4] Breitschmid, M, Architecture & Philosophy: Thoughts on Building, Blacksburg, Virginia, USA
Life & much, much more

Architecture and what makes good design

Given that my third year in architecture is about to begin, I wanted to talk a bit about what I judge to be “Good Architecture”. I’ve talked a bit about selfish architecture before and I want to expand on this.

Good architecture cares about other people and disregards our own subjective wants. I was first introduced to this idea back in the 2011 Flux Student Architecture Congress in Adelaide during a presentation by a New Zealander named Andrew Maynard. He switched to a new slide – split into two pictures. The left showing a picture of a typical Zaha Hadid shelter in her signature style, and the right showed the ubiquitous German bus stop.

Zaha Hadid vs the German Bus Stop

Andrew points out each picture and asks which is the better design? The winner, of course, is the bus stop. Why? Because of the following news headline: “Fake bus stop keeps Alzheimer’s patients from wandering off” ([source]/source).

These fake bus stops were put outside Alzheimer clinics. Previously, when patients were distressed, they would try to escape the building. The staff would then have to alert the police to track them down and bring the back. Now, they would see the bus stop, and sit there – waiting for the bus that would never come to bring them home. The staff would leave them to calm down, and after a while approach them and say kindly, “It looks like the bus is running late. Would you like to come inside for a cup of tea until it comes?” To which they would agree, calm down over some tea and biscuits, and forget that they were trying to leave.

This understanding of human needs and care for all parties (staff, patients, and society) is the hallmark of good design. It is in contrast to designing a prison to keep the patients inside, and in even greater contrast to Zaha Hadid’s socially-devoid self-indulgent form manipulations.

Unfortunately, folks like Zaha Hadid are worshipped and highlighted in our education, yet I can’t even find a name to attribute the bus stop to. You just need to look at the names of architecture firms to see the egotism – just notice how many are named after the architects themselves or their initials.

Become a better architect. Don’t be selfish.


Separating the core application from the delivery framework with Kohana

This post is about developing web applications that don’t depend on the web.

Kohana MVC - A separated delivery mechanism architecture

MVC is probably the most popular architecture for web applications. But what’s interesting about MVC is that it’s not actually an architecture meant for your core application. It is merely a delivery mechanism.

With this in mind – a well developed application treats the delivery mechanism as a plugin and cleanly separates the core application from the web. It should be possible to remove the internet with all of its methods of interaction (eg: its HTTP Request/Response interface), and still have a working “core” application which you can use elsewhere. Say for example to make a desktop or mobile device application.

In short: your business logic doesn’t rely on the internet to exist.

With Kohana, or really any modern MVC framework which supports the PSR-0 standard, this is surprisingly easy to do. I’d like to share the convention I use.

In Kohana, all logic goes in application/classes/ (or equivalent in its CFS). This directory will contain all your delivery logic. This includes Controllers, Views, and any Models, and perhaps some Factories to DI your app.

Your actual core logic is kept in a separate repository to force yourself to remove all dependencies. When combined, I like to store the core logic in application/vendor/. With Git this can be done with a submodule. This way MVC and insert-your-architecture-here is cleanly separated.

You can then add your core application to Kohana’s autoloader (in application/bootstrap.php for convenience via spl_autoload_register(function($class) { Kohana::auto_load($class, 'vendor/Path/To/App/src'); });

And that’s it! With a little discipline we suddenly get a massive benefit of future flexibility.

If you are interested in a project which uses this separation, please see my WIPUP project. (Disclaimer: WIPUP is a side-project and is still in progress). More reading by Bob Martin here.