Cool Stuff from 2025

Every January I compile a list of things and experiences that impressed me during the past year. See the 2024 here.

House

After years of preparations, the paperwork has been approved. We promptly tore down the old house to make a place for the new one:

The first floor of the new house in that same exact spot:

Extending the old construction was out of the question, and extremely painful to maintain. Building a new building in its place was the smartest choice, but seeing the old one demolished was a very moving experience.

It is very hard to build, very easy to tear down.

As a sidenote, one of the weirdest hurdles I had to deal with is the Notary who prepared my paperwork deciding to poison her business partner. Yes, you are reading that right.

RV

RV is the gift that keeps on giving, especially with kids. Learning from last year experiences, we coordinated with other families and it was awesome.

Sweden

Our friends from kids’ preschool were going to Sweden on an RV trip and of course – we had to seize that opportunity. The children had great fun together, we all swam in plenty of lakes, visited Astrid Lindgren’s World (highly recommended with kids) and checked out my University in Kristianstad where I studied for half a year.

Sweden is super easy in an RV – there is plenty of space and you don’t have to book anything. The south is missing mountains, but it’s getting beautiful closer to Norway.

Austria & Garda

Its almost a tradition that every year we try venture into the southern Europe but we get held up in Austria and Lake Garda, and this year it was the case too. However this year – it was on purpose. We met up with friends (and inspiring strangers) from Travelling Village. You should check out what they are up to.

Thanks to AI coding agents I was able to do quite a bit of work while enjoying life – I would spend my focus time outlining the tasks to agents, spin up 3 or 4 of them in tmux sessions and go hike or spend time with kids. It was stressful, but doable.

In the Ötztal valley, you can find Oztal birds of Prey park where giant birds (including Hedwig apparently) are flying over your head

Lucha Libre

Lucha Libre is like American Wrestling, but you know, a little less classy and a little bit more over-the-top. It embraced the cringe and kitsch fully and turned it all into great fun. Compared to other “experiences” this year, I enjoyed it more than Broadway and a Michelin 2-star restaurant (Pujol) we visited with colleagues.

I am trying to find culturally appropriate way to say that you know stuff is serious when the midgets step in and I am failing. Clearly, in Mexico they don’t care.

AI Coding

AI coding is a thing now. I started the year using tab completion and delegating tasks to AI with very mixed success, and now I am ship entire features in giant repositories without typing a single line of code by hand.

This dramatic workflow change is mostly due warp speed improvements in model capabilities and tooling, but it’s also a muscle that you have to train. Some articles that helped me the most are:

These are probably a bit outdated (10 months is forever in AI time), but introduced me to a new way of working.

Self hosting

AI takes the tedious of self-hosting. Previously I was reluctant to deal with debugging docker build parameters, certificates, toolchains and figuring out new fresh hell on my free afternoon.

Now, I can just drop the error message to ChatGPT and get step-by-step instructions to get the tool running, or even better – I can run claude code locally to fix stuff for me. AI is lowering the barrier to entry not only for code, but for devops too!

Here is the new stuff I am self-hosting on my QNAP NAS:

n8n

N8N is an Open-Source version of Zapier. It connects all your services and serves as “glue” between them. Here, for example is my tweet scheduler that will post anything I put in a special Evernote notebook (as a sidenote, I had to implement Evernote N8N Node for this):

In Why do you have so many bots? I described some of my personal infrastructure that I am currently porting to n8n. Self-hosting n8n allows me Claude Code to write new nodes for missing functionality, all the API keys are stored on a machine in my closet.

Plex

Plex is a media center manager akin to a private Netflix. It syncs playback state across different devices and makes it easy to manage your media library.

I resisted this one for a long time, because I don’t want to make it easier to watch movies, but I treat it as private Netflix for the kids. Both Youtube kids and Netflix are pushing absolute garbage despite parental settings, so I locked down a curated experience with a few quality options.

And for me, it makes it much easier to stream movies to Oculus since official Netflix app has 480p resolution (backstory).

MCP

MCP is a protocol for providing context to AI models, promising interoperability between AI clients and services you use. It enjoyed tremendous popularity in the middle of the year, which resulted in widespread adoption – WordPress.com released an MCP server too, and new ChatGPT Apps protocol is based on MCP.

It is genuinely useful in connecting consumer products, but now there are other options for dev tooling – particularly Skills and CLI tools.

I am drafting a post about analogies between MCP and WEB3.

Voice Mode

Voice input is finally good and has been for a while. The trick we were missing all these years is voice recognition (like whisper model) combined with post processing with an LLM or a multimodal model. The bigger blocker seems to be “ick factor” of talking to a computer like a crazyman mumbling to himself.

I don’t find voice input particularly useful in writing – I am thinking at roughly my typing speed.

Where voice input shines is dumping context:

  • Describing task to an AI coding agent via voice makes it super fast and ALSO makes you share more context – win-win. Plus typos don’t matter because AI is gonna process it anyway.
  • It is solving my particular pain point on Slack on the go: Most of my timezone overlap with colleagues happens during my evenings when I’m at the gym of dealing with kids. Being able to brain dump into a phone while sounding semi-coherent is super useful
  • I am able to talk much much faster when there is no human on the other end.

On my mac I am using superwhisper, although it’s expensive and subscription does not make sense. I will find other solution (sotto?) when my cycle is up. On my iPhone I have this DIY iOS shortcut.

I think there are a lot of cool applications of voice input/output that we haven’t yet seen in products.

Evernote N8N Node

I created an Open Source N8N node for Evernote. You can install it on your instance using “Community Nodes” functionality.

N8N

N8N is like an open source version of Zapier. You connect nodes, give credentials and it can execute tasks. Most importantly, you can install it on your own server and the credentials will not leave your computer.

Community Nodes

Because N8N can run locally on your computer, there is a way to install any compatible NPM package, which unlocks custom code running on your N8N instance.

You can browse all community nodes here

Evernote Node

Since I use Evernote heavily for personal productivity, I really wanted to utilize it in my workflows.

I published the node in this Github repository

What does it do?

It exposes following actions

  • Create Note
  • Delete Note
  • Get Note contents
  • Search Notes
  • Update Note
  • List Notebooks
  • List tags

Listing Notebooks

Searching notes

Creating a note

Installation

This will only work on self hosted n8n instances because it is running custom code

Go to the “Community Nodes”

In the “Install community nodes” paste:

n8n-nodes-evernote

Credentials

You will need to get a Developer token for your Evernote account. You can get them here.

You’re done! The code is here.

[Deliberate 119] The limiting factor is energy

It’s been a while and I’m back with a message: pseudointellectualism is dying, and thank (AI?) God. But it turned out to be a blocker for my own writing – I would come up with a piece that I was decently happy with only to realize mid-through that AI could have written that and give up.

The answer is clear: I need to give you more deranged takes that AI will never be able to come up with. Unpolished thoughts from Poland. Today, I’m writing about:

  • Energy
  • AI for kids
  • The only architectural book you need

It’s all about energy

When you see successful people, they always have so much going on. They do this, that and the other thing and after all that, come back to the kids and play with them. Where do they get all the energy?

Have a look at this recent video of Alex Karp (CEO of Palantir) squirming like a trapped badger. This is how high energy looks like:

I’m talking about the mental energy – the drive to do things, the “lets do this” aura. When you have more energy, all the other things correct themselves:

When you have high energy,

  • You keep Momentum, so all context stays loaded in your brain
  • Do the thing quickly
  • Jump straight to the next thing,
  • Do that quickly

When you have low energy, you:

  • Procrastinate before starting the thing
  • Do it slowly, half-assedly
  • Take a ton of break in the meantime
  • You have to remind yourself what were you doing in the first place

Ok, how do I get more energy?

  1. Move for the love of god, move
  2. Produce. Do things that excite you, not the things you are “supposed” to be doing
    • Watching Netflix is not a hobby. Choose high-energy hobbies
    • Are you watching movies about people doing high energy things or sitting around and moping?
  3. I am aggresively trying to supplement more Creatine, and it helps
    • I am trying to get to a dose of like 20mg, but mu stomach hurts when I drink too much at the same time. Now I get a giant water bottle with creatine to the gym. Does help!

If you are old enough to remember the meme, be the Leeroy Jenkins in your life.

Yes, it is unfair

Some people just have unfair advantages. If you want to get angry:

A natural short sleeper is someone who sleeps a lot less in a 24-hour period than is expected for people of the same age, without being abnormally sleepy. Short sleepers sleep less than 75% of what is normal for their age. (Medline Plus)

This translates on a bigger scale too

Ok, you might have noticed that I think AI is quite useful and will continue to be useful. The limiting factor in AI development is currently energy.

We need to be building any kind of plant that we can imagine. It’s not a tradeoff anymore.

  • Solar? Definitely
  • Nuclear? In every city
  • Coal? Yeah keep that going until the other things catch up.

The demand for energy is infinite, because cheap energy induces more demand – just better things get built when you have more energy.

The environment

Look, this blog claims to be into solarpunk. Solarpunk future is when nature and human coexist. I hope we get there, but we need energy to do that. We need to ramp off coal, but AFTER we build more solar and nuclear plants, not before.

Here is what bodybuilders do:

  1. First, they bulk
  2. Then, they cut the fat because they are not in energy scarcity anymore

AI for kids

I am working on a little hardware AI companion for the kids.

It is meant to give kids place to explore and play with technology, without exposing them to the Internet addiction machine.

The only architecture book you need

I summarized my notes from reading “A Pattern Language” by Christopher Alexander. To give you some taste:

In a society where a man can find his own self, there will be ample variety of character, and character will be strong. In a society where people have trouble finding their own selves, people will seem homogeneous, there will be less variety, and character will be weak.

Book: A Pattern Language by Christopher Alexander (the only architecture book you need)

Buildings are often much more unfriendly than they need to be.

A Pattern Language: Towns, Buildings, Construction is a gigantic and opinionated catalog of architecture bits from the scale of regions and towns down to windowsills, kitchens, chairs, and ornament. It explains why certain architectural choices work while others don’t, how humans interact with their surroundings and why they feel what they feel in the finished place.

How we used this book to build a house

A cozy house is not a pile of Instagram-worthy angles thrown together, but a complex ecosystem where everything connects to everything else. My wife and I wanted to be very intentional in our house building project, so we used this book as a start of the design process:

  1. We each read it and came up with a list of patterns we wanted to incorporate
  2. We compared our lists, discussed, narrowed down and made it more specific
  3. We created a giant Google Doc outlining each room, floor and piece of the house and linking to the actual pattern language patterns (and other influences)
  4. We searched for existing houses matching the overall vibe – we landed on the świdermajer style native to the region
  5. We found somebody designing contemporary houses in that style
  6. Continued the process with our new designer
  7. Now our designer is actually the chief contractor building our future home.

Pattern language was instrumental in us changing our minds about what we wanted to build – once we understood why certain choices produce certain outcomes, we changed our minds. I, for example, gave up on huge southern-facing HST windows.

Traditional buildings are the way they are for a reason

Many “aesthetic” choices are actually adaptive responses to a local environment. For example:

  • In northern climates, roof overhangs are providing shadow during the summer, but still let in light in winter when the sun is lower. Additionally, they protect the walls from moisture.
  • Decorative patterns are usually hiding imperfections. They are used where something needs “binding energy” (seams, transitions, joints).
  • We assume bigger glass = better view. But the book argues small panes make views more alive. Instead of one flat view, you see six views. The frame breaks up the landscape and intensifies your connection to it.
  • Being “less square” creates more walls which allows more rooms with natural light from 2 sides.

When ornament is applied badly it is always put into some place where these connections are not really missing, so it is superfluous,

