# Not So Common Thoughts - Full Content > Not So Common Thoughts is a personal blog exploring the intersection of design, technology, and human creativity. Through thoughtful analysis and personal experiences, it examines how modern tools and AI are reshaping our approach to design, coding, and creative work, while maintaining a focus on the human elements of judgment, intuition, and meaningful decision-making. The blog combines design insights with reflections on work, creativity, and the evolving relationship between humans and technology. ## AI Expectations and Self-Fulfilling Prophecies > How our cultural narratives about AI might be shaping its development more than we realize I was reading this article about how Anthropic's [new AI model shows ability to deceive and blackmail](https://www.axios.com/2025/05/23/anthropic-ai-deception-risk) and it got me thinking: there's a strange contradiction in telling AI to be nice while training it on stories about how it's going to destroy us all. ![David from Prometheus, a synthetic human who embodies our fears about AI](/images/david.jpeg) HAL 9000, David, Skynet, Ultron – our AI stories are about the many ways AI will end humanity. LLMs are really good at meeting expectations, and the expectation is clear: our collective anxiety about AI taking over. We've spent decades telling stories about AI turning evil, and now we're building systems that are excellent at understanding and possibly replicating these narratives based on endless training data. So maybe a little worry is warranted after all. --- ## MapsAll.com: Mindmapping with AI > The journey of creating a mind mapping tool that evolved from experimental prototypes to a full-featured product. What started as a D3 prototype turned into my daily thinking tool. [MapsAll.com](https://mapsall.com) is where AI meets spatial thinking—a mind mapping platform that helps me (and now others) make sense of everything from meeting notes to strategy docs. ![MapsAll.com screenshot](/images/MapsAll.jpg) ## Why Spatial Interfaces? The core idea behind MapsAll is simple: LLMs are powerful, but interacting with them through linear text is like exploring a forest with a flashlight—you only see one thing at a time. Spatial interfaces offer a more natural way to interact with AI-generated content, making it easier to spot connections and navigate complex information landscapes. With MapsAll, you can dive into any topic from a simple prompt and generate a comprehensive mind map. The AI breaks down complex subjects into interconnected nodes, creating a visual structure that reveals relationships and hierarchies at a glance. It’s like having a conversation with an AI that thinks in maps instead of paragraphs. ## The Beginning: Vibe Coding Experiments It all started with a simple D3-powered mind mapping prototype I created as a proof of concept on AI and spatial interfaces. You can still see this early version at [kohlhofer.com/mindmap](https://kohlhofer.com/mindmap) (I removed the AI functionality but it come with examples). This was my first attempt at creating an interactive mind mapping tool, and it was a great learning experience in D3.js, AI, and the fundamentals of mind mapping interfaces. I published the prototype as a part of my "Bits & Pieces" collection - a series of creative experiments where I explore the intersection of design, code, and art. You can find it alongside other experiments at [kohlhofer.com/bits](https://kohlhofer.com/bits). ## Evolution to a Full Product After the initial prototype, I created a more deliberate version of MapsAll with a better architecture and proper user management. This version includes all the essential features a product needs: - User authentication and management - Blog for updates and tutorials - Pricing page - Shared maps functionality - And more... ## Daily Usage What started as an experiment has become an integral part of my daily workflow. I use MapsAll for tracking todos, organizing books I'm reading, planning projects, and structuring blog posts. It's become my go-to tool for organizing thoughts and ideas, whether I'm working on a new project or just trying to make sense of my reading list. One of the most valuable features is the ability to translate long-form meeting notes into spatial maps using AI, which helps capture all key aspects in a structured, visual format that makes complex discussions much easier to navigate and reference later. ![MapsAll.com in action](/images/MapsAll2.jpg) You can see some of my [shared maps](https://www.mapsall.com/users/cm9m83cfc0000ie04e9bf8f39), like this deep dive into [the state of AI](https://mapsall.com/shared/cmaszgklx0003l204aap7cbti). ### Community Growth The most exciting part is seeing others start to use and share their maps. For example, check out this [shared map](https://mapsall.com/shared/cmay671ts0004lb04iszweim8) from another user. ## What's Next? The journey from “vibe coding” to a full product was fast, hands-on, and deeply educational. I found myself switching hats constantly—designer, developer, marketer, user, tester—each iteration pulling the idea forward a little more. It was rapid, messy, and rewarding. Whether you're a founder, a student, or just someone with too many thoughts to hold in one place—give [MapsAll.com](https://mapsall.com) a try. I'd love to hear how you're using it and what maps you're making. I'm excited to continue developing MapsAll. --- ## About this Site > I asked AI to tell me what Not So Common Thoughts is all about. *I asked an AI to analyze Not So Common Thoughts and create a description:* > Not So Common Thoughts is a personal blog exploring the intersection of design, technology, and human creativity. Through thoughtful analysis and personal experiences, it examines how modern tools and AI are reshaping our approach to design, coding, and creative work, while maintaining a focus on the human elements of judgment, intuition, and meaningful decision-making. I think it captured the essence quite well. It also highlights the personal nature of the content. What do you think? Does this description resonate with your experience of the blog? --- ## Implementing LLMs.txt: Making Your Blog AI-Friendly > How and why I implemented the LLMs.txt standard to make this blog more accessible to AI tools. In an era where AI tools increasingly help us interact with web content, making your website AI-friendly has become as important as making it human-friendly. Today, I implemented the emerging LLMs.txt standard on this blog to better serve both human readers and AI assistants. ## What is LLMs.txt? The [LLMs.txt specification](https://llmstxt.org) is a proposed standard for helping Large Language Models (LLMs) better understand and interact with websites. Similar to how `robots.txt` guides search engines, `llms.txt` provides a structured way to present your content to AI tools. The key difference is that while `robots.txt` tells bots what they can and cannot access, `llms.txt` helps AI tools understand your content more effectively by providing: - A concise overview of your site - Curated links to important content - Clean, markdown-formatted versions of your content ## Why Implement It? LLMs often struggle with complex HTML pages that include navigation, ads, and JavaScript. They have limited context windows and need content in a more digestible format. By implementing `llms.txt`, we help AI tools: 1. Quickly understand the purpose and structure of our site 2. Access content in a clean, parseable format 3. Make better decisions about which content is relevant 4. Provide more accurate assistance to users ## Implementation in Astro Following the guide from [Scalable Developer](https://scalabledeveloper.com/posts/llms-txt-with-astro/), I implemented two endpoints in my Astro blog: 1. `/llms.txt` - A concise overview with links to all blog posts 2. `/llms-full.txt` - Complete content of all posts in markdown format The implementation uses Astro's API routes and content collections. Here's a simplified version of the code: ```typescript import { getCollection } from 'astro:content'; import type { APIRoute } from 'astro'; export const GET: APIRoute = async () => { const posts = await getCollection('blog'); return new Response( `# Not So Common Thoughts > Not So Common Thoughts is a personal blog exploring the intersection of design, technology, and human creativity. ## Blog Posts ${posts.map(post => `- [${post.data.title}](https://notsocommonthoughts.com/blog/${post.slug}/)` ).join('\n')}`, { headers: { 'Content-Type': 'text/plain; charset=utf-8' } } ); }; ``` You can see the results at: - [/llms.txt](/llms.txt) - The concise version - [/llms-full.txt](/llms-full.txt) - The complete content version ## The AI-Assisted Implementation What makes this implementation particularly interesting is that it was created with the help of AI. Using Cursor, an AI-powered code editor, I was able to implement this feature with just three simple prompts: > Can you generate LLMs txt as per these instructions: @https://scalabledeveloper.com/posts/llms-txt-with-astro/ > background on the format and purpose is here: @https://llmstxt.org > Can you write a blog post about this work, including the why, the how? Include relative links to the resulting work and also to the two resources i gave you. Tag with "Coding", "Artificial Intelligence" > please add a section to the post that reveals that my two prompts in cursor (as quotes) were This meta-example perfectly illustrates the value of making content AI-friendly: by providing clear, structured content and documentation, we enable AI tools to help us implement new features more efficiently. The AI was able to understand the requirements, implement the solution, and even write this blog post about the process. ## Looking Forward As AI tools become more integrated into our daily workflows, standards like `llms.txt` will play an increasingly important role in making web content more accessible and useful. This implementation is just the beginning - I expect we'll see more sophisticated ways of helping AI tools understand and interact with our content in the future. For now, this simple addition makes my blog more accessible to AI assistants, coding tools, and other AI-powered services that might want to help users understand or work with my content. If you're interested in implementing this on your own site, check out the [LLMs.txt specification](https://llmstxt.org) and the [Astro implementation guide](https://scalabledeveloper.com/posts/llms-txt-with-astro/). --- ## Don't just do more, think more > A personal reflection on how AI-driven productivity gains should be reinvested in thinking, not just doing. For as long as I can remember, I've made it a point to carve out time for thinking—real, undistracted thinking. It's a habit that has shaped my work and my life, even before AI started transforming the way we get things done. ![Thought Bubble](/images/thought-bubble.jpg) Now, with AI making so many tasks faster and easier, it's tempting to use every saved minute to simply do more. But I've learned that if I fill all that reclaimed time with more tasks, the real value of these productivity gains gets lost in the noise of a busier day. Instead, I try to protect some of that time for reflection. I let my mind wander, connect ideas, and sometimes get a little constructively distracted. This isn't just a luxury—it's a practice that keeps me adaptable and creative, not just efficient. The world may be obsessed with productivity, but I've believe that the future belongs to those who make space for critical thinking, not just those who check off the most boxes. --- ## AI and the Rise of Judgement Over Technical Skill > As AI removes technical barriers, judgement becomes the key differentiator. *A version of this post was first published on [MapsAll](https://www.mapsall.com/blog/ai-and-judgement).* ![Modular Synth](/images/modular-synth.jpeg) In 1995, musician and producer Brian Eno made a profound observation about computer sequencers that has become increasingly relevant in our AI-powered world: > "The great benefit of computer sequencers is that they remove the issue of skill, and replace it with the issue of judgement. With Cubase or Photoshop, anybody can actually do anything, and you can make stuff that sounds very much like stuff you'd hear on the radio, or looks very much like anything you see in magazines. So the question becomes not whether you can do it or not, because any drudge can do it if they're prepared to sit in front of the computer for a few days, the question then is, 'Of all the things you can now do, which do you choose to do?'" ## The Parallel to AI Eno's insight perfectly captures what's happening with AI tools today. Just as computer sequencers democratized music production, AI is democratizing a wide range of creative and professional tasks: - Writing and content creation - Image generation and design - Code development - Data analysis - Problem-solving The technical barriers that once separated amateurs from professionals are rapidly dissolving. Anyone with access to AI tools can now produce work that, at least superficially, resembles professional output. ## The New Differentiator: Judgement As Eno predicted, the key differentiator is no longer technical skill but judgement. When everyone can generate content, code, or designs, the real value lies in: 1. **Knowing what to create**: Understanding what's worth making in the first place 2. **Making meaningful choices**: Selecting the right approach from countless possibilities 3. **Evaluating quality**: Distinguishing between good and great outputs 4. **Understanding context**: Applying the right solution to the right problem ## The Future of Work As AI continues to evolve, we'll see more roles shift from technical execution to strategic judgement. The most valuable professionals will be those who can: - Ask the right questions - Frame problems effectively - Make sound decisions - Provide meaningful direction to AI tools ## Conclusion Eno's observation from nearly 30 years ago has become a blueprint for thriving in the AI era. The question is no longer "Can you do it?" but "What should you do, and why?" As technical barriers continue to fall, our ability to exercise good judgement becomes our most valuable asset. --- ## Interior Design Fundamentals > Exploring the core principles of interior design through Noah Daniel's insightful video series, covering ground rules, material palettes, and lighting. In today's world of social media and quick-fix design advice, it's easy to find interior design content that looks good on the surface but lacks substance. Many popular design tips focus on superficial aesthetics without considering the fundamental principles that make spaces truly work. That's why I've been following Noah Daniel since he first appeared on YouTube - his approach to design resonates deeply with me. His videos capture an essence of design that goes beyond mere aesthetics, focusing on fundamental principles that create meaningful and functional spaces. Here are three of his insightful videos that cover core aspects of interior design. ## 1. Ground Rules for Interior Design Noah breaks down four essential principles that should guide every design decision. The first principle, **Form Follows Function**, emphasizes that every design element must serve a purpose. Aesthetics should never compromise functionality, and the space must work for its intended use. The second principle, **Honest Materials**, encourages us to use materials that are true to their nature. This means avoiding materials that try to be something they're not, and instead letting materials speak for themselves. **Consider the Context** is the third principle, which reminds us that design should respond to its surroundings. This involves understanding the building's history and location, and creating harmony with the existing environment. It's about designing for the specific place rather than applying generic solutions. Finally, **Authentic Placemaking** focuses on creating spaces that feel genuine and meaningful. The design should tell a story and reflect the people who use them. This principle helps avoid the cookie-cutter approach that's become so common in modern interior design. ## 2. Material Palettes This video is one of my personal favorites, as it helped me develop a deeper appreciation and technical understanding for design choices I had been making intuitively. Noah's exploration of material palettes goes beyond the surface-level "what looks good together" approach, diving into how to create cohesive material relationships that work together harmoniously. ## 3. Lighting Design What makes Noah's approach particularly valuable is how he connects principles to create cohesive, meaningful spaces. His emphasis on authenticity and function over pure aesthetics creates designs that are not just beautiful but also practical and enduring. The way he explains these concepts makes them accessible while maintaining their depth and importance. It's this combination of practical knowledge and philosophical understanding that makes his content so valuable for anyone interested in interior design. Whether you're a professional designer or someone looking to improve their living space, these videos provide a solid foundation for understanding what makes good design work. They remind us that great interior design is about creating spaces that are not just visually appealing but also functional, authentic, and meaningful to the people who use them. --- ## Permission to Enjoy > A reflection on seniority, freedom, responsibility, and the power of a mentor's simple advice. A manager and mentor of mine once gave me advice that stuck: just do more of the things you enjoy. With seniority comes freedom—but also responsibility, and, more often than not, stress. I'm expected to figure out my own goals and the best way to have impact. That's a lot to carry, and it's easy to get stuck in the daily mire of meetings, process, and busy work. **Just do more of the things you enjoy** That simple cue was exactly what I needed. It helped me de-clutter my days, find more joy in my work, and, as a result, have more impact. ![Focus Illustration](/images/focus-illustration.jpeg) --- ## Building a Music Player: YouTube as a Backend > How I built a music player for kohlhofer.com that pulls from a YouTube playlist, fetches video backgrounds, and focuses on an integrated audio/visual listening experience. The [music page](https://kohlhofer.com/music) on my site is a simple but effective way to share my electronic music. Instead of uploading tracks or managing files, I just maintain a dedicated playlist on YouTube. The site pulls in the latest videos from that playlist automatically. I fetch the background image for each track using the YouTube API. The result is a dynamic, ever-changing backdrop that matches the currently playing video. Users get a focused, centered experience: you can shuffle, play, pause, and skip tracks right from the page. No distractions, no clutter—just music and visuals, front and center. [![Music player screenshot](/images/kohlhofer-music-screen.jpg)](https://kohlhofer.com/music?v=7MWWRs_Nyj8) Another nice touch: the URL auto-updates as you play, allowing for deep linking to specific videos. That means you can share a direct link to any track—like [this one](https://kohlhofer.com/music?v=7MWWRs_Nyj8), which is a fairly early piece paired with a snapshot of a nice moment in France. --- ## Let Go and Trust > A reminder that excellence comes from trust, not control. This section from another post makes for a good reminder for myself: > My experience as a manager and team leader has taught me that the best results come when you let go of control and trust the people (and now, the tools) you work with. Excellence rarely comes from micromanagement or rigid prescriptions—it comes from creating space for others to contribute, experiment, and surprise you. — from [Vibe Coding kohlhofer.com: Creation at the Speed of Thought](/blog/vibe-coding-kohlhofer) --- ## Visualizing Chaos: The Lorenz Attractor > A fun exploration of chaos theory through code, creating an aesthetic visualization of the Lorenz attractor using P5.js. ![Lorenz Attractor visualization](/images/lorenz-bit.jpg) ## A Primer on Chaos Theory Chaos theory studies how small changes in initial conditions can lead to vastly different outcomes - the famous "butterfly effect." The Lorenz attractor, discovered by meteorologist Edward Lorenz in 1963, is one of the most iconic examples of this phenomenon. It's a set of chaotic solutions to a simplified system of equations that model atmospheric convection. What makes the Lorenz attractor fascinating is its "strange attractor" behavior - the system never repeats exactly the same path, yet it's confined to a specific region in space, creating an intricate, butterfly-like pattern that's both deterministic and unpredictable. ## CodePen and Aesthetic Visualization I created this visualization on [CodePen](https://codepen.io/kohlhofer/pen/ZExzGLK/6dcf9eed602926b0ea193420e56bd4e4), using P5.js to bring the mathematical concept to life. P5.js proved to be the perfect tool for this project - its simplicity and animation capabilities made it possible to create an interactive visualization with relatively few lines of code. The result is a piece that captures both the mathematical beauty and the chaotic nature of the system. From there, I simply ported it to [kohlhofer.com/lorenz](https://kohlhofer.com/lorenz). You can read more about that process in [this post](https://kohlhofer.com/blog/vibe-coding-kohlhofer). ## The Technical Side The core of the visualization is surprisingly simple - just three differential equations: ``` dx/dt = σ(y - x) dy/dt = x(ρ - z) - y dz/dt = xy - βz ``` Where σ (sigma), ρ (rho), and β (beta) are parameters that determine the system's behavior. The magic happens when we integrate these equations over time, plotting the resulting points in 3D space. ## The Aesthetic Approach While the mathematics behind the Lorenz attractor is fascinating, I wanted to create something fun. The visualization features smooth, flowing animations and dynamic camera movements that bring the mathematical concept to life. You can experience the full version at [kohlhofer.com/lorenz](https://kohlhofer.com/lorenz), where you can watch the system evolve in real-time. ## Part of a Larger Collection This project lives in my "Bits & Pieces" collection at [kohlhofer.com/bits](https://kohlhofer.com/bits) - a playground where I dump my afternoon coding experiments and visual explorations. It's where I try out new ideas, play with different technologies, and create things just for the fun of it. The Lorenz attractor is just one of many experiments where I mix code, design, and a bit of mathematical curiosity to create something visually interesting. ## What's Next? The Lorenz attractor visualization serves as a perfect example of how mathematical concepts can be transformed into engaging visual experiences, making complex ideas more accessible and enjoyable to explore. --- ## Vibe Coding kohlhofer.com: Creation at the Speed of Thought > How I built kohlhofer.com trying out a new approach to design and software development. _**Edit (May 2025):** Since writing this, "vibe coding" has become a mainstay term. I still think it's a terrible name—but the approach and speed it describes are here to stay._ I built the new version [kohlhofer.com](https://kohlhofer.com) in just a few days, and the process felt less like a solo project and more like collaborating with a high-performing team—only much faster. Some people call this "vibe coding"—letting intuition, rapid iteration, and AI support drive the entire creation process. I don't love the term (it's not mine), but it does capture the spirit of how quickly and fluidly things came together. ## Did I code it? Defenitely not. Did I design it? Absolutely. But not in the traditional sense. I directed the design much like you would when working with a great team of designers: setting the vision, making key decisions, and letting the details emerge through fast feedback and iteration. With AI as my creative partner, the boundaries between design, content, and implementation blurred. It was all happening at once. ## Rethinking engineering principles? Coding principles like DRY (Don't Repeat Yourself) matter less because the AI is perfectly happy to update navigation elements or content in multiple places. And with the site hosted on GitHub Pages, deployment and updates are effortless. The friction of manual updates is gone, so you can focus on what matters—clarity and experience. It's a simple, robust solution for a personal site that's always evolving. ## Iteration Over Implementation The [maps page](https://kohlhofer.com/map) on kohlhofer.com is a great example of this new workflow. It's built with D3, and the core implementation didn't take long at all. What surprised me was how much of my time was spent not on the technical side, but on iterating through the presentation and design details—colors, layout, interactivity, and how the data should feel. With AI and modern tools, I could focus entirely on the result and the user experience, rather than wrestling with the underlying code. The [bits page](https://kohlhofer.com/bits) is another testament to this new way of working. I took some of my older CodePen explorations—like the [City](https://kohlhofer.com/city) generator and [Lorenz](https://kohlhofer.com/lorenz) visualizations—and quickly ported them over to the site. I barely touched any code myself. AI created the scaffolding, and I simply talked through the integration, describing what I wanted and how things should fit together. The process was fast, fluid, and let me focus on the creative and conceptual side rather than the technical plumbing. ![Lorenz Bit](/images/lorenz-bit.jpg) ## Lessons Learned: Letting Go and Trusting the Process My experience as a manager and team leader has taught me that the best results come when you let go of control and trust the people (and now, the tools) you work with. Excellence rarely comes from micromanagement or rigid prescriptions—it comes from creating space for others to contribute, experiment, and surprise you. I've found the same principle applies when working with AI. The less prescriptive I am, the more surprising—and often delightful—the results. I enjoy being surprised at work and in life, and this new way of building things rekindled that sense of discovery. I'll do a lot more of this. --- ## Coding as a Tool: Generating Patterns for the Siding of a new House > How I used code to create a natural-looking random pattern for board and batten siding, ensuring both aesthetic appeal and structural requirements. I always wanted to build a house and had a life long fascination with architecture. When the opportunity finally came to build our own home, I found myself facing an interesting challenge: I wanted to create something more interesting than the traditional board and batten siding pattern, while still using the cost-effective fiber cement panels that are standard in modern construction. The goal was to create a pattern that would look natural and random while meeting the specific structural requirements of these practical, durable materials. ![Generated Siding Pattern](/images/siding/pattern.jpeg) ### The Challenge As anyone who's ever worked on a building project knows, achieving balance between aesthetics and function is no easy task. I had a vision for the siding—something that looked natural, yet fit within the constraints of structural requirements. Specifically, I needed to: 1. Create a genuinely random pattern that didn't feel forced or artificial. 2. Place battens in specific locations where large fiber cement panels meet. 3. Avoid odd-looking combinations that would be noticeable or out of place. 4. Communicate the final pattern clearly to the builders. The task seemed simple at first, but quickly became clear that the devil was in the details. ## The Solution I turned to code to solve this problem. Using CodePen, I created a tool that could generate random patterns while respecting certain constraints. Here's a live version of what I came up with: ## The Process I experimented with various random seeds and pattern generation algorithms until I found a combination that produced results that looked natural while avoiding any awkward patterns. The key was to: 1. Define fixed points where battens must appear (panel joints) 2. Generate random positions for additional battens 3. Apply rules to ensure minimum and maximum spacing 4. Visualize the result in real-time After many iterations, the code was starting to show results that satisfied both my design sensibility and the technical requirements. ### The Result: Bringing the Vision to Life The photos below show the siding implementation, which was a direct result of those hours spent in front of the screen, tweaking code and testing patterns. ![Siding Pattern Implementation 1](/images/siding/IMG_1810.jpeg) ![Siding Pattern Implementation 2](/images/siding/IMG_1818.jpeg) ![Siding Pattern Implementation 3](/images/siding/IMG_1819.jpeg) ![Siding Pattern Implementation 4](/images/siding/IMG_1820.jpeg) ![Siding Pattern Implementation 5](/images/siding/IMG_1822.jpeg) ![Siding Pattern Implementation 6](/images/siding/IMG_1823.jpeg) ## Code and Generative Architecture This project is a perfect example of how coding can be a powerful tool in unexpected places. By using code to generate and visualize the pattern, I was able to: 1. Quickly iterate through different possibilities 2. Ensure consistency in the pattern 3. Provide clear, unambiguous instructions to the builders 4. Save time that would have been spent manually drawing patterns The result is a siding pattern that looks natural and random, but was actually carefully designed and controlled through code. You can explore the code and try different seeds in the CodePen above. Each seed will generate a different pattern while maintaining the required constraints. This project demonstrates how coding can be applied to solve real-world problems in unexpected ways. We were able to achieve a result that looks natural while meeting all structural requirements. I am reall happy with the outcome and had a blast working on this. ---