<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Kyle Johnston&apos;s creative journal</title><description>A collection of things I&apos;ve made, written, and that spark my curiosity</description><link>https://kyleio.com/</link><item><title>Now</title><link>https://kyleio.com/p/now/</link><guid isPermaLink="true">https://kyleio.com/p/now/</guid><description>What I&apos;m doing now.</description><pubDate>Fri, 20 Jun 2025 17:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;may-2026&quot;&gt;May 2026&lt;/h2&gt;
&lt;h3 id=&quot;work&quot;&gt;Work&lt;/h3&gt;
&lt;p&gt;Still spending my days as a staff product designer at Etsy. Also serving as an interim product manager for my squad, focusing on improving the web sign in experience.&lt;/p&gt;
&lt;h3 id=&quot;life&quot;&gt;Life&lt;/h3&gt;
&lt;p&gt;Picked up a running habit this year. Currently focused on improving my 5k pace and seeing where things go from there.&lt;/p&gt;
&lt;h3 id=&quot;ai&quot;&gt;AI&lt;/h3&gt;
&lt;p&gt;It’s become a normal part of my coding and prototyping workflow. I’m coaching and learning from colleagues at work. I still don’t use it for generating images, designs, or original writing.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;august-2025&quot;&gt;August 2025&lt;/h2&gt;
&lt;h3 id=&quot;work-1&quot;&gt;Work&lt;/h3&gt;
&lt;p&gt;Doing a rotation as a product manager at work (in addition to product design work).&lt;/p&gt;
&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;
&lt;p&gt;Using the output of my &lt;a href=&quot;https://kyleio.com/p/project-spiral-visualizer&quot;&gt;spiral visualizer project&lt;/a&gt; to create a second physical piece of art (and working on a writeup for the first piece).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;june-2025&quot;&gt;June 2025&lt;/h2&gt;
&lt;h3 id=&quot;work-2&quot;&gt;Work&lt;/h3&gt;
&lt;p&gt;I spend my days as a staff product designer at Etsy. Currently, my squad is focused on improving the web homepage. I also collaborate with local nonprofits and friends to bring their ideas to life on the web.&lt;/p&gt;
&lt;h3 id=&quot;projects-1&quot;&gt;Projects&lt;/h3&gt;
&lt;p&gt;Using the output of my &lt;a href=&quot;https://kyleio.com/p/project-spiral-visualizer&quot;&gt;spiral visualizer project&lt;/a&gt; to create a physical piece of art&lt;/p&gt;
&lt;h3 id=&quot;ai-1&quot;&gt;AI&lt;/h3&gt;
&lt;p&gt;It’s solidly in the &lt;a href=&quot;https://www.youtube.com/watch?v=JC9CrNTT6Uk&quot;&gt;‘we’ll see’&lt;/a&gt; category for me. It’s not the everything engine. It’s not useless.&lt;/p&gt;
&lt;p&gt;I’ve used it to successfully code &lt;a href=&quot;https://kyleio.com/t/project/&quot;&gt;projects&lt;/a&gt; that would never have seen the light of day without the ability to move from idea to working code in a short exchange. Other use cases: proofreader. Vim debugger. &lt;a href=&quot;https://en.wikipedia.org/wiki/Rubber_duck_debugging&quot;&gt;Rubber duck debugger&lt;/a&gt;. I don’t use it for generating images, designs, or original writing.&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/now/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Learning Log, April 2026</title><link>https://kyleio.com/p/learning-log-2604/</link><guid isPermaLink="true">https://kyleio.com/p/learning-log-2604/</guid><description>Where my attention flowed in April 2026</description><pubDate>Fri, 08 May 2026 23:27:59 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;This post includes an interactive image gallery — &lt;a href=&quot;https://kyleio.com/p/learning-log-2604/&quot;&gt;view it on the web&lt;/a&gt; for the full experience.&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;Life~Work&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Life:&lt;/strong&gt; I finished my first full 5k run on April 18th! It changed how I think about running. Now I feel like I&apos;m the type of person who can run a 5k on a Saturday. Shorter runs feel even easier. I look forward to the days I run – I think that&apos;s a form of a runner&apos;s high? Another motivation – noticing things. Like wildlife. Mostly squirrels and common birds – robins, cardinals, chickadees. But sometimes, deer, ducks, turkeys, great blue herons (a whole nesting site!). One time, an owl. Another time, a tiny dog in a stroller, pushed by a dude and his partner/wife/girlfriend. Seeing everything turn green. Seeing what changes the day after a thunderstorm. Anticipating what I &lt;em&gt;might&lt;/em&gt; notice is a motivator when I&apos;m on the fence. And trying to finish &lt;em&gt;more&lt;/em&gt; 5ks – I have a second under my belt and I&apos;m looking forward to the third.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Work:&lt;/strong&gt; tl;dr busy, busy, busy. Switched to a new track of product work &lt;em&gt;and&lt;/em&gt; I&apos;m acting as an interim product manager for my squad, which prompted me to rethink my productivity system… more on that below.&lt;/p&gt;
&lt;h2&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/&quot;&gt;Bookshelf updates&lt;/a&gt; - I stumbled across an old reading list with 16 books that weren&apos;t on my bookshelf. Claude helped to quickly backfill the missing titles.&lt;/li&gt;
&lt;li&gt;At work, I&apos;ve added &apos;interim PM&apos; to my duties. My productivity system wasn&apos;t scaling to support product design, product management, &lt;em&gt;and&lt;/em&gt; a new track of work. So I used Claude to help me plan and automate a better system. It was based on my existing tools and workflows, so I was able to start using it right away. It&apos;s already making me confident nothing is slipping through the cracks.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Digital gardening&lt;/h2&gt;
&lt;h3&gt;Bookshelf&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/what-we-can-know/&quot;&gt;&lt;em&gt;What We Can Know&lt;/em&gt;, by Ian McEwan&lt;/a&gt;. – borrowing a great summary from &lt;a href=&quot;https://news.inanimate.tech/p/lab-notes-do-not-trust-the-keyboard-screen&quot;&gt;this post&lt;/a&gt;: &lt;em&gt;“The book is a wonderful meditation on the relationship between past, present, and future. It is dystopian &lt;a href=&quot;https://en.wikipedia.org/wiki/Climate_fiction?utm_campaign=lab-notes-do-not-trust-the-keyboard-screen&amp;amp;utm_medium=referral&amp;amp;utm_source=news.inanimate.tech&quot;&gt;cli-fi&lt;/a&gt;, all undergirded by the plot of a psychological thriller.”&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/wedding-people&quot;&gt;&lt;em&gt;The Wedding People&lt;/em&gt;, by Alison Espach&lt;/a&gt;. a rec from &lt;a href=&quot;https://chrisglass.com/2026/03/19/the-wedding-people/&quot;&gt;Chris Glass&lt;/a&gt; prompted me to read this next. I enjoyed the dark humor and I wouldn&apos;t be surprised to see it adapted as a limited series.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Other reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://kierancutting.substack.com/p/how-i-learned-to-just-fucking-write&quot;&gt;&lt;em&gt;How I learned to just f###ing write&lt;/em&gt; — by Kieran Cutting&lt;/a&gt; – how paying attention inspires writing. Resonated with my running reflection above.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://satisfyrunning.com/blogs/possessed/getting-started-with-super-coach-greg-mcmillan&quot;&gt;&lt;em&gt;Getting Started [running] Super Coach Greg McMillan&lt;/em&gt; – Possessed Magazine&lt;/a&gt; – re-read this now that I&apos;ve found a running routine. There&apos;s a question—‘are bad knees real?’—that hits different now. I found simple knee strengthening warmups that made running longer distances possible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;MEMEX&lt;/h3&gt;
&lt;p&gt;A few favorite visuals that I&apos;ve added to MEMEX, my &lt;a href=&quot;https://memex.flow14.com/&quot;&gt;swipe file&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fred Again.. posted photos from his recent USB 2.0 tour – love this shot featuring a beautiful fabric installation by &lt;a href=&quot;https://www.instagram.com/boris.acket/&quot;&gt;Boris Acket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Designer and artist &lt;a href=&quot;https://www.instagram.com/matthewcurry/&quot;&gt;Matthew Curry&lt;/a&gt; has been posting work from his archives – this work from 2016 still hits&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nogood.studio/&quot;&gt;nogood.studio&lt;/a&gt; – love the illustration style and whole aesthetic of the site&lt;/li&gt;
&lt;li&gt;😍 NES-inspired tour posters for Open Mike Eagle&apos;s European tour. &lt;a href=&quot;https://mikeeaglestinks.tumblr.com/post/89666128320/dates-locations-rap-shows&quot;&gt;On tumblr&lt;/a&gt;, no less&lt;/li&gt;
&lt;li&gt;Micro site for &lt;a href=&quot;https://tryalcove.com/&quot;&gt;TryAlcove&lt;/a&gt;, an app for macOS that makes the notch into a dynamic island. So many nice touches.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/fred-again-and-boris-acket.CRTZTWIX.webp&quot; alt=&quot;Fred Again And Boris Acket&quot; width=&quot;1111&quot; height=&quot;794&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/matthew-curry-gods-and-demons-series.D3aJIkB_.webp&quot; alt=&quot;Matthew Curry Gods And Demons Series&quot; width=&quot;1111&quot; height=&quot;1271&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/nogood.studio.Dg27zlUI.webp&quot; alt=&quot;Nogood.Studio&quot; width=&quot;1111&quot; height=&quot;1111&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/open-mike-eagle-tour-posters.BDrH72Ao.webp&quot; alt=&quot;Open Mike Eagle Tour Posters&quot; width=&quot;1111&quot; height=&quot;776&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/tryAlcove.com.CjV4-rYy.webp&quot; alt=&quot;TryAlcove.Com&quot; width=&quot;1111&quot; height=&quot;1857&quot;&gt;&lt;/div&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/learning-log-2604/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Learning Log, March 2026</title><link>https://kyleio.com/p/learning-log-2603/</link><guid isPermaLink="true">https://kyleio.com/p/learning-log-2603/</guid><description>Where my attention flowed in March 2026</description><pubDate>Sat, 18 Apr 2026 16:05:30 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;This post includes an interactive image gallery — &lt;a href=&quot;https://kyleio.com/p/learning-log-2603/&quot;&gt;view it on the web&lt;/a&gt; for the full experience.&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;Life~Work&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Life:&lt;/strong&gt; Celebrated an anniversary. Upgraded a family member from an iPhone 6S(!) to an iPhone 17e, and the running bug is definitely biting. I hit my first-ever 5k in February and finished two more this month.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Work:&lt;/strong&gt; I had a trip to New York that was &apos;perfectly&apos; aligned with the TSA funding lapse that drove long security lines and flight delays. My flight out was canceled due to an accident at LGA the night before. Once I made it to New York, it was great to catch up with colleagues in person and the weather was lovely—perfect for drinks on the rooftop. I was also part of a small group invited to join AI for Product Designers, a course by &lt;a href=&quot;https://www.xinranma.com/&quot;&gt;Xinran Ma&lt;/a&gt;. Enjoyed it, but I still prefer Claude.&lt;/p&gt;
&lt;h2&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Built and launched a mobile-optimized bracket tracker for our family March Madness pool. It was fun to make something that solved for such a specific use-case. I learned how to work with Firebase for the backend, and have ideas for how to improve the UI for next year.&lt;/li&gt;
&lt;li&gt;Scaling AI tooling was a big focus at work this month. I&apos;ve been leaning into a prototype-first workflow and helping others do the same.  It&apos;s been inspiring to see how different people apply the tools to their projects, &lt;em&gt;especially&lt;/em&gt; their personal projects.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Digital gardening&lt;/h2&gt;
&lt;h3&gt;Bookshelf&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/the-spy-and-the-traitor&quot;&gt;&lt;em&gt;The Spy and the Traitor&lt;/em&gt;, by Ben Macintyre&lt;/a&gt;. Gripping account of a KGB agent secretly working with MI6.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/timeline&quot;&gt;&lt;em&gt;Timeline&lt;/em&gt;, by Michael Crichton&lt;/a&gt;. An ahead-of-its-time multiverse thriller. Written in 1999, and it holds up.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Other reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://craigmod.com/essays/software_bonkers/&quot;&gt;Software Bonkers — by Craig Mod&lt;/a&gt; – Craig Mod&apos;s account of how Claude Code is changing how he thinks about software, especially software tailored to his unique needs. I &lt;em&gt;don&apos;t&lt;/em&gt; think this will be something that appeals to &lt;em&gt;everyone&lt;/em&gt; in the near future, but I&apos;m curious where it goes.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://samhenri.gold/blog/20260312-this-is-not-the-computer-for-you/&quot;&gt;“This Is Not The Computer For You” · Sam Henri Gold&lt;/a&gt; – on the new MacBook Neo and seeing computing through fresh eyes. Worth reading if it didn&apos;t already cross your radar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;MEMEX&lt;/h3&gt;
&lt;p&gt;A few favorite visuals that I&apos;ve added to MEMEX, my &lt;a href=&quot;https://memex.flow14.com/&quot;&gt;swipe file&lt;/a&gt;:&lt;/p&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/acquaintance-card.Dj3oe0LT.webp&quot; alt=&quot;Acquaintance Card&quot; width=&quot;1100&quot; height=&quot;715&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/freyajohnson-foster.iqTi29Wx.webp&quot; alt=&quot;Freyajohnson Foster&quot; width=&quot;1100&quot; height=&quot;715&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/ink-swatches.kvi7cTCe.webp&quot; alt=&quot;Ink Swatches&quot; width=&quot;1100&quot; height=&quot;1100&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/marcel.io.pcuhJeH1.webp&quot; alt=&quot;Marcel.Io&quot; width=&quot;1100&quot; height=&quot;1100&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/start-now.maZS2tr4.webp&quot; alt=&quot;Start Now&quot; width=&quot;418&quot; height=&quot;556&quot;&gt;&lt;/div&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/learning-log-2603/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Massive Bloom</title><link>https://kyleio.com/p/project-massivebloom/</link><guid isPermaLink="true">https://kyleio.com/p/project-massivebloom/</guid><description>I built a browser-based instrument to create evolving, atmospheric sonic textures.</description><pubDate>Mon, 13 Apr 2026 00:00:08 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;This post includes an interactive image gallery — &lt;a href=&quot;https://kyleio.com/p/project-massivebloom/&quot;&gt;view it on the web&lt;/a&gt; for the full experience.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://massivebloomsound.com/&quot;&gt;Massive Bloom&lt;/a&gt; is a browser-based instrument for creating evolving, atmospheric sonic textures.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://massivebloomsound.com/&quot;&gt;View the project&lt;/a&gt; ¦ &lt;a href=&quot;https://github.com/kylejohnston/ambient-drone-generator&quot;&gt;GitHub repo&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;The inspiration&lt;/h2&gt;
&lt;p&gt;The project started with a Fred Again.. video about his production process, specifically how Brian Eno&apos;s influence led him to layer ambient drones for texture in his music.&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&amp;quot;https://www.youtube.com/watch?v=zeD0g5xXo7E&amp;amp;t=2420&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;https://img.youtube.com/vi/zeD0g5xXo7E/maxresdefault.jpg&amp;quot; alt=&amp;quot;Watch on YouTube&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;h2&gt;The build&lt;/h2&gt;
&lt;p&gt;I drafted the first plan in early January, spun up the first prototype, and spent the rest of the month just listening.&lt;/p&gt;
&lt;p&gt;Taking time to listen helped me realize one of my core development principles—YAGNI (you aren&apos;t going to need it)—works for design, too and I started cutting features. You can see the &lt;a href=&quot;https://v0.massivebloomsound.com/&quot;&gt;first version of the generator here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Things I wasn&apos;t happy with:&lt;/strong&gt; It was challenging to produce a pleasant drone sound. The UI was too complicated. Ironically, my original idea included easy mode; just press a button and hear a drone. But it didn&apos;t sound great &lt;em&gt;and&lt;/em&gt; it lacked surprise—it sounded the same every time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;February&lt;/strong&gt; was all about iterating the sound and shaping the remaining features. By the end of the month, the features felt more intuitive and the sound was closer to what I&apos;d imagined. That&apos;s when I started design.&lt;/p&gt;
&lt;p&gt;Once the design was in place, I did light user testing. Seeing people struggle with the first contact led me to simplify the UI, improve the time to first drone, and add guardrails to the sequencer.&lt;/p&gt;
&lt;p&gt;It also led to my favorite feature: the URL updates as you change settings. It provides built-in shareability and if you program a sound that you want to hear every day, simply bookmark it. For example: load &lt;a href=&quot;https://massivebloomsound.com/?p=covers-little-destiny-gourmet-also-make-boiling-bunker-submit-girl-mango-above-barrel-awesome-abides&quot;&gt;covers-little-destiny…&lt;/a&gt;, press the power button, and listen to the sound unfold.&lt;/p&gt;
&lt;h2&gt;The visual evolution&lt;/h2&gt;
&lt;h2&gt;The future&lt;/h2&gt;
&lt;p&gt;Since launch, I&apos;ve started experimenting with new sounds—classic piano, organ, kick drum. But I&apos;m taking it slow and living with the sounds before shipping.&lt;/p&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/01-wire._3q7DZMc.webp&quot; alt=&quot;01 Wire&quot; width=&quot;1280&quot; height=&quot;1024&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/02-design.CkPZk0P8.webp&quot; alt=&quot;02 Design&quot; width=&quot;1280&quot; height=&quot;1024&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/03-design.ClcLXm6U.webp&quot; alt=&quot;03 Design&quot; width=&quot;1280&quot; height=&quot;1024&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/04-design-live.fCALmgJw.webp&quot; alt=&quot;04 Design Live&quot; width=&quot;1280&quot; height=&quot;1024&quot;&gt;&lt;/div&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/project-massivebloom/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>CLAUDE.md best practices</title><link>https://kyleio.com/p/til-claudemd/</link><guid isPermaLink="true">https://kyleio.com/p/til-claudemd/</guid><description>Documenting my evolving understanding of CLAUDE.md files</description><pubDate>Sun, 15 Mar 2026 22:59:32 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Note: this will post will evolve as I learn more about CLAUDE.md files, best practices, and how those things evolve over time.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;key-ideas&quot;&gt;Key ideas&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Structure:&lt;/strong&gt; create a CLAUDE.md in ~/.claude/ (loads globally), then add domain- and project-level files relative to where you keep your work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Creation:&lt;/strong&gt; let Claude write them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upkeep:&lt;/strong&gt; keep them lean.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;-structure-where-to-organize-claudemd-files&quot;&gt;✱ Structure: where to organize CLAUDE.md files&lt;/h2&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;~/.claude/CLAUDE.md (global, loads everywhere)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└ universal identity, communication preferences, and behavioral rules&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└ location (macOS): your home folder&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└ in Terminal, view with: cd ~/.claude/ &amp;#x26;&amp;#x26; open .&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[domain]/CLAUDE.md (shared context across related projects)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├ domain conventions, constraints, dependencies&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├ optional, but useful if projects share context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└ location: relative to wherever you keep your work&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[domain]/[project]/CLAUDE.md (current goals, active constraints)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├ current goals, active constraints, key dates&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└ location: relative to wherever you keep your work&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;examples&quot;&gt;Examples&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;My global CLAUDE.md file&lt;/strong&gt; (&lt;a href=&quot;https://github.com/kylejohnston/dotfiles/blob/main/claude/CLAUDE.md&quot;&gt;view on GitHub&lt;/a&gt;) contains frontend development princples, and an instruction to capture lessons as I guide the system, like when I make corrections, cite preferences, etc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A project-level CLAUDE.md&lt;/strong&gt; might explain the purpose of the project, plus how to build, test, deploy, etc. And if the project-level file conflicts with the global file, the more specific file takes priority.&lt;/p&gt;
&lt;p&gt;For example, if I started a project that uses Next.js (which would conflict with my global frontend development principles to avoid frameworks), the project-level CLAUDE.md is more specific, so it takes priority.&lt;/p&gt;
&lt;h2 id=&quot;-creation-how-to-write-claudemd-files&quot;&gt;✱ Creation: how to write CLAUDE.md files&lt;/h2&gt;
&lt;p&gt;Note: You can replace any of these examples with &lt;code&gt;/init&lt;/code&gt;. Everything happens automatically, but you should review the output. Using these examples as a starting point may help you understand what’s happening under the hood.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Excerpts from Hannah Stulberg’s extensive &lt;a href=&quot;https://hannahstulberg.substack.com/p/claude-code-for-everything-the-best-personal-assistant-remembers-everything-about-you&quot;&gt;guide to Claude Code&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;method-1-plan-mode-interview&quot;&gt;Method 1: Plan mode interview&lt;/h3&gt;
&lt;p&gt;Use this when you have context in your head but no docs:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;I want to generate a CLAUDE.md file for [folder name]. Interview me to understand what you’d need to work effectively there. Ask me questions about the project, the people involved, and how I want things done. Then draft the file based on my answers.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;method-2-load-the-docs-then-generate&quot;&gt;Method 2: Load the docs, then generate&lt;/h3&gt;
&lt;p&gt;Use this when you have existing documentation, but no CLAUDE.md:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Read through the files in [folder name] and generate a CLAUDE.md file for that folder. Focus on what you’d need to know to work effectively there: what this is, who’s involved, key decisions that have been made, and where to find things.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;method-3-generate-from-a-session&quot;&gt;Method 3: Generate from a session&lt;/h3&gt;
&lt;p&gt;Use this when you’ve finished a working session:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;We just did a lot of work in this area. Generate a CLAUDE.md file for this folder based on everything we covered. Focus on context that would be useful at the start of any future session here, and ask me about any context you’re not sure is relevant to future work.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;-upkeep-keeping-claudemd-lean&quot;&gt;✱ Upkeep: keeping CLAUDE.md lean&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;After a big working session.&lt;/strong&gt; Before you close the session, ask:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Based on the work we just did, does the CLAUDE.md for [folder name] need to be updated with any new context?&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;When you keep re-explaining the same thing&lt;/strong&gt;&lt;br&gt;
If you find yourself giving Claude the same context at the start of every session—who someone is, what a project is about, how you want something done—that context belongs in a CLAUDE.md file. Tell Claude to add it:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;I keep having to explain [X] every session. Update the CLAUDE.md for [folder name] so you have that context automatically.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Let Claude sort it out&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Look at the CLAUDE.md files in this project. Are any of them too long, redundant, or loading context that I probably don’t need every session? Suggest how to trim them down.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;sources&quot;&gt;&lt;em&gt;Sources&lt;/em&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://platform.claude.com/docs/en/agent-sdk/modifying-system-prompts#method-1-claude-md-files-project-level-instructions&quot;&gt;Anthropic Docs: Understanding system prompts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://claude.com/blog/using-claude-md-files&quot;&gt;Claude.com: Using CLAUDE.md files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://hannahstulberg.substack.com/p/claude-code-for-everything-finally&quot;&gt;Claude Code for Everything&lt;/a&gt; by Hannah Stulberg — a comprehensive, step-by-step guide. A great place to start if you’re new to Claude Code or want to deepen your knowledge.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/ClaudeAI/comments/1oivjvm/claude_code_is_a_beast_tips_from_6_months_of/&quot;&gt;reddit: Claude Code is a beast&lt;/a&gt; — assumes a lot of domain knowledge, but sparked my curiosity about this topic.&lt;/li&gt;
&lt;/ul&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/til-claudemd/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Learning Log, February 2026</title><link>https://kyleio.com/p/learning-log-2602/</link><guid isPermaLink="true">https://kyleio.com/p/learning-log-2602/</guid><description>Where my attention flowed in February 2026</description><pubDate>Wed, 04 Mar 2026 15:34:37 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;This post includes an interactive image gallery — &lt;a href=&quot;https://kyleio.com/p/learning-log-2602/&quot;&gt;view it on the web&lt;/a&gt; for the full experience.&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;Work~Life&lt;/h2&gt;
&lt;p&gt;My goal of walking or cycling most days has slowly evolved into a running goal. And somehow I managed to complete my first continuous 1-mile run &lt;em&gt;and&lt;/em&gt; a 5k run/walk on the same day.&lt;/p&gt;
&lt;h2&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Launched &lt;a href=&quot;https://massivebloomsound.com/&quot;&gt;Massive Bloom&lt;/a&gt;, my ambient drone generator project. It&apos;s a browser-based instrument for creating evolving, atmospheric drone sounds and textures. I started with a proof of concept in January and spent the past two weeks sweating the details of the sound, design, naming, etc. I&apos;m happy with how this turned out… full writeup coming soon.&lt;/li&gt;
&lt;li&gt;Completed a Digital Ocean server migration. I pruned defunct projects, moved to a smaller droplet, etc. I&apos;d been putting it off until I asked Claude Code to draft a step-by-step migration – that was the push I needed. It was as time-consuming as my last migration (chunks of time over a long weekend), but I felt more confident with Claude Code available to troubleshoot issues and answer questions.&lt;/li&gt;
&lt;li&gt;As part of the server migration, I uploaded an archive of one of my original blogs—&lt;a href=&quot;https://blog-archive.flow14.com/&quot;&gt;Curiosities by flow14&lt;/a&gt;—it captures the design takes and the simpler times of 2006–2014.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Workflow&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://kyleio.com/p/learning-log-2601/&quot;&gt;Last month&lt;/a&gt;, I mentioned &lt;a href=&quot;https://github.com/mikker/LeaderKey&quot;&gt;LeaderKey&lt;/a&gt;, a wonderfully flexible launcher for MacOS made by &lt;a href=&quot;https://mikkelmalmberg.com/&quot;&gt;Mikkel Malmberg&lt;/a&gt;. Shortly after that post, Mikkel launched &lt;a href=&quot;https://tunaformac.com/&quot;&gt;Tuna&lt;/a&gt;. It&apos;s an even &lt;em&gt;better&lt;/em&gt; launcher (and it includes LeaderKey features). It&apos;s deeply inspired by &lt;a href=&quot;https://en.wikipedia.org/wiki/Quicksilver_(software)&quot;&gt;Quicksilver&lt;/a&gt;, which was a precursor to launchers like Alfred, Spotlight, and Raycast. If you&apos;re curious, &lt;a href=&quot;https://www.youtube.com/watch?v=vkm-ZFlivyI&quot;&gt;Mikkel&apos;s launch video&lt;/a&gt; may charm you into trying it.&lt;/p&gt;
&lt;h2&gt;Digital gardening&lt;/h2&gt;
&lt;h3&gt;Bookshelf&lt;/h3&gt;
&lt;p&gt;Both of this months books are sci-fi adjacent, and both are excellent.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/a-psalm-for-the-wild-built&quot;&gt;&lt;em&gt;A Psalm for the Wild-Built&lt;/em&gt;, by Becky Chambers&lt;/a&gt;. A cozy and thoughtful story of a monk on a self-discovery journey who meets a robot that&apos;s been living in the wilderness ever since robots gained self-awareness and ditched humans.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/shark-heart&quot;&gt;&lt;em&gt;Shark Heart, a Love Story&lt;/em&gt;, by Emily Habeck&lt;/a&gt;. In which newlyweds navigate a rare diagnosis where the husband turns into a great white shark. A very strange premise, but very well written.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Other reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://cabel.com/wes-cook-and-the-mcdonalds-mural/?ueid=c1c3873b4beb7a343ba10adabdf18232&quot;&gt;Wes Cook and The McDonald’s Mural&lt;/a&gt; – Cabel Sasser dives into the details of his wonderful &lt;a href=&quot;https://www.youtube.com/watch?v=Df_K7pIsfvg&quot;&gt;2024 XOXO talk&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://interconnected.org/home/2026/02/12/mist&quot;&gt;mist: Share and edit Markdown together, quickly&lt;/a&gt; – Matt Webb launched mist, a collaborative markdown editor. It&apos;s good! The most interesting bit to me was how he planned and built it — talking to his watch on a long walk and letting Claude Code organize his thoughts and draft a plan.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;MEMEX&lt;/h3&gt;
&lt;p&gt;A few favorite visuals that I&apos;ve added to MEMEX, my &lt;a href=&quot;https://memex.flow14.com/&quot;&gt;swipe file&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A copywriter&apos;s wonderfully worded job application from 1934. Can&apos;t recall where I stumbled across this, but searching the name should uncover the backstory.&lt;/li&gt;
&lt;li&gt;“As you start to walk on the way, the way appears” captured the vibe of this year so far&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bedow.se/work/bimmi/&quot;&gt;bimmi packaging&lt;/a&gt; — by Bedow. Love how the overlapping monospaced type creates texture.&lt;/li&gt;
&lt;li&gt;Paint packed and shipped in a fully sustainable container 😍 – by &lt;a href=&quot;https://www.piotrworks.com/piotr&quot;&gt;PiortWorks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A tiny layout— a thing which I didn&apos;t have a name for—until I ran across &lt;a href=&quot;https://www.are.na/jaytel/tiny-layouts&quot;&gt;this Are.na channel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/bimmi-packaging.D1cInXA9.webp&quot; alt=&quot;Bimmi Packaging&quot; width=&quot;1100&quot; height=&quot;734&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/gush-packaging by PiotrWorks.BHqV-gBN.webp&quot; alt=&quot;Gush Packaging By PiotrWorks&quot; width=&quot;1100&quot; height=&quot;550&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/Robert-Pirosh-job-application_ 1934.BCDwsViK.webp&quot; alt=&quot;Robert Pirosh Job Application, 1934&quot; width=&quot;1100&quot; height=&quot;1013&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/The-way-appears.Cs7nXzZM.webp&quot; alt=&quot;The Way Appears&quot; width=&quot;1080&quot; height=&quot;697&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/tiny-layout-okok.services.S50oNd9N.webp&quot; alt=&quot;Tiny Layout Okok.Services&quot; width=&quot;1100&quot; height=&quot;550&quot;&gt;&lt;/div&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/learning-log-2602/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Learning Log, January 2026</title><link>https://kyleio.com/p/learning-log-2601/</link><guid isPermaLink="true">https://kyleio.com/p/learning-log-2601/</guid><description>Where my attention flowed in January 2026</description><pubDate>Tue, 03 Feb 2026 21:10:37 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;This post includes an interactive image gallery — &lt;a href=&quot;https://kyleio.com/p/learning-log-2601/&quot;&gt;view it on the web&lt;/a&gt; for the full experience.&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;Work~Life&lt;/h2&gt;
&lt;p&gt;Work picked up in January after a planning and strategy-filled December.&lt;/p&gt;
&lt;p&gt;I picked up a &lt;a href=&quot;https://store.hermanmiller.com/office-chairs-ergonomic-chairs/mirra-2-chair/1453.html?lang=en_US&amp;amp;sku=100570083&quot;&gt;new office chair&lt;/a&gt;. It&apos;s been on my wishlist for a while and a use-it-or-list-it flexible spending account balance gave a good excuse to finally get it.&lt;/p&gt;
&lt;p&gt;I started a new art project that I hope to finish this month.&lt;/p&gt;
&lt;p&gt;And despite the bitter cold, I&apos;ve kept up with daily walks (layering works!). After healing from a dumb knee injury early last year, I&apos;ve been diligent about walking or cycling nearly every day. I&apos;ve found it&apos;s a great way to clear my mind, especially after a long day of work.&lt;/p&gt;
&lt;h2&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Started creating an ambient drone generator. I&apos;m a big fan of Fred again&apos;s music, and I wanted to create a browser-based version of the drones he uses under some of his music. The prototype works well, so now I&apos;m working through ways to refine the sound and introduce more randomness.&lt;/li&gt;
&lt;li&gt;Converted my &lt;a href=&quot;https://www.kylewjohnston.com&quot;&gt;professional portfolio&lt;/a&gt; to Astro. This will make it easier to redesign—a project for a future month.&lt;/li&gt;
&lt;li&gt;Wrote a quick til on &lt;a href=&quot;https://kyleio.com/p/til-cli-project-hints/&quot;&gt;adding project hints to your terminal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Workflow&lt;/h2&gt;
&lt;p&gt;I&apos;ve been using &lt;a href=&quot;https://github.com/mikker/LeaderKey&quot;&gt;LeaderKey&lt;/a&gt; for a while and I&apos;ve been finding more and more uses for it. It&apos;s an endlessly-flexible launcher for macOS made by the entertaining &lt;a href=&quot;https://mikkelmalmberg.com/&quot;&gt;Mikkel Malmberg&lt;/a&gt;. It can launch almost anything—apps, links, folders, scripts, even other launchers like Raycast.&lt;/p&gt;
&lt;h2&gt;Digital gardening&lt;/h2&gt;
&lt;h3&gt;Bookshelf&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/hum&quot;&gt;&lt;em&gt;Hum&lt;/em&gt; by Helen Phillips&lt;/a&gt;. Near-future dystopian vibes with an interesting premise involving AI, intelligent robots, and who can afford to escape it all. The ending fell flat for me, but I enjoyed reading it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/the-courage-to-start&quot;&gt;&lt;em&gt;The Courage to Start&lt;/em&gt; by John Bingham&lt;/a&gt;. Reads like a long blog post (meh), but I did save this bit: &lt;em&gt;&amp;quot;I was able to develop a dynamic definition of success that took into account the reality of the moment. On some days, I succeeded just by getting out the door for a run. On others, success was measured by how hard I pushed myself during a tempo run or track workout. The side effect of focusing on what I was feeling was that words like “winning” and “losing” were replaced by words like “doing” and “becoming” in my vocabulary.&amp;quot;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/the-ministry-of-time&quot;&gt;&lt;em&gt;The Ministry of Time&lt;/em&gt; by Kaliane Bradley&lt;/a&gt;. Really enjoyed this one. The gist: a government ministry in London recruits “expats” from across history to study the effects of time travel and how they adapt to modern life. I&apos;d be surprised if this isn&apos;t adapted for streaming.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Other reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://herbsundays.substack.com/p/wont-be-fooled-again-on-aesthetic&quot;&gt;Won&apos;t Get Fooled Again: On aesthetic morality and neo-luddism&lt;/a&gt; I agreed with many of the points in this post by Sam Valenti (founder of Ghostly International). He has a thoughtful take on artists, AI, and whether we should judge art by how it&apos;s made or by what artists do with the tools.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://mikefisher.substack.com/p/speed-is-never-just-speed&quot;&gt;Speed is never just speed&lt;/a&gt; a post on management seen through the lens of rugby. Highlighted this bit: &lt;em&gt;&amp;quot;you don’t play fast by telling people to move faster, you earn speed by building the conditions that allow it&amp;quot;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.joanwestenberg.com/your-life-is-the-sum-total-of-2-000-mondays/&quot;&gt;Your Life is the Sum Total of 2,000 Mondays&lt;/a&gt;. Shared by &lt;a href=&quot;https://chrisglass.com/&quot;&gt;Chris Glass&lt;/a&gt; – great post on architecting ordinary days.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;MEMEX&lt;/h3&gt;
&lt;p&gt;A few favorite visuals that I&apos;ve added to MEMEX, my ever-growing &lt;a href=&quot;https://memex.flow14.com/&quot;&gt;swipe file&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pentagram.com/work/mini-x-deus&quot;&gt;MINI × DEUS&lt;/a&gt; – &lt;em&gt;might&lt;/em&gt; have saved every image from this case study&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://the-brandidentity.com/interview/shape-of-words-is-a-printed-capsule-of-creativity-presenting-the-diverse-works-of-30-contributors&quot;&gt;Shape of Words&lt;/a&gt; — I like how the handwritten type brings out the texture&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.flickr.com/groups/vintagepricestickers/pool/&quot;&gt;Vintage price stickers&lt;/a&gt; — from Flickr!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://byarce.com/Diarte-visual-identity&quot;&gt;diarte . brand&lt;/a&gt; – the offset dot (and the meaning behind it) caught my eye&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/diarte-logo.y6ytkc2X.webp&quot; alt=&quot;Diarte Logo&quot; width=&quot;800&quot; height=&quot;589&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/MINI-x-DEUS-collaboration.CJfs346m.webp&quot; alt=&quot;MINI X DEUS Collaboration&quot; width=&quot;2560&quot; height=&quot;3398&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/Shape-of-Words-cover.b-Ryjl9R.webp&quot; alt=&quot;Shape Of Words Cover&quot; width=&quot;1200&quot; height=&quot;2445&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/Vintage-price-stickers.BZbNF58M.webp&quot; alt=&quot;Vintage Price Stickers&quot; width=&quot;2048&quot; height=&quot;2048&quot;&gt;&lt;/div&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/learning-log-2601/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Add project hints to your terminal</title><link>https://kyleio.com/p/til-cli-project-hints/</link><guid isPermaLink="true">https://kyleio.com/p/til-cli-project-hints/</guid><description>All you need is a .project-hint file and a simple zsh function</description><pubDate>Sat, 24 Jan 2026 22:33:17 GMT</pubDate><content:encoded>&lt;p&gt;Inspired by &lt;a href=&quot;https://multiline.co/mment/2026/01/my-blogging-setup/&quot;&gt;this post from Ashur&lt;/a&gt;, I created a CLI-based workflow to quickly add, edit, and publish content in a couple of my Astro-based projects.&lt;/p&gt;
&lt;p&gt;Knowing future me, there’s a good chance I’ll forget to use this workflow in the future. So I asked Claude Code if there’s a way to see hints in my terminal when I &lt;code&gt;cd&lt;/code&gt; to a project directory.&lt;/p&gt;
&lt;p&gt;Claude recommended a couple of options, the simplest being a &lt;code&gt;.project-hint&lt;/code&gt; file.&lt;/p&gt;
&lt;h2 id=&quot;how-to-add-project-specific-hints&quot;&gt;How to add project-specific hints&lt;/h2&gt;
&lt;p&gt;First, I added this snippet to my .zshrc file:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# Show project hints when entering directories&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  cd() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    builtin cd &quot;$@&quot; || return&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    if [[ -f &quot;.project-hint&quot; ]]; then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      cat &quot;.project-hint&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This function wraps &lt;code&gt;cd&lt;/code&gt; to look for a file named &lt;code&gt;.project-hint&lt;/code&gt; in the current directory. If it finds that file, it displays the contents in the terminal. Now, when I &lt;code&gt;cd&lt;/code&gt; to this project, I automatically see this hint:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;✏️ POST ADMIN CLI AVAILABLE!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   npm run admin        - Interactive CLI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   npm run post:create  - create a new post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   npm run post:select  - edit a post&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   npm run post:publish - publish a post&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And when I type &lt;code&gt;npm run admin&lt;/code&gt; it kicks off a workflow:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;◆  What would you like to do?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  ● Create (Create a new draft post)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  ○ Publish&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  ○ Select&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I can quickly navigate a few questions with my keyboard. Once I’m done, a fresh draft opens my editor of choice, pre-populated with a title, date, category, and more.&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/til-cli-project-hints/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Endless Mew Scroller</title><link>https://kyleio.com/p/project-endless-cat-scroller/</link><guid isPermaLink="true">https://kyleio.com/p/project-endless-cat-scroller/</guid><description>I made an endless feed of cat photos to give you a break from the algorithms</description><pubDate>Mon, 17 Nov 2025 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This project started with a thought captured in my spark file: &lt;a href=&quot;https://endlessdoomscroller.com/&quot;&gt;Endless Doom Scroller&lt;/a&gt;, but kittens?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://endlessmewscroller.pages.dev/&quot;&gt;View the project&lt;/a&gt; ¦ &lt;a href=&quot;https://github.com/kylejohnston/endlessmewscroller&quot;&gt;GitHub repo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That thought lingered in my spark file until &lt;a href=&quot;https://code.claude.com/docs/en/claude-code-on-the-web&quot;&gt;Claude Code on the Web&lt;/a&gt; came along. This project felt like a perfect way to kick the tires.&lt;/p&gt;
&lt;p&gt;I started with a &lt;a href=&quot;https://github.com/kylejohnston/endlessmewscroller/blob/main/docs/plans/2025-11-13-endless-cat-scroller-design.md&quot;&gt;design doc&lt;/a&gt;—created with the help of &lt;a href=&quot;https://github.com/obra/superpowers&quot;&gt;Obra’s superpowers&lt;/a&gt;—and pointed Claude Code Web to a fresh repo with this prompt: &lt;code&gt;Follow the design doc in this repo and create a working prototype. The preferred API is cataas.com. But I may want to test thecatapi.com. Any questions?&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I answered a few questions, went to sleep while Claude churned, and woke up to a working prototype! Exciting? Ye… not so fast!&lt;/p&gt;
&lt;p&gt;Before declaring it a one shot, I tried a new prompt shared by a &lt;a href=&quot;https://en.wikipedia.org/wiki/Rasmus_Lerdorf&quot;&gt;distinguished engineer&lt;/a&gt; at work: &lt;code&gt;If you were going to re-implement this entire feature we added on this branch cleanly, which findings were non-obvious or surprising and what would you do differently?&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Claude’s responses were surprising:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I’m not actually using the API properly (Biggest issue!)&lt;/li&gt;
&lt;li&gt;Didn’t implement srcset (You specifically asked for it!)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Oh my. That day, I learned Claude Code Web isn’t as diligent about following design docs as its CLI counterpart. After a few more rounds of prompts to resolve the issues followed by design refinements, the Endless Mew Scroller launched.&lt;/p&gt;
&lt;p&gt;Now, if you need a break from the algorithmic feeds, you can scroll cats!&lt;/p&gt;
&lt;div class=&quot;flex flex-row gap-2 wide&quot;&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/endlessmewscroller-home.B50zdNMt_fwg36.webp&quot; alt=&quot;The homepage.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;932&quot; class=&quot;border border-neutral-200 rounded-lg&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/endlessmewscroller-cats.j68XYk4r_ZFuTAi.webp&quot; alt=&quot;Cat pictures.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;932&quot; class=&quot;border border-neutral-200 rounded-lg&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/endlessmewscroller-more-cats.ETM0kWZc_1rgyR2.webp&quot; alt=&quot;More cat pictures.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;932&quot; class=&quot;border border-neutral-200 rounded-lg&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;caption&quot;&gt;&lt;a href=&quot;https://endlessmewscroller.pages.dev/&quot;&gt;Homepage&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;tools-used&quot;&gt;Tools used&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; (pro plan) + &lt;strong&gt;&lt;a href=&quot;https://github.com/obra/superpowers&quot;&gt;Superpowers&lt;/a&gt;&lt;/strong&gt; for planning (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://code.claude.com/docs/en/claude-code-on-the-web&quot;&gt;Claude Code on the Web&lt;/a&gt;&lt;/strong&gt; for development (pro plan)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://thecatapi.com&quot;&gt;TheCatAPI&lt;/a&gt;&lt;/strong&gt; for the endless cats (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt; for hosting the code (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt; for serving the site (free)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://endlessmewscroller.pages.dev/&quot;&gt;Check out EndlessMewScroller&lt;/a&gt;&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/project-endless-cat-scroller/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Learning Log, December 2025</title><link>https://kyleio.com/p/learning-log-2512/</link><guid isPermaLink="true">https://kyleio.com/p/learning-log-2512/</guid><description>Where my attention flowed in December 2025.</description><pubDate>Thu, 08 Jan 2026 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;This post includes an interactive image gallery — &lt;a href=&quot;https://kyleio.com/p/learning-log-2512/&quot;&gt;view it on the web&lt;/a&gt; for the full experience.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Life-wise, it was a pretty chill month. We had a mid-month family get-together for a three-in-one celebration; the holidays, a birthday, and my parents&apos; anniversary. The festivities started with light snow and an impressive &lt;a href=&quot;https://unionstation.org/event/titanic-an-immersive-voyage/&quot;&gt;Titanic exhibition&lt;/a&gt;. We closed the day with a wonderful &lt;a href=&quot;https://www.wanderingvine.com/&quot;&gt;dinner in a castle&lt;/a&gt; where the owner was kind enough to bake a custom-made anniversary cake for dessert.&lt;/p&gt;
&lt;h2&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Built &lt;a href=&quot;https://github.com/kylejohnston/notebin&quot;&gt;notebin&lt;/a&gt; for myself. It&apos;s a super minimal web app that&apos;s made for quick, transitory notes – no organization or syncing. This was an idea I&apos;d had in my backlog for a long time. Since I&apos;ve been testing Claude Code with &lt;a href=&quot;https://github.com/obra/superpowers&quot;&gt;superpowers&lt;/a&gt;, I was able to build, launch, and test iterations in no time. Which is a trend I&apos;ve seen from other people using Claude Code… curious to see how quickly this evolves in 2026.&lt;/li&gt;
&lt;li&gt;Built a book cover search tool, another just-for-me project. This one allows me to search for high-res book covers that I use to populate &lt;a href=&quot;https://books.kyleio.com/&quot;&gt;my bookshelf&lt;/a&gt;. It&apos;s a simple HTML file that runs locally and works like a dream.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Digital gardening&lt;/h2&gt;
&lt;h3&gt;Bookshelf&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/conspiracy-of-tall-men&quot;&gt;&lt;em&gt;A Conspiracy of Tall Men&lt;/em&gt; by Noah Hawley&lt;/a&gt;. Noah&apos;s first book and (I realized) the third book of his I&apos;ve read. I guess that makes me a fan? Other writing credits he&apos;s known for include the Fargo TV series, Alien: Earth, etc.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/davinci-code/&quot;&gt;&lt;em&gt;The DaVinci Code&lt;/em&gt; by Dan Brown&lt;/a&gt;. The book adds color and nuance that didn&apos;t make the cut in the movie adaptation.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://books.kyleio.com/book/things-become-other-things/&quot;&gt;&lt;em&gt;Things Become Other Things&lt;/em&gt; by Craig Mod&lt;/a&gt;. I picked this up when it was on sale briefly in November-ish and really enjoyed the book.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Other reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://a.wholelottanothing.org/all-crazy-stuff-ive-learned-about-homeowners-insurance-natural-disasters-and-recovery/&quot;&gt;Everything I&apos;ve learned about homeowner&apos;s insurance, natural disasters, and recovery aid in 2025&lt;/a&gt;. Great post by Matt Haughey sharing things many people don&apos;t realize about insurance and relatively easy steps you can take to improve your coverage&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://thingsivelearned.dev/u/tyler/&quot;&gt;Things I&apos;ve Learned by Tyler TK&lt;/a&gt;. I&apos;m drawn to posts like this, and many of Tyler&apos;s lessons really resonated. There&apos;s a lot of great content to absorb, but self-care and big life stuff are great places to start.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;MEMEX&lt;/h3&gt;
&lt;p&gt;A few favorite visuals that I&apos;ve added to MEMEX, my ever-growing &lt;a href=&quot;https://memex.flow14.com/&quot;&gt;swipe file&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.niemanlab.org/collection/predictions-2026/&quot;&gt;Nieman Lab&apos;s Predictions for Journalism 2026&lt;/a&gt;. I&apos;ve been drawn to card-based designs for a while, so this was an easy add.&lt;/li&gt;
&lt;li&gt;Stüssy Spring 2023 collection. The framing of the subject caught my eye.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://andrewneyer.com/stuff/p/too-due&quot;&gt;Too Due list by Andrew Neyer&lt;/a&gt;. Pro tip: &lt;a href=&quot;https://andrewneyer.com/stuff&quot;&gt;Andrew&apos;s shop&lt;/a&gt; rewards a deep dive.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://casualarchivist.substack.com/p/all-aboard&quot;&gt;Tyco catalog cover&lt;/a&gt;. The marker-texture and sense of movement made me save this one.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;N.B. Inspiration for this post format comes from Melanie Richards&apos; &lt;a href=&quot;https://melanie-richards.com/blog/&quot;&gt;monthly learning logs&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/NIEMANLAB.ORG CARDS.CmQbU8Ql.webp&quot; alt=&quot;NIEMANLAB.ORG CARDS&quot; width=&quot;2560&quot; height=&quot;5136&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/STÜSSY SPRING 2023 COLLECTION.Bd6Xl40c.webp&quot; alt=&quot;STÜSSY SPRING 2023 COLLECTION&quot; width=&quot;1200&quot; height=&quot;1801&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/TOO DUE LIST BY ANDREW NEYER.0HrGDUw4.webp&quot; alt=&quot;TOO DUE LIST BY ANDREW NEYER&quot; width=&quot;1290&quot; height=&quot;2796&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/TYCO 1976 CATALOG COVER.BPpe6eMY.webp&quot; alt=&quot;TYCO 1976 CATALOG COVER&quot; width=&quot;1200&quot; height=&quot;1554&quot;&gt;&lt;/div&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/learning-log-2512/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Tools I use every day—that I made</title><link>https://kyleio.com/p/tools-i-use-everyday/</link><guid isPermaLink="true">https://kyleio.com/p/tools-i-use-everyday/</guid><description>I&apos;ve been busy making tools just for me, and it feels good.</description><pubDate>Wed, 03 Dec 2025 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m in the ‘we’ll see’ camp about LLMs in general. But for coding—especially bite-size projects—I’m bullish on the idea that there’s never been a better or easier time to explore and build.&lt;/p&gt;
&lt;p&gt;Two months ago, I decided to try Claude Pro and put it through its paces against my backlog of ideas. I’ve made projects tailored to my tastes; local-first tools that improve my workflow; simple prototypes to share ideas; I’ve launched long-simmering ideas that felt beyond my reach. In that time, I’ve learned that I wouldn’t reach for an LLM to create something that serves a large audience. But tools just for me or a small audience have been a sweet spot.&lt;/p&gt;
&lt;p&gt;Here are a few of the just-for-me projects I’ve built:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A web app for capturing transitory notes&lt;/strong&gt;. My original idea (seven years ago) was to build this as an iOS app. But after creating a few of these projects, I realized that a &lt;a href=&quot;https://github.com/kylejohnston/notebin&quot;&gt;web app&lt;/a&gt; would do everything I needed. So on a lazy Sunday I created it and started using it the same day.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A daily RSS to email digest&lt;/strong&gt;. Each morning, I wake up to an email with posts from blogs I follow. It’s powered by a Python script &lt;a href=&quot;https://github.com/kylejohnston/rss-email-digest&quot;&gt;in GitHub&lt;/a&gt; that populates the email with any feeds updated in the past 24 hours. I can read at my pace and know I’m not missing anything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Book cover search&lt;/strong&gt;. Inspired by Gina Trapani’s just for me’ &lt;a href=&quot;https://notetoself.studio/projects/cover-search/&quot;&gt;Cover Search project&lt;/a&gt;, this tool (a single, local HTML file) allows me to search for high-res book covers that I use to populate &lt;a href=&quot;https://books.kyleio.com/&quot;&gt;my bookshelf&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An ‘on this day’ email digest&lt;/strong&gt;. I converted 12+ years of DayOne journal entries to a single markdown file (&lt;a href=&quot;https://stephango.com/file-over-app&quot;&gt;file over app!&lt;/a&gt;). But I missed DayOne’s ‘on this day’ feature, so I recreated it with Python. Now, each morning I get an email with journal entries from past years. A daily stroll down memory lane.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’m still figuring out what ‘making’ means when Claude writes most of the code, but when I open my RSS digest each morning or take a quick note when I’m out on a walk, it feels good to use tools that fit me perfectly.&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/tools-i-use-everyday/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Stop drawing vases with AI</title><link>https://kyleio.com/p/creative-intelligence-review/</link><guid isPermaLink="true">https://kyleio.com/p/creative-intelligence-review/</guid><description>A review of Creative Intelligence, Greg Storey&apos;s book on thinking with AI</description><pubDate>Thu, 25 Sep 2025 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Generally, I steer clear of tech-focused nonfiction books. Especially those that purport to dispense advice. Too much fluff. Too many pages of stories that attempt to reiterate the same point again and again, in slightly different ways to pad their page counts.&lt;/p&gt;
&lt;p&gt;Greg Storey’s new book, &lt;em&gt;Creative Intelligence&lt;/em&gt;, has a strong point of view and no BS. It has content you can use right away, from ready-to-use prompts that spark your thinking to thoughtful advice for evaluating and improving your collaboration with LLMs.&lt;/p&gt;
&lt;p&gt;At its core, Creative Intelligence is about learning to work with AI as a thinking partner rather than using it as a vending machine that replaces your thinking.&lt;/p&gt;
&lt;p&gt;Greg starts off with a strong example from a classic brainstorm exercise. The exercise starts with the instruction, “Spend thirty seconds and draw a flower vase.” The results are predictable. The follow-up prompt, “Spend two minutes creating an experience for enjoying flowers”—is where you see creative ideas and out-of-the-box thinking. Greg’s point in this example is that many people are using billion-dollar tech to draw vases. The purpose of the book is to consistently push yourself to that second step in order to stretch your thinking, challenge assumptions, and discover unexpected insights.&lt;/p&gt;
&lt;p&gt;A few concepts from the book that have stuck with me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Positioning yourself as a subject matter amateur.&lt;/strong&gt; Use AI to test your domain knowledge, not just fetch facts. At work, I happened to start a product manager rotation shortly after reading the book. I used one of the exercises to quiz myself about the extent of my PM knowledge. That helped me prioritize the skills I needed to develop and reach out to people with expertise in the areas where I needed more coaching.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Using different thinking modes.&lt;/strong&gt; As a designer, convergent and divergent thinking is a natural part of my process. In the book, Greg details five cognitive modes that map to divergent and convergent thinking with examples of how and when to use them to unlock better results. I’ve found these really helpful at different parts of my design process to think more deeply about my work and sharpen my ideas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thinking in cycles.&lt;/strong&gt; Instead of trying for a one-shot, focus on a collaborative loop—engage → generate → evaluate → refine → apply—to deepen understanding and uncover insights.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Creating a collaboration profile.&lt;/strong&gt; You can use the profile to coach LLMs on how to respond in a way that works with how you think and process information. Think: your preferred structure, pace, and level of experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are just a few takeaways, but each one is an example of how Greg’s book has changed how I use AI day-to-day. Whether you’re just figuring out how to incorporate AI into your workflow or you’re experienced with navigating LLMs and want to push into new territories, I’d highly recommend this book.&lt;/p&gt;
&lt;h2 id=&quot;where-to-get-it&quot;&gt;Where to get it&lt;/h2&gt;
&lt;p&gt;Greg’s website, &lt;a href=&quot;https://brilliantcrank.com/creative-intelligence/&quot;&gt;BrilliantCrank.com&lt;/a&gt; has links to all the places to buy the book. &lt;a href=&quot;https://brilliantcrank.com/creative-intelligence-chapter4/&quot;&gt;There’s even a free chapter&lt;/a&gt; if you’re on the fence.&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/creative-intelligence-review/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Public bathrooms 🤝 Liquid Glass</title><link>https://kyleio.com/p/public-bathrooms-and-liquid-glass/</link><guid isPermaLink="true">https://kyleio.com/p/public-bathrooms-and-liquid-glass/</guid><description>How public bathrooms in Tokyo could improve the design and usability Liquid Glass in iOS 26</description><pubDate>Mon, 08 Sep 2025 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Quick! Find the active UI element in the Apple Music screens below. If it took you more than a second or you couldn’t spot it, you’re not alone.&lt;/p&gt;
&lt;div class=&quot;flex flex-row gap-2&quot;&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/current-state.BXIO7Ual_1Cwie4.webp&quot; alt=&quot;Apple Music search screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;393&quot; height=&quot;852&quot; class=&quot;w-11/16 mx-auto&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/current-state-dark-mode.Bf4ehya6_Z4N7Bh.webp&quot; alt=&quot;Apple Music search screen, dark mode&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;393&quot; height=&quot;852&quot; class=&quot;max-w-11/16 mx-auto&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Also, it’s a trick question. Because even though you navigate to this screen by tapping the search button, there’s nothing active on landing and it’s not immediately clear what you should do next.&lt;/p&gt;
&lt;p&gt;I don’t know about you, but when I tap search, I expect the search field to have focus. Or, at a minimum, I don’t expect to hunt for the search field. But this usability flaw paired with Liquid Glass and its low contrast aesthetic—especially when it’s on a busy background—frustrates me every time I land on this screen.&lt;/p&gt;
&lt;p&gt;I’m here to share an idea that honors the core concepts of Liquid Glass, but extends the metaphor to demonstrate a relatively easy way to create a more usable UI.&lt;/p&gt;
&lt;h2 id=&quot;inspiration-from-the-real-world&quot;&gt;Inspiration from the real world&lt;/h2&gt;
&lt;img src=&quot;https://kyleio.com/_astro/tokyo-public-restroom.DrSLa5D7_bupY1.webp&quot; alt=&quot;A public bathroom in Tokyo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1868&quot; height=&quot;1244&quot; class=&quot; rounded-lg&quot;&gt;
&lt;p&gt;Let’s start with a real-world example. This is a public bathroom in Tokyo. Note the clear, colorful glass. Clear glass and public bathrooms seem like an odd combination. But as soon as you lock the door, the glass becomes opaque, giving you privacy and clearly signaling the bathroom is in use. There are usability issues with this solution (and lots of user skepticism), but let’s focus on a key concept: when you demonstrate your intent to use the bathroom by locking the door, your action results in a clear change in the material. It’s a state change that reflects the needs and goals of the user.&lt;/p&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=ODT2PUby1Pk&quot;&gt;&lt;img src=&quot;https://img.youtube.com/vi/ODT2PUby1Pk/maxresdefault.jpg&quot; alt=&quot;Watch on YouTube&quot;&gt;&lt;/a&gt; 
&lt;h2 id=&quot;making-liquid-glass-smarter&quot;&gt;Making liquid glass smarter&lt;/h2&gt;
&lt;p&gt;Let’s consider how applying a key concept from Tokyo’s smart glass bathrooms could improve Apple’s Liquid Glass UX. When you signal an intent, like tapping the search button in Apple Music, let’s see what it might look like to change the UI to reflect your needs and goals.&lt;/p&gt;
&lt;div class=&quot;flex flex-row gap-2&quot;&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/current-state.BXIO7Ual_1Cwie4.webp&quot; alt=&quot;Apple Music search screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;393&quot; height=&quot;852&quot; class=&quot;w-11/16 mx-auto&quot;&gt;&lt;p class=&quot;caption text-center&quot;&gt;Current state&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/apple-music-search-concept-01.DaEOhA1D_Z1FesxD.webp&quot; alt=&quot;Apple Music search screen, dark mode&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;393&quot; height=&quot;852&quot; class=&quot;max-w-11/16 mx-auto&quot;&gt;&lt;p class=&quot;caption text-center&quot;&gt;With a more visible search bar&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;In this example, I’ve made two small changes. First, I’ve made the search bar almost opaque. It’s not &lt;em&gt;fully&lt;/em&gt; opaque like the public bathrooms in Tokyo, but in this context, the change adds enough visual contrast with the competing elements to make the search bar clearly visible. Second, I made the text darker, which provides an accessible level of contrast.&lt;/p&gt;
&lt;p&gt;From a UX perspective, these changes make the key action (search) clearer without distracting from other content on the screen. And if your intent changes—say you start to scroll through the genres—the search bar could respond to that action and change to a low-contrast, transparent state.&lt;/p&gt;
&lt;h2 id=&quot;one-more-thing&quot;&gt;One more thing&lt;/h2&gt;
&lt;p&gt;Exploring iOS 26, design patterns from Photos and Mail point to an even better solution. You tap the search icon and you see… an active search field. Wow!&lt;/p&gt;
&lt;p&gt;Let’s see how that might look in Apple Music. It’s worth noting this screen does have a complex set of options, including a toggle to search Apple Music or your library, listing recent searches, and highlighting popular genres. However, defaulting to an active search field doesn’t get in the way of these options, and it makes searching much easier.&lt;/p&gt;
&lt;div class=&quot;flex flex-row gap-2&quot;&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/current-state.BXIO7Ual_1Cwie4.webp&quot; alt=&quot;Current Apple Music search screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;393&quot; height=&quot;852&quot; class=&quot;w-11/16 mx-auto&quot;&gt;&lt;p class=&quot;caption text-center&quot;&gt;Current state&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/apple-music-search-concept-02.CWcrWq3I_5sLVo.webp&quot; alt=&quot;Apple Music search screen, active by default&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;393&quot; height=&quot;852&quot; class=&quot;max-w-11/16 mx-auto&quot;&gt;&lt;p class=&quot;caption text-center&quot;&gt;What if active search was the default?&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I know Liquid Glass will continue to evolve. I hope this demonstrates how cues from the real world can improve the UX while honoring the core concepts of the new UI.&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/public-bathrooms-and-liquid-glass/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>MEMEX, AUG ‘25 EDITION</title><link>https://kyleio.com/p/2025-aug-memex/</link><guid isPermaLink="true">https://kyleio.com/p/2025-aug-memex/</guid><description>A selection of visuals I&apos;ve saved to MEMEX, my tool for collecting visual inspiration</description><pubDate>Sun, 10 Aug 2025 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;This post includes an interactive image gallery — &lt;a href=&quot;https://kyleio.com/p/2025-aug-memex/&quot;&gt;view it on the web&lt;/a&gt; for the full experience.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Pulled from &lt;a href=&quot;https://memex.flow14.com/&quot;&gt;MEMEX&lt;/a&gt;, a tool I built to collect visual inspiration.&lt;/p&gt;
&lt;h2&gt;Sources:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;ADC Awards pattern by &lt;a href=&quot;https://mullenlowedesign.co/adc-104th-campaign-id&quot;&gt;Mullen Lowe Design Studio&lt;/a&gt; via &lt;a href=&quot;https://www.underconsideration.com/brandnew/archives/new_logo_and_campaign_for_the_104th_adc_awards_by_mullenlowe_design_studio.php&quot;&gt;BrandNew&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Normal Computing t-shirt by &lt;a href=&quot;https://www.companypolicy.studio/work/normal-computing&quot;&gt;Company Policy&lt;/a&gt; via &lt;a href=&quot;https://www.underconsideration.com/brandnew/archives/new_logo_and_identity_for_normal_computing.php&quot;&gt;BrandNew&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.itsnicethat.com/articles/pavel-ripley-art-graphic-design-discover-220425&quot;&gt;Pavel Ripley paper scrap collage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Portugalia Coaster - ???&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.initialesgg.com/2013/11/diy-bibliotheque-design.html&quot;&gt;DIY bookcase&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.en-iwamura.com/works&quot;&gt;En Iwamura sculpture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.laborandwait.xyz/fonts/esperanza&quot;&gt;Esperanza Font by LaborAndWait.xyz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://music.apple.com/us/album/white-iverson-single/1445291462&quot;&gt;Grace Mitchell - White Iverson cover&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://elementtype.co/host-grotesk/&quot;&gt;Host Grotesk font sample&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;100 Ways to Improve Your Writing - ??? but based on &lt;a href=&quot;https://www.amazon.com/100-Ways-Improve-Your-Writing/dp/0451627210&quot;&gt;Gary Provost&apos;s book&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;La Tour Eiffel logo by Les Zinc via &lt;a href=&quot;https://www.underconsideration.com/brandnew/archives/new_logo_and_identity_for_la_tour_eiffel_official_merchandise_by_les_zinc.php&quot;&gt;BrandNew&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.instagram.com/p/C8ZvEW6Onp7/&quot;&gt;Noah Kalina zine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/mike-eagle.bsky.social&quot;&gt;Open Mike Eagle tour poster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Orville Wright pilot&apos;s license - ???&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.instagram.com/pavelripley/reel/CnaUxDvMvk-/&quot;&gt;Pavel Ripley collage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://popeyemagazine.jp/&quot;&gt;Popeyemagazine.Jp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.shed-works.co.uk/sable&quot;&gt;Sable Illustration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.adsoftheworld.com/campaigns/highlight-the-remarkable-lise&quot;&gt;Stabilo ad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://timepeek.app/&quot;&gt;TimePeek.App&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://store.mcsweeneys.net/products/mostly-everything-the-art-of-tucker-nichols&quot;&gt;Tucker Nichols, Mostly Everything&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cheap.urls.loan/&quot;&gt;Websites Done Cheap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;When I Believe It - ???&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.needthinking.com/work/why/&quot;&gt;Why Architects custom type by Need.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://writingexamples.com/&quot;&gt;WritingExamples.com&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/ADC-Awards-patterns.CwDIKQ7A.webp&quot; alt=&quot;ADC Awards Patterns&quot; width=&quot;2000&quot; height=&quot;1162&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/diy-bookcase.izysgbw2.webp&quot; alt=&quot;Diy Bookcase&quot; width=&quot;1103&quot; height=&quot;1000&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/en-iwamura-sculpture.CGjRTPFb.webp&quot; alt=&quot;En Iwamura Sculpture&quot; width=&quot;800&quot; height=&quot;722&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/esperanza-font-by-laborandwait.xyz.Cf_1FIAF.webp&quot; alt=&quot;Esperanza Font By Laborandwait.Xyz&quot; width=&quot;1440&quot; height=&quot;2806&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/grace-mitchell-white-iverson-cover.0kFvNV5m.webp&quot; alt=&quot;Grace Mitchell White Iverson Cover&quot; width=&quot;1280&quot; height=&quot;1280&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/host-grotesk-font-sample.DcC8tIdt.webp&quot; alt=&quot;Host Grotesk Font Sample&quot; width=&quot;1536&quot; height=&quot;1536&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/improve-your-writing.jws5tUHv.webp&quot; alt=&quot;Improve Your Writing&quot; width=&quot;1598&quot; height=&quot;1800&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/la_tour_eiffel_logo.BdKPP5lW.webp&quot; alt=&quot;La Tour Eiffel Logo&quot; width=&quot;2000&quot; height=&quot;1500&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/noah-kalina-zine-detail.BYWjvvaA.webp&quot; alt=&quot;Noah Kalina Zine Detail&quot; width=&quot;1179&quot; height=&quot;1620&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/Normal_Computing_Tshirt.BuNciJsZ.webp&quot; alt=&quot;Normal Computing Tshirt&quot; width=&quot;2000&quot; height=&quot;2339&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/open-mike-eagle-tour-poster.XJpAx-lf.webp&quot; alt=&quot;Open Mike Eagle Tour Poster&quot; width=&quot;1080&quot; height=&quot;1350&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/orville-wright-pilots-license.C2Vo-paG.webp&quot; alt=&quot;Orville Wright Pilots License&quot; width=&quot;1024&quot; height=&quot;768&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/Pavel_Ripley-paper-scrap-collage__PSCS-A4-007.CC1ELZcg.webp&quot; alt=&quot;Pavel Ripley Paper Scrap Collage  PSCS A4 007&quot; width=&quot;1703&quot; height=&quot;2400&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/pavel-ripley-collage.BXUIV54u.webp&quot; alt=&quot;Pavel Ripley Collage&quot; width=&quot;1280&quot; height=&quot;2276&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/popeyemagazine.jp.vHJujFii.webp&quot; alt=&quot;Popeyemagazine.Jp&quot; width=&quot;2880&quot; height=&quot;4320&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/Portugalia_Coaster.DwKPcT_V.webp&quot; alt=&quot;Portugalia Coaster&quot; width=&quot;2000&quot; height=&quot;855&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/sable-game_www.shed-works_co_uk.lQ8rr8IH.webp&quot; alt=&quot;Sable Game Www.Shed Works Co Uk&quot; width=&quot;2500&quot; height=&quot;1406&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/stabilo-ad.r8ty1zx_.webp&quot; alt=&quot;Stabilo Ad&quot; width=&quot;1130&quot; height=&quot;1600&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/timepeek.app.CXbXd53m.webp&quot; alt=&quot;Timepeek.App&quot; width=&quot;1290&quot; height=&quot;2796&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/tucker-nichols-typography.CpcEtyKG.webp&quot; alt=&quot;Tucker Nichols Typography&quot; width=&quot;1800&quot; height=&quot;1156&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/websites-done-cheap.Bb2IRWsn.webp&quot; alt=&quot;Websites Done Cheap&quot; width=&quot;1430&quot; height=&quot;4562&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/when-i-believe-it.BdkAqwE2.webp&quot; alt=&quot;When I Believe It&quot; width=&quot;500&quot; height=&quot;405&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/why_architects_custom_type.Dpbp7UWi.webp&quot; alt=&quot;Why Architects Custom Type&quot; width=&quot;2000&quot; height=&quot;1333&quot;&gt;
&lt;img src=&quot;https://kyleio.com/_astro/writing-examples.DL0rcEt3.webp&quot; alt=&quot;Writing Examples&quot; width=&quot;2880&quot; height=&quot;4320&quot;&gt;&lt;/div&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/2025-aug-memex/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Halucidations</title><link>https://kyleio.com/p/project-halucidations/</link><guid isPermaLink="true">https://kyleio.com/p/project-halucidations/</guid><description>I made a weird little site that serves up inspirational ideas that seem profound… until they don’t</description><pubDate>Sat, 26 Jul 2025 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This project started with an idea and this prompt to ChatGPT:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Write 10 short inspirational quotes or phrases. At a glance, they should read profound, but on closer inspection, they make no sense&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Which resulted in a promising start:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sure! Here are 10 short inspirational quotes that *sound* deep at first—but if you think too hard about them, they unravel into delightful nonsense:  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Chase the horizon until the sky turns inside out // Be the echo of your own silence // When the clock forgets time, you’ll remember truth // Only a still river knows how to climb // Grow roots in the wind, and the storm becomes home // To leap is to arrive before you begin // The loudest whispers carve the deepest shadows // You are the footprint of a thought not yet walked // Melt your boundaries in the furnace of maybe // Balance is just falling in every direction at once&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;From that seed, I generated a lot more nonsense phrases (100+) and transformed them into a simple site with this prompt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I’d like to turn these into a simple web page that displays one quote at a time. Visually, the quote appears on something that looks like tissue paper. Something with an ephemeral vibe. Serif type. Soft, pastel color scheme. Maybe a blobby animated gradient in the background. There’s a ‘next’ button at the bottom of the screen to load the next phrase. Before you give me the answer, ask me everything you need to know to give me the best result possible.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; I’ve found finishing a prompt with this phrase — &lt;code&gt;Before you give me the answer, ask me everything you need to know to give me the best result possible.&lt;/code&gt; — acts as a requirements-gathering step that really clarifies intent and vision.&lt;/p&gt;
&lt;p&gt;In this case, it helped me clarify details like the quotes should be randomized and stored in a way that lets me easily add more over time; where I planned to host the site; the language and framework I wanted to use; and a feature or two that I ended up dropping, like a share button.&lt;/p&gt;
&lt;p&gt;ChatGPT’s output was a zip file with the HTML, CSS, and JavaScript files that I could use to test and tweak locally. I refined the CSS and typography to my tastes, prompted ChatGPT to add swipe support on mobile, then named and launched the site. Easy peasy.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://halucidations.kyleio.com/&quot;&gt;View the project&lt;/a&gt; ¦ &lt;a href=&quot;https://github.com/kylejohnston/halucidations&quot;&gt;GitHub repo&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;flex flex-row gap-2 wide&quot;&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/halucidations-unfinished.Bw6uvx5V_2oT5Ow.webp&quot; alt=&quot;Only the unfinished road can arrive.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;932&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/halucidations-deep.CeFH6qJH_184ysq.webp&quot; alt=&quot;The deeper the puddle, the taller your reflection.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;932&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/halucidations-balance.C1iZqRag_1dp7PR.webp&quot; alt=&quot;Balance is just falling in every direction at once.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;932&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;caption&quot;&gt;&lt;a href=&quot;https://halucidations.kyleio.com/&quot;&gt;Halucidations&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All in, this project took 1–2 hours to complete. One surprising detail of using ChatGPT for this; it would suggest features. For example, I asked ChatGPT to add swipe support on mobile. In addition to the code, it asked if I wanted to add haptic/tactile feedback or animations on swipe. I found out later that’s only supported on Android, but I liked the suggestion.&lt;/p&gt;
&lt;h2 id=&quot;tools-used&quot;&gt;Tools used&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt; for generating the quotes and the initial HTML/CSS/JS. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VS Code&lt;/strong&gt; for editing the code and making refinements. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt; for hosting the code. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt; for serving the site. (free)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://halucidations.kyleio.com/&quot;&gt;Check out Halucidations&lt;/a&gt;&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/project-halucidations/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Unlocks for side projects </title><link>https://kyleio.com/p/unlocks-for-side-projects/</link><guid isPermaLink="true">https://kyleio.com/p/unlocks-for-side-projects/</guid><description>A sampling of the techniques and tools I use to capture ideas, explore designs, and launch side projects</description><pubDate>Mon, 07 Jul 2025 19:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;capturing-ideas&quot;&gt;Capturing ideas&lt;/h2&gt;
&lt;p&gt;The biggest unlock is the simplest. Capture every idea. I keep a spark file (inspired by &lt;a href=&quot;https://medium.com/the-writers-room/the-spark-file-8d6e7df7ae58&quot;&gt;Steven Johnson’s technique&lt;/a&gt;). When inspiration strikes—like an idea for a new project or a feature for an existing project—I add it to the top of my spark file. I have a monthly reminder to review the file, and I scan it from top to bottom. Some ideas still seem good, but I might not have the time, tools, or skills to bring them to life. Other ideas don’t make sense anymore (in the ‘what was I thinking’ sense). I don’t remove anything from the list. If an idea leads to a project, I give it a checkmark and maybe add a launch date.&lt;/p&gt;
&lt;p&gt;Here’s a random sample of three ideas from my spark file:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use my markdown-based journal to generate a daily ‘on this day’ email. I created a working prototype, but haven’t finished it.&lt;/li&gt;
&lt;li&gt;Create a macOS app that highlights the current active window (helpful when I’m using multiple displays).&lt;/li&gt;
&lt;li&gt;Domain ideas for side projects. I find it’s better to write down ideas rather than buy and hoard domains I may never use. Not that I don’t own a bunch of domains I’ll never use…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;(For the productivity nerds, I manage my list in &lt;a href=&quot;https://obsidian.md/&quot;&gt;Obsidian&lt;/a&gt; and use &lt;a href=&quot;https://culturedcode.com/things/&quot;&gt;Things&lt;/a&gt; for recurring reminders.)&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;visual-inspiration-and-design&quot;&gt;Visual inspiration and design&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://kyleio.com/p/memex/&quot;&gt;MEMEX&lt;/a&gt; is one of my side projects I use to this day. It’s my personal collection of visual inspiration. Kind of a private, self-hosted Pinterest. When I’m starting a project, I grab visuals from MEMEX and create a mood board in my current design tool of choice…&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.figma.com/&quot;&gt;Figma&lt;/a&gt;. If you’re reading this, you’ve probably heard of it. For my side projects, I use a scratchpad file to build mood boards and explore design ideas. If I get serious about an idea, I’ll move it to its own file. For example, &lt;a href=&quot;https://www.figma.com/design/iojKTp83iYmleVE22Q0ey6/kyleio?node-id=1-3&amp;#x26;t=1QmgUQ7CIsUnLzwY-1&quot;&gt;here’s my Figma file&lt;/a&gt; for this site.&lt;/p&gt;
&lt;h2 id=&quot;prototyping-and-building&quot;&gt;Prototyping and building&lt;/h2&gt;
&lt;p&gt;When I want to see something in a browser as quickly as possible, I reach for &lt;a href=&quot;https://herd.laravel.com/&quot;&gt;Laravel Herd&lt;/a&gt;. On macOS, I open the &lt;code&gt;~/Sites/&lt;/code&gt; folder, add a new folder (like &lt;code&gt;myidea&lt;/code&gt;), add an &lt;code&gt;index.html&lt;/code&gt; file, and view the page in a browser at &lt;code&gt;myidea.test&lt;/code&gt;. I used Herd to make almost all the sites on my &lt;a href=&quot;https://kyleio.com/t/project/&quot;&gt;project page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more complex projects—like this site—&lt;a href=&quot;https://astro.build/&quot;&gt;Astro&lt;/a&gt; is my favorite web framework for building content-heavy sites. Even their &lt;a href=&quot;https://docs.astro.build/en/install-and-setup/&quot;&gt;basic starter&lt;/a&gt; makes it easy to start a new project and focus on building. If an idea leads somewhere, I can easily layer on design and features and launch the project. Astro powers &lt;a href=&quot;https://kyleio.com/p/project-bookshelf&quot;&gt;my bookshelf&lt;/a&gt; and a recipe site.&lt;/p&gt;
&lt;h2 id=&quot;hosting&quot;&gt;Hosting&lt;/h2&gt;
&lt;p&gt;When I’m ready to launch, I point &lt;a href=&quot;https://pages.cloudflare.com/&quot;&gt;Cloudflare Pages&lt;/a&gt; to my GitHub repo and the project is automatically deployed. I have used Netlify and Vercel (both great), but I prefer Cloudflare. They have a generous free tier that’s perfect for the scale of my projects and they offer low-cost domain registrations so I can manage everything in one place.&lt;/p&gt;
&lt;p&gt;That’s it. That’s the list. A modest set of techniques and tools that help me create side projects. Maybe they’ll help you create yours, too.&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/unlocks-for-side-projects/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Full-text feed in Astro</title><link>https://kyleio.com/p/til-full-text-feed-in-astro/</link><guid isPermaLink="true">https://kyleio.com/p/til-full-text-feed-in-astro/</guid><description>Generating a full-text RSS feed in Astro that supports Markdown and MDX files</description><pubDate>Wed, 02 Jul 2025 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I learned how to generate a full-text RSS feed in Astro! It handles both Markdown and MDX files. And most importantly, it handles any images or inline components used in those files.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tl;dr&lt;/strong&gt; I used &lt;a href=&quot;https://github.com/delucis/astro-blog-full-text-rss/&quot;&gt;this code&lt;/a&gt; from Chris Swithinbank. It works by rendering any posts in a content collection, then pipes &lt;em&gt;that&lt;/em&gt; content to Astro’s &lt;a href=&quot;https://docs.astro.build/en/recipes/rss/&quot;&gt;native RSS function&lt;/a&gt;. And it works like a charm.&lt;/p&gt;
&lt;p&gt;One gotcha I ran into implementing this: I followed &lt;a href=&quot;https://docs.astro.build/en/recipes/rss/&quot;&gt;Astro’s documentation&lt;/a&gt; for implementing a feed. They recommend creating a &lt;code&gt;rss.xml.js&lt;/code&gt; file. Chris’s solution includes type-checking, so the code didn’t work until I renamed the file &lt;code&gt;rss.xml.ts&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Obviously I had to customize details tailored to my environment. I also added a filter for draft posts, so those don’t get published to the feed, along with sorting by pubDate or tendDate, the latter of which I use to note when a post is updated.&lt;/p&gt;
&lt;h2 id=&quot;the-frustrating-journey-to-get-here&quot;&gt;The frustrating journey to get here&lt;/h2&gt;
&lt;p&gt;I’m using both Markdown and MDX files for my posts, which made this challenging to figure out.&lt;/p&gt;
&lt;p&gt;Astro’s official documentation for generating a basic RSS feed does handle both Markdown and MDX files, but it won’t generate a full-text feed. They describe a method for generating a full-text feed, but it only handles Markdown files.&lt;/p&gt;
&lt;p&gt;I tried (and failed) to vibe code a solution using a combination of CoPilot (Claude Sonnet 3.5), Claude Sonnet 4, and the model native to &lt;a href=&quot;https://www.diabrowser.com/&quot;&gt;Dia’s&lt;/a&gt; chat feature. They all got close – some with wonderfully complicated approaches – but they all failed when it came to handling the complexities of MDX files, namely the imports and images (i.e. embedded components) I’m using.&lt;/p&gt;
&lt;p&gt;Eventually, I found the answer in &lt;a href=&quot;https://astro.build/chat&quot;&gt;Astro’s Discord&lt;/a&gt;. A simple search for ‘full-text rss’ pointed me to Chris’s solution.&lt;/p&gt;
&lt;p&gt;My next step is to investigate why this isn’t part of Astro’s documentation. Based on my frustrated searches, many others have wrestled with this question.&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/til-full-text-feed-in-astro/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>My Figma workflow atm</title><link>https://kyleio.com/p/my-figma-workflow-atm/</link><guid isPermaLink="true">https://kyleio.com/p/my-figma-workflow-atm/</guid><description>My current approach to organizing work in Figma in the context of a fast-paced, collaborative product team.</description><pubDate>Mon, 23 Jun 2025 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;At work, a fellow product designer asked how other designers structure their Figma files to support collaboration and how we flow from roving design explorations to focused design specifications.&lt;/p&gt;
&lt;p&gt;In this post, I’ll cover how I organize my files, how I structure pages within those files, and how I move from design explorations to dev handoff.&lt;/p&gt;
&lt;h2 id=&quot;context-setting&quot;&gt;Context setting&lt;/h2&gt;
&lt;p&gt;We work in squads, which consist of a designer, product manager (PM), engineering manager, and 6-ish engineers. Each squad has a particular focus area and squads delivering on similar tracks of work are organized into groups. Which is important for the next bit, collaboration.&lt;/p&gt;
&lt;h3 id=&quot;who-do-i-collaborate-with&quot;&gt;Who do I collaborate with?&lt;/h3&gt;
&lt;p&gt;Multiple times a week, I share ideas and designs with my squad. I also join weekly critiques with the other product designers in my group where we share work and feedback. There are other touch points, but these key interactions shape how I think about organizing my work in Figma.&lt;/p&gt;
&lt;h2 id=&quot;how-i-organize-my-figma-files&quot;&gt;How I organize my Figma files&lt;/h2&gt;
&lt;p&gt;There are two ways I organized files, determined by the needs of the squad I’m working with.&lt;/p&gt;
&lt;p&gt;My primary squad works across several pages on the website, developing experiments and features scoped to a page. I’ve found the best approach is to sort my designs explorations into page-specific files. I might have a Figma file dedicated to the homepage, another for the product page, and so on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why this works&lt;/strong&gt; we run a &lt;em&gt;lot&lt;/em&gt; of experiments. This structure helps me quickly find the right designs when I’m sharing work in progress or getting feedback. It also limits the number of files I need to manage and makes it simple for my squad to find what they’re looking for because there’s one place to look.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Screenshot of my Figma file structure for a squad focused on multiple pages&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1440&quot; height=&quot;720&quot; src=&quot;https://kyleio.com/_astro/figma-file-org.BxzFiixq_1IukJ2.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Occasionally, I work with other squads who need design support and I adapt my approach. For example, I worked with an App squad who focused on a specific screen on iOS. Given the way the squad worked, I found it was best to create one file per feature or experiment.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Screenshot of my Figma file structure for a squad focused on a specific screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1440&quot; height=&quot;720&quot; src=&quot;https://kyleio.com/_astro/figma-file-org-alt.CflB9to1_Za31nA.webp&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;how-i-organize-pages-in-each-file&quot;&gt;How I organize pages in each file&lt;/h2&gt;
&lt;p&gt;I use a combination of &lt;strong&gt;sections&lt;/strong&gt; for different stages of the design process, and &lt;strong&gt;pages&lt;/strong&gt; for each project and steps (we have a custom plugin to automatically create these sections):&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Screenshot of how I organize pages in a Figma file&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1440&quot; height=&quot;720&quot; src=&quot;https://kyleio.com/_astro/figma-pages.hpwA5zO2_Z1acroc.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The sections&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Discovery&lt;/strong&gt; – includes pages for research and data, past work, and audits. Anything relevant to our track of work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design&lt;/strong&gt; – the busiest section of any file. Each experiment or feature gets its own page, sorted by date and topic (e.g. &lt;code&gt;2025-JUN · Feature exploration&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review&lt;/strong&gt; – when I’m ready to share work for feedback, I’ll create a new page in this section and copy a specific design and relevant context from the design section. This helps focus the feedback because people don’t have to hunt through all my design explorations. It also helps me keep track of any feedback (in the form of comments in Figma).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design specs&lt;/strong&gt; – this is the handoff to engineers, and source of truth for what we build. I’ll cover this in more detail in the next section.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;design-explorations&quot;&gt;Design explorations&lt;/h2&gt;
&lt;p&gt;On each design page in my file, a single exploration may go through several rounds of changes and refinements – starting with a bunch of exploratory concepts all the way through the final design we’ve agreed to build. All those designs are contained on a single page, grouped using Figma’s sections. Keeping everything on a single page allows me to grab elements I want to reuse and makes it easy for others to reference earlier ideas when we’re weighing different treatments. Using sections allows me to share links to specific stages and tailor what I’m sharing based on who will be looking at the work and the type of feedback I need. This is a great way to see how designs evolve based on all the thoughtful feedback people share – I can see how designs and ideas get sharper as they move through the process.&lt;/p&gt;
&lt;h2 id=&quot;how-i-prep-designs-for-handoff&quot;&gt;How I prep designs for handoff&lt;/h2&gt;
&lt;p&gt;When we agree a design is done and ready to hand off for development, I create a new page under &lt;strong&gt;design specs&lt;/strong&gt;. I name each page using a ticket number and experiment title (&lt;code&gt;ENG-2424 · Feature name&lt;/code&gt;). Each page includes the treatment and control designs, page-level specs, specs for key features on the page, any states we need to account for, and specs for up to six breakpoints. Each of these are grouped into sections so I can point people to the right place.&lt;/p&gt;
&lt;p&gt;I arrived at this process through a combination of experience and by applying a design process to my design process. If I have trouble finding a design or notice others getting lost or confused – I note that as a signal there’s room for improvement. Like any good design process, I take time to think through what’s working and not working, iterate on the system, and observe whether my changes helped improve collaboration.&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/my-figma-workflow-atm/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>The Wadsworth Constant</title><link>https://kyleio.com/p/til-wadsworth-constant/</link><guid isPermaLink="true">https://kyleio.com/p/til-wadsworth-constant/</guid><description>On just how much to skip things you see online</description><pubDate>Sat, 03 May 2025 19:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Wadsworth Constant says that you can safely skip the first 30% of anything you see online.&lt;/strong&gt; (It was meant for YouTube videos, but it applies just as well to writing).&lt;br&gt;
This is one of those annoying pieces of advice that remains applicable even after you know it. Somehow, whenever I finish a draft, my first few paragraphs almost always contain ideas that were necessary for writing the rest of the piece, but that aren’t necessary for understanding it. It’s like I’m giving someone a tour of my hometown and I start by showing them all the dead ends.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Via this excellent post, &lt;a href=&quot;https://www.experimental-history.com/p/28-slightly-rude-notes-on-writing&quot;&gt;28 slightly rude notes on writing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Soon after I learned about the Wadsworth Constant, I spotted it in a &lt;a href=&quot;https://www.secretorum.life/p/the-grand-encyclopedia-of-eponymous&quot;&gt;big list of eponymous laws&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This &lt;em&gt;also&lt;/em&gt; relates to a communication principle from the military I learned recently, &lt;a href=&quot;https://en.wikipedia.org/wiki/BLUF_(communication)&quot;&gt;BLUF&lt;/a&gt;, or bottom line up front. Meaning communicate key information &lt;em&gt;first&lt;/em&gt;. Which goes against the Wadwworth Constant, but now those ideas are connected in my mind.&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/til-wadsworth-constant/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>‘Before you answer…’</title><link>https://kyleio.com/p/til-before-you-answer-prompt/</link><guid isPermaLink="true">https://kyleio.com/p/til-before-you-answer-prompt/</guid><description>Getting better LLM output</description><pubDate>Wed, 02 Apr 2025 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TIL you can greatly improve the quality of an answer you get from an LLM if you  include this in your prompt: &lt;code&gt;Before you give me the answer, ask me everything you need to know to give me the best result possible.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Using this technique, I’ve found cases where I had the answer all along and explaining things to the LLM helped me find it. Which I’ve since learned is basically &lt;a href=&quot;https://en.wikipedia.org/wiki/Rubber_duck_debugging&quot;&gt;rubber duck programming&lt;/a&gt;.&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/til-before-you-answer-prompt/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Spiral Visualizer</title><link>https://kyleio.com/p/project-spiral-visualizer/</link><guid isPermaLink="true">https://kyleio.com/p/project-spiral-visualizer/</guid><description>I made a vogel spiral visualizer</description><pubDate>Sat, 08 Feb 2025 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a web-based project I created (with the help of an LLM) to support a concept I have for an art project. The visualizer’s controls allow me to play with the parameters of a Vogel spiral and see in real time how they affect the shape. Once I find a shape I like, I can export it as an SVG to use in other contexts.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://spiral-b2y.pages.dev/&quot;&gt;View the project&lt;/a&gt; ¦ &lt;a href=&quot;https://github.com/kylejohnston/spiral&quot;&gt;GitHub repo&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;https://kyleio.com/_astro/spiral-visualizer.Cf6nUE4m_Z1G6s4a.webp&quot; alt=&quot;The Spiral Visualizer&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;840&quot; class=&quot;border border-neutral-200 shadow-xl rounded-sm wide&quot;&gt;
&lt;h2 id=&quot;how-i-collaborated-with-ai-in-this-project&quot;&gt;How I collaborated with AI in this project&lt;/h2&gt;
&lt;p&gt;I tried to create this project on my own with &lt;a href=&quot;https://processing.org/&quot;&gt;Processing&lt;/a&gt;, but I never had luck with producing the fine-grained controls. When I discovered &lt;a href=&quot;https://support.anthropic.com/en/articles/9487310-what-are-artifacts-and-how-do-i-use-them&quot;&gt;Claude Artifacts&lt;/a&gt;, I was able to build a web-based tool with a few simple prompts. Once the bones were in place, I took over and customized the design, defaults, and outputs to suit the needs of my project.&lt;/p&gt;
&lt;h2 id=&quot;whats-a-vogel-spiral&quot;&gt;What’s a Vogel Spiral?&lt;/h2&gt;
&lt;p&gt;A Vogel spiral is a pattern of points spiraling outward in a very natural, super-efficient way, based on the golden angle. It was described by the German biophysicist &lt;a href=&quot;https://www.sciencedirect.com/science/article/abs/pii/0025556479900804&quot;&gt;Helmut Vogel&lt;/a&gt; in 1979 when he was modeling sunflower seed arrangements.&lt;/p&gt;
&lt;h2 id=&quot;tools-used&quot;&gt;Tools used&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude&lt;/strong&gt; for generating the HTML/CSS/JS. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VS Code&lt;/strong&gt; for editing the code and making refinements. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt; for hosting the code. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt; for serving the site. (free)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://spiral-b2y.pages.dev/&quot;&gt;Check out the Spiral Visualizer&lt;/a&gt;&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/project-spiral-visualizer/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>WordWiz</title><link>https://kyleio.com/p/project-wordwiz/</link><guid isPermaLink="true">https://kyleio.com/p/project-wordwiz/</guid><description>I made a word game</description><pubDate>Mon, 01 Jul 2024 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://wordwiz.xyz/&quot;&gt;WordWiz&lt;/a&gt; is a word game I created in 2024. It’s a simple game where you choose a letter then add as many words as you can think of that start with that letter.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://wordwiz.xyz/&quot;&gt;View the project&lt;/a&gt; ¦ &lt;a href=&quot;https://github.com/kylejohnston/wordwiz&quot;&gt;GitHub repo&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;the-concept&quot;&gt;The concept&lt;/h2&gt;
&lt;p&gt;The idea for the game was inspired by a newly-retired family member who wanted a fun, casual way to keep their mind sharp, but didn’t like the competitiveness or complexity of other popular word games.&lt;/p&gt;
&lt;div class=&quot;flex flex-row gap-2 wide&quot;&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/wordwiz-desktop.CIXPd8Ui_1LoLcp.webp&quot; alt=&quot;WordWiz.xyz, desktop&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1440&quot; height=&quot;900&quot; class=&quot;border border-neutral-200 shadow-xl rounded-sm&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/wordwiz-mweb.CrVct2kt_1YVeWW.webp&quot; alt=&quot;WordWiz.xyz, mweb&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;900&quot; class=&quot;border border-neutral-200 shadow-xl rounded-sm&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;how-llms-unlocked-this-project&quot;&gt;How LLMs unlocked this project&lt;/h2&gt;
&lt;p&gt;We had joked about finding a game where you type as many words as you could think of. I built a simple proof of concept with ChatGPT to test the mechanics of the idea. From that seed, I quickly iterated and added features like score tracking, an optional timer, and motivational phrases provided by &lt;a href=&quot;https://elevenlabs.io/&quot;&gt;ElevenLabs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once the core features were in place, I took over and customized the design. I created a logo and color scheme and optimized the design for desktop and mobile browsers. The game was well-received and at least one person in the world enjoys playing it each day!&lt;/p&gt;
&lt;h2 id=&quot;tools-used&quot;&gt;Tools used&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT &amp;amp; Claude&lt;/strong&gt; for core game functionality. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Figma&lt;/strong&gt; for design and branding. (pro plan)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VS Code&lt;/strong&gt; for frontend code. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt; for hosting the code. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt; for serving the site and domain registration. (free hosting, $11.18 for the domain)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://wordwiz.xyz/&quot;&gt;Check out WordWiz&lt;/a&gt;&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/project-wordwiz/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>.new &amp; multiple accounts</title><link>https://kyleio.com/p/til-dot-new/</link><guid isPermaLink="true">https://kyleio.com/p/til-dot-new/</guid><description>TIL how to use &apos;.new&apos; when you have multiple Google accounts</description><pubDate>Sat, 03 Jun 2023 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TIL if you use Google’s &lt;code&gt;.new&lt;/code&gt; URLs – like &lt;code&gt;docs.new&lt;/code&gt; or &lt;code&gt;sheets.new&lt;/code&gt; – &lt;em&gt;and&lt;/em&gt; you have multiple Google accounts, you can choose which account is used for new files by using: &lt;code&gt;docs.new/1&lt;/code&gt;, &lt;code&gt;docs.new/2&lt;/code&gt;, etc.&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/til-dot-new/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>t000.day</title><link>https://kyleio.com/p/project-t000day/</link><guid isPermaLink="true">https://kyleio.com/p/project-t000day/</guid><description>I made a site to see the current day of the year</description><pubDate>Tue, 18 Apr 2023 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://t000.day/&quot;&gt;t000.day&lt;/a&gt; is a single-serving site that answers a simple question: what day of the year is it?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://t000.day/&quot;&gt;View the project&lt;/a&gt; ¦ &lt;a href=&quot;https://github.com/kylejohnston/today&quot;&gt;GitHub repo&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;flex flex-row gap-2 wide&quot;&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/t000day-01.CnUA8rx0_1axHAH.webp&quot; alt=&quot;Back in time&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;932&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/t000day-02.DMLRNSIC_Z1TeFGh.webp&quot; alt=&quot;Today&apos;s day&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;932&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/t000day-03.CUZSOtRe_29eaip.webp&quot; alt=&quot;Future&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;932&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The idea for this project was inspired by a frustration with my 365 photo project. Occasionally, I would lose track of the day and I needed a quick and simple way to get back on track. There are plenty sites with this information, but they’re often either (A) poorly designed or (B) loaded down with extra content like ads.&lt;/p&gt;
&lt;h2 id=&quot;how-llms-unlocked-this-project&quot;&gt;How LLMs unlocked this project&lt;/h2&gt;
&lt;p&gt;When LLM-based coding tools hit the scene, I dusted off this idea and used ChatGPT to turn it into a super-simple, working site. Under the hood, it’s bascially an HTML file with few JavaScript functions. The JavaScript determines the date, adds the correct suffix, and renders it on the page.&lt;/p&gt;
&lt;p&gt;Since launching, I’ve added a few quality-of-life features, like parsing the day based on the URL. Now, I can add any date to the URL (starting in &lt;a href=&quot;https://t000.day/1900-09-09&quot;&gt;1900&lt;/a&gt;) and see what the day was (or &lt;a href=&quot;https://t000.day/2096-04-10&quot;&gt;will be&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id=&quot;tools-used&quot;&gt;Tools used&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Figma&lt;/strong&gt; for exploring designs. (pro plan)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT &amp;amp; Claude&lt;/strong&gt; for JavaScript-based date calculations. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VS Code&lt;/strong&gt; for editing the code and making refinements. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt; for hosting the code. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt; for serving the site and domain registration. (free hosting, $10.18 for the domain)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://t000.day/&quot;&gt;Check out t000.day&lt;/a&gt;&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/project-t000day/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Bookshelf</title><link>https://kyleio.com/p/project-bookshelf/</link><guid isPermaLink="true">https://kyleio.com/p/project-bookshelf/</guid><description>I made a site to track the books I&apos;ve read</description><pubDate>Thu, 01 Sep 2022 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I created a bookshelf to track the books I’ve read since I started tracking my reading in 2009-ish. It’s a custom design, built with &lt;a href=&quot;https://astro.build/&quot;&gt;Astro&lt;/a&gt;, my current favorite web framework.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://books.kyleio.com/&quot;&gt;View the project&lt;/a&gt; ¦ &lt;a href=&quot;https://github.com/kylejohnston/astro_bookshelf&quot;&gt;GitHub repo&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;flex flex-row gap-2 wide&quot;&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/bookshelf-desktop.C2R24K_7_L2jEp.webp&quot; alt=&quot;My bookshelf, desktop&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1440&quot; height=&quot;900&quot; class=&quot;border border-neutral-200 rounded-sm shadow-xl&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/bookshelf-mweb.Uj1V0BNZ_TpwDV.webp&quot; alt=&quot;My bookshelf, mweb&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;900&quot; class=&quot;border border-neutral-200 rounded-sm shadow-xl&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;caption&quot;&gt;&lt;a href=&quot;https://books.kyleio.com/&quot;&gt;Homepage&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;flex flex-row gap-2&quot;&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/book-page-desktop.BiR57Zws_Z26AwsM.webp&quot; alt=&quot;Book detail page, desktop&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1440&quot; height=&quot;1080&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/book-page-mweb.NtyqpWDN_Z2e4E98.webp&quot; alt=&quot;Book detail page, mweb&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;430&quot; height=&quot;1080&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;caption&quot;&gt;&lt;a href=&quot;https://books.kyleio.com/book/the-creative-act&quot;&gt;Book detail page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since launching the site in 2022, I’ve continued to tinker with it and add features. I’ve added search, pagination, page transitions, &lt;a href=&quot;https://books.kyleio.com/list&quot;&gt;a list view&lt;/a&gt;, and more.&lt;/p&gt;
&lt;p&gt;If you’re curious about the design and tooling, &lt;a href=&quot;https://books.kyleio.com/about&quot;&gt;the about page&lt;/a&gt; has all the details. And &lt;a href=&quot;https://github.com/kylejohnston/astro_bookshelf&quot;&gt;the source code is available on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;tools-used&quot;&gt;Tools used&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Figma&lt;/strong&gt; for design explorations. (pro plan)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Astro&lt;/strong&gt; for compiling and building the static site. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VS Code&lt;/strong&gt; for frontend code. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt; for hosting the code. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt; for serving the site. (free)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://books.kyleio.com/&quot;&gt;Check out my bookshelf&lt;/a&gt;&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/project-bookshelf/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>Sketching with Code</title><link>https://kyleio.com/p/sketching-with-code/</link><guid isPermaLink="true">https://kyleio.com/p/sketching-with-code/</guid><description>A peek into my Processing process</description><pubDate>Wed, 31 Oct 2018 19:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://kyleio.com/_astro/code-sketch.BLzZ1RRR_2oihYT.webp&quot; alt=&quot;A colorful, abstract pattern generated wit Processing&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1920&quot; height=&quot;1080&quot; class=&quot;border border-neutral-200 shadow-xl rounded-sm wide&quot;&gt;
&lt;p class=&quot;caption&quot;&gt;Read on to learn how I made this image…&lt;/p&gt;
&lt;p&gt;I’ve been spending some of my free time sketching in code using Processing and the Hype library. There are tons or resources and inspiration out there, but I’ve learned a lot by joining &lt;a href=&quot;https://joshuadavis.com/&quot;&gt;Joshua Davis’&lt;/a&gt; Patreon page, where he shares the methods to his generative art madness. His lessons helped me generate this video:&lt;/p&gt;
 
&lt;h2 id=&quot;color-texture-and-algorithm&quot;&gt;Color, texture, and algorithm&lt;/h2&gt;
&lt;p&gt;One of takeaways I especially liked from Josh’s tutorials was the idea that you can generate endless number of patterns by manipulating three variables: (1) color, (2) texture, and (3) the algorithm.&lt;/p&gt;
&lt;p&gt;To speed up my process, I’ve started to build a library of colors and textures I can use in my code sketches. When I have time to create a new sketch, I grab a few elements from my library and jump right into code. Like anything else, when you start to look for inspiration, you’ll see it everywhere.&lt;/p&gt;
&lt;h3 id=&quot;color&quot;&gt;Color&lt;/h3&gt;
&lt;p&gt;My color inspiration came from the plethora of Apple logos created to promote an October 2018 event. I had saved of number of the logos from &lt;a href=&quot;https://imgur.com/a/all-of-apple-logos-from-october-30th-event-invites-ufybGk6&quot;&gt;this gallery&lt;/a&gt;, so I picked three of my favorites, created gradient scales in Figma, then output those gradients as PNGs.&lt;/p&gt;
&lt;img src=&quot;https://kyleio.com/_astro/color-palette.DLbqM0ap_ZsRVXc.webp&quot; alt=&quot;Apple logo variants and color scales&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2000&quot; height=&quot;588&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;
&lt;p class=&quot;caption&quot;&gt;My color inspiration and gradient scales&lt;/p&gt;
&lt;h3 id=&quot;texture&quot;&gt;Texture&lt;/h3&gt;
&lt;p&gt;My texture inspiration came from a case study of Uber’s 2018 rebrand. I spotted a cool tile pattern in one of the photos featured in their photography guidelines, and created several graphics based on those patterns.&lt;/p&gt;
&lt;div class=&quot;flex flex-row gap-2 wide&quot;&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/texture-input.oFh8-Axu_Z2dWu6.webp&quot; alt=&quot;Texture inspiration from an Uber case study.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1112&quot; height=&quot;425&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://kyleio.com/_astro/texture-output.Drb58tXr_J2oeK.webp&quot; alt=&quot;Shapes I created based on the inspiration.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;890&quot; height=&quot;425&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;caption&quot;&gt;The inspiration and the output&lt;/p&gt;
&lt;h3 id=&quot;algorithm&quot;&gt;Algorithm&lt;/h3&gt;
&lt;p&gt;Using my colors and textures and the code Josh shared, I started playing with different combinations of elements until I found one I liked. You can find &lt;a href=&quot;https://github.com/kylejohnston/code-sketches/blob/master/09_texture/tx0001/build/build.pde&quot;&gt;my final source code on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;turning-a-processing-sketch-into-a-video&quot;&gt;Turning a Processing sketch into a video&lt;/h2&gt;
&lt;p&gt;There are a number of ways to generate a video from a Processing sketch; my current preferred technique is using a snippet of code that exports each frame of the sketch as a high-res image. I wasn’t exactly sure how many frames it would take to create a usable video, so I started by exporting 5,000 jpegs. After ~12 minutes of render time, I looked through the jpegs to find a good stopping point for my video — frame 2,580 was the winner. It’s easily divisible by 30 and 60, which is great for my purposes because 1 frame = 1 second of video. Simple math!&lt;/p&gt;
&lt;p&gt;I trashed the jpegs, changed the output format to TIFF (for a crisp, high-res image) and output my images. 2 minutes later, I had 2,580 TIFFs ready to use.&lt;/p&gt;
&lt;p&gt;I like to use Adobe Premiere to create my videos because it gives me a lot of control over outputs and effects. I start by importing all the TIFFs into Premiere, add those to the timeline, set the frame duration to 1 second, then export a video. I’m still trying to find a combination of export settings that I’m happy with; so far starting with Premiere’s default settings for Vimeo and changing VBR to 2-pass has delivered the best results. In this case, the result is this slow-paced video:&lt;/p&gt;
 
&lt;p&gt;To make things more interesting, I import my first video into a new Premiere project. Now, I can play with the playback speed, visual effects (mirroring is always fun to try), and color treatments. In this case, I changed the duration to 10 seconds, which dramatically speeds up the animation, and exported a new video (using the same settings from the first pass), resulting in my final video:&lt;/p&gt;
 
&lt;h2 id=&quot;its-just-that-easy&quot;&gt;It’s just that easy!&lt;/h2&gt;
&lt;p&gt;Once you get the steps down, this is a relatively quick process — and the possibilities are endless. If you think it looks interesting, I highly encourage you to jump in and try it for yourself. Josh’s Patreon posts are a great starting point and cover everything you need to get started.&lt;/p&gt;
&lt;p&gt;Happy sketching!&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/sketching-with-code/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>MEMEX</title><link>https://kyleio.com/p/project-memex/</link><guid isPermaLink="true">https://kyleio.com/p/project-memex/</guid><description>I made a tool to collect visual inspiration</description><pubDate>Sun, 01 Jul 2018 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I created MEMEX as a tool to gather design inspiration. For years, I had used tools like Pinterest or standalone macOS apps to gather inspiration, but they were either too complex, too basic, too expensive; the list goes on.&lt;/p&gt;
&lt;p&gt;I wanted something where I could drop images into a folder and see them in a browser. When I discovered PHP had a simple method to support this, MEMEX was born. Under the hood, a snippet of PHP looks for any image in a folder and renders it on the page. Simple!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://memex.flow14.com/&quot;&gt;View the project&lt;/a&gt; ¦ &lt;a href=&quot;https://github.com/kylejohnston/memex&quot;&gt;GitHub repo&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;https://kyleio.com/_astro/memex-design.qz9PY2OJ_Z49Ich.webp&quot; alt=&quot;MEMEX, visual design page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1440&quot; height=&quot;900&quot; class=&quot;border border-neutral-200 shadow-xl rounded-sm wide&quot;&gt;
&lt;p class=&quot;caption&quot;&gt;&lt;a href=&quot;https://memex.flow14.com/design.php&quot;&gt;Design Index&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;https://kyleio.com/_astro/memex-art.5QnVH23R_16cIy1.webp&quot; alt=&quot;MEMEX, art &amp;#38; illustration page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1440&quot; height=&quot;900&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;
&lt;p class=&quot;caption&quot;&gt;&lt;a href=&quot;https://memex.flow14.com/art-illustration.php&quot;&gt;Art &amp;amp; Illustration page&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;https://kyleio.com/_astro/memex-nav.CxdVmxGR_ivgqT.webp&quot; alt=&quot;MEMEX, navigation&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1440&quot; height=&quot;900&quot; class=&quot;border border-neutral-200 rounded-sm&quot;&gt;
&lt;p class=&quot;caption&quot;&gt;&lt;a href=&quot;https://memex.flow14.com/all.php#menu&quot;&gt;Navigation view&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I run a local version of the site that’s always up-to-date (and speedy). I also maintain &lt;a href=&quot;https://memex.flow14.com&quot;&gt;a public version&lt;/a&gt; so I can browse for inspiration when I’m away from home.&lt;/p&gt;
&lt;p&gt;Since creating MEMEX in 2018, I’ve regularly refined it. I’ve restructured the nav several times, randomized the image rendering, added an inbox, and more. I’ve added a few LLM-assisted features, like displaying image counts for each page, and created index pages that render images from all the subdirectories for my largest categories, &lt;a href=&quot;https://memex.flow14.com/design.php&quot;&gt;visual design&lt;/a&gt; and &lt;a href=&quot;https://memex.flow14.com/websites.php&quot;&gt;web design&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you’re curious about the design and tooling, there’s &lt;a href=&quot;https://memex.flow14.com/colophon.php&quot;&gt;a colophon&lt;/a&gt;. And I keep &lt;a href=&quot;https://memex.flow14.com/colophon.php&quot;&gt;a changelog&lt;/a&gt; to track how the site is evolving. The &lt;a href=&quot;https://github.com/kylejohnston/memex&quot;&gt;source code is available on GitHub&lt;/a&gt; and there’s even a  &lt;a href=&quot;https://github.com/kylejohnston/memex-core&quot;&gt;boilerplate version&lt;/a&gt; if you want to roll your own version.&lt;/p&gt;
&lt;h2 id=&quot;tools-used&quot;&gt;Tools used&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Figma&lt;/strong&gt; for design explorations. (pro plan)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PHP&lt;/strong&gt; for the core functionality. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VS Code&lt;/strong&gt; for coding. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt; for hosting the code. (free)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Digital Ocean&lt;/strong&gt; for serving the site. ($12/month)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://memex.flow14.com/&quot;&gt;Explore the MEMEX&lt;/a&gt;&lt;/p&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/project-memex/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item><item><title>The best design tool I’ve used</title><link>https://kyleio.com/p/best-design-tool-ive-used/</link><guid isPermaLink="true">https://kyleio.com/p/best-design-tool-ive-used/</guid><description>Spoiler alert: it’s Figma.</description><pubDate>Tue, 10 Apr 2018 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently dove headfirst into Figma, a browser-based(!) design tool made for modern UI and web design. After two-ish weeks of steady usage, I’m ready to call it: it’s easily the best design tool I’ve used.&lt;/p&gt;
&lt;h2 id=&quot;why-now&quot;&gt;Why now&lt;/h2&gt;
&lt;p&gt;When Figma rolled out in late 2015, it looked impressive. But at the time, I had too many excuses holding me back from giving it a shot. My team’s workload and deadlines didn’t lend themselves to learning new tools. The tools I was already using were good enough. The list goes on.&lt;/p&gt;
&lt;p&gt;Today, I’m running my own &lt;a href=&quot;https://www.flow14.com/&quot;&gt;design studio&lt;/a&gt; and I’m taking time to reevaluate the tools I rely on. Sketch is impressive — it runs circles around the Adobe tools I use most — but I’m hesitant to spring for a license. I’ve already paid for an annual Adobe Creative Cloud subscription, and it’s good enough for my day-to-day design needs.&lt;/p&gt;
&lt;p&gt;But when a Figma-authored post on &lt;a href=&quot;https://www.figma.com/blog/the-6-design-trends-john-maeda-predicted-in-his-state-of-the-union/&quot;&gt;John Maeda’s Design in Tech report&lt;/a&gt; floated through my stream, I decided to give Figma another look. Reading comparisons of Figma and Sketch, even somewhat &lt;a href=&quot;https://medium.com/@mengto/figma-vs-sketch-c01e5e74eddd&quot;&gt;dated posts&lt;/a&gt; comparing their merits put Figma on top. Plus, the price is right for a longer-term test — it’s free for up to 2 editors.&lt;/p&gt;
&lt;h2 id=&quot;getting-started&quot;&gt;Getting started&lt;/h2&gt;
&lt;p&gt;After a quick and easy sign up process, I was happy to find Figma provides a handful of starter files. Reviewing their sample file was a great way to learn the UI, tools, and basic tips and tricks. It’s a great onboarding experience— they’ve eliminated the dreaded blank page effect and made it super-easy to get started and get comfortable with the tools.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Figma&amp;amp;#x27;s starter files&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1473&quot; height=&quot;364&quot; src=&quot;https://kyleio.com/_astro/starter-files.D7joVzHT_Z1KMt8i.webp&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once I was comfortable with the basics, I created my first screens. I keep a &lt;a href=&quot;https://medium.com/the-writers-room/the-spark-file-8d6e7df7ae58&quot;&gt;Spark File&lt;/a&gt; — a running list of hunches, ideas, and inspiration — for just this sort of thing. I chose a simple app idea — it’s dedicated to displaying the day of the year. I have a long-running 365 photography project, so I’m a frequent visitor to poorly-designed online DoTY calendars. I’ve always thought a simple app would make my life easier.&lt;/p&gt;
&lt;p&gt;After a few quick sketches, I jumped over to Figma and started designing. Later that day, I had screens ready to share. By the following day, I had basic interactions prototyped and was able to try them on my phone thanks to Figma’s impressively easy-to-use mirroring app.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;From sketch to screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;860&quot; height=&quot;640&quot; src=&quot;https://kyleio.com/_astro/sketch-screen.DtAE69Bw_17yf2T.webp&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;since-my-first-starter-exercise-ive-used-figma-to-make&quot;&gt;Since my first starter exercise, I’ve used Figma to make:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Page mockups for a website I’m working on — thanks to Figma’s components, I should be able to easily create simple style guide and pattern library for my clients.&lt;/li&gt;
&lt;li&gt;A library of regularly used logos.&lt;/li&gt;
&lt;li&gt;A scratchpad for random ideas, which I’ve used to quickly try new responsive layouts, test grids, generate patterns, and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Simply put: Figma is a powerful design tool. It’s easy to get started: you can use it in its native environment, the browser (which is crazy impressive). They also offer a slick desktop app. And compared to Adobe’s software, it’s much easier on my battery and CPU.&lt;/p&gt;
&lt;h2 id=&quot;for-the-curious-minds&quot;&gt;For the curious minds&lt;/h2&gt;
&lt;p&gt;So if you’re a designer who’s been on the fence about &lt;a href=&quot;https://www.figma.com/&quot;&gt;trying Figma&lt;/a&gt;, use a little time during a lunch break, evening, or a bit of time on the weekend to give it a shot. There’s a good chance you’ll get hooked.&lt;/p&gt;
&lt;p&gt;For the curious, here are a few of the articles and resources I found most helpful as I was getting started:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The aforementioned &lt;a href=&quot;https://medium.com/@mengto/figma-vs-sketch-c01e5e74eddd&quot;&gt;Figma vs Sketch comparison&lt;/a&gt;. A little dated, but the points have aged well.&lt;/li&gt;
&lt;li&gt;For wrapping your head around the potential of Figma: &lt;a href=&quot;https://medium.com/nicole-the-designer/how-to-streamline-your-ui-ux-workflow-with-figma-b72c30596435&quot;&gt;How to streamline your UI/UX workflow with Figma&lt;/a&gt; from Prototypr and &lt;a href=&quot;https://www.figma.com/best-practices/component-architecture/&quot;&gt;Component architecture in Figma&lt;/a&gt; from Figma Design&lt;/li&gt;
&lt;li&gt;For tips and tricks, Figma regularly shares roundups — &lt;a href=&quot;https://www.figma.com/blog/figmatip-roundup-2-0/&quot;&gt;FigmaTip Roundup 2.0&lt;/a&gt; and &lt;a href=&quot;https://www.figma.com/blog/figmatip-roundup-6-0/&quot;&gt;FigmaTip Roundup 6.0&lt;/a&gt; were especially helpful.&lt;/li&gt;
&lt;li&gt;Getting more advanced: &lt;a href=&quot;https://www.figma.com/blog/figmatip-roundup-6-0/&quot;&gt;Waiting for a sign to start building your design team’s component library?&lt;/a&gt; – on how Gusto used Figma to build a component library.&lt;/li&gt;
&lt;/ol&gt;
    &lt;hr /&gt;
    &lt;p style=&quot;font-size: 0.875em; color: #666;&quot;&gt;
      Thank you for using RSS!
      &lt;a href=&quot;mailto:hello@flow14.com&quot;&gt;Reply via email&lt;/a&gt;
      or &lt;a href=&quot;https://kyleio.com/p/best-design-tool-ive-used/&quot;&gt;view this post on the web&lt;/a&gt;.
    &lt;/p&gt;
  </content:encoded></item></channel></rss>