Globalism pushes one aesthetic everywhere, with utter disregard for local conditions. If your only inspiration is Instagram, then your house will feel as connected as scrolling tiktok.

My beef with Minimalism

I am urging you to be intentional with your house. What we currently understand as “Minimalist aesthetic” could have stopped there. But it turned from a pursuit of intention to intellectual exercise, and then into a cargo cult of washed-out square gray slop.

Minimalist industrial complex is biased against traditional techniques, small imperfections, color and inconsistency. Its main goal is to produce factory-like design that is divorced from its context and life itself.

The perfectly crystalline squares and rectangles of ultramodern architecture make no special sense in human or in structural terms. They only express the rigid desires and fantasies which people have when they get too preoccupied with systems and the means of their production.

But you want a house that you can love, not one that will win an award. A home should visibly contain your story—objects, photos, weird artifacts, tools, books, souvenirs. Color, things, and life are all ok.

But the irony is, that the visitors who come into a room don’t want this nonsense any more than the people who live there. It is far more fascinating to come into a room which is the living expression of a person, or a group of people, so that you can see their lives, their histories, their inclinations, displayed in manifest form around the walls, in the furniture, on the shelves.

Imperfect is cozy

When the whole design depends on perfect sizing and perfect execution, it becomes fragile. Historically, people covered inaccuracies with details and decorations—and those are exactly the things we now consider beautiful. The book repeatedly argues for materials and details that can age with grace, instead of demanding perfection forever. In particular, author recommends:

  • Using soft clay tiles for floors / paths in the garden. Yes, they will wear when you walk on them, but are you annoyed when the stones of Florence are deformed with wear?
  • Using soft wood that will show wear
  • Worn and mismatched chairs will be far superior to a perfect set. Choose a mix that reflects real bodies and real moods.

It’s all connected

The strongest claim in the book is not any single rule—it’s the system view: good environments are made of many patterns that support each other. You don’t “add a nice kitchen.” You build a chain of supports: light, sequence, edges, thresholds, storage, sitting, views, and so on.

  • No isolated improvements: A new thing should “repair the world around it” (inside and outside the building), otherwise it will feel bolted-on.
  • Compression matters: The book argues that overlapping patterns in the same space makes places denser in meaning—and often cheaper in area.
  • Use it as a language, not a checklist: The value comes from choosing a set of patterns that reinforce one another for your site and life.

The importance of light and windows

A lot of the patterns were devoted to natural light and treating boundaries as places in themselves. This matches the overall theme of interconnectedness: a window is not just a thin line, it’s its own object that deserves weight and intentionality.

  • Light from more than one direction: rooms with windows on two sides are fundamentally different to live in than one-sided rooms. They cast less ominous shadows, and people consistently avoid rooms with light from only one side.
  • Windows are a connection: small panes, low sills, opening windows—these are “touch points” with weather, plants, breeze, street life.
  • Edges are places: porches, balconies, gallery surrounds, outdoor rooms—treat the perimeter as a livable zone, not a thin line.

If you really want to go deep on the value of natural light, read some Huberman.

My highlights

