Building Terminal Graph, a Spatial Development Environment, With Caidan Williams ![rw-book-cover](https://img.youtube.com/vi/fUJRKhjen_I/maxresdefault.jpg) ๐Ÿ”— **Source:** [Building Terminal Graph, a Spatial Development Environment, With Caidan Williams](https://www.youtube.com/watch?v=fUJRKhjen_I) > [!note]+ Document Notes > tags: [developer-tools, spatial-computing, terminal-emulators, indie-software, career-journey] > author: [MISSING] > source: Overcommitted Podcast (YouTube) > reference: https://www.youtube.com/watch?v=fUJRKhjen_I > date created: {{date:YYYY-MM-DD}} {{time:HH:mm}} > > # ๐Ÿท๏ธ Title: Building Terminal Graph, a Spatial Development Environment, with Caidan Williams > <!-- deep-read:sections start --> ## ๐Ÿงญ Table of Contents - [๐Ÿ“ Summary](#-summary) - [๐Ÿ“– Main Content](#-main-content) - [๐Ÿ—’๏ธ Notes](#๏ธ-notes) - [๐Ÿ“š References](#-references) - [๐Ÿ—ฃ๏ธ Paraphrase](#๏ธ-paraphrase) - [๐Ÿ“ฐ Newsletter](#-newsletter) - [โœ… Action Items](#-action-items) - [๐Ÿงช Hypotheses](#-hypotheses) - [๐Ÿ“Š Methodology](#-methodology) - [โ“ Questions](#-questions) - [๐Ÿ”ฎ Future Research](#-future-research) - [๐Ÿ’ก Implications](#-implications) - [๐Ÿง  Learning Styles Assessment](#-learning-styles-assessment) - [๐Ÿ“Š Accessibility Assessment](#-accessibility-assessment) - [๐ŸŒ DEIB Assessment](#-deib-assessment) - [โœ… Logical Validity](#-logical-validity) - [๐Ÿ›ก๏ธ DARVO Analysis](#-darvo-analysis) - [๐ŸŽฏ Conclusion](#-conclusion) ## ๐Ÿ“ Summary - Caidan Williams, a partner at the "Internet Development Studio" (indev), built Terminal Graph โ€” a canvas-based development environment where terminals, browsers, file editors, and notes live as connected nodes on an infinite Figma-like surface, with Unix-pipe-style data flow wired between them. - It matters because it's a genuinely novel entry in the "AI coding tool" wave: rather than a fixed three-panel layout (file tree / chat / diff), it treats the workspace itself as a graph the developer composes and rewires, and its differentiator โ€” piping stdout/data between arbitrary node types โ€” has no direct prior art according to Williams's own search. - Key stakeholders: Williams (solo builder turned team lead), indev's other five partners (holacracy structure, no employees/bosses), and a growing public-beta user base providing (often conflicting) feature feedback. - Risks/tradeoffs: feature-creep risk ("everything app") vs. staying primitive-focused; solo-founder bus-factor risk now being addressed by bringing in design/engineering help; monetization pressure since indev is bootstrapped, not VC-backed, and needs product revenue to reduce client-work dependency. - Bottom line: a personally-motivated side project (2 weeks to first working version) that validated itself through the builder's own daily use and is now being productized around a "blueprints" sharing mechanism for team workflows. ## ๐Ÿ“– Main Content Terminal Graph reframes the terminal-emulator problem. Every terminal emulator on the market (iTerm, Ghostty, Kitty, Alacritty, etc.) is fundamentally "a window with a split tree," in Williams's framing. Terminal Graph instead puts every terminal, browser, editor, and note a developer might have open onto one infinite canvas, and โ€” critically โ€” lets the developer draw data connections between those nodes: a terminal's stdout can be grepped by a utility node and piped into a browser node's URL bar, or a `git diff` can flow directly into an AI coding assistant node to draft a commit message. The project began as a personal curiosity experiment rather than a market analysis: could Unix pipe semantics be made visual and multi-way (many-to-one, not just linear piping)? Once the first two-terminal connection worked, Williams treated that as proof of concept and expanded outward โ€” adding a WebKit/Safari-backed browser node (with injected JavaScript for data extraction), file/notes nodes, and utility nodes (switches, gates, delays, collections, template nodes with `{{curly-bracket}}` variable ports, and webhook nodes for external event ingestion). Two forces converged to turn the experiment into a product: a decade-plus of living in the terminal (Neovim, lazygit, fuzzy-finders) left Williams unsatisfied with the current crop of three-panel AI coding UIs (he names Conductor and Codex-style layouts specifically) as too rigid for his workflow; and indev, as a bootstrapped six-partner holacracy with no VC backing, has been trying to shift from pure client-services work toward owned products so the studio isn't perpetually dependent on the next contract. Feedback management became its own design discipline. Williams describes receiving "every opinion" from beta users and resolving the conflict by refusing to build "an everything app" โ€” instead building primitives (nodes + connections, drawing on a personal background in graph theory) that let users compose their own workflows. The most underused-but-powerful primitive is the **blueprint**: a capturable, exportable (JSON), shareable snapshot of a node set โ€” startup commands, URLs, file paths, notes โ€” that lets a team distribute a standardized workflow (a release process, a security audit) as a "download, import, click run" artifact instead of a wiki page nobody reads. The second half of the conversation traces Williams's path into the industry: Minecraft modding in Java at 13 for pocket money, a shift to 2D game development in high school in Durango, Colorado (with a friend who became his long-time collaborator), a gap year (funded by no family money for college) spent applying to roughly 500 companies, landing a QA-engineer internship at Git Prime within 8 months, then a series of jobs (Pluralsight post-acquisition, Overjet doing dental-X-ray data pipelines, Domino Data Labs enabling a blind move to Seattle, a medical-imaging computer-vision role) punctuated by a pandemic-era 80-hour-week burnout and a 2024 layoff. He eventually networked his way into indev via a Seattle meetup and a one-month work trial that included redesigning an open-source monospace font (Server Mono). ## ๐Ÿ—’๏ธ Notes - Terminal Graph's core metaphor: infinite canvas (ร  la Figma) + node graph, not a fixed pane layout. Nodes observed: terminal, browser (WebKit/Safari-backed), file editor (VS Codeโ€“backed), notes, template/variable node, switch/gate/delay/collection utility nodes, webhook node. - The differentiator Williams identifies after his own prior-art search: other "terminals on an infinite canvas" tools exist, but none of them implement cross-node **data flow/piping** โ€” that's the gap Terminal Graph fills. - Concrete data-flow example given twice: (1) dev-server stdout โ†’ grep for local URL โ†’ auto-updates a browser node's address; (2) `git status`/`git diff` output โ†’ piped into an AI coding node โ†’ drafts a commit message. - Blueprints = the productization lever: capture a node set + its config as JSON, reinstantiate across projects/workspaces/machines, or hand to a teammate/team for a standardized shared workflow. - Company context: indev is a holacracy โ€” ~6 equal-power partners, no employees, no bosses, no formal hierarchy for decision rights. Not venture-backed; survives on client-services revenue, which is the explicit motivation for pushing toward owned products. - Development timeline: 2 weeks to v1 โ†’ private beta (email list, later abandoned as unwieldy) โ†’ public beta (Sparkle + AppCast auto-update infrastructure) โ†’ currently public beta, with an eventual v1.0/GA planned once "kinks" are resolved. - Feedback philosophy: treat all feedback as signal, but filter through "primitives over features" โ€” avoid becoming an "everything app." Graph-theory background (mathematical graphs, not just visual ones) cited as a direct influence on the node/connection data model. - Career arc highlights: Minecraft Java modding at 13 โ†’ high-school 2D game jams with a friend from Durango, CO โ†’ gap year with a self-imposed "get a tech job in a year or go to college on loans" deadline โ†’ QA engineer at Git Prime (built internal tools mocking GitHub/Bitbucket APIs to dodge rate limits, and a "time-travel" git-repo-recreation tool) โ†’ Git Prime acquired by Pluralsight (became "too big/impersonal," stalled promotion) โ†’ Overjet (Boston, Harvard Innovation Lab) building data pipelines for dental X-ray computer vision, including reverse-engineering an obscure unsigned-16-bit TIFF format from old digital X-ray machines โ†’ pandemic-era 80-hour weeks, underpaid, CEO friction โ†’ Domino Data Labs (remote, enabled a no-visit move to Seattle) โ†’ laid off in the 2024 layoff wave โ†’ 6-month self-directed hiatus โ†’ medical-imaging (MRI) computer-vision role โ†’ networking at a Seattle "distributed web meetup" led to meeting Jimmy Lee (indev founder) โ†’ desk rental โ†’ invited to a one-month partner work trial โ†’ contributed to the Server Mono open-source font โ†’ hired as full partner (~1+ year tenure at time of recording). - Explicit self-assessed lesson: attributes career success to persistence ("~500 applications") rather than innate intelligence; pushes back on the cultural assumption that software jobs are inherently stable or well paid. - Closing "what if this existed IRL" riff: co-host Erica maps it to family/location coordination with her husband and daughter; Williams maps it to ADHD-driven routine automation (laundry/chore reminders) and, separately, to early-parenthood tracking of twins' feeding/sleep ("Sims need bars" analogy). - Contact: kaidan.dev (spelled aloud "c-ai-dan.dev"), with links to Threads, Bluesky, and X from that site. ## ๐Ÿ“š References - [Terminal Graph](https://kaidan.dev) โ€” Williams's site, linked to socials (URL as spelled aloud; not independently verified) - [Git Prime / Pluralsight acquisition](https://www.pluralsight.com) โ€” company mentioned as Williams's first industry job, later acquired - [Overjet](https://www.overjet.ai) โ€” dental X-ray computer vision company mentioned by name - [Domino Data Lab](https://www.dominodatalab.com) โ€” mentioned by name (transcript renders it "Domino Data Labs") ## ๐Ÿ—ฃ๏ธ Paraphrase - Williams built Terminal Graph out of a personal itch: two decades in Linux/terminal tooling left him wanting to see every window he'd ever open โ€” terminal, browser, editor, notes โ€” on one shared canvas, and to wire them together the way Unix pipes wire commands together, but visually and many-to-many rather than one linear chain. Once the first proof-of-concept (two terminals piping to each other) worked, he treated his own excitement as validation and kept layering node types on top, eventually showing it to others and getting the same reaction. - The business case sits alongside the technical one: indev is a bootstrapped, employee-less, boss-less "holacracy" of six partners that survives on client contracts, and Williams has been explicitly pushing the studio to build owned products so it isn't perpetually dependent on the next deal. Terminal Graph, and its blueprint-sharing feature in particular, is his bet at doing that โ€” while trying hard not to let user feedback pull it into becoming an unfocused "everything app." ## ๐Ÿ“ฐ Newsletter Ever wished your fifteen open terminal windows could just... talk to each other? Caidan Williams โ€” partner at the Internet Development Studio and self-described "Linux nerd" โ€” built Terminal Graph, a canvas-style dev environment where terminals, browsers, editors, and notes sit as nodes you can wire together like Unix pipes, minus the one-line-of-text limitation. Grep your dev server's logs straight into a browser node's URL bar, or pipe a `git diff` into an AI assistant node to draft your commit message โ€” all without leaving the canvas. Built solo in two weeks, now in public beta with Sparkle auto-updates, Terminal Graph's "blueprints" feature lets teams package and share entire workflows (think: release checklists or security audits) as a single importable, runnable file instead of a doc nobody opens. Williams's own path here โ€” Minecraft modding at 13, ~500 job applications during a self-imposed gap-year deadline, and a hard-won QA-to-partner career arc โ€” is a good listen for anyone who thinks they need a CS degree or a "genius" streak to break in. Give it a listen, and if you're the type who keeps twelve tabs and eight terminals open at once, go poke around kaidan.dev. ## โœ… Action Items #### DevRel - Developer advocacy: Williams's own public-beta narrative (built for himself, shipped a private-then-public beta) is a reusable case study for "dogfood-first" advocacy talks/demos. - Developer experience: blueprint export/import (JSON) is worth studying as a low-friction onboarding/sharing pattern for any devtool with configurable workspaces. - Community management: the "conflicting feedback, filter to primitives" approach is a concrete talking point for any community-facing roadmap-prioritization discussion. #### OSPO - Not applicable โ€” no open-source governance, licensing, or compliance topics surfaced in this source (Server Mono font contribution is mentioned only in passing as a personal anecdote). #### Community - Contributors: Williams's own on-ramp (meetup attendance โ†’ desk rental โ†’ work trial โ†’ partner) is a usable template for "how we actually bring people into a small studio" community-building content. #### WordPress - Not applicable โ€” this source contains no WordPress-specific content (Core, Performance, AI, Mobile, Playground, Community, Training, Marketing, Support, Design, Documentation, Photos, TV, Polyglots, Accessibility, Meta, CLI, Hosting, Tide, Openverse, Themes, Plugins). #### The WPCC - Not applicable โ€” no WPCC programs, projects, or funding topics discussed in this source. ### FAIR - Not applicable โ€” no FAIR technical independence, policy, or governance-artifact topics discussed in this source. ## ๐Ÿงช Hypotheses 1. Developers who currently juggle many terminal/browser/editor windows will show measurably faster task-switching or lower reported cognitive load when using a node-graph workspace like Terminal Graph versus a traditional tiled/tabbed setup. 2. The "blueprint" sharing mechanism reduces onboarding time for team-standard workflows (e.g., release processes) compared to text/wiki documentation of the same process. 3. Visual data-flow tools (piping stdout between arbitrary node types) lower the barrier to building small personal automations for non-expert scripters compared to writing equivalent shell pipelines. 4. Holacratic, partner-only studios (no employees, equal power) produce different product-prioritization outcomes than conventionally-managed studios when a single member champions a self-initiated product. 5. Career persistence (measured in application volume) is a stronger predictor of breaking into a self-taught tech career than credential possession (e.g., a CS degree), at least in the pre-2022 hiring market Williams describes. ### ๐Ÿ“Š Methodology - H1/H3: A/B usability study โ€” matched task list (e.g., "run dev server, check logs, verify in browser, open a related file") completed by developers in Terminal Graph vs. their existing terminal+editor+browser setup; measure time-to-completion, window/context switches, and a post-task cognitive-load survey (e.g., NASA-TLX). - H2: Field study with 2-3 teams โ€” introduce a blueprint-packaged workflow to one team and a documentation-only version of the same workflow to a matched team; measure time-to-first-successful-run and error rate. - H4: Comparative case study across several bootstrapped software studios with differing governance models (holacracy vs. traditional management), tracking how self-initiated product ideas move from prototype to funded internal project. - H5: Would require a much larger, non-anecdotal sample (e.g., survey of self-taught engineers) correlating application volume, credential status, and time-to-first-offer โ€” this single transcript is anecdote, not evidence. ### โ“ Questions - What happens to Terminal Graph's node-graph model at scale โ€” does a canvas with 30+ active nodes remain navigable, or does it need its own zoom/grouping/search affordances? - How does Terminal Graph handle secrets/credentials flowing through piped connections between nodes (e.g., a webhook node receiving an API payload)? - What's the actual adoption curve for "blueprints" once they're marketed as the core team-sharing feature, versus their currently "underutilized" status? - Does indev's holacracy model change how Terminal Graph's roadmap gets funded internally (partner time allocation) compared to a company with a formal PM/eng-manager hierarchy? ### ๐Ÿ”ฎ Future Research - Longitudinal study of Terminal Graph users' created blueprint libraries once the sharability features mature, to see what workflow categories (release, security, onboarding, etc.) actually get standardized this way in practice. - Comparative UX research on canvas-based dev environments generally (Terminal Graph vs. other "terminal on infinite canvas" tools referenced but unnamed) to isolate whether the data-flow/piping feature specifically drives retention. ### ๐Ÿ’ก Implications - Practice: teams could reduce "workflow tribal knowledge" loss (a departing engineer's undocumented release steps) by exporting the steps as a shareable blueprint instead of relying on institutional memory. - Security: any tool that pipes command output (including logs, diffs, or webhook payloads) between nodes needs a clear story on secret redaction/scoping before teams adopt it for anything sensitive โ€” not addressed in this source. - Funding/business models: the "bootstrapped studio building an owned product to escape client-work dependency" pattern is a recognizable and repeatable small-agency strategy, worth a dedicated case-study writeup. ### ๐Ÿง  Learning Styles Assessment - Reading level estimate: conversational spoken-register transcript; approximate Flesch-Kincaid grade level 8-9 (short-to-medium sentences, frequent filler words, low jargon density outside of specific dev-tool nouns). #### ๐Ÿ‘€ Visual learners - Present: none in the transcript itself (audio/video source, no diagrams). - Improve: a simple node-graph diagram of Terminal Graph's example pipeline (dev server โ†’ grep โ†’ browser URL) would clarify the core mechanic far faster than prose description. #### ๐Ÿ”Š Aural learners - Present: the source is itself a podcast/interview โ€” well suited to aural learners as-is. - Improve: a short (2-3 min) audio pull-quote of just the "data flow is the most unique aspect" segment could serve as a standalone teaser. #### ๐Ÿ—ฃ๏ธ Verbal learners - Present: strong use of analogy throughout ("like Figma," "Sim bars," "three-panel coding apps"). - Improve: a short glossary of terms used loosely in speech (holacracy, blueprint, node, webhook node) would help verbal learners anchor definitions. #### ๐Ÿงฉ Kinesthetic learners - Present: none โ€” no hands-on exercise accompanies the interview. - Improve: a "build your first blueprint in 10 minutes" companion walkthrough would suit this audience. #### ๐Ÿง  Logical learners - Present: the graph-theory framing (nodes/connections) is inherently logical/structural. - Improve: a decision table mapping "workflow need โ†’ which node type to use" would help logical learners self-serve. #### ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ Social learners - Present: the interview format itself, plus Williams's account of networking his way into indev via meetups. - Improve: a linked community/Discord prompt for beta users to swap blueprints would extend the social angle. #### ๐Ÿง˜โ€โ™€๏ธ Solitary learners - Present: Williams's own account of solo late-night/weekend building is a relatable solitary-builder narrative. - Improve: a reflective prompt ("what's the one repetitive dev-workflow you'd blueprint first?") would suit self-paced processing. #### ๐ŸŒฟ Naturalistic learners - Present: none directly โ€” no sustainability/ecosystem framing in this source. - Improve: not a natural fit for this content; skip rather than force a tie-in. ### ๐Ÿ“Š Accessibility Assessment #### Screen reader semantics - Present: N/A โ€” this note is derived from an audio/video source, not itself a web artifact with markup to assess. - Improve: if Terminal Graph's own UI is a visual canvas of nodes, its accessibility story (screen-reader traversal of a spatial graph) is an open question not addressed in this interview and worth a dedicated audit. #### Keyboard navigation - Present: not discussed. - Improve: unknown whether Terminal Graph's canvas supports full keyboard-only navigation between nodes; flag for follow-up. #### Contrast and readability - Present: not assessable from a transcript. #### Text resizing and reflow - Present: not assessable from a transcript. #### Media and captions - Present: this note is generated from a transcript, implying captions/transcript exist for the source video โ€” good baseline access. - Improve: verify the published video includes synchronized captions (not just an offline transcript) and a downloadable transcript link on the video page. #### Forms and interactions - Present: not applicable to this source. #### Standards reference - Given the lack of any visual/interactive artifact in this source, WCAG 2.2 AA mapping is not meaningfully assessable here; it would apply to a future review of the Terminal Graph app UI itself, not this podcast episode. ### ๐ŸŒ DEIB Assessment #### Cultural breadth - Present: single-region (US, Colorado/Boston/Seattle), single-perspective narrative. - Improve: the episode would benefit from a companion segment featuring builders from other regions/backgrounds working on similar spatial-dev-tool ideas. #### Inclusive language - Present: plain, jargon-explained-in-context language throughout ("holacracy" is defined inline when introduced). - Improve: a couple of dev-tool nouns (Sparkle, AppCast) are used without definition; a glossary would help non-specialist listeners. #### Neurodiversity support - Present: Williams openly discusses his ADHD and how it shapes both his working style and his hopes for Terminal Graph's real-world automation use case โ€” a notable, unprompted piece of representation. - Improve: none needed; this is a strength of the source as-is. #### Representation - Present: Williams's origin story (low-income family, oldest of five, no college funding, self-taught path) broadens the "how people get into tech" narrative beyond the conventional CS-degree pipeline. - Improve: none โ€” this is already a valuable representation data point for DevRel/community narrative work. #### Psychological safety - Present: respectful, low-pressure interview tone throughout; no adversarial framing. - Improve: none needed. ### โœ… Logical Validity #### Strong reasoning - Causal/inductive: Williams's claim that data-flow/piping is Terminal Graph's key differentiator is backed by a stated method (his own prior-art search found "terminals on canvas" tools but none with data piping) โ€” a reasonably strong inductive claim given the explicit methodology disclosed, though it rests on one person's search rather than a systematic market survey. - Analogical: the Unix-pipes-made-visual analogy is used consistently and clarifies the mental model well โ€” a strong explanatory analogy, not just a rhetorical flourish. #### Fallacies - Hasty generalization risk (not a hard fallacy, but a caution): the claim "persistence matters more than intelligence" is drawn from a single case (his own ~500-application job search) and, while explicitly caveated by Williams himself ("I'm not going to say whether or not I'm intelligent"), a listener could over-generalize it into universal career advice without controlling for market conditions, timing, or luck. #### Tone of voice - Warm, reflective, and unguarded โ€” Williams narrates failures (burnout, stalled promotion, layoff) without defensiveness, and the hosts respond with validating, non-interrogative follow-ups throughout. ### ๐Ÿ›ก๏ธ DARVO Analysis - Not applicable. This is a cooperative, friendly interview with no accusation, conflict, or dispute structure present โ€” there is no deny/attack/reverse-victim-offender dynamic to analyze. The closest adjacent moment (Williams describing friction with a former CEO over hiring/workload) is reported briefly, one-sidedly, and without any counter-party present to evaluate; it is not framed as a DARVO exchange. ## ๐ŸŽฏ Conclusion Terminal Graph is a solo-built, personally-validated bet that the real bottleneck in modern dev workflows isn't which AI model sits in your sidebar but how scattered your workspace is โ€” and that Unix-style piping, made visual and spatial, is a genuinely underexplored answer. Its near-term test is whether "blueprints" can turn that personal tool into a team-sharing product without indev, a bootstrapped six-partner holacracy, having to compromise the primitives-over-features discipline that's kept it from becoming an everything-app. Practical next step for readers: if you maintain a repetitive multi-tool workflow (release process, environment setup, audit checklist), Terminal Graph's blueprint model is worth a trial specifically for that use case rather than as a wholesale terminal replacement. ## ๐Ÿ”„ Refactor Appendix โ€” Building Terminal Graph, a Spatial Development Environment, with Caidan Williams ### ๐Ÿ“š Literature Atoms (H3) #### Data flow between nodes is Terminal Graph's key differentiator > [!quote] > "I do truly think that the data flow is the most unique aspect that separates itself from others." **Context & use**: - Mid-interview, in response to "what sets it apart from other apps." - This is the single clearest positioning claim in the whole episode โ€” the thing to cite if summarizing Terminal Graph in one sentence. **Tags**: #xref <!-- atomicity: 1 idea โœ“ --> #### Build primitives, not an everything app, when feedback conflicts > [!quote] > "I'm trying to make sure I'm not building like an everything app... The way that I'm trying to focus on building this is I want to build the primitives such that other people can build out what they need with it." **Context & use**: - Said while describing how he filters contradictory beta-user feedback. - Directly actionable design-philosophy statement, reusable for any product-prioritization discussion. **Tags**: #xref #aphorisms <!-- atomicity: 1 idea โœ“ --> #### Blueprints let teams share whole workflows as one importable file > [!quote] > "You download terminal graph. You import it and just click run and it just does the thing... there wouldn't be the need to like have that kind of like friction of teaching somebody this process." **Context & use**: - Introduced as the "next" focus area after core node/connection functionality. - Ties directly to Hypothesis 2 above (blueprint vs. documentation onboarding speed). **Tags**: #xref #articleseed <!-- atomicity: 1 idea โœ“ --> ### ๐Ÿง  Permanent Candidates (H4) #### Primitive-first design absorbs conflicting user feedback without scope creep **Claim** (one sentence, Courtney's voice): When user feedback conflicts, building composable primitives instead of point features lets users resolve the conflict themselves by combining primitives their own way, rather than the product having to pick a winner. **Evidence pointer**: [[#Build primitives, not an everything app, when feedback conflicts]] **Scope & conditions**: Holds for tools with a genuine underlying compositional model (graphs, pipes, blocks); breaks down for products where the conflicting requests are about core information architecture or business logic that can't be decomposed into neutral primitives. **Links** (โ‰ฅ1 with annotation): - [[Blueprints-as-workflow-packaging]] โ€” because applies-in team-onboarding contexts <!-- atomicity: 1 idea โœ“ --> ### โœ๏ธ Fleeting Queue - [F1] Investigate whether Terminal Graph's canvas UI has a documented accessibility/keyboard-navigation story โ€” https://kaidan.dev #xref - [F2] Watch for Terminal Graph's v1.0/GA release and blueprint-marketplace maturity as a follow-up story #articleseed ### โ†’ Things 3 (max 2 actions) - [ ] Check kaidan.dev for Terminal Graph's current beta status and blueprint feature docs โ€” background research #things --- ## Full Transcript [00:00] Welcome to the Overcommitted Podcast,<br>[00:02] your weekly dose of real engineering<br>[00:04] conversations. [music] I'm your host<br>[00:05] this week, Erica, and I'm joined by<br>[00:07] >> Hey, I'm Britain.<br>[00:09] We met while working on a team at GitHub<br>[00:11] and quickly realized we are obsessed<br>[00:13] with getting better at what we do. So,<br>[00:15] we decided to start this podcast to<br>[00:17] share what we've learned. We'll be<br>[00:18] talking about everything from leveling<br>[00:20] up your technical skills to navigating<br>[00:22] your professional development, all with<br>[00:24] the goal of creating a community where<br>[00:26] engineers can learn and connect. Today<br>[00:28] on Overcommitted, we are joined by Kaden<br>[00:30] Williams, partner at Internet<br>[00:32] Development Studio Company and the<br>[00:34] creator of Terminal Graph. Welcome,<br>[00:36] Kayen.<br>[00:37] >> Hi. Thanks.<br>[00:39] >> To kick us off, we'll ask you what we<br>[00:41] ask everyone. What's one thing you're<br>[00:44] currently building or obsessed with<br>[00:46] learning right now?<br>[00:47] >> It has to be Terminal Graph. I've been<br>[00:49] working on it for a couple months now<br>[00:51] and I'm spending weekends and nights uh<br>[00:54] just getting it out there, working on<br>[00:55] improving it every day and doing a lot<br>[00:58] of like experimentation. This is a tool<br>[01:02] that I don't think I've ever really seen<br>[01:03] anyone build before. So the prior art<br>[01:06] for it is very slim. And so it's been an<br>[01:09] incredible engineering challenge and<br>[01:10] very fun to flex the creative process<br>[01:13] and like play and experiment and see<br>[01:17] what feels good and like even just<br>[01:20] trying to figure out the direction of<br>[01:22] where to take some of the features.<br>[01:24] >> Very cool. For listeners who may not be<br>[01:26] familiar familiar with it, could you<br>[01:28] describe terminal graph and what it<br>[01:31] does? Yeah. So my elevator pitch is it<br>[01:34] is the next generation of development<br>[01:36] environments is how I like to think<br>[01:38] about it. Essentially uh the think about<br>[01:41] it is starting from the problem, right?<br>[01:44] Every developer has uh you know their<br>[01:46] own workflow, their own ways of<br>[01:48] developing different tools, different<br>[01:50] apps, whatnot. But the underlying root<br>[01:53] cause of it all is that it's all<br>[01:56] scattered. You have, you know, 10 apps<br>[01:58] open and 30 browser tabs. you have<br>[02:01] multiple workspaces and various, you<br>[02:03] know, your desktop's just cluttered.<br>[02:06] I thought, wouldn't it be really cool if<br>[02:08] you could just take all of those and put<br>[02:10] it on a giant canvas kind of like Figma.<br>[02:13] Have each window there, you have<br>[02:15] terminals, you have browsers, you have<br>[02:17] notes, you have file editors backed by<br>[02:19] VS Code, you have tons of different ways<br>[02:22] to do development on a single canvas.<br>[02:24] And to take it a step further to be able<br>[02:27] to connect them and pipe data between<br>[02:30] each of the nodes, you can connect a<br>[02:32] terminal standard out to a utility node<br>[02:35] that GPS for, you know, like a a local<br>[02:39] dev link and then pipe that into a<br>[02:41] browser node to update the URL so that<br>[02:43] you know every time you run your dev<br>[02:45] server, it automatically opens this uh<br>[02:47] browser node. I was working on<br>[02:49] redesigning the uh terminal graph<br>[02:51] website and it's just been such a<br>[02:53] pleasure to do web development in this.<br>[02:55] I have claude open in one window. I have<br>[02:57] lazy git in another. I have neoim in<br>[03:00] another node. And then I have the dev<br>[03:02] server in another one. And then I have<br>[03:04] the full screen desktop browser node and<br>[03:06] then a mobile version of the uh browser<br>[03:08] node there. And it's just all in one<br>[03:10] little view. And honestly, I love it. I<br>[03:13] I built this tool for myself as a bit of<br>[03:15] an experiment to kind of see if this was<br>[03:18] even really possible. And I started to<br>[03:20] realize that tons of other people are<br>[03:22] very excited about it and also get a lot<br>[03:24] of joy and utility out of using a tool<br>[03:27] this kind of way too.<br>[03:28] >> Yeah, for sure. You know, we talk a lot<br>[03:30] about context these days and like as it<br>[03:33] relates to agents and giving your agents<br>[03:35] context, but ultimately it comes down to<br>[03:38] can you keep everything in your head at<br>[03:39] once and how are you managing all the<br>[03:42] various windows and terminals. So having<br>[03:45] that so visually clear and then also<br>[03:47] having the connection between all of the<br>[03:51] all of the things talking to each other<br>[03:53] does sound really valuable.<br>[03:54] >> Yeah. So, you said you you're basically<br>[03:58] building this for yourself, but you're<br>[04:00] also releasing it. Private beta is<br>[04:03] happening this month or is out now.<br>[04:06] >> I built the first version of it in 2<br>[04:08] weeks. After the two weeks, I collected<br>[04:10] a bunch of emails and I did a private<br>[04:12] beta just to iron out some of the bugs<br>[04:14] and then I realized I didn't want to<br>[04:17] manage emails and, you know, send out<br>[04:19] updates that way. So, I was like, uh,<br>[04:21] what the heck, you know, I'll make a<br>[04:22] public beta. Um, and so built out a<br>[04:25] website, added Sparkle and AppCast<br>[04:27] updates and all the stuff. Um, and after<br>[04:31] that it's been in public beta since<br>[04:33] then. Uh, I do have plans to release it<br>[04:36] as like um, a V1 eventually, but there's<br>[04:40] still a lot of uh, kinks to iron out<br>[04:42] first.<br>[04:43] >> Cool. So, what took you from idea to<br>[04:46] execution? What was the thing that took<br>[04:48] you from, hey, this would be really cool<br>[04:50] to build to actually I'm going to sit<br>[04:52] down and do this?<br>[04:53] >> Yeah. Oh, what a great question. I think<br>[04:56] it's a it's a combination of a few<br>[04:59] things. It was a little bit just driven<br>[05:01] by my internal desire to build. I just I<br>[05:03] love building things. I'm a bit of a<br>[05:05] Linux nerd. So, this is like backed by<br>[05:07] Unix pipe files. And I was like,<br>[05:09] wouldn't it be cool if you could like<br>[05:10] connect two terminals and like pipe data<br>[05:13] between them? And I was like, well, you<br>[05:15] know, like, oh, you can just do that<br>[05:16] with Unix pipes on command line. Like,<br>[05:18] that's not very intriguing, but what if,<br>[05:21] you know, you could connect multiple<br>[05:22] terminals to one output, right? Doing<br>[05:25] parallel processing and such, which is I<br>[05:28] I've seen people do it online with<br>[05:30] various CLI tools, but is not intuitive.<br>[05:32] It's not easy to reason about, and<br>[05:34] there's no visualization. So, making<br>[05:37] bigger connections is really tricky with<br>[05:40] just a line of text. So, that was a big<br>[05:42] inspiration. It's like, is this even<br>[05:44] possible? Like, is this something that<br>[05:47] can be done? And once I built out that<br>[05:50] initial iteration and kind of proved<br>[05:52] that it works, I got really excited and<br>[05:54] I was like, okay, cool. I have two<br>[05:55] terminals connected and are sending data<br>[05:57] to each other. Like, awesome. Uh, what<br>[06:00] else can I do with this? And so, I<br>[06:01] added, you know, a browser node. I add a<br>[06:03] WebKit um Safari WebKit uh web view<br>[06:06] which is super nice and allows me to<br>[06:09] like I kind of have to inject some<br>[06:11] custom JavaScript to like get some data<br>[06:13] in there and pipe it out and whatnot but<br>[06:17] added that added you know file notes uh<br>[06:20] added a bunch of utility nodes to like<br>[06:22] help manage things like switches, gates,<br>[06:24] delays, collections, you know a bunch of<br>[06:26] other stuff to help with the the data<br>[06:29] flow. And partly the other big<br>[06:31] inspiration was that uh indev we've been<br>[06:34] doing a lot of client work for a long<br>[06:35] time and as one of the partners I've<br>[06:38] been wanting to push us towards doing<br>[06:40] more product work so that we're not so<br>[06:42] heavily rellyant on maintaining like<br>[06:45] continuously getting contracts to to<br>[06:47] keep our studio alive. And so I'm hoping<br>[06:51] that I can turn this into a successful<br>[06:54] product that not only developers love<br>[06:57] and benefit hugely from, but can also<br>[07:00] help our studio survive cuz we're not<br>[07:02] venture-backed, we're just a small team<br>[07:04] of folks who are keeping the shop open<br>[07:08] with the hard work we do. So those are<br>[07:10] the big inspirations and kind of why I<br>[07:14] went down this direction. Was there<br>[07:15] anything in particular that drew you to<br>[07:17] like yes, this is the project to to get<br>[07:19] that product work done or is it just<br>[07:22] like you started building it and you're<br>[07:23] like wow this is very useful for me.<br>[07:25] >> Yeah, I think it's just uh it came from<br>[07:28] a desire to have a better workspace uh<br>[07:30] for myself. I I've been living in the<br>[07:33] terminal for the better part of a decade<br>[07:35] now. Um I use Neom, I use Lazy, I use<br>[07:38] all the CLI tools, you know, FuzzFinder,<br>[07:40] like name it, I've probably tried it.<br>[07:42] And so I love it. I I don't have<br>[07:44] anything against GUIs, but I kept seeing<br>[07:46] all of these three panel coding apps,<br>[07:49] right? Like conductor and codeex and<br>[07:51] it's like left side is like the<br>[07:53] workspace or like some list of things.<br>[07:56] You have the middle is like a chat app<br>[07:57] and then on the right it's like kit or<br>[07:59] something and that's fine. I think<br>[08:00] they're really approachable and they<br>[08:02] definitely have their target audience.<br>[08:04] But for me personally, having the<br>[08:06] flexibility of a terminal and being able<br>[08:08] to modify it so much, I really wanted to<br>[08:12] take it further. I've been used to I've<br>[08:14] used pretty much every terminal emulator<br>[08:15] on the market. You know, iTerm, Ghosty,<br>[08:18] Kitty, Elacrity, a ton of other ones on<br>[08:20] Linux and they all kind of do the same<br>[08:23] thing. Fundamentally, they're a window<br>[08:26] with a split tree. And I wanted to try<br>[08:28] the experiment of like, well, what if I<br>[08:30] could see every terminal I've ever had<br>[08:33] open like on one canvas? And it was just<br>[08:36] kind of that curiosity that led me down<br>[08:39] the start of the path. And once I got<br>[08:42] the initial version, it kind of felt<br>[08:45] like I'd struck gold. I was like, "Whoa,<br>[08:46] there's something here." You know, I<br>[08:48] feel like this is exciting. Like I'm<br>[08:50] excited about it, which is a really good<br>[08:53] signal for myself. And then I started<br>[08:55] showing people and I were like, "Wo,<br>[08:56] this is really cool." So I just felt<br>[08:58] like I had to pursue it. Yeah, I I can<br>[09:00] definitely identify with that experience<br>[09:02] where when it's in your head, it's kind<br>[09:04] of this like amorphous thing and then<br>[09:07] once you get it down on paper, it really<br>[09:11] builds steam on itself of getting<br>[09:13] excited about it and then really wanting<br>[09:15] to work on it, having trouble putting it<br>[09:17] down. Um, definitely can be a good<br>[09:21] feedback loop for yourself when you're<br>[09:23] working on something that you really<br>[09:25] enjoy.<br>[09:25] >> Yeah, definitely agree. Were there any<br>[09:28] points where like the project<br>[09:30] significantly changed? Like any of that<br>[09:33] feedback that you got? Did it really<br>[09:35] like change your vision at all? Or did<br>[09:37] you pretty much stay on on one path?<br>[09:40] >> Yeah. Um, that's such a good question.<br>[09:44] I've gotten so much feedback and I think<br>[09:46] every founder, everybody that builds a<br>[09:50] product experiences this to some degree.<br>[09:52] I've gotten every opinion, every<br>[09:54] differing op I've had so many<br>[09:55] conflicting opinions about like, oh, it<br>[09:57] should do this and like, oh, but it<br>[09:59] should do that. And it's like trying to<br>[10:00] find the balance of like what to<br>[10:03] actually build and what to like filter<br>[10:05] out. Like it's all good signal. Every<br>[10:07] every bit of feedback is all good to<br>[10:10] take into account, but for myself, I'm<br>[10:14] trying to make sure I'm not building<br>[10:15] like an everything app. I don't want<br>[10:17] this to like have every feature possible<br>[10:20] under the sun. I the way that I'm trying<br>[10:22] to focus on building this is I want to<br>[10:26] build the primitives such that other<br>[10:29] people can build out what they need with<br>[10:31] it. And so that's kind of where I've<br>[10:33] built out the like the whole start of it<br>[10:35] is like nodes and connections, right?<br>[10:38] I'm I'm a big graph theory nerd as well.<br>[10:40] So I took a lot of those ideas too and<br>[10:42] I've been building graph-based<br>[10:44] applications for a long time like<br>[10:46] mathematical graphs, not the visual<br>[10:47] graphs. And so that was a big<br>[10:50] inspiration. I love building graphs, so<br>[10:51] it felt very natural. One of one of the<br>[10:54] features that I think is still a little<br>[10:57] underutilized for users that I think is<br>[11:00] incredibly powerful is the concept of<br>[11:02] blueprints. So you can select any set of<br>[11:06] nodes and create a blueprint from it and<br>[11:08] it will capture all the details such as<br>[11:11] like the startup commands for a<br>[11:12] terminal, the URL for a browser, you<br>[11:15] know, notes, the file path for editor,<br>[11:17] all of that and will allow you to<br>[11:19] instantiate copies of that blueprint and<br>[11:22] you can take it across projects, you can<br>[11:24] take it across workspaces, you can<br>[11:26] export it as just a JSON file and send<br>[11:28] it to somebody and they can import it<br>[11:30] and create the exact same workflow. And<br>[11:32] so this is what I'm focusing on next is<br>[11:35] kind of building out this sharability<br>[11:37] aspect and making it so that my goal is<br>[11:40] to have teams be able to have common<br>[11:43] development workflows like release<br>[11:44] workflows or security audits or anything<br>[11:47] that's like kind of tedious to do that<br>[11:49] you'd have to have a documentation page<br>[11:51] written up for about anyway. You just<br>[11:53] have a blueprint. You download terminal<br>[11:55] graph. You import it and just click run<br>[11:57] and it just does the thing right. It's<br>[11:59] very visual. It's very easy. You can<br>[12:00] have notes there alongside every step of<br>[12:03] the process, but there wouldn't be the<br>[12:05] need to like have that kind of like<br>[12:07] friction of teaching somebody this<br>[12:09] process. It would be hopefully a bit<br>[12:11] more intuitive<br>[12:13] and then also keeping those blueprints<br>[12:15] up to date across multiple machines and<br>[12:17] across the whole team.<br>[12:18] >> Yeah, I definitely think that's really<br>[12:20] relatable trying to take feedback and<br>[12:23] apply it in any situation.<br>[12:27] could be customers, it could be product,<br>[12:29] it could be like any number of<br>[12:31] stakeholders and everyone has an opinion<br>[12:33] and yeah at the end of the day you need<br>[12:35] to deliver something and you can't make<br>[12:38] everyone happy. So um you have to have<br>[12:41] that judgment. Were you the sole<br>[12:42] developer on this?<br>[12:44] >> Yeah. So I guess maybe it'll help to<br>[12:46] explain the structure of our company a<br>[12:48] little bit. Um we're a hocracy. Uh, and<br>[12:51] for anybody that's not familiar with<br>[12:52] hocriscy, it essentially means that you<br>[12:55] are a team of equal power and<br>[12:59] responsibility. So there's uh six of us<br>[13:04] currently I believe uh and we all are<br>[13:06] partner levels. We have no employees, we<br>[13:08] have no bosses and we all have this<br>[13:10] freedom to do whatever we want that we<br>[13:13] think is best for the company. And so<br>[13:16] with that power, as I said before, I've<br>[13:18] been wanting to build products. So<br>[13:19] building this has been kind of that that<br>[13:23] uh desire to make some make a change for<br>[13:26] our company. And so I've been the solo<br>[13:29] developer on it for the uh current time<br>[13:33] of his life. It's a couple months now.<br>[13:35] And um I'm like it's getting enough<br>[13:38] traction that I'm pulling in other team<br>[13:40] members to help me with design and<br>[13:42] branding. I'm getting some help to like<br>[13:44] do some more engineering work. Um, but I<br>[13:46] wanted to prove that this was like<br>[13:48] actually<br>[13:50] taking first before kind of pulling<br>[13:52] their time<br>[13:53] >> forward. Like having at least one other<br>[13:55] person for a lot of decision-m that can<br>[13:58] impact other people.<br>[14:02] >> Yeah, totally totally agree. I've been<br>[14:04] needing some help. some of my ideas are<br>[14:06] maybe a little hairrained and not fully<br>[14:09] developed of just like wouldn't be cool<br>[14:11] if I could do this and then realizing<br>[14:13] actually maybe that's not that useful<br>[14:15] but<br>[14:17] >> yeah is there anything that you feel<br>[14:19] like you've brought into terminal graph<br>[14:21] that you like you haven't seen in other<br>[14:23] apps or like what is the thing that like<br>[14:25] sets it apart from what is out there?<br>[14:28] >> Oh my goodness, another great question.<br>[14:31] Let me let me think about this because I<br>[14:33] personally feel like so much of it is<br>[14:35] unique. I think really the most unique<br>[14:39] aspect of this is the data flow. Being<br>[14:41] able to pipe data across different<br>[14:44] categories of applications is what I<br>[14:47] hopefully see a incredibly powerful<br>[14:49] utility for the future. Being able to<br>[14:52] run a dev server, GP the logs, grepping<br>[14:55] for the URL and piping into a browser is<br>[14:58] like so powerful, right? or being able<br>[15:00] to have a template node where you can<br>[15:03] put little curly brackets around any<br>[15:05] name, any variable and it'll create a<br>[15:07] new port, right? Uh, and pipe data in.<br>[15:09] So you can say like, hey, analyze this<br>[15:12] git diff and write a commit message as a<br>[15:14] rudimentary example. And then you run<br>[15:17] git, you have a run node that runs git<br>[15:19] status or git diff, pipes that in, and<br>[15:21] then you pipe that to like clock code.<br>[15:23] is simple but I think shows the power of<br>[15:28] how this can kind of scale into larger<br>[15:30] more intricate automated systems and<br>[15:34] I've even added like a web hook node<br>[15:36] that allows you to you know connect to<br>[15:39] external systems and get events that you<br>[15:41] can pipe through into the entire system<br>[15:44] of whatever automation you want. So I I<br>[15:46] do truly think that the data flow is the<br>[15:49] most unique aspect that separates itself<br>[15:52] from others cuz I when I was building<br>[15:54] this initially I did look from prior art<br>[15:56] of has anybody built something similar<br>[15:58] and what I came across is there's a<br>[16:00] handful of other projects that do the<br>[16:02] terminals on an infinite canvas kind of<br>[16:05] approach but none of them do any sort of<br>[16:07] data data flow or data piping.<br>[16:09] >> Yeah. It it makes me think of why MCPS<br>[16:13] are so popular and why they've taken off<br>[16:15] so much. The parallel in my mind is a<br>[16:17] single session, a single agent, a single<br>[16:20] whatever is great, but when you can make<br>[16:23] those connections and like pull in data<br>[16:26] from other sources to help. It's how we<br>[16:29] operate too. We don't stick in the<br>[16:31] terminal and when we say I don't know<br>[16:33] how to do this, we stop. You know, you<br>[16:35] got to go find out what you what you<br>[16:37] don't know and pull that information in.<br>[16:40] Yeah. So, uh, you mentioned earlier<br>[16:43] that, you know, you've been developing<br>[16:45] for a long time, that you started when<br>[16:47] you were really young, and clearly<br>[16:50] you're you're passionate, you're fired<br>[16:51] up about the work that you do. Um, so<br>[16:56] tell us a little bit of where you<br>[16:57] started and how how you've changed<br>[16:59] throughout the years. maybe starting<br>[17:01] with like what kind of got you into<br>[17:03] programming in the first place and maybe<br>[17:05] some some lessons you've learned over<br>[17:07] the years that you you have top of mind<br>[17:11] as you go through your your work<br>[17:12] dayto-day now<br>[17:13] >> when I was 13 unsurprisingly I was a<br>[17:16] huge Minecraft nerd and that was like<br>[17:18] the only thing I wanted to play so I<br>[17:20] kind of reached my limit with it and I<br>[17:22] was like I've played everything you<br>[17:24] could want to do I've modded it to you<br>[17:27] know in every way you could possibly<br>[17:29] want and I was like I want to do more.<br>[17:31] And so I started learning Java to create<br>[17:35] my own mods and my own plugins. That<br>[17:37] went on for a couple years and I made a<br>[17:40] ton of mods. I, you know, had a lot of<br>[17:42] community. I worked for some uh<br>[17:45] Minecraft servers making custom plugins<br>[17:47] and I made maybe a couple hundred which<br>[17:49] as a teenager was great money to have.<br>[17:52] Um definitely very underpaid for the<br>[17:54] looking back. Um, and<br>[17:58] after those few years, I kind of got<br>[18:01] burnt out on Minecraft. I I done<br>[18:02] everything. I built every mod I could<br>[18:04] want, you know, I was just like, it's<br>[18:05] time to move on. Um, and<br>[18:09] I don't think I initially kept<br>[18:10] developing at that time. I kind of went<br>[18:12] off and did school and other things like<br>[18:14] that, but I don't know what it was. It<br>[18:16] just kind of like kept pulling me back<br>[18:18] in. I kept thinking about it. I was<br>[18:19] like, "This is, you know, that was<br>[18:20] actually really fun. Like, I should try<br>[18:22] to make more stuff." and not really<br>[18:25] having an interest in like web<br>[18:26] development or app development or any<br>[18:28] kind of like business development stuff<br>[18:30] at that time, I naturally gravitated<br>[18:33] towards making video games. So, I booted<br>[18:35] up Java. I started making 2D games and<br>[18:39] building out tons of very simple ones,<br>[18:42] nothing that's really that impressive.<br>[18:43] And eventually during high school, I met<br>[18:46] one of my best friends who was also a<br>[18:48] developer. And I grew up in a really<br>[18:50] small town in Colorado, uh, Dango,<br>[18:52] Colorado. I don't know if anyone's ever<br>[18:53] heard of it. Very tiny little cute<br>[18:55] mountain. So, no coding. There was like<br>[18:58] nobody knew anything about it and he was<br>[19:00] like the only other kid that like had<br>[19:02] experience with it and he was a much<br>[19:03] better coder at that time than I was.<br>[19:05] So, we kind of became best friends. He<br>[19:07] taught me a lot and we still started<br>[19:09] making a lot of games together and<br>[19:11] eventually we started doing a lot of<br>[19:12] game jams as well. So, that was the<br>[19:15] majority of my high school and a little<br>[19:16] bit after it was just like making games<br>[19:18] all the time. I did a lot of I create a<br>[19:20] lot of art too. So, I was making pixel<br>[19:22] art. I was making like animations, you<br>[19:24] know, other things of that sort. And I<br>[19:27] graduate high school and uh I come from<br>[19:29] a pretty poor family. I'm the oldest of<br>[19:32] five boys, so there wasn't really any<br>[19:36] money to go to college. So, I was<br>[19:38] looking at my options like I can take<br>[19:41] out money, student loans, and try to pay<br>[19:44] them back. And like I maybe that would<br>[19:46] have been a decent route, but I was also<br>[19:48] like, you know, I have this experience,<br>[19:50] maybe I could get a job in tech on my<br>[19:52] own, even without a college degree. And<br>[19:54] so I uh decided to take a gap year and<br>[19:57] give myself a year to just try and get a<br>[20:00] job in tech, get anything for a year<br>[20:03] while I was working at like a a chicken<br>[20:04] restaurant, a wing restaurant. And I<br>[20:08] spent that year working and building my<br>[20:11] portfolio. I was still working on like<br>[20:13] some games that I was liking and<br>[20:16] eventually about uh so the the gap year<br>[20:18] I the promise I made to myself was if I<br>[20:21] don't get a job in a year I'll bite the<br>[20:23] bullet take the loans go to college. I<br>[20:25] got a job eight months into that gap<br>[20:27] year and it was just an internship at a<br>[20:30] local tech company that surprisingly I<br>[20:33] didn't know they existed but I was<br>[20:35] intern for 3 months during the summer<br>[20:37] and towards the end of it I talked to<br>[20:38] the CTO and I was like hey I would love<br>[20:41] to like keep working here once this<br>[20:43] internship ends and he kind of suggested<br>[20:45] and pushed me be like you should go to<br>[20:47] college and I was like okay so took his<br>[20:50] advice and like I didn't go to college I<br>[20:52] I went for like he was like I'll give<br>[20:55] the job, but you should also consider<br>[20:56] going to college. So, I got the job as a<br>[21:00] uh QA engineer, which I don't know if<br>[21:02] that role even exists anymore, but I was<br>[21:04] writing unit tests and a bunch of other<br>[21:07] stuff. I eventually kind of branched out<br>[21:08] and was doing a lot of like internal<br>[21:10] tools because the the company at the<br>[21:12] time was Git Prime, uh, which was<br>[21:14] acquired by Pluralsight like a couple<br>[21:16] years later, so they're not really<br>[21:18] around anymore, but they were a Git<br>[21:20] based company, so analyzing like Git<br>[21:22] metrics and stuff like that. So, I was<br>[21:24] building out a bunch of internal tools<br>[21:25] to like help mock Git APIs for like<br>[21:28] GitHub and Bitbucket because we were<br>[21:30] hitting rate limits with all their<br>[21:32] testing and other stuff. And um like I<br>[21:34] built a little tool to basically<br>[21:36] recreate git repos from scratch like<br>[21:39] time travel back like creating commits<br>[21:41] at any point in time, stuff like that. A<br>[21:42] ton of fun. I learned so much. Like it<br>[21:45] was incredible that I had that<br>[21:47] opportunity because in just the one year<br>[21:49] of working at that job, I learned more<br>[21:52] than I had my entire time on my own. It<br>[21:55] was so valuable for me. And so<br>[22:00] that was an incredible job. I learned a<br>[22:02] ton. And then the company got acquired<br>[22:04] by Pluralsight. I worked there for a few<br>[22:06] months, but they were too big. You know,<br>[22:09] they were like too impersonal. I was<br>[22:11] still stuck as like a low-level QA<br>[22:14] engineer. I was supposed to get a<br>[22:15] promotion right before the acquisition<br>[22:17] and then they acquired us and then that<br>[22:20] never happened and they're like, "Oh,<br>[22:21] you have to be here a year before you<br>[22:22] can move." And I was like, "I don't want<br>[22:23] to do that." So, uh, I was looking for<br>[22:26] jobs and I eventually found a role at<br>[22:29] Overjet in Boston, which was a startup<br>[22:32] that was working out of the Harvard<br>[22:34] Innovation Lab, creating, this was back<br>[22:36] in like 2020, so even before like the<br>[22:39] big LLM started hitting the consumer<br>[22:42] market. We were creating computer vision<br>[22:44] models to analyze dental X-rays uh, to<br>[22:47] look for early signs like gum disease<br>[22:49] and tooth decay. And I don't have a PhD<br>[22:52] in any of that. [clears throat] So I was<br>[22:53] not I was not doing any of the like<br>[22:55] actual uh generative model stuff, but I<br>[22:58] love data and I love Linux and I love<br>[23:01] processing. So I actually this is kind<br>[23:03] of where I started to really fall in<br>[23:05] love with this concept of like piping um<br>[23:08] and data transformation is uh I had<br>[23:11] built out a very custom data pipeline to<br>[23:15] process these images from all the<br>[23:17] various sources. I can't talk about the<br>[23:19] sources, but it would be, you know, we'd<br>[23:21] get like an FTCP server. We would get<br>[23:23] like a random link to this like third<br>[23:25] party vendor, you know, that would host<br>[23:27] all these images and we would have to<br>[23:29] get it into our system. Uh, and it would<br>[23:31] land into like a Google bucket and I had<br>[23:34] some cloud functions that for each<br>[23:36] notification on that bucket would load<br>[23:38] it up and process it like multiple steps<br>[23:41] along the way. It would start with um<br>[23:43] okay, let's go through and convert every<br>[23:46] image to JPEG, right? That's what we<br>[23:48] were standardizing on. And it was really<br>[23:50] fun because there was tons and tons of<br>[23:53] different formats that I did not know<br>[23:55] existed, including uh it's been a<br>[23:58] minute, so I may get this wrong, but it<br>[24:00] was<br>[24:01] TIFF files, I think, uh which are it was<br>[24:05] a well, it was a specific type of TIFF<br>[24:07] file. was like an unsigned six integer<br>[24:10] encoded TIFF file which was like I was<br>[24:12] trying to find where these came from and<br>[24:14] they're incredibly old X-ray machines<br>[24:16] like some of the first ever digital<br>[24:18] X-ray machines and I was using pillow<br>[24:21] the uh Python library to convert all of<br>[24:23] them and nothing uh like like would not<br>[24:26] read this it was like what's going on so<br>[24:28] I went this was the preAI days so I was<br>[24:30] like what is this format like no I<br>[24:32] couldn't I could barely find any<br>[24:34] information I think after like 3 days of<br>[24:35] frantic searching I eventually land on<br>[24:38] this super obscure forum with somebody<br>[24:40] being like, "Oh yeah, here's like some<br>[24:41] information about it and blah blah blah<br>[24:43] and like here's a numpy function that<br>[24:46] will allow you to transform it to JPEG."<br>[24:48] And so I copied that and was able to<br>[24:52] basically just like cut off half thetes<br>[24:54] and then like strip the header metadata<br>[24:56] and stuff like that. And then you know<br>[24:59] that was like the first part of the<br>[25:00] pipeline I built out all this and then<br>[25:02] it would go down to like uh removing<br>[25:04] patient health information. We would<br>[25:06] like send it to Google to like analyze<br>[25:09] text and we just black it out. And<br>[25:11] anyways, so that's kind of where I fell<br>[25:13] in love with data pipeline. It was<br>[25:14] incredible job. Eventually, I got burnt<br>[25:18] out because the pandemic hit and I was<br>[25:20] working like 80our weeks and I was<br>[25:22] underpaid uh because I was so young and<br>[25:24] I'd been asking for like 6 months like,<br>[25:26] "Hey, can you please hire more people? I<br>[25:28] need help with this work." Um, and<br>[25:31] unfortunately the CEO and I had<br>[25:32] disagreements. So I started looking for<br>[25:34] a new job and I eventually ended up<br>[25:36] landing at another company. Uh was there<br>[25:39] for a few years. I was at um uh Domino<br>[25:41] Data Labs which was uh like<br>[25:45] uh I won't go into it. It's a<br>[25:46] complicated job. But um I<br>[25:51] learned a lot there. I uh realized that<br>[25:55] actually I didn't need to be in Boston<br>[25:56] anymore because that job was remote. So<br>[25:58] that's how I ended up moving out to<br>[25:59] Seattle. I actually had never visited<br>[26:01] Seattle before moving. I kind of was<br>[26:03] just like, I have a friend out there.<br>[26:04] One of my best friends that I met in<br>[26:05] high school was living out here. And so<br>[26:07] I was like, yeah, why not? And I just<br>[26:09] sold everything I had because I looked<br>[26:11] into shipping it. And it was going to be<br>[26:14] more expensive to ship from Boston to<br>[26:16] Seattle than it would to just actually<br>[26:18] buy it all again cuz it was I was a<br>[26:20] young kid with not very expensive<br>[26:22] things. So I sold or gave away almost<br>[26:25] everything I had. Uh, and I hopped on a<br>[26:27] plane with a duffel bag and like a<br>[26:29] backpack, landed in Seattle and found an<br>[26:32] crashed my friend's couch for two weeks<br>[26:34] and found an apartment and kind of<br>[26:35] rebuilt it up again. Um, and I've been<br>[26:38] in Seattle for about six years now. Um,<br>[26:42] roughly, I think, well, maybe like five,<br>[26:44] something like that. Um, and I was with<br>[26:47] that company for a while until, uh, I<br>[26:50] think it was like 2024 layoffs were<br>[26:52] hitting everybody. Our company got hit.<br>[26:54] I was laid off. I had some severance and<br>[26:57] I decided to take a hiatus for about 6<br>[27:00] months. I had been working hard and kind<br>[27:02] of just really needed a break and wanted<br>[27:04] to explore some of my own projects and<br>[27:06] do some of my own things. So did that<br>[27:09] for a while and then eventually got<br>[27:12] another job working for actually another<br>[27:15] medical tech companies surprisingly uh<br>[27:17] which was doing MRI images or computer<br>[27:20] vision on MRI images as well. So that<br>[27:22] was a lot of fun. And I worked there for<br>[27:25] almost two years. And I<br>[27:29] kind of realized as I went into that<br>[27:31] job, I was like, I don't really have a<br>[27:32] great professional network. I should go<br>[27:34] socialize and mingle and meet people.<br>[27:36] And so I started just going to a bunch<br>[27:38] of tech events here in Seattle. And<br>[27:40] eventually that ended up leading me to<br>[27:43] uh the internet development studio. I<br>[27:44] went to the distributed web meetup that<br>[27:46] we host every couple months. And I go<br>[27:49] in, you know, I don't know anybody, but<br>[27:51] I sit down, I watch some of the talks,<br>[27:53] and I get up and I'm like, "Okay, cool.<br>[27:54] Time to mingle." And I walk around and<br>[27:56] the first person that I end up talking<br>[27:58] to and meeting was uh Jimmy, Jimmy Lee,<br>[28:00] the guy who started the studio. And so<br>[28:03] we hit it off immediately. We're just<br>[28:05] both very passionate about the web,<br>[28:07] passionate about building. And so he<br>[28:09] invited me to come hang out at the<br>[28:11] studio. And so I started coming back.<br>[28:13] Eventually, I start renting a desk<br>[28:14] there. And then about six to eight<br>[28:17] months into renting a desk there, the<br>[28:19] studio was looking to hire more<br>[28:21] partners. And so they asked me if I<br>[28:23] would be interested. And so they uh, you<br>[28:25] know, I said yes. That's it was like so<br>[28:28] cool, very exciting. And so they put me<br>[28:31] through a one-mon work trial. Uh, and<br>[28:34] they killed it. They loved it. Uh, I I<br>[28:36] did great work. I worked on a lot of our<br>[28:39] open source projects. I helped further<br>[28:42] develop out one of our fonts, Server<br>[28:44] Mono. um because it was missing a<br>[28:45] handful of glyphs. I had never made or<br>[28:47] worked with fonts before, but I I'm an<br>[28:49] autodidact. I just love learning and<br>[28:51] love building. So, I got some font<br>[28:53] software and I like started designing<br>[28:55] and trying to match it to like the the<br>[28:58] feel of the text and like was putting it<br>[28:59] out there, getting community feedback.<br>[29:01] Um and so that was a lot of what I did<br>[29:03] during my work trial for the first<br>[29:04] month. But they loved me. so uh hired me<br>[29:07] on full-time and I've been with the<br>[29:09] studio since and it's about um been<br>[29:12] about over a year now that I've been<br>[29:14] with the studio as a partner.<br>[29:15] >> Thank you so much for sharing that whole<br>[29:17] story. I can you know there's there's so<br>[29:20] many things that like I got from from<br>[29:24] your story and and the way that you tell<br>[29:27] it. I can I can tell your agency in it<br>[29:30] as well as all these situations that<br>[29:33] kind of came up and and what you got<br>[29:35] from each situation too. Uh it's a very<br>[29:38] unique path. I mean yeah and very cool<br>[29:42] to hear how you know that that foot in<br>[29:45] the door moment uh with your first job<br>[29:49] like really got you into the<br>[29:50] professional side and was really a<br>[29:52] launching pad. But really each step<br>[29:54] along the way, you kind of took<br>[29:56] something from each each job, each<br>[29:58] situation that has really gotten you to<br>[30:01] this point now. Whether that's the<br>[30:04] technology you were working with or sort<br>[30:06] of the people situations,<br>[30:08] you know, and didn't let any of these<br>[30:11] sort of potential setbacks get you down<br>[30:13] with, you know, several situations you<br>[30:15] mentioned vying for a promotion and<br>[30:17] instead of waiting around, you moved on<br>[30:19] to the next thing. you looked at what<br>[30:22] else was out there, what you could what<br>[30:24] you could do. And yeah, it's very cool<br>[30:26] hearing hearing you sort of move through<br>[30:28] all those moments and stay focused on on<br>[30:32] what you're still so passionate about.<br>[30:34] Even you even mentioned a couple periods<br>[30:36] of burnout and then you kind of<br>[30:38] >> ramped back up again and got back into<br>[30:40] it.<br>[30:41] >> Yep. Yeah. Well, thank you. Yeah, it's<br>[30:43] it's been a a long journey. Um, and I<br>[30:47] think the the one piece of advice I like<br>[30:48] to give when I tell this story is a lot<br>[30:51] of people will say like, "Oh, you're so<br>[30:53] smart. Like, oh, you like must be so<br>[30:55] intelligent that you're able to do this<br>[30:56] and like that you taught yourself<br>[30:58] coding." And I'm not going to say<br>[31:01] whether or not I'm intelligent. I don't<br>[31:03] think that that's super relevant. But<br>[31:05] what I think I would attribute to that<br>[31:07] more is the persistence. I have this<br>[31:11] passion and this dream and regardless of<br>[31:14] how many times I failed like getting<br>[31:16] that first job, getting that first<br>[31:18] internship, I must have applied to like<br>[31:20] 500 different companies. And this was<br>[31:22] even back when like the job market was<br>[31:24] still pretty good. And it really is just<br>[31:27] like that persistence of like trying and<br>[31:29] trying and trying and trying and failing<br>[31:31] and failing over again until succeeding.<br>[31:34] And it it broke me a little bit, but it<br>[31:38] did work eventually. and it paid off and<br>[31:40] so I'm very grateful for never having<br>[31:43] given up.<br>[31:45] >> For sure. There's a lot of like cultural<br>[31:47] perception around software development<br>[31:50] jobs in general. One of them is being<br>[31:53] that people think software development<br>[31:55] jobs are really stable and that's not<br>[31:57] necessarily true for a lot of people or<br>[31:59] that they're really well paid and that's<br>[32:01] also not necessarily true in every<br>[32:03] situation. So yeah, it's it's it's<br>[32:06] sometimes frustrating hearing that and<br>[32:09] being like, well, that's not my<br>[32:10] experience. But, you know, you can't<br>[32:12] change can't change the industry<br>[32:14] necessarily or people's perception on on<br>[32:17] the whole. You can only kind of operate<br>[32:20] with with what you have and and do the<br>[32:23] best with with the opportunities<br>[32:24] available. And um yeah, definitely<br>[32:27] sounds like you've been really smart<br>[32:28] about that throughout your career, which<br>[32:29] is refreshing.<br>[32:30] >> Yeah. Thank you.<br>[32:32] >> Yeah.<br>[32:33] For sure. Well, we are getting up on the<br>[32:37] end of time, which is crazy. This has<br>[32:39] gone by so fast. And uh we always wrap<br>[32:42] up with a bit of a fun segment where uh<br>[32:47] today we're going to take the question<br>[32:49] of what if we could apply terminal graph<br>[32:52] this idea of like graphical interfaces<br>[32:56] organized and and node data flow um and<br>[32:59] apply that to some kind of real life<br>[33:02] situation off of a screen. I guess I<br>[33:05] mean developing is also real life but uh<br>[33:07] if you could kind of take this idea and<br>[33:09] apply it to some yeah some nonverirtual<br>[33:12] environment uh what that would look<br>[33:14] like.<br>[33:15] >> Yeah that's my goodness I don't think<br>[33:17] I've ever thought about this before.<br>[33:18] Give me give me a moment here.<br>[33:20] >> Yeah I have thought about this because<br>[33:22] I'm the one who wrote the question. So,<br>[33:23] I have a daughter and you know there are<br>[33:26] times when it's like I would love to<br>[33:28] kind of know where everyone is at all<br>[33:31] the time, you know, and it's not all the<br>[33:33] time. We're pretty good about<br>[33:34] communicating between me and my my<br>[33:37] husband, but like, you know, it'd be<br>[33:39] nice to kind of like have have these<br>[33:42] these communications where I can know<br>[33:44] where she is and he can know where she<br>[33:46] is and I can know where he is and we're<br>[33:48] all kind of like communicating without<br>[33:51] without necessarily being in the in the<br>[33:53] same place. So, that's that's that's<br>[33:56] sort of my my take on it.<br>[33:58] >> Yeah. So, I think for me personally, I I<br>[34:02] have ADHD and have struggled with it for<br>[34:05] a long time. And I kind of view it as<br>[34:07] both a bit of a superpower and a<br>[34:09] detriment. Like, it kind of helps me<br>[34:13] have a lot of creativity and explore a<br>[34:15] lot of options and like kind of go down<br>[34:18] weird tangents, but that usually leads<br>[34:20] me to something interesting. But, it's<br>[34:22] also kind of hard to like sit down and<br>[34:24] do a thing if I'm not like deeply<br>[34:26] invested in it. And so I think if I<br>[34:30] could have the power of turn graph<br>[34:31] outside in the real world, it would be<br>[34:34] to help augment that like getting, you<br>[34:37] know, just connecting everything in my<br>[34:39] life that needs to be done of like, oh,<br>[34:41] my laundry is overflowing. like send me<br>[34:44] a reminder or like force me to like<br>[34:46] start the washer dryer like automate<br>[34:49] that in some way you know automate like<br>[34:52] how I can make breakfast or automating<br>[34:54] like just various aspects of like the<br>[34:56] routine that's um hard for me to keep up<br>[34:58] with I think would be uh probably the<br>[35:01] most useful for myself<br>[35:03] >> but when the twins were really young<br>[35:05] when I had a very young baby like<br>[35:07] everything was so much like is the when<br>[35:12] was the last time they ate are Are they<br>[35:13] hungry? Do they get enough sleep? Like<br>[35:15] there's just so much involved that you<br>[35:17] feel like you're just like have those<br>[35:18] little like Sim bars or something like<br>[35:20] that when you're playing the Sims and<br>[35:21] you're trying to keep them all green and<br>[35:23] happy all the time. Especially when<br>[35:25] there was two babies at once. Like that<br>[35:27] would be a fantastic tool to have to<br>[35:30] have, especially having the data flow.<br>[35:32] Like there's a lot of tools out there.<br>[35:34] So that would be like an early<br>[35:36] parenthood terminal graph I think would<br>[35:39] be really nice. This has been so much<br>[35:41] fun. Kayen, thank you so much for<br>[35:42] joining us. Where can folks find you on<br>[35:44] the internet?<br>[35:46] >> Yeah, I'm on most of the socials,<br>[35:49] Threads, Blue Sky, Twitter, or X. And if<br>[35:52] you go to my website, kaden.dev, that's<br>[35:54] c ai dan.dev,<br>[35:57] I have a link to all my socials there,<br>[35:59] too, to make it easy. Awesome. Cool. And<br>[36:02] we'll link that in the show notes as<br>[36:04] well.<br>[36:06] Well, listeners, thank [music] you so<br>[36:07] much for tuning in to Overcommitted. If<br>[36:09] you like what you hear, please do<br>[36:11] follow, subscribe, or do whatever it is<br>[36:13] you like to do on the podcast app of<br>[36:14] your choice. Check us out on Blue Sky<br>[36:17] and share with your friends. Until next<br>[36:18] week. Goodbye. <!-- deep-read:sections end --> ๐Ÿ“„ **Full text:** [[Full Document Contents/Articles/Building Terminal Graph, a Spatial Development Environment, With Caidan Williams.md|Building Terminal Graph, a Spatial Development Environment, With Caidan Williams by YouTube]] ## Highlights - every bit of a feedback is all good to take into account, but for myself, I'm trying to make sure I'm not building like an everything app. I don't want this to like have every feature possible under the sun. ([View Highlight](https://read.readwise.io/read/01ky2nx8swnd8fd780xvr2yn6b)) - Note: Product-discipline principle: resisting the "everything app" temptation, scoping deliberately. - Tags: atom/literature/h2 - out this shareability aspect and making it so that my goal is to have teams be able to have common development workflows. It's like release workflows or security audits or anything that's like kind ([View Highlight](https://read.readwise.io/read/01ky2nxeex9n6es5xadbrs9atx)) - Note: Vision: shareable common dev workflows (release, security audits) as reusable graph templates for teams. - Tags: atom/literature/h3 - And I've even added like a webhook node that allows you to, you know, connect to external systems and get events that you can pipe through into the entire system of whatever automation you want. ([View Highlight](https://read.readwise.io/read/01ky2nx2p65zrghk1bng2rqpws)) - Note: Terminal Graph's extensibility: webhook nodes pipe external events into any automation flow. - Tags: atom/literature/h1