Work log

Continuous record · newest first
Project
Aspect
Month
Activity

September 2026

  • Three things were wrong with the first version: the person radiated presence in a full circle, so units behind their back came down for no reason; units straight ahead came down too, right in their path; and the body had no size, so the platform directly above them would have hit them on the way down.
  • Field of view: the trace now lands only inside a 180° wedge ahead. On its own this halves what pacing and looping leave behind, because nothing behind the body is recorded any more.
  • Clearance distance D = platform radius + body + an elbow (0.62 m on the 8×8 grid). It does two jobs with one number: a unit whose mast is within D is held back — its platform would strike the person — and the floor within D records nothing. Either alone fails: the hold alone lets the spot where you stood fill in the moment you leave; the blank floor alone still lets a unit that reads mostly outside the circle come down on you.
  • Lane: while walking, a strip 2D wide straight ahead records nothing either, so structure grows along the sides of a route and closes in as an arc only when the person stops.
  • The line drafts showed the old reach of 1.0 m no longer works once clearance is on — only a 0.38 m ring is left outside D, too thin to fill a floor cell. Reach now means how far they look, so its range goes to 2.0 m and the bench defaults to 1.5. They also showed the old dwell preset standing inside a mast; every preset route now keeps to the aisles.
  • Second pass, after seeing it run: the wedge was pinned to the last step's direction, so a long stand grew an arc on one side only. Gaze is now separate from facing — the body keeps its direction and the lane follows it, while the head glances elsewhere every few seconds within ±110°, on a seeded sequence so a replay is identical. The arc spreads to wherever they looked. This is a demo device; the real gaze rule is mine to write.
  • Third pass: inside the wedge only two units were coming down. A unit reads the mean over its whole floor, so only units wholly inside the wedge ever filled; the ones half-covered at its edge never could. A new floor-share knob (half by default) lets a unit come down when half its floor has been looked at long enough — the count in the same scene went from about two to the six whose masts are actually in view.
  • All of it is optional in the model and off by default, so the earlier guards are unchanged bit for bit; 18 guards added. Not done: people still walk straight through platforms that have already formed, and there is still no cat.
  • Every bench so far was the space layer alone, its input arranged by hand. This one brings the behaviour layer in: for every second a person is present, each patch of floor within their reach records one second of presence; each unit reads the mean over the floor it owns, forms once that reaches 15 s, and never unforms. The three numbers — 2 % decay per second, a threshold of 15, counting per cell — are the thirty-line prototype from 20 July, given a scale.
  • The units shrink with density: the same 4.74 m field holds 4×4, 6×6 or 8×8, the pitch being field width over unit count. At 8×8 the pitch is 0.60 m and a platform 0.51 m across, a little wider than a person's shoulders; 4×4 is the earlier room to the digit, kept as the control.
  • Findings: a patch of floor stays within reach of a walker for about 1.7 s, so passing or crossing lights nothing. Standing for 20 s at 8×8 grows a cross — the unit underfoot and its four neighbours form, the four diagonals reach half; the same stand at 4×4 lights only the unit underfoot, and no group can be read. Six laps or eight passes along one line never reach the threshold, leaving a half-formed ring or corridor.
  • Reach is a behavioural quantity: 0.22 m (the body alone) cannot even fill the cell underfoot, 0.6 m lights one unit, 1.0 m grows the cross, 1.2 m a 3×3 block. The default is 1.0 m, close to the far phase of Hall's personal distance, and it is a knob rather than a decision made for me.
  • A wrong turn: the first version treated the trace as a conserved quantity — one second shared out among the cells in reach — and summed the readings. The wider the reach, the less each cell received, so 'being near counts' and 'staying long forms' cancelled each other, and the threshold changed with unit size. Recording each patch in full and averaging the reading made the threshold independent of density, and let a group grow together, shallow at the edge and deep in the middle.
  • Limits: one person and no cat; the degree of forming is a continuous ratchet where the real engine locks bond by bond; the plan stops at 'how activated', not which form, and the table from behaviour to form is still mine to write.
  • The morning's bench replayed one person along a preset route. This one is live: click the floor to place a person (up to eight), hold one to drag them, or let them wander. The rule underneath is unchanged — presence marks the floor, a unit forms when the floor it owns has been marked long enough — so the only new code is 'several people' and 'how a person moves'. Where two reaches overlap the floor counts both, so a pair standing together forms the unit underfoot in half the time, and four or five people reshape a good part of the room.
  • The first wander looked wrong on the machine: they crossed the room at walking-outdoors speed and never stopped. Retuned to how people actually occupy a room — 0.7 m/s, a hop of half a metre to two, then eight to forty-five seconds of standing. It is a demo device, not a claim about behaviour; the behaviour rules are still mine to write.
  • Redrew each unit as two quantities instead of one. A green disc is the live reading and shrinks back as the floor forgets; a purple ring is where the structure actually is. Before this they were one washed-out overlay and I could not see the trace fading at all.
  • Added a switch for what a unit does once the person leaves: follow, where it withdraws, or lock, where it stays. Lock is the hysteresis the project argues for — a trace outlasts the body, form does not return to where it started — but you cannot read a demo in which nothing ever goes back, so the bench defaults to follow and keeps lock one button away.
  • A wrong turn worth keeping: 'form in two seconds, gone six seconds later' could not be done by turning the decay knob down. Decaying by a fixed percentage has no ceiling and no zero — standing pushes the reading up to a steady state of fifty seconds, and after the person leaves it has to fall all that way back before anything moves, which is exactly the 'it stays lit forever' I was trying to fix. Capping the floor at the threshold and fading it away in a straight line separates the two: forming time is the threshold, dispersal time is its own number, and neither drags the other.
  • Still no cat, and the people ignore each other — no avoiding, no clustering. That layer is the author's.
  • A "unit" is the cylinder from earlier: twenty fabric bands round a mast that each fold out a ledge when they contract, joining into one ring platform. It already has four settled knobs — form, radius, height, skin. A relation between units is those knobs pulled apart from one unit to the next, plus one quantity a single unit never had: distance.
  • Listed every dimension first, then checked each: distance, height and form can be done now; a different radius per unit, or units contracting one after another, need new bench features; a sheet of fabric bridging two platforms needs new geometry; and "nesting" — one platform reaching into the next unit's bands — cannot be done, because fabric never collides with fabric in this simulation.
  • Distance is measured, not styled: apart keeps the spacing of the 4×4 field (1.23 m); touching puts two platform edges together (0.89 m); interleaved slides one platform under the other until its rim nearly reaches the neighbour's bands (0.59 m, overlapping by 0.30 m). Interleaving only works when the two units sit at different heights.
  • Height comes from where the shape sits along its band — up to 0.35 m higher, with the shape itself unchanged. A pair gets two levels, a triad three, a two-by-two four levels spiralling round, a three-by-three its highest ring in the middle.
  • Interleaving has a physical gate: the step between levels must clear the folded body at its fattest moment. The box shape swells to 77 px mid-way through forming and only settles back to 68, so the gate uses the peak — the pocket form can never interleave, and the box cannot in a triad; those buttons simply grey out.
  • Switching relation on the bench re-places the units without restarting the contraction. Three line drawings — the unit, the relation dimensions, and two/three/four/nine units against five relations — were drawn before the bench, to decide the next step from.
  • The bench now opens on a pair interleaved at two heights: its subject is relations, so the first thing seen should be one the 4×4 field cannot show. The two-by-two's stepped mode went from four levels spiralling round to two on the diagonal — 0.11 m per level does not read as a step on a real screen, 0.35 m plainly does.
  • The room is now the same room as the 4×4 field, whatever the cluster size. Before, the room scaled with the cluster's footprint, so switching clusters moved the walls and made it look as if the units had changed size; now the background stays put and only the camera moves in.
  • Staggered timing: each unit starts one wave after the last (150 steps a wave), so the contraction travels through the cluster; the three-by-three goes diagonally in five waves. This is a clock added on the bench — each unit begins stepping when its turn comes — with no change to the engine. The cost is one solver per unit in this mode, nine for the three-by-three.
  • Connection: where two level platforms touch, a fabric web grows either side of the contact point and fills the wedge-shaped gap (a top layer, a bottom layer and an end panel, 16 cm wide), so the two platforms read as one surface. It is not there all the time: it only appears once the two rims are within 14 px of each other, because before that it would be a sheet floating between two masts.
  • Left as they were: the interleaving clearances and the conservative gate. Not done yet: a ramp where stepped platforms touch, mixed forms in one cluster, and a different radius per unit.