I recommend checking these highlights – some quotes are hilarious. I linked the patterns I really liked to an index on https://www.patternlanguageindex.com/

  • Buildings (house-scale first)
    • 105 SOUTH FACING OUTDOORS **
      • today. Private lots would have to be longer north to south, with the houses on the north side.
      • Keep the most important rooms to the south of these wings—INDOOR SUNLIGHT (128); and keep storage, parking, etc, to the north—NORTH FACE (162).
    • 106 POSITIVE OUTDOOR SPACE **
      • Outdoor spaces which are merely “left over” between buildings will, in general, not be used.
      • The fact that people feel more comfortable in a space which is at least partly enclosed is hard to explain.
      • When open space is negative, for example, L-shaped—it is always possible to place small buildings, or building projections, or walls in such a way as to break the space into positive pieces.
      • Make all the outdoor spaces which surround and lie between your buildings positive. Give each one some degree of enclosure; surround each space with wings of buildings, trees, hedges, fences, arcades, and trellised walks, until it becomes an entity with a positive quality and does not spill out indefinitely around corners.
    • walls are very light or the ceilings very high. We conclude, therefore, that a building wing that is truly a “wing of light” must be about 25 feet wide—never wider than 30 feet—with the interior rooms “one deep” along the wing.
    • Isolated buildings are symptoms of a disconnected sick society.
    • It is easiest to understand this at the emotional level. The house, in dreams, most often means the self or person of the dreamer. A town of disconnected buildings, in a dream, would be a picture of society, made up of disconnected, isolated, selves. And the real towns which have this form, like dreams, embody just this meaning: they perpetuate the arrogant assumption that people stand alone and exist independently of one another.
      • Placing the main entrance (or main entrances) is perhaps the single most important step you take during the evolution of a building plan.
    • The entrance must be placed in such a way that people who approach the bulding see the entrance or some hint of where the entrance is, as soon as they see the building itself.
    • An entrance will be visible from an acute angled approach if: a. The entrance sticks out beyond the building line. b. The building is higher around the entrance, and this height is visible along the approach.
    • The garden needs a certain degree of privacy, yet also wants some kind of tenuous connection to the street and entrance. This balance can only be created in a situation where the garden is half in front, half in back—in a word, at the side, protected by a wall from too great an exposure to the street;
    • 112 ENTRANCE TRANSITION **
      • Buildings, and especially houses, with a graceful transition between the street and the inside, are more tranquil than those which open directly off the street.
      • Make a transition space between the street and the front door. Bring the path which connects street and entrance through this transition space, and mark it with a change of light, a change of sound, a change of direction, a change of surface, a change of level, perhaps by gateways which make a change of enclosure, and above all with a change of view.
      • Since people always try to use the door nearest the car (see Vere Hole, et al., “Studies of 800 Houses in Conventional and Radbum Layouts,” Building Research Station, Garston, Herts, England, 1966), the entrance nearest the parking spot always becomes the “main” entrance, even if it was not planned that way.
      • A proper car connection is a place where people can walk together, lean, say goodbye; perhaps it is integrated with the structure and form of the house. An ancient inn, built in the
      • Place the parking place for the car and the main entrance, in such a relation to each other, that the shortest route from the parked car into the house, both to the kitchen and to the living rooms, is always through the main entrance. Make the parking place for the car into an actual room which makes a positive and graceful place where the car stands, not just a gap in the terrain.
      • GRADIENT (127), COMMON AREAS AT THE HEART (129); treat the place for the car as if it were an actual outdoor room—
      • If you can, put the car connection on the north face of the building—
    • Essentially, it means that any place where people can feel comfortable has 1. A back. 2. A view into a larger space.
    • Whatever space you are shaping—whether it is a garden, terrace, street, park, public outdoor room, or courtyard, make sure of two things. First, make at least one smaller space, which looks into it and forms a natural back for it Second, place it, and its openings, so that it looks into at least one larger space. When you have done this, every outdoor space will have a natural “back”; and every person who takes up the natural position, with his back to this “back,” will be looking out toward some larger distant view.
    • 115 COURTYARDS WHICH LIVE **
      • People need an ambiguous in-between realm—a porch, or a veranda, which they naturally pass onto often, as part of their ordinary life within the house, so that they can drift naturally to the outside.
      • There are not enough doors into the courtyard. If there is just one door, then the courtyard never lies between two activities inside the house; and so people are never passing through it, and enlivening it, while they go about their daily business.
      • Place every courtyard in such a way that there is a view out of it to some larger open space; place it so that at least two or three doors open from the building into it and so that the natural paths which connect these doors pass across the courtyard. And, at one edge, beside a door, make a roofed veranda or a porch, which is continuous with both the inside and the courtyard.
    • 116 CASCADE OF ROOFS *
      • Few buildings will be structurally and socially intact, unless the floors step down toward the ends of wings, and unless the roof, accordingly, forms a cascade.
      • Visualize the whole building, or building complex, as a system of roofs. Place the largest, highest, and widest roofs over those parts of the building which are most significant: when you come to lay the roofs out in detail, you will be able to make all lesser roofs cascade off these large roofs and form a stable self-buttressing system, which is congruent with the hierarchy of social spaces underneath the roofs.
    • 117 SHELTERING ROOF **
      • The roof plays a primal role in our lives. The most primitive buildings are nothing but a roof. If the roof is hidden, if its presence cannot be felt around the building, or if it cannot be used, then people will lack a fundamental sense of shelter.
      • And a sheltering roof must be placed so that one can touch it—touch it from outside. If it is pitched or vaulted, some part of the roof must come down low to the ground, just in a place where there is a path, so that it becomes a natural thing to touch the roof edge as you pass it.
    • 118 ROOF GARDEN *
      • Here is a rule of thumb: if possible, make at least one small roof garden in every building, more if you are sure people will actually use them.
    • Arcades—covered walkways at the edge of buildings, which are partly inside, partly outside—play a vital role in the way that people interact with buildings.
    • Buildings are often much more unfriendly than they need to be.
    • Wherever paths run along the edge of buildings, build arcades, and use the arcades, above all, to connect up the buildings to one another, so that a person can walk from place to place under the cover of the arcades.
    • To lay out paths, first place goals at natural points of interest Then connect the goals to one another to form the paths. The paths may be straight, or gently curving between goals; their paving should swell around the goal. The goals should never be more than a few hundred feet apart.
    • On no account allow set-backs between streets or paths or public open land and the buildings which front on them. The set-backs do nothing valuable and almost always destroy the value of the open areas between the buildings. Build right up to the paths; change the laws in all communities where obsolete by-laws make this impossible. And let the building fronts take on slighdy uneven angles as they accommodate to the shape of the street.
    • 125 STAIR SEATS *
      • The bottom few steps of stairs, and the balusters and rails along stairs, are precisely the kinds of places which resolve these tendencies. People sit on the edges of the lower steps, if they are wide enough and inviting, and they lean against the rails.
      • In any public place where people loiter, add a few steps at the edge where stain come down or where there is a change of level Make these raised areas immediately accessible from below, so that people may congregate and sit to watch the goings-on.
    • Between the natural paths which cross a public square or courtyard or a piece of common land choose something to stand roughly in the middle: a fountain, a tree, a statue, a clock-tower with seats, a windmill, a bandstand. Make it something which gives a strong and steady pulse to the square, drawing people in toward the center. Leave it exactly where it falls between the paths; resist the impulse to put it exactly in the middle.
    • Unless the spaces in a building are arranged in a sequence which corresponds to their degrees of privateness, the visits made by strangers, friends, guests, clients, family, will always be a little awkward.
    • All buildings, and all parts of buildings which house well-defined human groups, need a definite gradient from “front” to “back,” from the most formal spaces at the front to the most intimate spaces at the back.
    • If the right rooms are facing south, a house is bright and sunny and cheerful; if the wrong rooms are facing south, the house is dark and gloomy. Everyone knows this. But people may
    • breakfast nook that looks directly into a garden which is sunny in the morning;
    • give the common area a full southern exposure, bedrooms south-east, porch south-west
    • The only balanced situation is the one where a common path, which people use every day, runs tangent to the common areas and is open to them in passing.
    • 130 ENTRANCE ROOM **
      • Arriving in a building, or leaving it, you need a room to pass through, both inside the building and outside it This is the entrance room.
        1. Shelf near the entrance
      • (b) People need a five foot diameter of clear space to take off their coats.
      • At the main entrance to a building, make a light-filled room which marks the entrance and straddles the boundary between indoors and outdoors, covering some space outdoors and some space indoors. The outside part may be like an old-fashioned porch; the inside like a hall or sitting room.
      • As far as possible, avoid the use of corridors and passages. Instead, use public rooms and common rooms as rooms for movement and for gathering.
    • 132 SHORT PASSAGES *
      • Bu when there has to be a passage in an office or a house and whei it is too small to be a BUILDING THOROUGHFARE (101), it must be treated very specially, as if it were itself a room.
      • The most profound issue, to our minds, is natural light. A hall or passage that is generously lit by the sun is almost always pleasant. The archetype is the one-sided hall, lined with windows and doors on its open side.
      • Interior windows, opening from these rooms into the hall, help animate the hall. They establish a flow between the rooms and the passage; they support a more informal style of communication;
      • The third issue which makes the difference between a lively passage and a dead one is the presence of furnishings.
      • A staircase is not just a way of getting from one floor to another. The stair is itself a space, a volume, a part of the building; and unless this space is made to live, it will be a dead spot, and work to disconnect the building and to tear its processes apart.
      • Furthermore, the first four or five steps are the places where people are most likely to sit if the stair is working well. To support this fact, make the bottom of the staircase flare out, widen the steps, and make them comfortable to sit on.
      • However, if the stair is too near the door, it will be so public that its position will undermine the vital social character we have described. Instead, we suggest that the stair be clear, and central, yes—but in the common area of the building, a little further back from the front door than usual.
    • 134 ZEN VIEW *
      • If there is a beautiful view, don’t spoil it by building huge windows that gape incessantly at it Instead, put the windows which look onto the view at places of transition—along paths, in hallways, in entry ways, on stairs, between rooms.
    • 136 COUPLE’S REALM *
      • house with children. The couple’s realm needs to be the kind of place that one might sit in and talk privately, perhaps with its own entrance to the outdoors, to a balcony.
      • Make a special part of the house distinct from the common areas and all the children’s rooms, where the man and woman of the house can be together in private. Give this place a quick path to the children’s rooms, but, at all costs, make it a distinctly separate realm.
      • if possible, try to place the bathing room to open off the couple’s realm—BATHING ROOM (144).
      • And keep the area private with a LOW DOORWAY (224) or two doors—CLOSETS BETWEEN ROOMS (198)….
    • 137 CHILDREN’S REALM *
      • … in a HOUSE FOR A SMALL FAMILY (76), there are three main areas: a COMMON AREA AT THE HEART (129), a COUPLE’S REALM (136), and a CHILDREN’S REALM which overlaps the common area.
      • We therefore conclude that all the places which children need and use should form one continuous geometrical swath, which does not include the couple’s realm, the adult private rooms, or any formal, quiet sitting spaces. This continuous playspace needs certain additional properties.
      • The children’s private spaces (whether they are alcoves or bedrooms) can be off the playspace, but it must be possible to close them
      • It is usually too expensive to create a special playspace; but it is always possible to make a hallway function as the indoor part of the playspace. It needs to be a bit wider than a normal hall (perhaps seven feet) with nooks and stages along the edge. Children take up the suggestive qualities of spaces—on sight of a little cave-like space, they will decide to play house; on sight of a raised platform, they will decide to put on a play. Thus, both indoor and outdoor parts of the playspace need different levels, little nooks, counters, or tables, and so on. A lot of open storage for toys, costumes, and so forth should also be provided in these spaces. When toys are visible, they are more likely to be used.
      • Start by placing the small area which will belong entirely to the children—the cluster of their beds. Place it in a separate position toward the back of the house, and in such a way that a continuous playspace can be made from this cluster to the street, almost like a wide swath inside the house, muddy, toys strewn along the way, touching those family rooms which children need—the bathroom and the kitchen most of all—passing the common area along one side (but leaving quiet sitting areas and the couple’s realm entirely separate and inviolate), reaching out to the street, either through its own door or through the entrance room, and ending in an outdoor room, connected to the street, and sheltered, and large enough so that the children can play in it when it rains, yet still be outdoors.
    • all. A good morning window looks out on some kind of constant object or growing thing, which reflects the changes of season and the weather, and allows a person to establish the mood of the day as soon as he wakes up. Therefore,
    • Give those parts of the house where people sleep, an eastern orientation, so that they wake up with the sun and light. This means, typically, that the sleeping area needs to be on the eastern side of the house; but it can also be on the western side provided there is a courtyard or a terrace to the east of it.
    • 139 FARMHOUSE KITCHEN **
      • The difficulties which surround the situation will only disappear, finally, when all the members of the family are able to accept, fully, the fact that taking care of themselves by cooking is as much a part of life as taking care of themselves by eating.
      • Make the kitchen bigger than usual, big enough to include the “family room” space, and place it near the center of the commons, not so far back in the house as an ordinary kitchen. Make it large enough to hold a good big table and chairs, some soft and some hard, with counters and stove and sink around the edge of the room; and make it a bright and comfortable room.
    • 140 PRIVATE TERRACE ON THE STREET **
    • No one can be close to others, without also having frequent opportunities to be alone.
    • inside the house is in a vague sense hers—yet it is only very rarely that the woman of the house has a small room which is specifically and exclusively her own.
    • Give each member of the family a room of his own, especially adults. A minimum room of one’s own is an alcove with desk, shelves, and curtain. The maximum is a cottage—like a TEENAGER’S COTTAGE (154), or an OLD AGE COTTAGE (155). In all cases, especially the adult ones, place these rooms at the far ends of the intimacy gradient—far from the common rooms.
    • Every comer of a building is a potential sitting space. But each sitting space has different needs for comfort and enclosure according to its position in the intimacy gradient.
    • Put in a sequence of graded sitting spaces throughout the building, varying according to their degree of enclosure. Enclose the most formal ones entirely, in rooms by themselves; put the least formal ones in comers of other rooms, without any kind of screen around them; and place the intermediate one with a partial enclosure round them to keep them connected to some larger space, but also partly separate.
    • the house. This instinct is so strongly developed in children of all cultures, that we believe it may be unhealthy for little children to have whole rooms of their own, regardless of cultural habit.
    • Place the children’s beds in alcoves or small alcove-like rooms, around a common playspace. Make each alcove large enough to contain a table, or chair, or shelves—at least some floor area, where each child has his own things. Give the alcoves curtains looking into the common space, but not walls or doors, which will tend once more to isolate the beds too greatly.
    • We suggest that the room be placed next to the couple’s realm—they will use it most—but also between the public part of the house and the private part of the house, so that the path from the family commons to the bathing room does not pass through the bedrooms or private workspace. And make sure paths from bedrooms to bathroom do not pass through any area which is visible from the common rooms.
    • A simple way to cope with the subtleties of nakedness and gowns is to give the bathing room prominent towel racks in several places, each with a few giant towels, towels that people can wrap up in.
    • 145 BULK STORAGE
      • In houses and workplaces there is always some need for bulk storage space; a {dace for things like suitcases, old furniture, old files, boxes—all those things which you are not ready to throw away, and yet not using everyday.
      • The amount needed is never less than 10 per cent of the built area—sometimes as high as 50 per cent—and normally 15 to 20 per cent.
      • Do not leave bulk storage till last or forget it. Include a volume for bulk storage in the building—its floor area at least 15 to 20 per cent of the whole building area—not less. Place this storage somewhere in the building where it costs less than other rooms—because, of course, it doesn’t need a finish.
    • 148 SMALL WORK GROUPS **
      • When more than half a dozen people work in the same place, it is essential that they not be forced to work in one huge undifferentiated space, but that instead, they can divide their workspace up, and so form smaller groups. In fact, people will feel oppressed,
      • In our own survey of attitudes toward workspace—taken among workers at the Berkeley City Hall—we found that people prefer to be part of a group that ranges from two to eight. When there are more than eight, people lose touch with the group as a human gathering; and almost no one likes working alone.
      • Break institutions into small, spatially identifiable work groups, with less than half a dozen people in each. Arrange these work groups so that each person is in at least partial view of the other members of his own group; and arrange several groups in such a way that they share a common entrance, food, office equipment, drinking fountains, bathrooms.
      • But it is obvious at a glance that there are too many large classrooms and too few small classrooms. Most of the classes actually held are relatively small seminars and “section” meetings, while most of the classrooms are in the 30 to 150 size range. These large classrooms may have reflected the teaching methods of an earlier period, but apparently they do not conform to the actual practice of teaching in the 1970’s.
      • Avoid closed off, separate, or private offices. Make every workroom, whether it is for a group of two or three people or for one person, half-open to the other workgroups and the world immediately beyond it. At the front, just inside the door, make comfortable sitting space, with the actual workspace(s) away from the door, and further back.
    • If a teenager’s place in the home does not reflect his need for a measure of independence, he will be locked in conflict with his family.
    • To mark a child’s coming of age, transform his place in the home into a kind of cottage that expresses in a physical way the beginnings of independence. Keep the cottage attached to the home, but make it a distinctly visible bulge, far away from the master bedroom, with its own private entrance^ perhaps its own roof.
    • Arrange the cottage to contain a SITTING CIRCLE (185) and a BED ALCOVE (188) but not a private bath and kitchen—sharing these is essential: it allows the boy or girl to keep enough connection with the family. Make it a place that can eventually become a guest room, room to rent, workshop, and so on—ROOMS TO RENT (153), HOME WORKSHOP (157). If it is on an upper story, give it a separate private OPEN STAIR (158). And for the shape of the cottage and its construction, start with THE SHAPE OF INDOOR SPACE (191) and STRUCTURE FOLLOWS SOCIAL SPACES (205)….
    • The experience of settled work is a prerequisite for peace of mind in old age. Yet our society undermines this experience by making a rift between working life and retirement, and between workplace and home.
    • Give each person, especially as he grows old, the chance to set up a workplace of his own, within or very near his home. Make it a place that can grow slowly, perhaps in the beginning sustaining a weekend hobby and gradually becoming a complete, productive, and comfortable workshop.
    • As the decentralization of work becomes more and more effective* the workshop in the home grows and grows in importance.
    • Make a place in the home, where substantial work can be done; not just a hobby, but a job. Change the zoning laws to encourage modest, quiet work operations to locate in neighborhoods. Give the workshop perhaps a few hundred square feet; and locate it so it can be seen from the street and the owner can hang out a shingle.
    • In effect we are saying that a centralized entrance, which funnels everyone in a building through it, has in its nature the trappings of control; while the pattern of many open stairs, leading off the public streets, direct to private doors, has in its nature the fact of independence, free comings and goings.
    • 159 LIGHT ON TWO SIDES OF EVERY ROOM **
      • Locate each room so that it has outdoor space outside it on at least two sides, and then place windows in these outdoor walls so that natural light falls into every room from more than one direction.
    • “there is a marked tendency for both standing and sitting persons to place themselves near something—a facade, pillar, furniture, etc.” [“Mennesker til Fods (Pedestrians),” Arkitekten, No. 20, 1968.] This tendency for people to stay at the edges of spaces, is also discussed in the pattern ACTIVITY POCKETS (124).
    • Make sure that you treat the edge of the building as a “thing,” a “place,” a zone with volume to it, not a line or interface which has no thickness. Crenelate the edge of buildings with places that invite people to stop. Make places that have depth and a covering, places to sit, lean, and walk, especially at those points along the perimeter which look onto interesting outdoor life.
    • The area immediately outside the building, to the south—that angle between its walls and the earth where the sun falls—must be developed and made into a place which lets people bask in it.
    • And finally, of course, if the place is really to work, there must be a good reason for going there: something special which draws a person there—a swing, a potting table for plants, a special view, a brick step to sit upon and look into a pool—whatever, so long as it has the power to bring a person there almost without thinking about
    • Inside a south-facing court, or garden, or yard, find the spot between the building and the outdoors which gets the best sun. Develop this spot as a special sunny place- make it the important outdoor room, a place to work in the sun, or a place for a swing and some special plants, a place to sunbathe. Be very careful indeed to place the sunny place in a position where it is sheltered from the wind. A steady wind will prevent you from using the most beautiful place.
    • For example, the area to the north may form a gentle cascade which contains the car shelter, perhaps a bath suite, storage, garbage cans, a studio.
    • For some moods, some times of day, some kinds of friendship, people need a place to eat, to sit in formal clothes, to drink, to talk together, to be still, and yet outdoors. They need an outdoor room, a literal outdoor room—a partly enclosed space, outdoors, but enough like a room so that people behave there as they do in rooms, but with the added beauties of the sun, and wind, and smells, and rustling leaves, and crickets.
    • irregular. Paradoxical though it may sound, the use of glass walls in recent years alienated the garden. Even the “picture window,” as the domestic version of the show-window is called, has contributed to the estrangement between indoors and outdoors; the garden has become a spectator garden.
    • Domestic gardens as we have known them through the centuries were valued mostly for their habitableness and privacy, two qualities that are conspicuously absent in contemporary gardens.
    • A street without windows is blind and frightening. And it is equally uncomfortable to be in a house which bounds a public street with no window at all on the street
    • Street windows are most successful on the second and third floors.
    • We believe, simply, that every building needs at least one place, and preferably a whole range of places, where people can be still within the building, but in touch with the people and the scene outside.
    • In short, almost all the basic human situations can be enriched by the qualities of the gallery surround. This is why we specify that each building should have as many versions of it as possible along its edge—porches, arcades, balconies, awnings, terraces, and galleries.
    • Whenever possible, and at every story, build porches, galleries, arcades, balconies, niches, outdoor seats, awnings, trellised rooms, and the like at the edges of buildings—especially where they open off public spaces and streets, and connect them by doors, directly to the rooms inside.
    • 167 SIX-FOOT BALCONY **
      • Balconies and porches which are less than six feet deep are hardly ever used.
      • Whenever you build a balcony, a porch, a gallery, or a terrace always make it at least six feet deep. If possible, recess at least a part of it into the building so that it is not cantilevered out and separated from the building by a simple line, and enclose it partially.
    • A house feels isolated from the nature around it, unless its floors are interleaved directly with the earth that is around the house.
    • Connect the building to the earth around it by building a series of paths and terraces and steps around the edge. Place them deliberately to make the boundary ambiguous—so that it is impossible to say exactly where the building stops and earth begins.
    • trees are precious. Keep them. Leave them intact. If you have followed SITE REPAIR (104), you have already taken care to leave the trees intact and undisturbed by new construction;
    • When trees are planted or pruned without regard for the special places they can create, they are as good as dead for the people who need
    • Grow grasses, mosses, bushes, flowers, and trees in a way which comes close to the way that they occur in nature: intermingled, without barriers between them, without bare earth, without formal flower beds, and with all the boundaries and edges made in rough stone and brick and wood which become a part of the natural growth.
    • 175 GREENHOUSE
      • Many efforts are being made to harness solar energy by converting it into hot water or electric power. And yet the easiest way to harness solar energy is the most obvious and the oldest: namely, to trap the heat inside a greenhouse and use it for growing flowers and vegetables.
      • Imagine a simple greenhouse, attached to a living room, turned to the winter sun, and filled with shelves for flowers and vegetables. It has an entrance from the house—so you can go into it and use it in the winter without going outdoors. And it has an entrance from the garden—so you can use it as a workshop while you are out in the garden and not have to walk through the house.
    • 176 GARDEN SEAT
      • Somewhere in every garden, there must be at least one spot, a quiet garden seat, in which a person—or two people—can reach into themselves and be in touch with nothing eke but nature.
      • It is in this context that we propose the isolated garden seat: a place hidden in the garden where one or two people can sit alone, undisturbed, near growing things.
      • Make a quiet place in the garden—a private enclosure with a comfortable seat, thick planting, sun. Pick the place for the seat carefully; pick the place that will give you the most intense kind of solitude.
    • 178 ALCOVES **
      • … many large rooms are not complete unless they have smaller rooms and alcoves opening off them.
      • there must be some way in which the members of the family can be together, even when they are doing different things. This means that the family room needs a number of small spaces where people can do different things. The spaces need to be far enough away from the main room, so that any clutter that develops in them does not encroach on the communal uses of the main room.
      • Make small places at the edge of any common room, usually no more than 6 feet wide and 3 to 6 feet deep and possibly much smaller. These alcoves should be large enough for two people to sit, chat, or play and sometimes large enough to contain a desk or a table.
    • 180 WINDOW PLACE **
      • this pattern helps complete the arrangement of the windows given by ENTRANCE ROOM (130), ZEN VIEW (134), LIGHT ON TWO SIDES OF EVERY ROOM (159), STREET WINDOWS (164). According to the pattern, at least one of the windows in each room needs to be shaped in such a way as to increase its usefulness as a space.
        1. Make certain, too, that there is a space where people can sit in front of the fire; and that this space is not cut by paths between doors or adjacent rooms. 4. And be sure that the fire
    • Put a heavy table in the center of the eating space—large enough for the whole family or the group of people using it. Put a light over the table to create a pool of light over the group, and enclose the space with walls or with contrasting darkness. Make the space large enough so the chairs can be pulled back comfortably, and provide shelves and counters close at hand for things related to the meal.
    • 183 WORKSPACE ENCLOSURE **
      • People cannot work effectively if their workspace is too enclosed or too exposed. A good workspace strikes the balance. In many offices,
        1. There should be no blank wall closer than 8 feet in front of you. (As you work you want to occasionally look up and rest your eyes by focusing them on something farther away than the desk. If there is a blank wall closer than 8 feet your eyes will not change focus, and they get no relief. In this case you feel too enclosed.) The data support this’hypothesis at the 5 per cent level of significance.
        1. Workspaces where you spend most of the day should be at least 60 square feet in area. (If your workspace is any smaller than 60 square feet you feel cramped and claustrophobic.) The data support this hypothesis at the 5 per cent level of significance.
      • significance. 8. It is uncomfortable if you are not aware of at least two other persons while you work. On the other hand, you do not want to be aware of more than eight people.
        1. You should not be able to hear noises very different from the kind of noise you make, from your workplace.
      • following: 10. No one should be sitting directly opposite you and facing you.
        1. Workspaces should allow you to face in different directions. 12. From your workspace, you should be able to see at least two other persons; but no more than four.
      • The fire especially helps to anchor a sitting circle. Other things can do it almost as well.
      • Third, we have observed that the seating arrangement needs to be slightly loose—not too formal. Relatively loose arrangements, where there are many different sofas, cushions, and chairs, all free to move, work to bring a sitting circle to life.
      • Place each sitting space in a position which is protected, not cut by paths or movement, roughly circular, made so that the room itself helps to suggest the circle—not too strongly—with paths and activities around it, so that people naturally gravitate toward the chairs when they get into the mood to sit Place the chairs and cushions loosely in the circle, and have a few too many.
      • There might be a place in the commons—not in any one person’s private space—a place where late at night after people have been together for the evening and the fire is dying out, it is simple to draw together and sleep—a place where children and parents can sleep together on special nights. It could be very simple: one large mat and some blankets.
    • 187 MARRIAGE BED
      • The space around the bed is shaped around the bed. There is a low ceiling, or a partial ceiling, over the bed. The walls and windows are made to contain the bed. See bed ALCOVE (188).
        1. Find a way of adding to the bed and the space around it, so that it will become more personal and unique over the years; for example, a headboard that can be carved, painted, repainted, or a cloth ceiling that can be changed, embroidered.
      • At the right moment in a couple’s life, it is important that they make for themselves a special bed—an intimate anchor point for their lives; slightly enclosed, with a low ceiling or a canopy, with the room shaped to it; perhaps a tiny room built around the bed with many windows. Give the bed some shape of its own, perhaps as a four-poster with head board that can be hand carved or painted over the years.
    • 188 BED ALCOVE **
      • Bedrooms make no sense.
      • The valuable space around the bed is good for nothing except access to the bed. And all the other functions—dressing, working, and storage of personal belongings which people stuff uncomfortably into the corners of their bedrooms—in fact, need their own space, and are not at all well met by the left over areas around a bed.
      • In BED CLUSTERS (143), we have already argued that each child in a family should have a bed alcove of his own, opening off a common play-space.
      • Give everyone a dressing room—either private or shared—between their bed and the bathing room. Make this dressing room big enough so there is an open area in it at least six feet in diameter; about six linear feet of clothes hanging space; and another six feet of open shelves; two or three drawers; and a mirror.
      • In some fashion, low ceilings make for intimacy, high ceilings for formality. In older buildings which allowed the ceiling heights to vary, this was almost taken for granted.
      • On the basis of this effect, it is clear that intimate situations require very low ceilings, less intimate situations require higher ceilings, formal places require high ceilings, and the most public situations require the highest ceilings:
        1. Build storage between floors and ceilings—at least two feet deep—where you want to lower ceiling heights.
    • Vary the ceiling heights continuously throughout the building, especially between rooms which open into each other, so that the relative intimacy of different spaces can be felt. In particular, make ceilings high in rooms which are public or meant for large gatherings (10 to 12 feet), lower in rooms for smaller gatherings (7 to 9 feet), and very low in rooms or alcoves for one or two people (6 to 7 feet).
    • The perfectly crystalline squares and rectangles of ultramodern architecture make no special sense in human or in structural terms. They only express the rigid desires and fantasies which people have when they get too preoccupied with systems and the means of their production.
    • 192 WINDOWS OVERLOOKING LIFE *
    • In general, it is best if this door is in a corner.
    • Open your mind to the possibility that the walls of your building can be thick, can occupy a substantial volume—even actual usable space—and need not be merely thin membranes which have no depth. Decide where these thick walls ought to be.
    • given the layout of rooms, it is now necessary to decide exactly where to put the built-in cupboards and closets. Use them, especially, to help form the enclosure around a workspace—WORKSPACE ENCLOSURE (183), around a dressing SPACE—DRESSING ROOM (189), and around the doors of rather private rooms so that the doorway itself gets some depth—CORNER DOOR (196).
    • Perhaps the most important secondary feature of storage space is its sound insulating quality.
    • You can take advantage of this feature of closet space by locating all required storage areas within the walls separating rooms rather than in exterior walls, where they cut off natural light.
    • This means, essentially, that except for bulk storage (145), things should be stored on open shelves, “one deep.” Then you can see them
    • But in well-planned kitchens, all storage is one item deep. Shelves are one can deep, glasses are stored one row deep, pots and pans are hung one deep on the wall; for small jars and spices there are special spice shelves that hold the items just one deep.
    • In every house and every workplace there is a daily “traffic” of the objects which are handled most. Unless such things are immediately at hand, the flow of life is awkward, full of mistakes; things are forgotten, misplaced.
    • Make the seat as wide as a really comfortable chair (at least 18 inches), with a back that slopes gently (not upright), and put a warm soft cushion on it and on the back, so that it is really comfortable.
    • Before you build the seat, get hold of an old arm chair or a sofa, and put it into the position where you intend to build a seat. Move it until you really like it. Leave it there for a few days. See if you enjoy sitting in it. Move it if you don’t. When you have got it into a position which you like, and where you often find yourself sitting, you know it is a good position. Now build a seat that is just as wide, and just as well padded—and your built-in seat will work.
    • 204 SECRET PLACE
      • We believe that there is a need in people to live with a secret place in their homes: a place that is used in special ways, and revealed only at very special moments.
      • It allows you to keep something that is precious in an entirely personal way, so that no one may ever find it, until the moment you say to your friend, “Now I am going to show you something special”—and tell the story behind it.
      • Make a place in the house, perhaps only a few feet square, which is kept locked and secret; a place which is virtually impossible to discover—until you have been shown where it is; a place where the archives of the house, or other more potent secrets, might be kept.
    • We believe that ultra-lightweight concrete is one of the most fundamental bulk materials of the future.
    • This novice-like and panic-stricken attention to detail has two very serious results. First, like the novice, the architects spend a great deal of time trying to work things out ahead of time, not smoothly building. Obviously, this costs money; and helps create these machine-like “perfect” buildings. Second, a vastly more serious consequence: the details control the whole. The beauty and subtlety of the plan in which patterns have held free sway over the design suddenly becomes tightened and destroyed because, in fear that details won’t work out, the details of connections, and components, are allowed to control the plan. As a result, rooms get to be slightly the wrong shape, windows go out of position, spaces between doors and walls get altered just enough to make them useless. In a word, the whole character of modem architecture, namely the control of larger space by piddling details of construction, takes over.
    • Recognize that you are not assembling a building from components like an erector set, but that you are instead weaving a structure which starts out globally complete, but flimsy; then gradually making it stiller but still rather flimsy; and only finally making it completely stiff and strong.
    • Assume that all roofs in the building, which are not flat, have roughly the same slope. For a given climate and roof construction, one slope is usually best;
    • Mark all those places in the plan where seats and closets are to be. These places are given individually by ALCOVES (179), WINDOW PLACES (180), THICK WALLS (197), SUNNY COUNTER (l99) WAIST-HIGH SHELF (20l), BUILT-IN SEATS (202), and so on-Lay out a wide swath on the plan to correspond to these positions. Make it two or three feet deep; recognize that it will be outside the main space of the room; your seats, niches, shelves, will feel attached to the main space of rooms but not inside them. Then, when you lay out columns and minor columns, place the columns in such a way that they surround and define these thick volumes of wall, as if they were rooms or alcoves.
    • In all the world’s traditional and historic buildings, the columns are expressive, beautiful, and treasured elements. Only in modem buildings have they become ugly and meaningless.
    • One of a window’s most important functions is to put you in touch with the outdoors. If the sill is too high, it cuts you off.
    • The “right” height for a ground floor window sill is astonishingly low. Our experiments show that sills which are 13 or 14 inches from the floor are perfect.
    • People are drawn to windows because of the light and the view outside—they are natural places to sit by when reading, talking, sewing, and so on, yet most windows have sill heights of 30 inches or so, so that when you sit down by them you cannot see the ground right near the window. This is unusually frustrating—you almost have to stand up to get a complete view.
    • When determining exact location of windows also decide which windows should have low sills. On the first floor, make the sills of windows which you plan to sit by between 12 and 14 inches high. On the upper stories, make them higher, around 20 inches.
    • Make the window open outward, so that you can use the sill as a shelf, and so that you can lean out and tend the flowers. If you can, put flowers right outside the window, on the ground or raised a little, too, so that you can always see the flowers from inside the room RAISED FLOWERS (245) ….
    • test it first by pinning cardboard up to effectively lower the frame. Make the doorway low enough so that it appears “lower than usual”—then people will immediately adapt to it, and tall people will not hit their heads.
    • Build connections where the columns meet the beams. Any distribution of material which fills the corner up will do: fillets, gussets, column capitals, mushroom column, and most general of all, the arch, which connects column and beam in a continuous curve.
    • comfortable when they receive radiant heat at a slightly higher temperature than the temperature of the air around them. The two most primitive examples of this situation are: (1) Outdoors, on a spring day when the air is not too hot but the sun is shining. (2) Around an open fire, on a cool evening. Most people will recognize intuitively that these are two unusually comfortable situations.
    • Radiant panels, with individual room control, and infrared heaters hung from walls and ceilings, are possible high technology sources of radiant heat.
    • skylights are not satisfactory as windows—except in studios or workshops—because they do not create a connection between the inside and the outside world—WINDOWS OVERLOOKING LIFE (192).
    • Wherever you have windows in the roof, make dormer windows which are high enough to stand in, and frame them like any other alcoves in the building.
    • For soft materials, carpet is the most satisfactory—for sitting, lying, and being close to the ground. We doubt that an improvement can be made on
    • Gypsum plaster as opposed to cement plaster. Soft baked tiles as opposed to hard fired ones. When materials are porous and low in density they are generally softer and warmer to the touch.
    • It is becoming the rule in modem design to seal up windows and create “perfect” indoor climates with mechanical air conditioning systems. This is crazy.
    • Decide which of the windows will be opening windows. Pick those which are easy to get to, and choose the ones which open onto flowers you want to smell, paths where yon might want to talk, and natural breezes. Then put in side-hung casements that open outward. Here and there, go all the way and build full French windows.
  • Construction (details/materials)
    • 239 SMALL PANES **
      • The smaller the windows are, and the smaller the panes are, the more intensely windows help connect us with what is on the other side.
      • The following picture shows a simple landscape, broken up as it might be by six panes. Instead of one view, we see six views. The view becomes alive because the small panes make it so.
      • Divide each window into small panes. These panes can be very small indeed, and should hardly ever be more than a foot square. To get the exact size of the panes, divide the width and height of the window by the number of panes. Then each window will have different sized panes according to its height and width.
      • need for trim to cover up inaccuracies. However, the precision of the components can only be obtained by the most tyrannical control over the plan. This one aspect of construction has by itself destroyed the builder’s capacity to make a building which is natural, organic, and adapted to the site.
    • 241 SEAT SPOTS **
      • At the moment of observation, all three occupied benches looked onto activity, were in the sun, and had a wind velocity of less than 1.5 feet per second.
      • Choosing good spots for outdoor seats is far more important than building fancy benches. Indeed, if the spot is right, the most simple kind of seat is perfect. In cool climates, choose them to face the sun, and to be protected from the wind; in hot climates, put them in shade and open to summer breezes. In both cases, place them to face activities.
    • 243 SITTING WALL **
      • Surround any natural outdoor area, and make minor boundaries between outdoor areas with low walls, about 16 inches high, and wide enough to sit on, at least 12 inches wide.
    • 244 CANVAS ROOFS *
      • There is a very special beauty about tents and canvas awnings. The canvas has a softness, a suppleness, which is in harmony with wind and light and sun. A house or any building built with some canvas will touch all the elements more nearly than it can when it is made only with hard conventional materials.
    • A building finally becomes a part of its surroundings when the plants grow over parts of it as freely as they grow along the ground.
    • On paths and terraces, lay paving stones with a I inch crack between the stones, so that grass and mosses and small (lowers can grow between the stones. Lay the stones directly into earth, not into mortar, and, of course, use no cement or mortar in between the stones.
    • Nothing shows the passage of time so well as very soft, baked or lightly fired, bricks and tiles. They are among the cheapest tiles that can be made; they use ordinary clay, are biodegradable, and always develop a beautiful sense of wear and time in the undulations made by people walking over them. In addition, those paved areas
    • We consider this so important, that we advocate, specifically, that the people who are making the building, make the quantity of bricks and tiles they need for ground floor and outdoor surfaces—and that these be made in local clay and soft fired, in stacks, right on the site.
      • To test whether it is clay, pick up a bit of it and wet it. If it is plastic and sticky enough to form a smooth ball, it is clay…. Process the clay as follows: 1 First, remove impurities such as twigs, leaves, roots and stones. 2 Then, let the chunks dry in the sun. 3 Break up these chunks and grind them up as finely as possible. 4 Put this ground-up clay in water so that there is a mound above water. 5 Let this mixture soak for one day, then stir it, and sieve it through a screen. 6 Let stand again for another day, and remove excess water. 7 Then put the clay in a plaster container; plaster absorbs water, thus stiffening the mixture into workable clay. 8. Work the clay a little to test it. If cracks appear, it is “short”; when that happens, add to the mixture, up to 7% bentonite. If clay is too plastic, add “grog.” …
      • Roll out a slab of clay…. Then cut from the slab a piece that will fit comfortably into the form and roll it down with a rolling pin. Do not roll the pin all the way across the surface of the clay, but work from the center outwards to all four sides…. Let the tile dry until it is leather-hard) then separate it from the form by running a knife around its edges…. Clay tiles should be allowed to dry very slowly, and for this reason should be put in a cool place. If they dry too quickly under heat, they are apt to crack or warp. The edges have a tendency to dry more rapidly than the center and usually should be dampened from time to time to prevent this.
    • complete the building with ornament and, light and color and your own things.
    • 249. ORNAMENT
      • the ornament works on the seam, between the two, and holds them together.
      • When ornament is applied badly it is always put into some place where these connections are not really missing, so it is superfluous,
      • When it is well used, it is always applied in a place where there is a genuine gap, a need for a little more structure, a need for what we may call metaphorically “some extra binding energy,” to knit the stuff together where it is too much apart.
      • Search around the building, and find those edges and transitions which need emphasis or extra binding energy. Comers, places where materials meet, door frames, windows, main entrances, the place where one wall meets another, the garden gate, a fence—all these are natural places which call out for ornament.
    • People are different sizes; they sit in different ways. And yet there is a tendency in modem times to make all chairs alike.
    • What is less obvious, and yet perhaps most important of all, is this: we project our moods and personalities into the chairs we sit in. In one mood a big fat chair is just right; in another mood, a rocking chair; for another, a stiff upright; and yet again, a stool or sofa. And, of course, it isn’t only that we like to switch according to our mood; one of them is our favorite chair, the one that makes us most secure and comfortable; and that again is different for each person.
    • Never furnish any place with chairs that are identically the same. Choose a variety of different chairs, some big, some small, some softer than others, some rockers, some very old, some new, with arms, without arms, some wicker, some wood, some cloth.
    • form individual pools of light which encompass chairs and tables like bubbles to reinforce the social character of the spaces which they form. Remember that you can’t have pools of light without the darker places in between.
    • Color the lampshades and the hangings near the lights to make the light which bounces off them warm in color
    • WARM COLORS (250)….
      • But the irony is, that the visitors who come into a room don’t want this nonsense any more than the people who live there. It is far more fascinating to come into a room which is the living expression of a person, or a group of people, so that you can see their lives, their histories, their inclinations, displayed in manifest form around the walls, in the furniture, on the shelves.
      • Do not be tricked into believing that modern decor must be slick or psychedelic, or “natural” or “modem art,” or “plants” or anything else that current taste-makers claim. It is most beautiful when it comes straight from your life—the things you care for, the things that tell your story.
  • Towns / cities (urban scale)
    • In a poem, this kind of density, creates illumination, by making identities between words, and meanings, whose identity we have not understood before. In “O Rose thou art sick,” the rose is identified
    • It is essential then, once you have learned to use the language, that you pay attention to the possibility of compressing the many patterns which you put together, in the smallest possible space.
    • We do not believe that these large patterns, which give so much structure to a town or of a neighborhood, can be created by centralized authority, or by laws, or by master plans. We believe instead that they can emerge gradually and organically, almost of their own accord, if every act of building, large or small, takes on the responsibility for gradually shaping its small corner of the world to make these larger patterns appear there.
    • Do what you can to establish a world government, with a thousand independent regions, instead of countries;
    • Metropolitan regions will not come to balance until each one is small and autonomous enough to be an independent sphere of culture.
    • just as there is a best size for every animal, so the same is true for every human institution. In the Greek type of democracy all the citizens could listen to a series of orators and vote directly on question of legislation. Hence their philosophers held that a small city was the largest possible democratic state….
    • In a population of N persons, there are of the order of N2 person-to-person linb needed to keep channels of communication open. Naturally, when N goes beyond a certain limit, the channels of communication needed for democracy and justice and information are simply too clogged, and too complex; bureaucracy overwhelms human processes.
    • am suggesting that in the Europe of the future we shall see England split down into Kent, Wessex, Mercia, Anglia and Northumbria, with an independent Scotland, Wales and Ireland, of course. Other European examples will include Brittany, Bavaria and Calabria. The national identities of our contemporary Europe will have lost their political significance.
    • Unless the regions have the power to be self-governing, they will not be able to solve their own environmental problems. The arbitrary lines of states and countries, which often cut across natural regional boundaries, make it all but impossible for people to solve regional problems in a direct and humanly efficient way.
    • unless the present-day great nations have their power greatly decentralized, the beautiful and differentiated languages, cultures, customs, and ways of life of the earth’s people, vital to the health of the planet, will vanish.
    • Wherever possible, work toward the evolution of independent regions in the world; each with a population between 2 and 10 million; each with its own natural and geographic boundaries; each with its own economy; each one autonomous and self-governing; each with a seat in a world government, without the intervening power of larger states or countries.
    • Continuous sprawling urbanization destroys life, and makes cities unbearable. But the sheer size of cities is also valuable and potent. People feel comfortable
    • To be relaxed and feel healthy usually means simply allowing our bodies to react in the way for which one hundred millions of years of evolution has equipped us.
    • We reckon that everyone should be within 10 minutes’ walk of the countryside.
    • Keep interlocking fingers of farmland and urban land, even at the center of the metropolis. The urban fingers should never be more than 1 mile wide, while the farmland fingers should never be less than 1 mile wide.
    • The land which is best for agriculture happens to be best for building too. But it is limited—and once destroyed, it cannot be regained for centuries.
    • Preserve all agricultural valleys as farmland and protect this land from any development which would destroy or lock up the unique fertility of the soil. Even when valleys are not cultivated now, protect them: keep them for farms and parks and wilds.
    • In the zone where city and country meet, place country roads at least a mile apart, so that they enclose squares of countryside and farmland at least one square mile in area. Build homesteads along these roads, one lot deep, on lots of at least half an acre, with the square mile of open countryside or farmland behind the houses.
    • The big city is a magnet. It is terribly hard for small towns to stay alive and healthy in the face of central urban growth.
    • In Norway, England, Austria, it is commonly understood that people have a right to picnic in farmland, and walk and play—provided they respect the animals and crops. And the reverse is also true—there is no wilderness which is abandoned to its own processes—even the mountainsides are terraced, mown, and grazed and cared for. We may summarize these ideas by saying that there is only one kind of non urban land—the countryside. There are no parks; no farms; no uncharted wilderness. Every piece of countryside has keepers who have the right to farm it, if it is arable; or the obligation to look after it, if it is wild; and every piece of land is open to the people at large, provided they respect the organic processes which are going on there.
    • So also are farms conceived as areas “owned” by the farmers for their own exclusive profit. If we continue to treat the land as an instrument for our enjoyment, and as a source of economic profit, our parks and camps will become more artificial, more plastic, more like Disneyland. And our farms will become more and more like factories. The land ethic replaces the idea of public parks and public campgrounds with the concept of a single countryside.
    • The farmhouses of Kurume-machi stand in a row along the main road for about a mile. Each house is surrounded by a belt of trees of similar species, giving the aspect of a single large forest. The main trees are located so as to produce a shelter-belt. In addition, these small forests are homes for birds, a device for conserving water, a source of :firewood and timber, which is selectively cut, and a means of climate control, since the temperature inside the residential forest is cooler in summer and warmer in winter. It should be noted that these residential forests, established more than 300 years ago, are still intact as a result of the careful selective cutting and replacement program followed by the residents. (John L. Creech, “Japan-Like a National Park,”
    • Define all farms as parks, where the public has a right to be; and make all regional parks into working farms. Create stewardships among
    • In fact, metropolitan areas seem almost marked by the fact that the people in them have markedly weak character, compared with the character which develops in simpler and more rugged situations.
    • People do things a certain way “because that’s the way to get them done” instead of “because we believe them right.” Compromise, going along with the others,
    • In a society where a man can find his own self, there will be ample variety of character, and character will be strong. In a society where people have trouble finding their own selves, people will seem homogeneous, there will be less variety, and character will be weak.
    • The artificial separation of houses and work creates in tolerable rifts in people’s inner lives.
    • Concentration and segregation of work … leads to dead neighborhoods. But this separation creates enormous rifts in people’s emotional lives. Children grow up in areas where there are no men, except on weekends; women are trapped in an atmosphere where they are expected to be pretty, unintelligent housekeepers;
    • Throughout, this separation reinforces the idea that work is a toil, while only family life is “living”-a schizophrenic view which creates tremendous problems for all the members of a family.
    • In order to overcome this schism and re-establish the connection between love and work, central to a sane society, there needs to be a redistribution of all workplaces throughout the areas where people live, in such a way that children are near both men and women during the day, women are able to see themselves both as loving mothers and wives and still capable of creative work, and men too are able to experience the hourly connection of their lives as workmen and their lives as loving husbands and fathers.
    • Every home is within 20-30 minutes of many hundreds of workplaces. 2. Many workplaces are within walking distance of children and families. 3. Workers can go home casually for lunch, run errands, work half-time, and spend half the day at home. 4. Some workplaces are in homes; there are many opportunities for people to work from their homes or to take work home. 5. Neighborhoods are protected from the traffic and noise generated by “noxious” workplaces.
    • Don’t give the form more order than it needs to meet the patterns and the conditions of the site, each step of the way.
    • When we build on the best parts of the land, those beauties which are there already—the crocuses that break through the lawn each spring, the sunny pile of stones where lizards sun themselves, the favorite gravel path, which we love walking on—it is always these things which get lost in the shuffle.
    • On no account place buildings in the places which are most beautiful. In fact, do the opposite. Consider the site and its buildings as a single living eco-system. Leave those areas that are the most precious, beautiful, comfortable, and healthy as they are, and build new structures in those parts of the site which are least pleasant now.
  • Using the book / meta
    • In short, no pattern is an isolated entity. Each pattern can exist in the world, only to the extent that is supported by other patterns: the larger patterns in which it is embedded, the patterns of the same size that surround it, and the smaller patterns which are embedded in it. This is a fundamental view of the world. It says that when you build a thing you cannot merely build that thing in isolation, but must also repair the world around it, and within it, so that the larger world at that one place becomes more coherent, and more whole; and the thing which you make takes its place in the web of nature, as you make it.
    • it is possible that each person may once again embark on the construction and development of his own language—perhaps taking the language printed in this book, as a point of departure.
    • First of all, make a copy of the master sequence (pages xix–xxxiv) on which you can tick off the patterns which will form the language for your project.
      1. Scan down the list, and find the pattern which best describes the overall scope of the project you have in mind. This is the starting pattern for your
      1. Turn to the starting pattern itself, in the book, and read it through.
    • Every building, every room, every garden is better, when all the patterns which it needs are compressed as far as it is possible for them to be. The building will be cheaper; and the meanings in it will be denser.
    • You may think of this process of compressing patterns, as a way to make the cheapest possible building which has the necessary patterns in it. It is, also, the only way of using a pattern language to make buildings which are poems.

Displaying Images from SD Card on m5Stack (esp32 controller)

M5stack is a distribution of esp32 devices – its like an Arduino with superpowers. I am building a hardware AI assistant for kids and am trying to make cores3s display an image from an sdcard. I’m copying official code from their online wysiwyg editor and it crashes:


What’s happening

This is the code that should work according to documentation:

M5.Lcd.drawImage("/sd/my_image.jpg", 0, 0)

And the device immediately crashes. No exception. No error message. Just a hard reset or frozen screen.

But here’s the weird part – you can read the image from SD just fine:

with open("/sd/my_image.jpg", "rb") as f:
    data = f.read()  # This works!

And you can display the image from flash storage without any issues:

M5.Lcd.drawImage("/flash/my_image.jpg", 0, 0)  # This works!

It’s specifically the combination of drawImage() + SD card path that kills everything.


Why this happens

After much frustration, I figured it out: SPI bus conflict.

The LCD and the SD card share the same SPI bus on M5Stack devices. When drawImage() tries to simultaneously read from the SD card and write to the LCD display, it creates a bus conflict that crashes the device.

It’s not a bug in your code. It’s a hardware-level limitation in how the M5Stack firmware handles this operation.


The workaround

The solution is dumb but effective: copy the image to flash first, then display it from there.

import os
import M5
from M5 import *
from hardware import sdcard

def display_sd_image(sd_path, flash_temp="/flash/temp.jpg"):
    """
    Display an image from SD card by copying to flash first.
    Workaround for M5Stack SPI bus conflict.
    """
    # Read from SD into memory
    with open(sd_path, "rb") as f:
        image_data = f.read()
    
    # Write to flash
    with open(flash_temp, "wb") as f:
        f.write(image_data)
    
    # Free memory
    del image_data
    
    # Now display from flash (this works!)
    M5.Lcd.drawImage(flash_temp, 0, 0)


def setup():
    M5.begin()
    Widgets.setRotation(1)
    
    # Mount SD card (CoreS3 SE pins)
    sdcard.SDCard(slot=3, width=1, sck=36, miso=35, mosi=37, cs=4, freq=20000000)
    
    # Display image using the workaround
    display_sd_image("/sd/background.jpg")


def loop():
    M5.update()


if __name__ == '__main__':
    try:
        setup()
        while True:
            loop()
    except Exception as e:
        print("Error: {}".format(e))

Yes, it adds latency. Yes, flash storage has limited write cycles. But it works, and until M5Stack fixes this in firmware, it’s what we’ve got.


Quick reference

OperationWorks?
open("/sd/image.jpg", "rb").read()✅ Yes
M5.Lcd.drawImage("/flash/image.jpg", 0, 0)✅ Yes
M5.Lcd.drawImage("/sd/image.jpg", 0, 0)❌ Crashes

Notes for the future

  • For large images, consider reading/writing in chunks to avoid memory issues
  • Don’t put this in a tight loop unless you want to burn through your flash storage
  • Tested on M5Stack CoreS3 SE with UIFlow2 MicroPython v1.25.0
  • I’m building an AI voice assistant for M5Stack – and ran into this while working on the display system

Computer Use agents in 2025

I don’t like using computers. I love getting stuff done and creating new experiences, but I would much rather enjoy life and touch grass instead of typing into a slab of quartz.

Twitter guys are promising to solve my problem every day with a new 🚨 BREAKING proclamation. Some of them are promising that AI models are good enough to operate my computer for me just as I do – by clicking, scrolling and being utterly lost. Let’s take it for a spin.

What is CUA – Computer Use Agent

The idea is that yo hook up an AI model to a Browser or an Operating system and it acts like you. It typically has 4 actions:

  • Click stuff
  • Type stuff
  • Screenshot stuff to send to the model

The idea is that those actions are the same as you would take while navigating a computer. With Computer Use Agents, a system does not need to be AI-ready since Agent pretends to be a human.

Test case

I love RVing with my family, but the dirty secret of RVing in high season is that you have to book your campgrounds waaaay in advance, especially when Switzerland or Bavaria have holidays.

This is a gruesome situation because there isn’t anything like Airbnb or Booking.com for campgrounds (at least no reliable options in Europe). You must navigate each campground’s specific website or call them. This quickly becomes unwieldy with the various combinations of dates, campgrounds, and routes and a major bummer for planning vacation. With all these advances in AI using computers surely it’s a solved problem, right?

After all, booking Campsites is the first demo you see on OpenAI computer use (AKA Operator) website!

Well, meet the foe of computer use agents: the notorious calendar picker™️. Only one of the tested agents successfully defeated this peril (And yes, it was OpenAI. Maybe they trained specifically for this.)

The incomplete list of computer use agents

TitleNotesSelf hosted?Result
OpenAI OperatorPart of ChatGPT Pro offering, Cloud, $200/moIn development
Browser UseDidn’t build✅ Docker + Python
Browser Use CloudCloud $30/moFoiled by forms
Browser MCPMCP Server connecting to Chrome plugin✅ Chrome PluginFoiled by Cookie Banner
BrowserableDidn’t build, looks Promising✅ Docker
BytebotUses Claude✅ Docker
ScrapybaraPay per use, uses OpenAI CUACloud, Pay Per use + plansFoiled by forms
Open OperatorOpenAI CUA version of Browser BaseCloud, Free?
+Browserbase plans
Foiled by forms
OpenAI CUA Sample AppOpenAI Demo App using OpenAI CUA✅ Docker or Python✅ Great success

OpenAI Operator

“Find me a family friendly campsite”? That is EXACTLY what I want to happen!

Operator is part of ChatGPT Pro offering (the $200 per month plan). OpenAI is promising to make Operator fill forms, book travel and appointments, order groceries, and so on:

We’re making CUA available through a research preview of Operator, an agent that can go to the web to perform tasks for you. Operator is available to Pro users in the U.S. at operator.chatgpt.com⁠(opens in a new window).

Unfortunately, I am not a subscriber to the $200/plan, but fortunately for me, OpenAI recently released Responses API, which exposes Computer Use as a tool you can integrate with your own Chrome instance.

Browser Use

Browser Use is one of Y Combinator’s (W25) computer use agent startups that also has an open-source offering. You can try and install WebUI and the container for the whole setup from this repository.

I really wanted to run the self-hosted version, but I failed at building the project multiple times. It took me way too long to figure out that the reason was me running out of disk space, and I blamed the project for it. After figuring this out, I just paid for their cloud version hoping that’s the SOTA.

Browser Use Cloud

Browser user interface for triggering the agents was really neat and it was all really simple. You get a chat on the left with steps and the preview of the agent working on the right.

Everything was great, except the agent was totally lost on these camping websites.

  • It used the wrong booking link (inquiry vs booking is a known problem on these sites)
  • It absolutely could not figure out how to operate the calendar form on 3 seperate sites, never switching from April to August
  • It put the age of my child as 35041 in one instance.

I think it uses 4o instead of a smarter model for navigating, and that’s the reason. I’m excited to see where the project proceeds in the future, but for now it’s not the answer to my problems.

Browser MCP

Browser MCP is a local MCP server combined with a Chrome plugin that uses the MCP protocol to control your browser. It seems geared toward automated testing of your changes while developing in tools like Cursor. I have high hopes to use that tool in other projects.

Setting up BrowserMCP

Install BrowserMCP Chrome extension

First, you need to install the BrowserMCP Chrome extension. It would probably be prudent to install it in Chromium and not your main browser. But I am not a prudent person.

One thing worth noting is that I can never predict which tab BrowserMCP decides to use. I keep trying to open it in incognito window but it sometimes decides to use my main session where I’m logged into critical stuff. What can possibly go wrong?

Set up MCP Server in Cursor

Put this in .cursor/mcp.json

{
	"mcpServers": {
	  "browsermcp": {
		"command": "npx",
		"args": ["@browsermcp/mcp@0.1.3"]
	  }
	}
}

I thought it was best to restart the cursor after adding MCP servers. For some reason, they fail to connect sometimes, or a cursor upgrade is needed or something, but they keep being a little bit unreliable for me. Once it’s successfully connected, it can list the tools:

But sometimes it will fail to connect for no good reason:

Using Browser MCP

Now you can ask Cursor to do stuff for you. It will open websites and successfully navigate them, but the project seems to be geared towards testing apps it is familiar with. For example, cookie banner seems to be a major foe requiring valiant efforts:

Claude Sonnet 3.7-thinking seems best at this sort of task, but it also had major problems. I’m not sure Cursor+MCP is a good fit for external websites. I suspect a good computer user agent needs to use vision and I don’t think Cursor uses screenshots to communicate with this browser MCP plugin. I suspect it’s using the raw HTML output and thus it cannot successfully navigate obstacles.

I have high hopes of using this combo in my day-to-day coding though.

Browserable

Browserable looks very promising, but it also failed to build on my computer. I now suspect it’s the same disk space issue as before, but I didn’t have the energy to try again.

Bytebot

Bytebot (YC S21) also has a Open Source repository of containerized Chrome instance with agent. It seems to be using Anthropic and I really wanted to test OpenAI CUA, so I didn’t check this one.

Scrapybara

Scrapybara (another YC Combinator bet on browser agents – F24) looks sweet because you only pay per use. You don’t have to buy a subscription to start launching your agents. On top of that – they seem to have worked with OpenAI to integrate their Computer Use Agent API, which was the main reason for me to test these various computer use agents.

You have limited credits to use for free, which made trying this out a no-brainer. Also, I love the aesthetic.

Unfortunately, despite supposedly smarter model, it gets stuck in loops trying to fill out simple forms:

They have a really neat API though and a promising price structure, so I will try them again.

There doesn’t seem to be any open-source version that you can run on your own computer.

Open Operator

Open Operator is a proof of concept by Browser Base – whole browser on the web designed to be ran by agents. They have created a whole SDK for agents to interact with websites.

BrowserBase appears to utilize a combination of models, whereas Open Operator is specifically designed to operate with the OpenAI Computer Use Agent API.

It made good progress in my tests, but got defeated by the calendar selection form:

OpenAI CUA Sample App

This is an unknown demo example app of OpenAI CUA API that you can run on your own computer, and so far it performed the best.

It successfully navigated all obstacles and reported the result: No availability for those dates.

Running OpenAI CUA Sample App

Clone the repository

Edit your OpenAI key in.env

Set up the project

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Run the REPL environment to connect to your local browser to run on your computer:

python cli.py --computer local-playwright

There are also examples on how to connect to Browserbase and Scrapybara -this is how I learned about those projects.

[Deliberate 118] The post-scarcity world of words

I gotta admit that recently I find it kinda hard to write new blog posts. Something in the back of my head is whispering:

What’s the point if ChatGPT can spit out infinity of essays?

It feels like something previously valuable (and uniquely human)- decent writing – became a tap that most people can just turn on and continue to enjoy to the point of drowning. It manifests on the consumption side too: Because LLMs can answer all my questions, I’m less inclined to read that new essay, newsletter, article. There is less and less need for “just in case” knowledge.

My previous Reasons to Write Online are as valid as ever: honing my thinking, getting average ideas out of the way, and connecting with old friends are not in any danger, but somehow i feel less motivated to post.

Coding is dead

Computer programs are words too, and If you haven’t been following the arc diligently – programmers successfully automated themselves out of their jobs. Large Language Models are really good at writing code, and they will quickly get better than people. They can both produce and consume code, closing the feedback loop.

The other parts of a Software Engineer’s job are safer: architecture, debugging, complex system design that requires tons and tons of tacit knowledge. Churning out basic code does not seem like a promising career path anymore.

But fear not: solving real problems for real people (through any means) is always a good choice. Somehow, despite our best efforts, humans are not running out of problems.

Congrats, you are now a coder

You can now build games and preview them by pasting a single sentence into a chat window. Here are the steps for ChatGPT:

  1. Go to ChatGPT.com
  2. Choose o1 model if it’s available on your plan
  3. Use this prompt: “/Canvas Please make a single-page html/js website that is a flappy bird clone without any dependencies”
  4. Click to expand the code window to see it side-by-side
    (Canvas is this split view where you see the artifact you are producing – code-alongside chat window)
  5. Press “Preview” (top right) once the app finishes writing code
  6. Waste hours playing flappy bird again because you didn’t learn the lesson the first time around. But it’s YOUR flappy bird. Congrats.

Vibe coding

Coding used to be a deliberate process, full of focus and attention. With AI, some of us practice “vibe coding”:

  1. You use voice dictation to just dump your meandering thoughts into AI like a distracted manager focused more on lunch than proper delegation
  2. You check results and ask the AI to fix this-or-that without much guidance
  3. You manually fix problems only if you really need to.

Karpathy coined the term and his phrasing is perfect:

There’s a new kind of coding I call “vibe coding”, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.
(…)
I’m building a project or webapp, but it’s not really coding – I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works.

There has never been a better time to tackle that small project you always wanted to ship, but at the same time – no worse time to start a programming career.

Delegation is key

I would like to be better at “Vibe Coding”. I default to my old ways, tackle stuff manually, type my keyboard like a dinosaur.

Only when I started treating AI exactly how I would a programmer on my team, I started getting much better results. In particular:

  1. First discuss a detailed plan of implementation with my AI intern.
  2. Only when we agree on the plan, I would “hand it off” to be coded.

Extraordinary returns on Agency and Taste

In the new post-scarcity world of words, the creative process looks like so:

  1. Human: Idea
  2. AI: Implementation Details
  3. Human: Feedback for AI

For those who know what to build, there are extraordinary returns. The only way to hone that muscle is to play, code cool apps, write those essays and inspire others to have great ideas.

If you have an AI coding workflow that works for you well, or have a cool use for AI in your personal life – send them my way! I am particularly interested in tricks involving real-world problems.

Few links

My LLM codegen workflow atm

Harper has a spectacularly detailed tutorial on getting your apps built using AI:

I have been building so many small products using LLMs. It has been fun, and useful. However, there are pitfalls that can waste so much time. A while back a friend asked me how I was using LLMs to write software. I thought “oh boy. how much time do you have!” and thus this post.

History of adults blaming the younger generation

The world changes, but some things stay the same:

Book: The Age of Wood by Roland Ennos

I love wood, as did my dad. After all – he was a carpenter. Wood is pliable, easy to join, and easy to shape into anything you want. It looks and feels nice, and it literally grows on trees.

In the past, however, it was not only the “posh organic” material of choice; it was the only game in town if you wanted to create something – like, for example, our whole civilization.

Ennos challenges the common focus on stone tools in early human history. Wooden tools were far more prevalent and effective for many tasks – wooden spears, for instance, were as effective as stone-tipped ones in hunting experiments.

He suspects that the significance of wooden tools is underestimated simply because they did not survive to the present day.

Wood as the Backbone of Human History

Roland Ennos highlights wood’s pivotal role in human development, beginning with early hominins who transitioned from life in trees to life on the ground. Wood enabled humans to adapt to new environments, build shelters, and create tools. Its flexibility, strength, and flammability made it essential for survival and innovation.

  1. When we were apes, we lived on trees to avoid predators
  2. Wood is the perfect material for tools. Toolmaking is how we grew our brains
  3. Wood is fuel for the fire. It sheltered us from predators and increased the calories we could absorb from food
  4. Wood made our shelters, which in turn allowed us to lose fur, thus lose parasites so we could live in close quarters.
  5. Wood made the Bow and Arrow which allowed us to hunt more effectively
  6. Wood made coal which was essential to create steel, and fuel the industrial revolution

Structure of the Book

  • Wood as an overlooked yet central material in human history.
  • Unique physical traits that make wood indispensable.
  • The transformative role of wood in human evolution.
  • How wood influenced key historical events and technological advancements.

My Highlights

  • Even by the sixteenth century, Britain had been forced to obtain almost all its masts from the countries adjoining the Baltic Sea.
  • News of the riot spread around New England and became a major inspiration for the much more famous Boston Tea Party in December 1773. The Pine Tree Flag even became a symbol of colonial resistance, being one of those used by the revolutionaries in the ensuing War of Independence. Designed by George Washington’s secretary Colonel Joseph Reed, it was flown atop the masts of the colonial warships.
  • Considering its historical importance, it is astonishing that the Great Mast Crisis is not better known. All schoolchildren are taught about the Boston Tea Party, even in Britain; none are taught about the Pine Tree Riot.
  • It became clear to me that wood has actually played a central role in our history. It is the one material that has provided continuity in our long evolutionary and cultural story, from apes moving about the forest, through spear-throwing hunter-gatherers and ax-wielding farmers to roof-building carpenters and paper-reading scholars.
  • Recent studies of the history of the global environment have shown that the key to understanding why hominins came down from the trees is climate change. Over the last 20 million years, the world’s climate has been getting cooler, caused in large part by movement of the earth’s tectonic plates. As India has plowed into the Eurasian plate, it has forced the Himalayas upward, and the silicate rocks this exposed have absorbed carbon dioxide from the atmosphere, reducing the strength of the greenhouse effect. The climate has cooled, and the tropics and subtropics have become more seasonal, with wet seasons being interspersed with increasingly long dry seasons.
  • But the early hominins would also have been helped by the first of two incredibly fortuitous properties of wood, properties that are of no actual benefit to the trees that make it. If wood is broken off a tree and starts to dry out, its mechanical properties improve!
  • They could have sharpened the points of their digging sticks while they were still green, using either their teeth or sharp stones, and used them later when they had dried out and stiffened up. A fully dried stick would be able to dig a hole around 50 percent deeper than a green stick.
  • Setting up a permanent camp, and being able to sit together around the campfire, would have had other advantages. It would help to keep the hominins warmer during the cool nights typical of savanna regions. The light from the fire would also help lengthen the time when individuals could carry out tasks such as making and mending tools. There would also be opportunities for a greater variety of social interactions: sharing food and exchanging information. Having a permanent fire would help speed up the evolution of both practical and social skills.
  • An early hominin that could cook its food would be better able to survive, reproduce earlier, and build up a higher population size. With faster, more efficient digestion, it would not need so large a gut and could divert the energy to produce and maintain a larger brain.
  • The jury is still out, therefore, about when humans first used fire. But whatever the exact timing, what comes out most strikingly from modern research on early humans is that the key to becoming terrestrial was to make use of wood, and in particular to exploit two of its fortuitously useful properties. In the first stage of becoming terrestrial, early hominins would have made use of wood’s becoming stiffer as it dries out, to fashion and use digging sticks to obtain their new source of food: underground storage organs. In the second stage, early members of our own genus Homo would have made use of the flammability of dry wood to make fires that could protect them from predators.
  • The shielding effect of hair also helps explain why humans have maintained a dense covering of hair on the tops of our heads; it helps us keep our most vital organ—our brains—cool. The importance of hair in thermoregulating our brain was driven home to many English cricket supporters back in 1994, when the English all-rounder Chris Lewis shaved his head at the start of a tour of the West Indies. He promptly went down with sunstroke, ironically missing the opening “warm-up” match. So important is our head hair in keeping our brains cool that the human races that inhabit hotter parts of the world, such as Native Americans and Africans, have lower rates of male-pattern baldness than the Caucasian inhabitants of the cool regions of Northern Europe. Presumably the disadvantage of losing the shielding effect of head hair is so great that baldness is strongly selected against.
  • The researchers who have investigated this theory (almost all men) have concentrated on an activity, hunting, that they have assumed was also carried out entirely by men. They totally ignored the contribution of women, who, they assume, spent much of their time “gathering” or perhaps simply waiting for the men to bring home their catch. They do not explain how hairlessness would have helped the women dig up roots, make fires, or cook. Indeed, according to the theory, women should actually be hairier than men since they would not have had such great cooling demands on their metabolism, whereas the reverse is true.
  • Humans lost their hair to reduce their ectoparasite load. The reasoning is that hair loss occurred because early humans were now living and sleeping together in semipermanent camps, rather than in solitary nests.
  • It was therefore because early hominins were sleeping inside wooden huts that they could afford to lose their body hair. And this would in turn have made us even.
  • Burned wood to keep off predators, keep themselves warm, and cook their food. If we cast our mind back to those dioramas in local museums, for instance, most of the tools they depict were actually made of wood.
  • Stone knives therefore need to be short and thick to prevent their blades from being loaded in tension, and even if a stone spear could be fashioned, it would be far too delicate to use; it would fall apart at its first throw.
  • Many anthropologists have carried out experimental investigations comparing the killing performance of stone-tipped and simple wooden spears. The experiments, carried out on the corpses of pigs or on ballistic gel, must have been great fun to perform. However, though the experimenters were clearly expecting the stone-tipped spears to be better at penetrating flesh, they found little evidence of this. Both wood and stone are harder than skin, so they both cut through it with ease.
  • I used this fact to safely investigate how the effectiveness of atlatls depended on their length. My master’s student Hannah Taylor filmed how far her family and friends could throw balls of different weights using an adjustable dog-ball thrower.
  • But of all the ways of improving the killing performance of wooden projectiles, the best is the bow and arrow.
  • …sharp wedges needed more energy to split the wood than thick, broad ones, and for a good reason. Most of the energy to split the wood was needed to overcome the friction between the wedge and the wood, and since thinner blades contacted the wood nearer to the tip of the crack, they had to push outward with a greater force to keep the crack moving forward, causing more friction. Thicker, broader blades needed less energy because they prized open the crack farther from its tip and needed a much lower force.
  • Clay minerals consist of plates of mica that in their natural state are bound together with relatively weak hydrogen bonds; these are strengthened or weakened by removing or adding water. However, if the clay is heated to over 900°F, all the water bound up in the structure is driven off, and permanent bonds form between the clay particles. The clay is converted to a biscuitlike solid—earthenware—that is unaffected by water, but is still somewhat porous and weak. It has to be heated to over 1,800°F for some of the chemicals to fuse or vitrify to form a glasslike material that joins the clay particles together and makes a new material—stoneware—that is stronger and impermeable to water
  • Because charcoal is made of the highly reactive element carbon, if they used it to burn metal oxides, it did not merely heat them up, but also removed the oxygen from the ore to produce pure metal.
  • …art nouveau architect and designer Charles Rennie Mackintosh with their ladder backs.
  • Wood also varies in color, principally because trees differ in the amounts of colored defense chemicals—tannins, phenolics, and the like—that they pump into their heartwood to kill fungal diseases and prevent rotting. The longer lived a tree and the warmer the climate in which it grows, the more defense chemicals it needs and hence the darker the wood. Of the temperate trees the long-lived oaks..
  • The heights of carving in this tradition were reached in the work of two fifteenth-century German sculptors, Tilman Riemenschneider and Veit Stoss. Their elaborately carved altarpieces, some of which can still be seen in churches in Germany and Poland, are comparable in humanity and ambition to the better-known stone masterpieces of the Italian Renaissance. They are particularly successful in bringing to life the suffering of Christ and his followers.
  • Despite extensive research no one has found the secret of the beautiful tone of Stradivarius violins. However, investigations of the wood have revealed that the soundboard is made from particularly slow-growing and fine-grained spruce that was harvested from the Alps. The fine grain of the wood and the bright tone of these instruments may be related to the cold weather and poor growing conditions of the Little Ice Age of the sixteenth to eighteenth centuries during which the trees were growing. With global warming, which speeds up tree growth, it may never again be possible to construct such perfect instruments.
  • Baekeland found that he could overcome this problem by mixing the resin with wood flour to make a fiber-reinforced material; unwittingly he had copied the strengthening arrangement used in the cell walls of wood itself. The process was a success, and Baekeland found that he could produce plastic components of all shapes and sizes. The objects that were made in this new material, Bakelite, included a wide variety of new technologically advanced products: radios, telephones, and the like, whose rounded, fluid design had a great influence on the streamlined aesthetics of the art deco period.
  • Infectious diseases such as measles, influenza, and syphilis that were brought in by the Europeans decimated the indigenous people. From a population of as high as 60 million people, it is thought that only around 6 million were left by 1600, a phenomenon known as the Great Dying. The result of this depopulation was that the cultivated fields of Mexico, the terraces of the Inca highlands, and the forest gardens of the Caribbean and Amazonia all reverted to forest, an effect that reduced global atmospheric carbon levels by around 9 Gtons. This would have lowered the CO2 concentration by around 3.5 ppm, enough to explain two-thirds of the global cooling of 0.27°F that was seen for the next two hundred years. The poor harvests of Europe in the seventeenth and eighteenth centuries that led to so much civil strife, and eventually to the French Revolution, were caused by the regrowth of forests thousands of miles away

Live demo of your WP Plugin with GH releases and WP Playground

I have been relying on Github actions to publish my plugins to the .org repositiory for some now. It feels magical – you publish a release and it builds, zips and uploads the plugin wherever it needs to go.

With WP Playground, you can take that process to another level – the moment you hit publish, new version of your plugin will be immediately available for testing right in browser, without installing and exposing existing sites. This means anybody can try out your plugin before downloading, without installing it with zero downsides, in seconds.

What is WordPress Playground?

Playground is a way to run an entire instance of WordPress in the browser, with no external backend. It is destroyed on reload, but perfect for trying out changes before installing on your site

Action to build plugin on release

I’m assuming you are using Github as a sane person. This Github action will run your plugin build process, zip it, and upload it as a release asset. Remember to change your zip file name.

name: Build and Upload Plugin ZIP
on:
  release:
    types: [published]

jobs:
  build-and-zip:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout Repository
      uses: actions/checkout@v4

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: 20 # Use Node.js v20

    - name: Install Node.js Dependencies
      run: npm install

    - name: Set up PHP and Composer
      uses: shivammathur/setup-php@v2
      with:
        php-version: '8.2' # Adjust PHP version as needed
        extensions: mbstring, zip

    - name: Install Composer Dependencies (Production Only)
      run: composer install --no-dev --optimize-autoloader

    - name: Build Plugin
      run: npm run build

    - name: Create Plugin ZIP
      run: npm run plugin-zip

    - name: Upload Release Asset
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ github.event.release.upload_url }}
        asset_path: ${{github.workspace}}/wp-personal-os.zip
        asset_name: wp-personal-os.zip
        asset_content_type: application/zip

You will also have to make sure your package.json has npm scripts:

	"scripts": {
		"build": "wp-scripts build",
		"plugin-zip": "wp-scripts plugin-zip",

Remember to give your Github actions write access:

Link to latest plugin zip

There is undocumented URL for the “release asset of the latest release” on Github:

https://github.com/USER/PROJECT/releases/latest/download/ASSET.zip

Replace user, project and asset accordingly

Create your first release

Create your first Github release for the action to run

Your Playground Blueprint

With this link, you can now create a playground blueprint that will install the plugin to a temporary WordPress site that runs in the browser. You can also add additional steps that will create sample data for the best demo experience. Here is the very basic blueprint:

{
  "steps": [
    {
      "step": "installPlugin",
      "pluginData": {
        "resource": "url",
        "url": "https://github.com/USER/PROJECT/releases/latest/download/ASSET.zip"
      }
    }
  ],
  "login": true
}

I highly recommend playground builder to work on these blueprints and debug them.

Once you have your blueprint, you can create a special link and drop it in the README of your plugin, like here

  1. Link will load playground
  2. It will install latest release of your plugin
  3. redirect the user to the proper page so they can see what your plugin is all about