1// Preview copy uses public site content and Scott's explicit room brief only. 2// Six objects (books, writing, consulting, about, podcast, news) are external: they open the site's real pages 3// rather than an in-room pop-up, so the room hands off to one consistent site (29 Sep 2026). 4import { essayUrl } from './chapter-elements.js'; 5export const objects = [ 6 { id: 'jitsai', title: 'JitsAI', kind: 'On the mats', rect: [13.55, 2.7, 18, 38.5], accent: '#6fa9ff', 7 deck: 'A blue belt. Still plenty to learn.', body: 'My Alliance gi belongs here because jiu-jitsu is part of my life, not just another project. JitsAI connects that interest with the things I build.', href: 'https://jitsai.com', link: 'Visit JitsAI', position: '18% 10%' }, 8 { id: 'rugby', title: 'Rugby Warfare', kind: 'Where it started', rect: [40.3, 8.7, 11, 10], accent: '#dc9980', 9 deck: 'Before the apps, there was rugby.', body: 'I founded Rugby Warfare in 2013. The ball stays on the shelf as a reminder of where this all began.', href: 'https://scottflear.com/about/', link: 'Read my story', position: '46% 8%' }, 10 { id: 'books', external: true, title: 'Book notes', kind: 'On the shelf', rect: [40, 22, 12, 8.5], accent: '#dfbd78', 11 deck: 'Good books deserve a second conversation.', body: 'History, philosophy, business and the ideas that stay with me. My notes are a way of working out what I think, not just remembering what I read.', href: 'https://scottflear.com/essays/#book-notes', link: 'Browse notes and essays', position: '45% 26%' }, 12 { id: 'workies', title: 'Save the Workies', kind: 'Back home in Wales', rect: [63, 5, 14, 33], accent: '#8bd3c7', 13 deck: 'Some places are worth fighting for.', body: 'Save the Workies is the campaign to bring Tumble Workingmenâs Club into community ownership. The poster is a piece of home on the wall. The record beside it is part of the same story.', href: 'https://savetheworkies.com', link: 'Meet the Workies', position: '72% 15%' }, 14 { id: 'turtle', title: 'Turtle Method', kind: 'One day at a time', rect: [-1.8, 59, 21, 29], accent: '#cbabff', 15 deck: 'Small actions, repeated.', body: 'Turtle Method brings coaching and tracking together to help people build healthier habits. The turtle has earned a fairly large spot in this room.', href: 'https://turtlemethod.com', link: 'Visit Turtle Method', position: '0% 80%' }, 16 { id: 'writing', external: true, title: 'Writing', kind: 'The open notebook', rect: [25, 62, 11, 6], accent: '#ffe1a7', 17 deck: 'This is where I think out loud.', body: 'Notes on building businesses, health, books and the questions I keep coming back to. Some ideas become products. Others are just worth writing down.', href: 'https://scottflear.com/essays/', link: 'Read the essays', position: '29% 66%' }, 18 { id: 'consulting', external: true, title: 'Consulting', kind: 'Pull up a chair', rect: [18, 66, 21, 34], accent: '#d5bda0', 19 deck: 'What are you trying to build?', body: 'A conversation about your product, your marketing or the thing that is getting in the way. Tell me where you are and what you want to change.', href: 'https://scottflear.com/consulting/', link: 'Start a conversation', position: '25% 92%' }, 20 { id: 'about', external: true, title: 'The person at the desk', kind: 'Scott Flear', rect: [41, 44, 18, 28], accent: '#f3dbb9', 21 deck: 'Welsh. Living in London. Usually building something.', body: 'I work across health technology, behaviour change and community projects. Away from the desk, there are books, jiu-jitsu and plenty of ideas that have not made it out of the notebook yet.', href: 'https://scottflear.com/about/', link: 'More about me', position: '50% 55%' }, 22 { id: 'podcast', external: true, title: 'One Day At A Time', kind: 'The podcast', rect: [69.5, 50, 4.5, 16], accent: '#efba8f', 23 deck: 'A thought for the day. Then get on with it.', body: 'My podcast is another place to talk through ideas about health, business and how we live. The microphone gets plenty of use.', href: 'https://scottflear.com/podcast/', link: 'Listen to the podcast', position: '75% 62%' }, 24 { id: 'record', title: 'Saturday Night at the Workies', kind: 'A little something to play', rect: [75, 44, 13, 20], accent: '#ffe48c', music: true }, 25 { id: 'parrot', title: 'ParrotPal', kind: 'A daily companion', rect: [82, 22, 17, 43], accent: '#c1ef81', 26 deck: 'Making the everyday a little easier.', body: 'ParrotPal is one of the main things I am building. This little green character gets pride of place, keeping an eye on the desk and everyone who stops by.', href: 'https://parrotpal.com', link: 'Meet ParrotPal', position: '100% 48%' }, 27 { id: 'mug', title: 'Freedom & wealth for Wales', kind: 'An essay over a cuppa', rect: [36.5, 59, 4, 7], accent: '#ffd9a0', external: true, 28 href: essayUrl('future-of-wales'), link: 'Read the Welsh essay', deck: 'The future we could build.', body: 'My 2021 essay about enterprise, opportunity and the future of Wales.', position: '38% 62%' }, 29 { id: 'news', external: true, title: 'Latest news', kind: 'Open on the laptop', rect: [60.8, 47, 10, 16.5], accent: '#c5e8ff', 30 href: 'https://scottflear.com/essays/', link: 'Read the latest', deck: 'New pages in the story.', body: 'Recent articles, campaign milestones and notes on what I am building.', position: '65% 56%' }, 31]; 32 33/** Return only a known room object; URL fragments are not HTML or remote URLs. */ 34export function findObject(hash) { 35 return objects.find((item) => item.id === hash.replace(/^#/, '')); 36}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.