July 2026

  • Checked the two 362×100 mm chassis trusses with a beam-element finite-element model, after weighing the machine part by part (about 1.5 kg rests on them) — prompted by a gut feeling that the frames looked too heavy.
  • Strength is over-built: display loads use about 5% of what the material can take, the worst carrying case still leaves a safety factor of 8, and the X-braces add under 0.5% of the stiffness — pure decoration.
  • The real limit is shaft alignment: neighbouring frames may only shift about 0.56 mm before the drive shaft binds, and that is decided by the display stand — corners-only support sags 4.8 mm, two full-length rails only 0.02 mm, a 200× difference.
  • Wrong turn: the first mass audit counted the large tentacle five times too heavy (nested parts carry inverted faces that double-count volume); caught and corrected.
  • Outcome: fix the stand first, then the struts can drop to 40% of their material (104 g → 44 g per piece); the frame has been redrawn to the slimmer spec.
  • Added kittens as their own agent type: all the cat data collected so far came from adults, and a cat café usually has kittens too.
  • Method: gave kittens their own parameters from developmental literature — 16–22 hours of sleep a day, 1.5–1.8× an adult's activity while awake, social play peaking at 9–14 weeks.
  • The rule that broke: "a cat climbs high when the room gets crowded" — a kitten under 12 weeks only manages about 0.6–0.9 m, so when a crowd arrives the adults go up and the kittens have nowhere to go.
  • Result: one crowd surge pushes the two age groups to opposite parts of the room — not designed, it falls out of what a kitten's legs can do.
  • What was tested: my starting guess for per-animal attributes was breed for cats, body size for dogs.
  • Dogs: a 2022 genomics study of 18,385 dogs shows breed explains only about 9% of behavioural variation between individuals, and almost none in traits like fear of strangers; body size does predict spatial behaviour, so it replaces breed outright.
  • Cats: breed effects land mostly on activity level; how close a cat lets a person come is set by temperament and how much it was handled at 2–7 weeks old.
  • Result: each species gets its own attribute set; breed only biases the setup draw and is not carried at run time.
  • The number sought: flight initiation distance from wildlife research — walk at an animal at a steady pace and record when it leaves. For domestic cats nobody has measured it; in that literature the cat only ever appears as the thing disturbing the birds.
  • Closest usable data: a 1988 experiment where 19 cats met unfamiliar people in a room, the person sitting and reading rather than approaching; distance logged in four bands, not metres.
  • Handling: the rule is written as a probability spread over those bands instead of an invented trigger distance, and marked in the document as inferred, not measured.
  • The problem: people and animals shared one structure (two crowding thresholds), which is wrong for people — the same 60 cm is an intrusion from a stranger and ordinary closeness from a friend.
  • The fix: distance now depends on relationship, using three defaults from a 42-country survey (stranger 1.35 m / acquaintance 0.92 m / close 0.32 m).
  • Two human behaviours added: people actively approach, and they cluster — a group in conversation occupies a circle that others walk around, not through.
  • Density stayed, but demoted: it now only sets walking speed.
  • The trigger: in the first draft, once floor had been reshaped to cat scale only humans paid to enter — one-directional, and wrong: people can push a space back into being theirs.
  • The fix: separate two things that had been conflated — the cost of getting somewhere (set by body size against the shape of the space, fixed) and the cost of staying (set by who else is present, recalculated every tick).
  • The resulting asymmetry favours neither species: cats can go everywhere but stay reluctantly; people are limited in where they fit but hold the ground once inside.
  • Reclaiming space now has a mechanism: not forcing a way in, but showing up nearby repeatedly until the space reads the traces and reshapes itself back.
  • What was cut: the design had two clocks — minutes (how bodies move in a room) and days/weeks (whether people come back tomorrow); the slow one was removed entirely.
  • The cost, stated plainly: the slow clock held the most interesting result — attendance collapsing because nobody else shows up, and not recovering when conditions return.
  • Why cut anyway: the subject is what happens in one room over minutes; forcing a week-scale mechanism on top made the rule book carry two bodies of literature for one story.
  • The tension that remains is internal to the timescale: people walk away rather than leave for good, and the space always reshapes itself one step behind the bodies.
  • The stance: the room reads what both species actually do and redistributes volume accordingly — not a zero-sum territory fight; the tone aimed for is renewal, not elegy.
  • The technical shape is a dumbbell: 3D at both ends (hero images only, on a hard four-week rendering budget), a NumPy computation layer in the middle on a flat grid, stacked only if height turns out to matter.
  • The two ends connect through nothing exotic: image files in, spreadsheet or JSON files out.
  • Toolchain fixed: Python with NumPy and Matplotlib for the engine, Jupyter to work in, ffmpeg for video, a browser plotting library for the interactive demo.
  • (Several sessions from this stretch could not be retrieved; the entry is reconstructed from the project's notes and its date is approximate.)
  • Environment: NetLogo first, just to watch two built-in models run (agents relocating by neighbours, ants following evaporating trails), then Anaconda and Jupyter for the real engine; the one trap was a Windows install path with non-English characters.
  • The thirty lines: five dots on a 20×20 grid, each walking one step per tick and adding a trace where it lands; traces decay 2% per tick; a square past the threshold turns solid and cannot be entered again.
  • Three snapshots over 500 ticks: black, then spreading trails, then bright blocks the dots must walk around.
  • The point: the space changed because of where bodies went, and the bodies then had to move differently — everything after this is the same loop with better rules.
  • Checked the rail that all five rings' feet slide on with a finite-element model — meshing the part and solving it cell by cell — instead of the textbook beam formulas I had sized it with.
  • The finding: the front ledge bends 1.55 mm under 20 N, about 4.5× worse than the hand math said — close to failing.
  • The fix: an 8×3 mm rib on the back plus a 4×2.5 mm lip on the front edge; deflection drops to 0.34 mm, and the load it can carry rises from 19 N to 54 N.
  • What was done: the page had one ring; all five were extracted from the CAD model, spaced 85 mm apart in 3D and made to open and close together.
  • The failure: the third ring started fine and caved in seconds later — not a drawing error: I had pinned its feet to exactly the drawing position, blocking the ~2 mm outward move it must make before it can fold inward.
  • The fix: tune the sliding allowance ring by ring rather than loosening all of them — loosened everywhere, another ring escapes into a flattened shape.
  • Result: all five hold their shape to within 0.4 mm and move as one.
  • The symptom: the same page opened on two machines; on one of them the arch flattened itself within seconds.
  • Diagnosis: not a computation error — the crank only fixes the apex height, the four feet slide freely in their rails, and the flattened shape is a legal answer too; the model was missing its end stops.
  • The fix: stops at both ends of every foot slot, plus stepping the simulation at a fixed rate instead of following the monitor's refresh rate.
  • Result: identical motion on any device.
  • The structure: three files at the project root — working rules and constraints, background, and the full substantive record.
  • Wrong turn: the first version had rules but no content — it told an assistant how to behave, not what the project knows; called out, torn down, rewritten.
  • The rewrite: went back through the whole conversation history and moved the vision, the mechanisms, the audit table, the space classification, the calibration numbers, the code roadmap and the ten rules into the record file.
  • Continuation points written in explicitly: the open decisions (revival rights for cut directions, the clock scheme, six down to three, final convergence) as a list.
  • Method first: The Mom Test, Portigal's Interviewing Users, the critical incident technique (asking about specific remembered events, not general opinions), plus published qualitative studies of athlete sleep.
  • Review of earlier drafts: mine and a teammate's shared the same flaws — leading questions, product language appearing too early, too many questions.
  • The v2 design: a neutral opening with product information held to the end; question 1 routes to a coach line or a retrospective line by whether they currently train a team; compound questions split into a short main question plus probes in parentheses; each of the two design concepts gets a five-step evaluation protocol.
  • Governing principle: ask about specific past behaviour, never opinions or future intentions; a fifth question added afterwards on adolescent athletes' sleep needs through growth.
  • Built with Next.js: four pages — home, work, lab, log.
  • All text and images come from a single content folder that fails the build if anything is malformed.
  • The four-bar linkage at the top of the homepage is the solver running live, not a video or a GIF.
  • The deliverable: one Chinese document that a new assistant — or me in three months — can pick up cold.
  • Contents: the vision, the three mechanisms (endogenous cascades, the two clocks, the lag effect), draft utility functions for the five desires, the verb library, the eleven-direction audit results, the rebuilt restroom, and every open decision.
  • Ten collaboration rules at the end, each traceable to a mistake already made: don't default to the shared-flat living room, don't let the building solve by subtraction, don't reason by headcount, don't treat collapse as the conclusion, and the candidate list may shrink but never grow.
  • The missing dimension: the audit table had no column for the building's own timescale. The literature splits into two clocks — fast in minutes (how bodies arrange themselves in a room), slow in days or weeks (whether you keep showing up at all).
  • The engine nests accordingly: the building holds three roles at three rhythms — holding the line weekly, mediating daily, reacting by the minute.
  • About thirty-five spaces classified this way, reshuffling the shortlist: a dormitory floor is the only candidate with both clocks natively (and it is downstairs, observable any time); a pickup court runs on a cyclic clock — different maths; a waiting room has the fast clock only. The reading also brought back hard calibration numbers (a corridor-versus-suite dormitory study, a large randomised work-from-home experiment).
  • The restroom idea first got an honest no (a negative-feedback system that settles down instead of running away), then came back after four changes: different fuel (dirt spreading; a secret clean bathroom ruined by fame — both genuinely self-reinforcing), building scale (the whole restroom network, restoring the slow clock), a wider verb set (breathing partitions, glass changing opacity, a secret bathroom that migrates), and a presentation rule (no fixtures — only flows and reputations).
  • The standing vote holds: the dormitory is still the safer main scenario.
  • The 2D solver was left untouched; a separate 3D one was written beside it.
  • The build: 16 vertebrae with three tendons spaced 120° apart — pull one and the tentacle bends toward it; dragging the mouse orbits the camera, not the model.
  • Wrong turn: the first version twisted into a spiral and juddered as it contracted. Fix: symmetric diagonal braces between segments (the job real fascia does), cutting sideways drift from 38.5 px to 1.2 px and keeping the bend in one plane.
  • The subject: the shell's fourth ring — an arch of scissor linkages, opened and closed by a crank at the base.
  • Method: zero changes to the solver; the ring is just bar lengths and joint connections written out as data and fed in.
  • Which was the point: the solver is not hard-wired to one example.
  • Release feel: letting go now carries the speed you flung the bars with and eases to a stop, instead of freezing on the spot.
  • Curve tracing: the path swept by the moving joint is drawn as it happens.
  • With dimension labels and a caption added, the piece is closed — bug fixes only from here on.
  • Motor and reduction: a NEMA17 stepper on a TMC2209 driver, geared down 3:1 through a GT2 belt (20-tooth pulley on the motor, 60-tooth on the shaft).
  • The shaft: 8 mm round changed to a 6 mm D-shaft — a flat ground on one side so pulleys cannot slip; hub bores redrawn to match, delivered as a dimensioned drawing plus a profile that imports straight into the CAD file.
  • Compatibility: slotted holes in the motor bracket, so either gear ratio fits.
  • Torque budget: 0.3–0.5 N·m peak, nearly all of it spent on gravity and friction rather than acceleration.
  • About ¥216 of definite buys: an ESP32, buck converters, a small amplifier and speaker, LED rings, SG90 servos, microswitches, springs, conductive copper tape, silicone wire, connectors.
  • A few items held pending decisions — a fourth stepper, a USB camera, a level shifter, a laser rangefinder — roughly ¥300 with everything.
  • Method: inventory the Elegoo kit first and strike off everything already on hand, so nothing is bought twice.
  • Method: the Japanese street-observation traditions and the environment-behaviour literature (Whyte, Gehl, Hall, Goffman) distilled into observation rule cards plus a seven-indicator filter for scenarios.
  • The seventh is a hard requirement — the cascade must be endogenous: an outside shock may light the fuse, but the amplification must travel person to person; in fieldwork that is one askable question: "are you avoiding this place because it doesn't work, or because nobody else goes?"
  • Course correction: collapse had quietly become the thesis and was demoted back to antagonist — the project is about bold, mobile, even fantastical spatial possibility. The building's verbs grew beyond subtraction to merging, migrating, luring, splitting, dissolving, with five spatial desires introduced (each needing a computable utility function).
  • Audit outcome: eleven candidate directions adversarially reviewed — six survived, five cut (all lacking co-present bodies sensing one another), virtual spaces excluded outright.
  • Two of my own recurring errors named so they stop repeating: defaulting to the shared-flat living room, and reasoning by headcount instead of by what the space wants.
  • Read three things: line length (how many characters per line still reads comfortably), Tufte's margin notes, the Swiss grid.
  • The decision: lay out for a wide desktop screen first, fall back to a single column on phones.
  • Contents: the maths, the interface other code calls, how much numerical error counts as acceptable, and what each stage has to deliver — all in one document.
  • The rule: the code answers to the document; where the two disagree, the code changes, not the document.
  • The machine's death now falls inside a ±30-second window, told to participants honestly afterwards.
  • Cut what the numbers cannot support: the heart-rate-variability before/after comparison went entirely — 5–8 participants can never reach significance; skin conductance measured around specific events is now the main physiological signal.
  • Speech is allowed: those stretches get flagged as artefacts, with a short interview afterwards about what they remember feeling.
  • Sensing frozen at six inputs: feeler touch, shell touch, ultrasonic distance, tilt and motion, sound, and an internal clock.
  • Still open: ethics filing, privacy compliance, Chinese versions of the scales, a second independent behaviour coder.
  • The swap: the delivery-rider persona was rejected by the team, rightly — riders choose their own hours, so they don't fit the "schedule disrupted by work" end of the spectrum. Replaced with platform freight truck drivers: task locked once a shipment is accepted, loan payments making rest feel unaffordable, traffic restrictions dictating the windows, standby permitting only shallow sleep.
  • The dissolution: living alone generates no sleep needs of its own — it only amplifies needs from elsewhere. The population was dismantled into three host populations, with "living alone" kept as a cross-cutting variable in its own section.
  • Visuals: five persona cards, each a five-panel storyboard across a night plus a radar chart of RU-SATED damage (the six dimensions of sleep health), labelled as encoded judgment rather than measurement.
  • The screener: about 18 items, identifying every population through combinations of variables rather than asking respondents to pick a label for themselves.
  • The reframe: no need to choose between a big social issue and a small everyday friction — the small thing is the input, and the big pattern comes out the other end as a result, not an assumption.
  • The filter: every candidate scenario answers three sentences — what is the individual rule, what collective pattern does it produce, and why does nobody want that outcome.
  • First concrete case: the shared-flat common room — people withdraw, occupancy collapses, the landlord converts it into a bedroom; a landlord reacting to what tenants actually do is already a spatial agent in the real world. (Later demoted to one candidate among several.)
  • Code path: v0, about forty lines of Python watching occupancy collapse; v1, add the building's response (low use triggers reallocating floor area); v2, sweep parameters to show hysteresis — restoring the original conditions does not bring the room back, which is the payoff the whole simulation exists to show.
  • The setup: two octagonal softboxes on stands, and a full sheet of white card bent into a seamless curve so there is no visible corner behind the subject.
  • Lesson one: a part that does not move can be shot with a long exposure, so the lights need not be bright.
  • Lesson two: a white part on a white background needs a rim light from behind and to one side, or its outline dissolves into the backdrop.

June 2026

  • Evidence before writing: Chinese primary sources first, company self-reported data labelled and downgraded, extrapolated conclusions flagged explicitly.
  • Convention overturned, one: named-individual persona cards ("Lin Mei, 29, ER nurse") read as stereotyped — replaced with type-level profiles, what this kind of person is typically like.
  • Convention overturned, two: the template's 2×2 positioning matrix cannot hold occupationally defined groups — replaced with a single-axis spectrum (shift workers: predictable ↔ unpredictable schedule; solo-living youth: deliberate delay ↔ involuntary insomnia).
  • Each manuscript: a positioning paragraph, the spectrum, four need clusters mapped to RU-SATED (the six dimensions of sleep health: regularity, satisfaction, alertness, timing, efficiency, duration), two type profiles, an evidence list.
  • A rule set here has held since: coin no new vocabulary — only terms already in the project or the literature.
  • The trigger: my advisor suggested simplifying to a single problem→solution line; at the same time a deeper doubt surfaced — "social withdrawal in East Asia" felt like a stock topic picked up, not owned.
  • Separating the two: the packaging genuinely risks cliché, but the mechanism underneath (a building reconfiguring itself from social signals, in the cybernetic lineage) is still not being done by anyone.
  • The root cause: the project was built from theory downward instead of growing upward out of a problem.
  • The decision: start again from one concrete situation in a space I have actually been in; the tension between the advisor's clean shape and a naturally speculative project stays on record, unresolved.
  • Servos: keep the stock plastic horn as the splined interface and bolt my own linkages on with M2 screws — no printing the 21-tooth spline myself.
  • Fasteners: M2.8 does not exist as a standard size (M2.5 and M3 do); printed holes come out 0.1–0.3 mm under drawn size, so they get modelled oversize.
  • Touch electrodes: one conductor gives one reading, so telling left from right needs two separate electrodes; the lead wire is itself part of the sensing surface — solder joints go inside the rigid body, bare wire acts as the electrode along the flexible sections.
  • Eight sections under the working title Cells of Withdrawal.
  • The closing section translates the project's traits into school-picking criteria: agent-based modelling, urban computing, enough tolerance for speculative work.
  • One risk stated plainly instead of buried: the concept is complete, but none of the implementation — rule engine, video, web simulation — has started, and that lands directly on the application timeline.
  • The trigger: a degrees-of-freedom check showed a single central rod still lets the arch sway sideways — two ways to move, so the shape at any moment is not unique.
  • The fix: a vertical guide at the apex removes the sway and pins the motion down to one.
  • A bug found on the way: the apex-finding code picked the highest point, which on one ring is an off-centre shoulder — changed to pick the point nearest the centreline.
  • Result: after re-optimising, each ring travels 3–26% further between open and closed; ring geometry is now frozen.
  • Three rounds of reading, one correction along the way: earlier rounds kept folding the sociology back into architecture talk — redone with the social science in front.
  • Four models line up into one skeleton: Schelling's segregation (mild preferences ending in total separation), Granovetter's threshold cascades (each person needs a different number of first movers), Kuran's preference falsification (everyone misreads the room), and the low-fertility trap.
  • Anchoring numbers: marriage registrations in China falling from about 13 million a year to 6.1 million; fertility near 1.0.
  • The closing claim: a system that faithfully grants everyone's wish to withdraw ends up welding each person into their own cell.
  • Deliverables fixed in the same pass: image boards, a video that speeds the tipping point up enough to be seen, and a web simulation where a reviewer triggers the counterintuitive result themselves; no physical installation.
  • The specification: ten hard rules grounded in academic survey standards (Pew Research, Krosnick and Presser) — label every scale point in words, restrict question types, map each item to an analysis, pretest before release.
  • The revision was surgical, not a rewrite: five matrix questions got complete scale labels, a copy-pasted introduction carrying the wrong text was fixed, two truncated passages restored, a duplicated pillow-interaction question removed.
  • One question added — household composition; my own first draft of it missed the roommate/shared-flat/dormitory category, patched in after.
  • The judgment: art about robots dying already exists; this one holds up on method — physiological sensing, validated psychological scales, behaviour coded from video by a fixed scheme.
  • The least developed and highest-return part is the behaviour engine — the logic deciding how the machine moves and reacts.
  • Target: a 4–6 page short paper at HRI or CHI; in submission or as a preprint is enough for applications.
  • Ethics approval starts now — everything with participants in it is gated on it.
  • Broken links repaired: my section cited an eleven-category population list that no longer existed after an earlier section was restructured; tracing it surfaced five orphaned population entries, cleaned out.
  • One axis unified: the four evolution types now divide by whether mainstream discourse already recognises the group; the long-argued solo-living youth land in the surfacing type by that axis.
  • The summary finalised as four judgments: demand grows where demographic shifts intersect; sleep is increasingly embedded in relationships and care; some groups are turning sleep from a problem into a managed resource; long-overlooked groups are coming into view.
  • The diagram: an SVG wireframe that encodes each evolution type in the line itself — thickening for amplification, an elbow for redirection, dashed-to-solid for surfacing; two rounds of geometry fixes to stop lines crossing circles and labels.
  • Same day, read the full merged report and flagged leftover merge damage in other chapters: misaligned citation numbers, duplicate headings.
  • Selection: NEMA17 motors (0.51 N·m, 1.7 A) on TMC2209 drivers, three plus a spare — the two common cheap drivers cannot supply that much current.
  • Alongside: GT2 aluminium pulleys with a custom D-bore, one 100 µF capacitor per driver, a 12 V 5 A supply.
  • A habit adopted here: check what is already in the Elegoo kit before ordering anything.
  • The starting point: Sou Fujimoto's Final Wooden House and affordance — a form suggesting what you might do with it rather than dictating it.
  • Four commitments: the space adapts to the people, not the reverse; it keeps changing over time; the scale is several people inside a building; pure software simulation with hand-written, readable rules — no sensors, no hardware.
  • The architecture follows: two layers of agents — people deciding their own social behaviour, and building parts (walls, rooms, openings) sensing them and responding.
  • Positioning from two rounds of reading: cybernetic architecture of the 60s–70s (Pask, Cedric Price, Negroponte's SEEK), Archigram, the computational ancestors (Schelling, Boids, Space Syntax), plus current robotic-wall work. The gap is real — nobody recently drives a building's reconfiguration from social signals between people; the closest precedent is a decade old.
  • The honest verdict of the round: a skeleton without a heart — still missing a question sharp enough to produce a surprising answer.
  • The section closes its chapter: populations from the two preceding sections sorted by how they evolve to 2030 — needs amplified, redirected, surfacing, or stable.
  • Cut what failed the evidence bar: a perimenopause statistic unverifiable at the primary source, deleted entirely; the sleep-apnea risk group moved back to "stable" for lack of structural growth evidence; "nearly 150 million empty-nest elderly" qualified so it cannot be conflated with the far smaller 7.72 million living alone at advanced age.
  • Delivered: Word and PDF manuscripts with 19 individually verified ACM-format references; the first version's colourful rounded-box figures replaced with black-and-white academic line drawings.
  • The failure: a joint printed pre-assembled with 0.4 mm of clearance would not turn — powder-sintered parts come out with a rough skin and trap loose powder in the gap; 0.5–0.6 mm is the minimum.
  • The change: a metal axle inside a printed sleeve drops the need to 0.2–0.4 mm — metal against plastic needs far less room.
  • The more useful lesson: being squeezed along the axis jams a joint faster than a slightly tight bore, so a rotating hub is made 0.2–0.5 mm shorter than the screw it turns on.
  • Where a bit of friction is actually wanted, wave washers do it better than flat ones.
  • The starting point: an adaptive bed for renchuang — sleeping badly in any unfamiliar bed — reading pulse, temperature and pressure to adjust its shape and warmth automatically.
  • The development: a personal comfort profile configured once and stored, with any connected device — not only a bed — adapting automatically, the way an Apple ID carries settings onto a new phone; the value is portability across spaces, not the bed itself.
  • The board copy was rewritten in the dense, objective register of a design brief, replacing earlier drafts that leaned lyrical and slogan-like.
  • The choice: a ⌀10×4 mm disc turning on a shoulder screw — a screw with a ⌀4 smooth section before the M3 thread starts.
  • One part, two jobs: the smooth section is the surface the disc turns on, and its length sets the gap between the two plates.
  • Anchoring: a brass insert melted into the bottom disc, or a hex nut trapped in a pocket.
  • The ruling: reinforcement learning (training by rewarding outcomes instead of giving instructions) may later upgrade the people layer, replacing the crude "take the best option nearby" rule.
  • The red line: it never replaces the hand-written rules on the building side — those rules are what a reviewer reads directly; they are the argument.
  • The order: the first working version involves no learning at all — plain Python, a grid, loops; reinforcement learning only once the rule engine runs and the simple agents visibly look too stupid.
  • The principle underneath: a method has to be pulled in by the problem, never grafted on because it looks good on an application.
  • The change: three fully motorised tentacles would each be weak, so they got different jobs — one tendon-driven arm that expresses and wraps, two flexible feelers that sense and whip about on their own.
  • The feelers: a fibreglass or nitinol core inside silicone tube, one micro servo at the base — the springing back comes from the material itself, not from a motor.
  • A principle settled the same session: this is not biomimicry — the object should look like a machine, with only the way it moves reading as alive, so behaviour stays the one thing being tested.
  • Touch: two capacitive channels per feeler, enough to tell which side was touched.

May 2026

  • Five dimensions of evidence: non-sleep uses of the bed, Chinese versus global pain points, purchase decision factors, emotional needs, smart-home acceptance and privacy.
  • Citations checked by hand: one wrong author affiliation corrected, two weak references from non-core journals cut.
  • Segmentation dropped the matrix diagram for a plain evidence-to-population table (nine candidate groups, four highlighted), plus a page of age-specific sleep traits across three adult phases (19–33 / 34–53 / 54+).
  • A mid-course self-check found the deck only two-thirds done — missing the segmentation, the pain-point-to-needs translation, and users' own words — finalised only after those were added.
  • The project: a 2030 sleep-foresight study run jointly by Tsinghua University's Future Lab and DeRucci, a Chinese premium mattress brand.
  • Four competitor tiers mapped: Eight Sleep (temperature control), Sleep Number and Bryte (pneumatic adjustment), DeRucci's own T11+ all-in-one, budget ecosystem products from Xiaomi and Huawei.
  • The industry's shared failure: over-intervention — users complain the bed moves on its own after they fall asleep and wakes them up.
  • Four gaps follow: restrained intelligence (a system that knows when not to act), a form that reads as furniture rather than appliance, designing for the relationship between the two people in the bed, and treating sleep as a ritual rather than a problem to fix.
  • Delivered: an annotated reading guide, an 18-page competitive analysis deck, a feature comparison chart.
  • The pins: dumbbell-shaped, slid in from the side (⌀3×15 mm, waisted to 2.4–2.5 mm), their slot turned perpendicular to the tendon's pull — no press fit, cannot be pulled out, and the finger comes apart for repair.
  • The tendons: 0.4–0.5 mm braided fishing line rated 30–40 lb, running through 1.0–1.2 mm channels inside the printed segments, knotted into small cavities at the ends.
  • The gaps between segments are graduated along the finger rather than kept equal.

April 2026

  • Five candidates: scissor linkages with length-changing bars, angulated scissor units (the Hoberman-sphere mechanism — bent bars that let the whole ring grow and shrink radially), You–Pellegrino folding bars, Bennett spatial linkage rings, and walls of panels driven in phased groups.
  • Angulated scissors won on a practical ground: it is the only one that stays parametric all the way from Grasshopper modelling into physics simulation — change a dimension without rebuilding everything.
  • The Jansen walking-linkage leg was finished first, independently.
  • The finger: each segment a rigid body, hinges defined by two points the bodies share, tendons as chains of springs routed through guide points; the wrap test passes.
  • The key tuning: constraint strengths separated by orders of magnitude — anchors 10000, rigid bodies 1000, collisions 100, springs 1–3 — they only behave once clearly apart.
  • Best configuration: four tapering segments (25/20/15/10 mm) with three tendons.
  • A finding kept: friction closes the joints one after another rather than all at once, and that lag should not be designed away — it is what makes the motion read as alive.
  • Took an existing Kangaroo definition (the physics engine inside Grasshopper) apart piece by piece: springs, anchors, the drag-while-running tool, the solver.
  • Got the dragging working and understood how constraints and solver actually fit together.
  • Everything mechanical simulated afterwards is built on this.
  • The structure fixed as four parts: a bell-jar body, appendages, an eye stalk, a base; functions ranked into 13 priorities, interaction split into living-alongside and direct-contact modes.
  • The bell jar must open outward in every direction at once: push rods, a camera-style iris and shape-memory alloy were surveyed; Kresling origami ruled out — it extends lengthwise rather than outward.
  • The study, first draft: 5–8 participants, four accelerated life cycles each, sessions of about 37 minutes; four established questionnaires alongside physiological signals, behaviour coded from video on an existing framework, predictions written in advance for three kinds of participant.

March 2026

  • The question: under what conditions does a person come to feel about a non-living object the way they feel about a pet, and how does that show when they lose it.
  • One correction: an early drift toward "how do we make people sadder" — death and rebirth are instruments for studying attachment, not the point of the piece.
  • Mechanics settled: a new personality overwrites the old instead of accumulating; the ending is a loss of control, not a clean goodbye; the timing of death is unpredictable but preceded by visible signs of aging.
  • One rule the participant is never told: the more they interact with it, the sooner it dies.
  • The starting point: after the GPT-4o update, watching people on the Chinese internet mourn AI companions that had been changed out from under them.
  • Three candidates proposed: the Reincarnation Machine (attachment and shared history), Presence (a device for remote company while working alone), and Unconscious Nudge (furniture that adjusts your state without you noticing).
  • A pitch template fixed at the same time: narrative, system logic, physical expression. The Reincarnation Machine starts here.

The log grows over time. Entries link into case studies and lab benches as they land.