<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Blogs on warpedvisions.org</title><link>https://warpedvisions.org/blog/</link><description>Recent content in Blogs on warpedvisions.org</description><image><title>warpedvisions.org</title><url>https://warpedvisions.org/images/og-default.png</url><link>https://warpedvisions.org/images/og-default.png</link></image><generator>Hugo -- 0.169.0</generator><language>en-us</language><lastBuildDate>Thu, 29 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://warpedvisions.org/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>B♥2C: building a cookbook with Hugo</title><link>https://warpedvisions.org/blog/2026/building-a-cookbook-with-hugo/</link><pubDate>Thu, 29 Oct 2026 00:00:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2026/building-a-cookbook-with-hugo/</guid><description>&lt;p&gt;My cookbook is live. &lt;a href="https://bruce-loves-to-cook.ca/"&gt;Bruce loves to cook&lt;/a&gt; has 229 recipes, plus essays, methods, and engineering-style food logs, all of them Markdown files, built into a site with Hugo.&lt;/p&gt;
&lt;p&gt;I started the project with a simple objective: grab the best recipes and publish them on a simple site. I finished this version in a few hours, with a few more hours of automation, polish, and thinking about the shape of the files and folders.&lt;/p&gt;</description></item><item><title>What I'm about, in plain text</title><link>https://warpedvisions.org/blog/2026/what-im-about-in-plain-text/</link><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2026/what-im-about-in-plain-text/</guid><description>What I believe about text, teaching, and making things, and what this year&amp;#39;s projects taught me.</description></item><item><title>Turkey dinner as a metaphor for scaling software</title><link>https://warpedvisions.org/blog/2025/turkey-dinner-as-a-metaphor-for-scaling-software/</link><pubDate>Sun, 26 Oct 2025 10:30:03 -0700</pubDate><guid>https://warpedvisions.org/blog/2025/turkey-dinner-as-a-metaphor-for-scaling-software/</guid><description>&lt;p&gt;Years ago, something clicked when I read about Anthony Bourdain&amp;rsquo;s approach to feeding crowds. It was his &lt;a href="https://www.amazon.ca/Appetites-Cookbook-Anthony-Bourdain/dp/0062409956"&gt;stunt turkey&lt;/a&gt; technique, where he cooks an extra turkey the week before the actual event. It made me think about how we release software. It seemed absurd at first: why would you cook two turkeys for one dinner?&lt;/p&gt;
&lt;p&gt;Then I realized what he was really doing: load balancing across time.&lt;/p&gt;
&lt;p&gt;That extra turkey unlocks a cascade of optimizations that aren&amp;rsquo;t obvious until you think through the dependencies. Turkey stock made a week ahead means better gravy and more flavourful stuffing. It also means practice runs; most people only roast a turkey once or twice a year, so that stunt turkey is essentially a fire drill. Having stock and rendered fat ready lets you prep other components days in advance. Suddenly your Thanksgiving-day workflow changes from frantic juggling to orchestrated execution.&lt;/p&gt;</description></item><item><title>The hidden world principle: why great software reveals itself slowly</title><link>https://warpedvisions.org/blog/2025/the-hidden-world-principle-why-great-software-reveals-itself/</link><pubDate>Sat, 04 Oct 2025 18:00:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2025/the-hidden-world-principle-why-great-software-reveals-itself/</guid><description>&lt;p&gt;There&amp;rsquo;s a moment in &lt;em&gt;The Legend of Zelda: The Wind Waker&lt;/em&gt; that fundamentally changes how you see the game world. You&amp;rsquo;ve spent dozens of hours sailing between islands, comfortable with the rhythm of ocean exploration. The world feels complete; a vast blue expanse dotted with discoveries. Then you dive beneath the waves for the first time and find Hyrule Castle, perfectly preserved in an air bubble at the bottom of the sea. Suddenly you realize you&amp;rsquo;ve been sailing over an entire civilization. The ocean wasn&amp;rsquo;t the world, it was just the surface.&lt;/p&gt;</description></item><item><title>The feels of nostalgia can drive great design</title><link>https://warpedvisions.org/blog/2025/the-feels-of-nostalgia-can-drive-great-design/</link><pubDate>Wed, 01 Oct 2025 12:00:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2025/the-feels-of-nostalgia-can-drive-great-design/</guid><description>&lt;p&gt;I spent three hours last night hand-drawing pixel fonts in &lt;a href="https://pixenapp.com/"&gt;Pixen&lt;/a&gt;, placing each dot with care. At 8x8 pixels, it was just like the many character sets I designed for my Atari 600XL in the early 1980s. Each pixel mattered then because we only had 128 characters to work with and maybe 16KB of RAM, or up to 64KB if you were lucky enough to have a RAM extension or a more expensive 800XL. Today, each pixel matters for completely different reasons: not because of technical constraints, but because those limitations force a special kind of creativity.&lt;/p&gt;</description></item><item><title>When technology gets boring, innovation begins</title><link>https://warpedvisions.org/blog/2025/when-technology-gets-boring-innovation-begins/</link><pubDate>Sat, 13 Sep 2025 08:00:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2025/when-technology-gets-boring-innovation-begins/</guid><description>&lt;p&gt;I was debugging a power issue with my thermostat last week when it hit me: I had no idea how many batteries were in my house. Not approximately. Not even close.&lt;/p&gt;
&lt;p&gt;Twenty years ago, I knew exactly where every battery lived; the TV remote, the kitchen clock, maybe a flashlight. Today? They&amp;rsquo;re everywhere and nowhere. In sensors, in remotes, in devices I&amp;rsquo;ve forgotten I own. They&amp;rsquo;ve crossed the threshold from technology to invisible infrastructure.&lt;/p&gt;</description></item><item><title>Wired, tired in the AI gold rush</title><link>https://warpedvisions.org/blog/2025/wired-tired-in-the-ai-gold-rush/</link><pubDate>Thu, 11 Sep 2025 12:00:00 -0700</pubDate><guid>https://warpedvisions.org/blog/2025/wired-tired-in-the-ai-gold-rush/</guid><description>&lt;p&gt;We&amp;rsquo;ve been watching the AI gold rush unfold for the past two years now, and honestly? It&amp;rsquo;s giving me serious déjà vu. Remember the early days of mobile apps when everyone and their cousin was building a flashlight app? Or when &amp;ldquo;on the blockchain&amp;rdquo; was supposedly going to revolutionize everything from grocery shopping to dental records?&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re in that phase with AI right now. The phase where adding &amp;ldquo;AI-powered&amp;rdquo; to your deck is supposed to make VCs throw money at you. Where every developer with a weekend and an OpenAI API key thinks they&amp;rsquo;re building the next unicorn. Where demos that only work some of the time are being pitched as production-ready solutions.&lt;/p&gt;</description></item><item><title>After the prompt: how AI disappears into everything</title><link>https://warpedvisions.org/blog/2025/after-the-prompt-how-ai-disappears-into-everything/</link><pubDate>Sat, 06 Sep 2025 10:00:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2025/after-the-prompt-how-ai-disappears-into-everything/</guid><description>&lt;p&gt;I&amp;rsquo;ve been thinking about the current AI moment, and I can&amp;rsquo;t shake the feeling that we&amp;rsquo;re about to hit a wall. Not a failure wall, more like the wall Web 1.0 hit right before everything changed. Remember when every startup was &amp;ldquo;webr.com&amp;rdquo; and the height of innovation was animated GIFs? We&amp;rsquo;re in the AI equivalent of that era right now.&lt;/p&gt;
&lt;p&gt;Just as Web 2.0 wasn&amp;rsquo;t really about AJAX or rounded corners, AI 2.0 won&amp;rsquo;t be about better chatbots. We&amp;rsquo;re about to witness a fundamental shift in how AI gets built, deployed, and integrated into our daily tools. And honestly? It can&amp;rsquo;t come soon enough.&lt;/p&gt;</description></item><item><title>The physics hidden in your codebase</title><link>https://warpedvisions.org/blog/2025/the-physics-hidden-in-your-codebase/</link><pubDate>Tue, 02 Sep 2025 11:02:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2025/the-physics-hidden-in-your-codebase/</guid><description>&lt;p&gt;Evolution has a weird obsession with crabs. At least five times, nature has taken some random crustacean and said, &amp;ldquo;you know what would work better? A crab.&amp;rdquo; But it&amp;rsquo;s not just crabs, evolution continues to reinvent the wheel. Trees evolved independently more than 40 times. Many different types of eyes appeared in dozens of unrelated lineages. Flight emerged in insects, pterosaurs, birds, and bats, each independently.&lt;/p&gt;
&lt;p&gt;These aren&amp;rsquo;t coincidences. They&amp;rsquo;re examples that good design is inevitable.&lt;/p&gt;</description></item><item><title>The comfort of home bases for creative work</title><link>https://warpedvisions.org/blog/2025/the-comfort-of-home-bases-for-creative-work/</link><pubDate>Mon, 25 Aug 2025 10:00:01 -0700</pubDate><guid>https://warpedvisions.org/blog/2025/the-comfort-of-home-bases-for-creative-work/</guid><description>&lt;p&gt;There&amp;rsquo;s a feeling you get when everything clicks into place. Not the eureka moment of solving a problem, but something more fundamental: the deep satisfaction of being exactly where you need to be, with exactly what you need, arranged exactly how it should be. It&amp;rsquo;s the feeling of &lt;em&gt;home&lt;/em&gt;, but applied to the spaces where we create.&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t about aesthetics or luxury. It&amp;rsquo;s about something more primal: the human need to nest, to claim territory, to shape our environment until it shapes us back. And nowhere is this more crucial than in the spaces where we do our most demanding creative work.&lt;/p&gt;</description></item><item><title>The addictive math of fake internet points</title><link>https://warpedvisions.org/blog/2025/the-addictive-math-of-fake-internet-points/</link><pubDate>Sun, 24 Aug 2025 11:05:06 -0700</pubDate><guid>https://warpedvisions.org/blog/2025/the-addictive-math-of-fake-internet-points/</guid><description>&lt;p&gt;As a hobby, I&amp;rsquo;ve been perfecting various burger recipes. It both feeds us &lt;em&gt;and&lt;/em&gt; gives me something to incrementally improve. Add fake internet points to the mix, and now I&amp;rsquo;m motivated to post photographs of my creations. The feedback and reinforcement these fake points provide are enough to keep me consistently taking those photos, and making those burgers. A little push can be good.&lt;/p&gt;
&lt;p&gt;But here&amp;rsquo;s the thing about fake internet points: they work. Absurdly well. Here I am, a grown adult who builds software for a living, getting genuinely excited because 47 strangers clicked an arrow next to a photo of my latest smash burger creation. The dopamine hit is real, even when I know exactly what&amp;rsquo;s happening to my brain.&lt;/p&gt;</description></item><item><title>Getting unstuck when using LLMs for coding</title><link>https://warpedvisions.org/blog/2025/getting-unstuck-when-using-llms-for-coding/</link><pubDate>Sat, 16 Aug 2025 16:51:26 -0700</pubDate><guid>https://warpedvisions.org/blog/2025/getting-unstuck-when-using-llms-for-coding/</guid><description>&lt;p&gt;Your AI coding assistant hasn&amp;rsquo;t gotten worse; you&amp;rsquo;ve just hit the ceiling of what your current approach can handle. &amp;ldquo;My LLM coding tools have been serving me hot garbage lately&amp;rdquo; is a complaint I see weekly on Reddit. Same tool, same developer, suddenly worse results.&lt;/p&gt;
&lt;p&gt;These threads are full of developers convinced their AI assistant has degraded overnight. Same prompts that worked last month suddenly fall over. The tool must be broken, right?&lt;/p&gt;</description></item><item><title>The hidden cost of AI-assisted development: cognitive fatigue</title><link>https://warpedvisions.org/blog/2025/hitting-the-wall-at-ai-speed/</link><pubDate>Sun, 10 Aug 2025 15:27:03 -0700</pubDate><guid>https://warpedvisions.org/blog/2025/hitting-the-wall-at-ai-speed/</guid><description>&lt;p&gt;After three months of AI-assisted development, I&amp;rsquo;m more productive than ever. I&amp;rsquo;m also mentally exhausted in ways I didn&amp;rsquo;t expect.&lt;/p&gt;
&lt;p&gt;The productivity gains are real—I can go from sketch to working prototype in hours instead of days. But there&amp;rsquo;s a hidden cost that we&amp;rsquo;re not talking about: the tools fundamentally change the cognitive load of programming. Instead of being tired from wrestling with implementation details, I&amp;rsquo;m exhausted from operating constantly at the architecture and design level.&lt;/p&gt;</description></item><item><title>How I use AI tools, and how they are changing software development</title><link>https://warpedvisions.org/blog/2025/how-i-use-ai-tools-and-how-they-are-changing-software-development/</link><pubDate>Thu, 07 Aug 2025 14:14:30 -0700</pubDate><guid>https://warpedvisions.org/blog/2025/how-i-use-ai-tools-and-how-they-are-changing-software-development/</guid><description>&lt;p&gt;Something weird happened the other day. I found myself sketching more than I had in years. The pages quickly filled with the doodles, wireframes, and half-formed ideas that used to live in my head until they died of neglect. The reason? I can finally get from sketch to fleshed-out concept fast enough that my ideas don&amp;rsquo;t evaporate.&lt;/p&gt;
&lt;p&gt;After a few months of serious AI-assisted development, I&amp;rsquo;m starting to understand what these tools actually do well, and more importantly, where they will cheerfully lead you off a cliff. They don&amp;rsquo;t replace thinking, they amplify it. But only if you understand the difference between augmenting your expertise and outsourcing your judgment.&lt;/p&gt;</description></item><item><title>Lazy terminal scripts for macOS</title><link>https://warpedvisions.org/blog/2025/easy-terminal-scripts-for-macos/</link><pubDate>Mon, 04 Aug 2025 12:38:58 -0700</pubDate><guid>https://warpedvisions.org/blog/2025/easy-terminal-scripts-for-macos/</guid><description>&lt;p&gt;After thirty-something years of working in terminals, I&amp;rsquo;ve developed a pretty strong bias toward doing things from the command line. It can be faster for me to navigate around using scripts and shortcuts than clicking through GUI hierarchies. The muscle memory is there, the automation possibilities are endless, and frankly, it just feels more direct.&lt;/p&gt;
&lt;p&gt;The problem is that GUI applications don&amp;rsquo;t always want to cooperate with this workflow. You end up breaking your flow to hunt through Spotlight, dig around in Finder, or, worst of all, try to remember the actual executable path buried somewhere deep in an &lt;code&gt;.app&lt;/code&gt; bundle. It&amp;rsquo;s jarring when you&amp;rsquo;re in the zone.&lt;/p&gt;</description></item><item><title>Why AI Coding tools make us better programmers (assuming we don't skip the hard parts)</title><link>https://warpedvisions.org/blog/2025/why-ai-coding-tools-make-us-better-programmers/</link><pubDate>Mon, 28 Jul 2025 17:27:07 +0000</pubDate><guid>https://warpedvisions.org/blog/2025/why-ai-coding-tools-make-us-better-programmers/</guid><description>&lt;p&gt;There&amp;rsquo;s a familiar anxiety in the air among software architects and engineering leaders. AI coding tools are going to make us lazy programmers. They&amp;rsquo;ll erode our fundamental skills. We&amp;rsquo;ll lose the ability to think through problems. Sound familiar?&lt;/p&gt;
&lt;p&gt;It should. I&amp;rsquo;ve heard this exact song before, just with different verses. In the &amp;rsquo;90s, visual development environments were going to create a generation of developers who couldn&amp;rsquo;t &amp;ldquo;really&amp;rdquo; code. Before that, higher-level languages were supposedly making us soft. Hell, I remember when debuggers were contentious—Linus famously ranted that real kernel developers should be able to think through their code without stepping through it line by line.&lt;/p&gt;</description></item><item><title>Burnout is a repetitive strain injury</title><link>https://warpedvisions.org/blog/2025/burnout-is-a-repetitive-strain-injury/</link><pubDate>Tue, 22 Jul 2025 21:27:07 +0000</pubDate><guid>https://warpedvisions.org/blog/2025/burnout-is-a-repetitive-strain-injury/</guid><description>&lt;p&gt;We&amp;rsquo;ve all seen the ergonomic warnings. Adjust your monitor height. Take breaks every twenty minutes. Use a proper keyboard. The IT department sends out reminders about repetitive strain injuries, and we dutifully nod while hunching over our laptops for another six-hour coding session.&lt;/p&gt;
&lt;p&gt;But here&amp;rsquo;s what nobody talks about: your brain is a muscle too, and we&amp;rsquo;re giving it the cognitive equivalent of carpal tunnel syndrome.&lt;/p&gt;
&lt;h2 id="the-thinking-muscle"&gt;The thinking muscle&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve been writing software for over twenty years, and I&amp;rsquo;ve watched my industry evolve from &amp;ldquo;ship it when it&amp;rsquo;s done&amp;rdquo; to &amp;ldquo;ship it yesterday, fix it tomorrow.&amp;rdquo; Somewhere along the way, we forgot that thinking—real, deep problem-solving—is physical work. Your brain burns glucose. It gets fatigued. It needs recovery time.&lt;/p&gt;</description></item><item><title>The Art of context: what I’ve learned about working with AI</title><link>https://warpedvisions.org/blog/2025/the-art-of-context-what-i-have-elarned-about-working-with-ai/</link><pubDate>Mon, 21 Jul 2025 21:27:07 +0000</pubDate><guid>https://warpedvisions.org/blog/2025/the-art-of-context-what-i-have-elarned-about-working-with-ai/</guid><description>&lt;p&gt;I sat down a few weeks ago to ask Claude to help me analyze some user feedback data. I spent fifteen minutes crafting what I thought was the perfect prompt:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;gt; Please analyze this data, but don&amp;#39;t make assumptions about causation,
don&amp;#39;t over-interpret small sample sizes, don&amp;#39;t use corporate jargon,
don&amp;#39;t suggest solutions we can&amp;#39;t implement, and definitely don&amp;#39;t...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The response was generic and cautious. Frustrated, I tried again with a simple request:&lt;/p&gt;</description></item><item><title>Warped 42: back to basics</title><link>https://warpedvisions.org/blog/2024/warped-42-back-to-basics/</link><pubDate>Tue, 24 Dec 2024 09:55:46 -0800</pubDate><guid>https://warpedvisions.org/blog/2024/warped-42-back-to-basics/</guid><description>&lt;p&gt;This is the 42nd version of my personal website and weblog, once again self-hosted at &lt;a href="https://dreamhost.com"&gt;Dreamhost&lt;/a&gt;. I use the site as a forcing function; a way to learn various languages and tools, and a kick to get back into the habit of writing and publishing.&lt;/p&gt;
&lt;p&gt;This year I ported the content from Write.as to a self-hosted Hugo setup, which took about a day. Everything about Hugo has been better than expected, and the only hiccup was on the hosting side (SSL setup was broken for a few hours).&lt;/p&gt;</description></item><item><title>The things we don’t say out loud</title><link>https://warpedvisions.org/blog/2024/the-things-we-dont-say-out-loud/</link><pubDate>Fri, 29 Mar 2024 21:27:07 +0000</pubDate><guid>https://warpedvisions.org/blog/2024/the-things-we-dont-say-out-loud/</guid><description>&lt;p&gt;There is a point in your career where you start to weigh what you want to say with what you can and should say. If you’re not
careful, it can paralyze and stunt your ability to hold opinions with conviction. I suspect that the difference between our
inner voice and where it comes from, versus what we know we should sound like, is one of the primary causes of imposter
syndrome, and possibly contributes to a cycle of burnout. I find the more disconnected my inner voice is from my external
persona (and the longer there is dissonance), the less I feel like myself.&lt;/p&gt;</description></item><item><title>Imposter syndrome is real</title><link>https://warpedvisions.org/blog/2022/imposter-syndrom-is-real/</link><pubDate>Wed, 07 Dec 2022 00:40:09 +0000</pubDate><guid>https://warpedvisions.org/blog/2022/imposter-syndrom-is-real/</guid><description>&lt;p&gt;I have a reminder on my TODO list that haunts me weekly:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Problem: I’m not writing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sometimes I snooze it, sometimes I check it off. Sometimes I start to draft something and then lose interest. I leave the task on the list as I really should be writing more.&lt;/p&gt;
&lt;p&gt;There are a bunch of things getting in my way, but honestly I haven’t felt like myself for a few years. Working from home during lockdown was draining, and work itself is challenging enough that I don’t have much left at the end of the day. Even my non-work life has thrown a few curveballs. The most frustrating thing, however, is that I have been struggling with imposter syndrome. I feel like I don&amp;rsquo;t deserve to write.&lt;/p&gt;</description></item><item><title>How we write headlines is changing</title><link>https://warpedvisions.org/blog/2022/how-we-write-headlines-is-changing/</link><pubDate>Sun, 27 Feb 2022 00:19:44 +0000</pubDate><guid>https://warpedvisions.org/blog/2022/how-we-write-headlines-is-changing/</guid><description>&lt;p&gt;I find trends in style guidelines interesting, especially when shared style guides lag language usage in the wild. I have observed a shift in headline style from &lt;em&gt;Title Case&lt;/em&gt; to &lt;em&gt;Sentence case&lt;/em&gt; in the majority of commercial publications online. I&amp;rsquo;ve also found a general improvement in clarity from the most reliable publishers, mostly due to well understood in house style guidelines.&lt;/p&gt;
&lt;h2 id="common-headline-formats"&gt;Common headline formats&lt;/h2&gt;
&lt;p&gt;There are for general formats used for headlines today, with some publications using multiple methods depending on the feed source.&lt;/p&gt;</description></item><item><title>Warped v40</title><link>https://warpedvisions.org/blog/2022/warped-v40/</link><pubDate>Sat, 19 Feb 2022 03:54:06 +0000</pubDate><guid>https://warpedvisions.org/blog/2022/warped-v40/</guid><description>&lt;p&gt;This is the 40th evolution of &lt;a href="https://warpedvisions.org"&gt;warpedvisions.org&lt;/a&gt;. It&amp;rsquo;s now running on &lt;a href="https://github.com/writefreely/writefreely"&gt;WriteFreely&lt;/a&gt;, hosted by &lt;a href="https://write.as"&gt;Write.as&lt;/a&gt;. WriteFreely is a minimalist writing platform built on Go, LESS, and plain old vanilla Javascript. It&amp;rsquo;s a speedy platform that feels nice to write in.&lt;/p&gt;
&lt;p&gt;This is also the 40th Warped theme. Not all 40 versions made the light of day, mind you, but I&amp;rsquo;ve hacked together all of these themes as a sort of playground of tech and design approaches. The process of building out a theme for a platform tells you a lot about the platform.&lt;/p&gt;</description></item><item><title>Playing with the Pico-8 fantasy console</title><link>https://warpedvisions.org/blog/2022/playing-with-the-pico-8-fantasy-console/</link><pubDate>Sat, 19 Feb 2022 02:46:51 +0000</pubDate><guid>https://warpedvisions.org/blog/2022/playing-with-the-pico-8-fantasy-console/</guid><description>&lt;h1&gt;&lt;/h1&gt;
&lt;p&gt;I&amp;rsquo;ve been using &lt;a href="https://www.lexaloffle.com/pico-8.php"&gt;Pico-8&lt;/a&gt; as a virtual playground for playing with generative art ideas. Pico-8 is a highly constrained virtual machine that behaves a lot like a personal computer from the 1980s. It has a fixed colour palette, limited memory, limited screen size, and a simplified programming model using Lua. The constraints make it a great place to scale down ideas and quickly finish demos and prototypes.&lt;/p&gt;
&lt;p&gt;This week I&amp;rsquo;m toying with generative art ideas, starting with a tool that stamps the screen in various patterns. I&amp;rsquo;m hoping to evolve &lt;a href="https://github.com/robotpony/pico8-playground/tree/main/tileart"&gt;these prototypes&lt;/a&gt; into a general plotter library, but for now I&amp;rsquo;m focused on making things that look cool, as a way to play in generative code again.&lt;/p&gt;</description></item><item><title>PICO-8 tile art tests</title><link>https://warpedvisions.org/blog/2022/pico-8-tile-art-tests/</link><pubDate>Sat, 19 Feb 2022 00:04:16 +0000</pubDate><guid>https://warpedvisions.org/blog/2022/pico-8-tile-art-tests/</guid><description>&lt;p&gt;I&amp;rsquo;ve been playing around in &lt;a href="https://www.lexaloffle.com/pico-8.php"&gt;PICO-8&lt;/a&gt;, working on some generative art ideas. Lua is a fun little language that feels a lot like something between BASIC and JavaScript. Lua isn&amp;rsquo;t my favourite language, but it&amp;rsquo;s fun at the small scale. PICO-8, however, is a fantastic little game engine (or &amp;ldquo;Fantasy Console&amp;rdquo;) that has all of the feels of the 80s.&lt;/p&gt;
&lt;h2 id="first-tests"&gt;First tests&lt;/h2&gt;
&lt;p&gt;I started with a Minecraft style terrain generator, but as 2D tyles:&lt;/p&gt;</description></item><item><title>Using fonts with ligatures to improve readability</title><link>https://warpedvisions.org/blog/2021/using-fonts-with-ligatures-to-improve-readability/</link><pubDate>Mon, 01 Mar 2021 00:22:52 +0000</pubDate><guid>https://warpedvisions.org/blog/2021/using-fonts-with-ligatures-to-improve-readability/</guid><description>&lt;p&gt;I set up a new dev laptop for myself over the Christmas holidays. I took the opportunity to burn down my old environment and to survey the 2021 tool landscape, which included testing out various terminals and setups, editors, and fonts. This year I discovered &lt;a href="https://github.com/tonsky/FiraCode"&gt;Fira Code&lt;/a&gt;, a tidy little monospace font that supports ligatures.&lt;/p&gt;
&lt;p&gt;Ligatures are two or more letters (or graphemes) that can be combined to make a single glyph. The result of combining letters into these ligatures can make complex syntax a bit easier to read, especially if you are familiar with the notations the concepts are based on.&lt;/p&gt;</description></item><item><title>A media diet for the crazy years</title><link>https://warpedvisions.org/blog/2020/a-media-diet-for-the-crazy-years-2019-2020/</link><pubDate>Mon, 01 Jun 2020 21:59:05 +0000</pubDate><guid>https://warpedvisions.org/blog/2020/a-media-diet-for-the-crazy-years-2019-2020/</guid><description>&lt;p&gt;In the last year I read a lot less than normal, while at the same time I watched more streaming shows than I’m used to. I’ve been busier with work, in addition to what’s shaping up to be a crazy year. Stress and burnout kill my ability to focus on long form reading, which is something I’m working hard to counteract. Sometimes just forcing myself to read a book is the best medicine imaginable.&lt;/p&gt;</description></item><item><title>A savoury media diet for a cold and dreary Winter</title><link>https://warpedvisions.org/blog/2018/a-savoury-media-diet-for-a-cold-and-somewhat-dreary-winter/</link><pubDate>Wed, 18 Apr 2018 22:08:11 +0000</pubDate><guid>https://warpedvisions.org/blog/2018/a-savoury-media-diet-for-a-cold-and-somewhat-dreary-winter/</guid><description>&lt;p&gt;One of my favourite reads is &lt;a href="https://kottke.org/"&gt;Kottke.org&lt;/a&gt;, a blog by Jason Kottke. Calling it a blog is a bit of a slight: it&amp;rsquo;s more of a magazine, like a proto-New Yorker. It&amp;rsquo;s thoughtful and relevant, weaving current events, artsy things, various interesting edges of tech, and topics about general humanity.&lt;/p&gt;
&lt;p&gt;Kottke has been killing it since &amp;lsquo;98, about as long as WarpedVisions has been around (though Kottke is better in every way). One of his regular columns is his &lt;em&gt;Media Diet&lt;/em&gt;, a post I look forward to reading whenever it appears. There is something great about seeing someone else&amp;rsquo;s obsessions and indulgences: there&amp;rsquo;s a bunch to learn and inspiration to be had. So I&amp;rsquo;m in, here is the best of &lt;em&gt;my&lt;/em&gt; media diet from this dank Vancouver Winter.&lt;/p&gt;</description></item><item><title>A JavaScript link mashup for Winter 2017: Things I used and liked in the JS universe this year</title><link>https://warpedvisions.org/blog/2017/a-javascript-link-mashup-for-winter-2017-things-i-used-and-liked-in-the-js/</link><pubDate>Mon, 11 Dec 2017 22:55:07 +0000</pubDate><guid>https://warpedvisions.org/blog/2017/a-javascript-link-mashup-for-winter-2017-things-i-used-and-liked-in-the-js/</guid><description>&lt;p&gt;2017 was a good year for JavaScript. The newer language features are now part of our daily routine. Tightly integrated CI and packaging scripts are the norm, and we have a huge sea of libraries and tools available to us. The core JavaScript frameworks have settled down and matured to the point that we can be confident in JS as the base for large-scale commercial projects.&lt;/p&gt;
&lt;p&gt;Here are a few of the main JavaScript things that impressed me this year:&lt;/p&gt;</description></item><item><title>Simple methods: the triage board</title><link>https://warpedvisions.org/blog/2017/simple-methods-the-triage-board/</link><pubDate>Tue, 14 Nov 2017 23:43:19 +0000</pubDate><guid>https://warpedvisions.org/blog/2017/simple-methods-the-triage-board/</guid><description>&lt;p&gt;Some of my most productive business tools are the simplest. Take the &lt;em&gt;triage board&lt;/em&gt;. It&amp;rsquo;s a whiteboard that hangs over my desk that has a list of my current projects, with magnets marking what I&amp;rsquo;m working on next. Weekly I erase the board and re-prioritize my projects, and daily I scribble notes and move the magnets as I work.&lt;/p&gt;
&lt;p&gt;These concrete tools are about focus, flexibility, and the least amount of investment possible. It&amp;rsquo;s critical to work on the most important things, and important to know what&amp;rsquo;s next. Seeing the list of clients and projects helps me understand where I stand in terms of bandwidth too, using the simple, physical limits of the size of the board and legibility of my writing at smaller sizes.&lt;/p&gt;</description></item><item><title>My love-hate relationship with Sprints, Agile, and software development processes in general</title><link>https://warpedvisions.org/blog/2017/my-love-hate-relationship-with-sprints-agile-and-software-development/</link><pubDate>Sat, 22 Apr 2017 22:34:40 +0000</pubDate><guid>https://warpedvisions.org/blog/2017/my-love-hate-relationship-with-sprints-agile-and-software-development/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;A common example is process as proxy. Good process serves you so you &amp;gt; can serve customers. But if you&amp;rsquo;re not watchful, the process can &amp;gt; become the thing. This can happen very easily in large organizations. &amp;gt; The process becomes the proxy for the result you want. You stop &amp;gt; looking at outcomes and just make sure you&amp;rsquo;re doing the process right. &amp;gt; Gulp.&amp;rdquo; (Jeff Bezos)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a quote from a Jeff Bezos letter to the board, talking about internal metrics and improvements. Sometimes when you add a process to a problem, the process can become the focus and not the outcome.&lt;/p&gt;</description></item><item><title>Rediscovering the interestingness in my Twitter feed</title><link>https://warpedvisions.org/blog/2017/rediscovering-the-interestingness-in-my-twitter-feed/</link><pubDate>Mon, 17 Apr 2017 22:42:14 +0000</pubDate><guid>https://warpedvisions.org/blog/2017/rediscovering-the-interestingness-in-my-twitter-feed/</guid><description>&lt;p&gt;Sometime over the last year I stopped paying attention to Twitter. Between the political cacophony of 2016 and a growing list of people I was following, the noise ratio was just too poor to hold my interest. Twitter had become like LinkedIn to me, a service I used to have a professional presence, but not one that inspired or taught me anything. I had given up.&lt;/p&gt;
&lt;p&gt;A friend recently challenged me to find the &lt;em&gt;interesting&lt;/em&gt; in Twitter again. He suggested declaring bankruptcy and starting over. While I liked his suggestion, I decided to apply another minimalist principle to my feed. Instead, I&amp;rsquo;ve been scrutinizing the people I follow looking for the &amp;ldquo;spark of joy&amp;rdquo; in what they post, things that make me grin, things that inspire me, or things that challenge me in some way. Anything that&amp;rsquo;s disingenuous, caustic (for no reason), or just consistently unintelligent can go.&lt;/p&gt;</description></item><item><title>Tip: Become a part of your side projects</title><link>https://warpedvisions.org/blog/2017/tip-become-a-part-of-your-side-projects/</link><pubDate>Sun, 02 Apr 2017 23:21:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2017/tip-become-a-part-of-your-side-projects/</guid><description>&lt;p&gt;I had a realization last week:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How can it be more &lt;em&gt;me&lt;/em&gt;? If I&amp;rsquo;m not in it, can I get into it?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;m an idea guy. It&amp;rsquo;s why I love designing software, both in terms of system design and user experience. I love designing and developing products too. It&amp;rsquo;s something that can get me fired up, keep me from sleeping, and keep me motivated through even the darkest, rainiest days.&lt;/p&gt;</description></item><item><title>Reasons I hate TODO list and task tools</title><link>https://warpedvisions.org/blog/2016/reasons-i-hate-todo-list-and-task-tools/</link><pubDate>Fri, 30 Dec 2016 23:40:51 +0000</pubDate><guid>https://warpedvisions.org/blog/2016/reasons-i-hate-todo-list-and-task-tools/</guid><description>&lt;p&gt;There&amp;rsquo;s a lot to like about our beloved task management tools. But if we&amp;rsquo;re honest, there&amp;rsquo;s a lot they get wrong too. Here are a few ways
TODO tools grind my gears:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Every task and list looks exactly the same.&lt;/li&gt;
&lt;li&gt;Lists are organized with limited hierarchy and pre-requisites.&lt;/li&gt;
&lt;li&gt;Lists are organized with no real spacial control. &lt;em&gt;(Kanban boards are a great example of how spatial organization can vastly improve how we think about certain types of lists.)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Tasks lists are either a huge a black hole or they&amp;rsquo;re a cacophony of noisy craziness.&lt;/li&gt;
&lt;li&gt;Task tools can be too atomic. A task is an indivisible line item, in single list. Grouping and splitting tasks is often manual and way too much work.&lt;/li&gt;
&lt;li&gt;Importance is missing from most list tools; everything has the same weight; there are only minor visual differences between lists and items.&lt;/li&gt;
&lt;li&gt;TODO lists require careful weeding, and they accumulate cruft really easily.&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s can be difficult to work a list; one task is usually a dozen and not all completed tasks are interesting.&lt;/li&gt;
&lt;li&gt;Task lists don&amp;rsquo;t care where you&amp;rsquo;re at personally, they just sit and stare at you. I swear my lists judge me some days.&lt;/li&gt;
&lt;li&gt;They don&amp;rsquo;t play nicely with your schedule. Not everything on your lists needs to hit your calendar, but the stuff that does &lt;em&gt;really&lt;/em&gt; does.&lt;/li&gt;
&lt;li&gt;Completing a task is more than checking it off. Tasks have more exit states than &lt;em&gt;done&lt;/em&gt;, anywhere from &amp;ldquo;Wow, that was a bad idea&amp;rdquo; to &amp;ldquo;This doesn&amp;rsquo;t matter anymore because of such-and-such&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Huge lists are super demotivating.&lt;/li&gt;
&lt;li&gt;Huge sets of completed tasks don&amp;rsquo;t have the positive effect you wish they would.&lt;/li&gt;
&lt;li&gt;Some tasks are time sensitive, which is more than just when it&amp;rsquo;s due.&lt;/li&gt;
&lt;li&gt;Some tasks are recurring, but not in the it&amp;rsquo;s-due-every-wednesday sort of way. Meaningful tasks like &amp;ldquo;You should really filter through the bug list this month&amp;rdquo; need to happen regularly, but not monthly on Tuesday mornings.&lt;/li&gt;
&lt;li&gt;Some tasks are just plain different than others. I&amp;rsquo;m looking at you, &amp;ldquo;Find inspiration today&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;I finish certain types of tasks better at certain times of day, or when I&amp;rsquo;m in certain moods.&lt;/li&gt;
&lt;li&gt;And finally, task lists are very rarely inspiring. I&amp;rsquo;ve never looked at my TODOs and had an epiphany.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>💰 Being honest about technical debt</title><link>https://warpedvisions.org/blog/2016/being-honest-about-technical-debt/</link><pubDate>Sun, 17 Jul 2016 23:05:45 +0000</pubDate><guid>https://warpedvisions.org/blog/2016/being-honest-about-technical-debt/</guid><description>&lt;p&gt;I don’t like the term &lt;em&gt;technical debt&lt;/em&gt;. We mostly use it without thinking, and it’s often the wrong way to frame the value of our software designs. Most of the time we’re being dishonest when we call our decisions debt, and unless we&amp;rsquo;re planning out the general long term costs of our approach, it&amp;rsquo;s not debt at all.&lt;/p&gt;
&lt;p&gt;With financial debt, money is mostly money, regardless of the source. The terms of a loan are known up front when we borrow money, and those terms may or may not be satisfactory. Any decision to borrow is based on a known commodity, and on the need and the terms, both compared with the gains. Taking on debt, at least in business, is an informed and unsurprising proposition. Debt is often a rational choice for a business too, if the risk is low and the return is favourable. It’s rare for a company’s investors to allow a business to take on financial debt that isn’t clearly understood.&lt;/p&gt;</description></item><item><title>Tips for avoiding technical debt and regret</title><link>https://warpedvisions.org/blog/2016/tips-for-avoiding-technical-debt-and-regret/</link><pubDate>Fri, 15 Jul 2016 22:56:05 +0000</pubDate><guid>https://warpedvisions.org/blog/2016/tips-for-avoiding-technical-debt-and-regret/</guid><description>&lt;p&gt;&lt;a href="being-honest-about-technical-debt"&gt;Last week&lt;/a&gt; I was talking about how it’s easy to conflate debt and regret when it comes to technical decisions. Technical debt is the set of simple, shorter paths in software development that you follow intentionally. Regret is more about getting lost and following unsafe paths, often blissfully unaware that you&amp;rsquo;re lost. Technical debt will feel good in the long run, as it helps you get somewhere faster at a reasonable cost. Regret, on the other hand, feels bad, as you can see the wasted time and effort spent on a path that was clearly followed by mistake. It&amp;rsquo;s easy to feel unqualified to measure technical decisions, especially if you&amp;rsquo;re not technical. You may be disconnected from the planning process or you may not understand the jargon and details of an approach. How can you ask intelligent questions about risk when you feel so separated from what&amp;rsquo;s happening? How can you make clear decisions about risks with incomplete technical knowledge? Luckily, most regrettable technical decisions fail to satisfy even the most basic of principles, and risky debt is all about the poor ratios of cost versus gain.&lt;/p&gt;</description></item><item><title>42 Things I will make in 2016</title><link>https://warpedvisions.org/blog/2016/42-things-i-will-make-in-2016/</link><pubDate>Sun, 10 Apr 2016 07:00:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2016/42-things-i-will-make-in-2016/</guid><description>&lt;p&gt;The New Year came and went without much of a fuss. I read about the &lt;a href="http://megamaker.co/challenge/"&gt;2016 Maker Challenge&lt;/a&gt; shortly after the holiday, in the flood of annual self-help and 2016 resolution articles. The challenge was something I was keenly interested in, then promptly forgot about in the chaos of startup and family life.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://megamaker.co/challenge/"&gt;&lt;img alt="megamaker-logo-3d" loading="lazy" src="https://images.warpedvisions.org/2016/03/megamaker-logo-3d-300x237.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="the-2016-super-mega-awesome-maker-challenge"&gt;The 2016 Super Mega Awesome Maker Challenge&lt;/h3&gt;
&lt;p&gt;If you haven&amp;rsquo;t heard of it, the Maker Challenge is a quest aimed at pushing &lt;em&gt;Makers&lt;/em&gt; to make more. It encourages you to curate a list of your ideas, tracking your progress through the year. Folks serious about the challenge publish their lists too, which keeps them accountable to their goals.&lt;/p&gt;</description></item><item><title>🦄 Unicorns and the Shifting Landscape of Computing</title><link>https://warpedvisions.org/blog/2016/unicorns-and-the-shifting-landscape-of-computing/</link><pubDate>Sun, 03 Apr 2016 23:25:15 +0000</pubDate><guid>https://warpedvisions.org/blog/2016/unicorns-and-the-shifting-landscape-of-computing/</guid><description>&lt;p&gt;I&amp;rsquo;ve noticed an interesting shift in computing over the last few years. It&amp;rsquo;s one of those changes that becomes obvious in hindsight, though while in the moment it was confusing and disorientating. It turns out I was blinded by my own path of coming up in the industry.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m never surprised when a bias gets in the way of seeing something. It&amp;rsquo;s a constant of human progression and the fundamental reason we &lt;em&gt;science&lt;/em&gt;. We&amp;rsquo;re aware of our limits, and we pursue knowledge from the perspective of disproving ourselves so that we can uncover the truth despite the limits of our ability to observe and think. Science is cool.&lt;/p&gt;</description></item><item><title>The fight for clarity and beauty in writing</title><link>https://warpedvisions.org/blog/2015/the-fight-for-clarity-and-beauty-in-writing/</link><pubDate>Wed, 02 Dec 2015 20:51:49 +0000</pubDate><guid>https://warpedvisions.org/blog/2015/the-fight-for-clarity-and-beauty-in-writing/</guid><description>&lt;p&gt;I’m not old yet, but I’m becoming a curmudgeon. I even love the word &lt;a href="https://www.grammarphobia.com/blog/2013/12/curmudgeon.html"&gt;curmudgeon&lt;/a&gt;, it’s a word that sounds like its meaning, with a spelling that feels all pissy and annoyed. It’s a word of mystery, and we know very little about its origin. It’s an interesting word, and interesting is good.&lt;/p&gt;
&lt;p&gt;I’m not a writer by trade. I write of course (we all do these days), but I’m not a professional. Despite this, I feel a strong connection to our language, I feel a need to savour words and protect how we use them. I feel uncomfortable when I see writing that wanders into the safe, passive, and bull-shitty mess that I see regularly in marketing and business. It’s a lesser language: it communicates poorly, using more words, and with less inspiration.&lt;/p&gt;</description></item><item><title>Things that make your podcast much less annoying to listen to</title><link>https://warpedvisions.org/blog/2015/things-that-make-your-podcast-much-less-annoying-to-listen-to/</link><pubDate>Wed, 02 Dec 2015 00:17:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2015/things-that-make-your-podcast-much-less-annoying-to-listen-to/</guid><description>&lt;p&gt;I have tried to love podcasts for a few years now. There are several that I like, but I find it difficult to listen to any of them consistently. I&amp;rsquo;ll binge listen for a few weeks, but for whatever reason I get stuck and move on to the next show.&lt;/p&gt;
&lt;p&gt;There are a few things that podcasts do that frustrates me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Low quality production&lt;/li&gt;
&lt;li&gt;Shows that go too long or that ramble&lt;/li&gt;
&lt;li&gt;Shows that take long hiatuses&lt;/li&gt;
&lt;li&gt;Surplus of opinions and deficits of facts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I admit that part of the problem is the way I find, consume, and collect shows. iTunes isn&amp;rsquo;t great for discovery or browsing. It does well enough at distribution, but the store is still too monochromatic for the social aspects (&lt;em&gt;shut up, Ping&lt;/em&gt;). I end up hopping between sites to find shows, to check in on show statuses, and eventually I just don&amp;rsquo;t remember to do those things. I have lost contact with a few shows due to issues with iTunes or my podcasting apps.&lt;/p&gt;</description></item><item><title>Thinking in diagrams; a developers guide to learning to love drawing design</title><link>https://warpedvisions.org/blog/2015/thinking-in-diagrams-a-developers-guide-to-learning-to-love-drawing-design/</link><pubDate>Tue, 14 Apr 2015 23:19:27 +0000</pubDate><guid>https://warpedvisions.org/blog/2015/thinking-in-diagrams-a-developers-guide-to-learning-to-love-drawing-design/</guid><description>&lt;p&gt;I find that software developers struggle to sketch diagrams of their software. They get lost in the specifics of diagraming techniques, in choosing from the many available tools, or in the futility of drawing diagrams at all. I understand their pain, as there are many standards for diagrams and many (often obtuse) tools for drawing with. It&amp;rsquo;s not very motivating to have a sea of choices, none of which looks particularly appealing.&lt;/p&gt;</description></item><item><title>The quest for focus</title><link>https://warpedvisions.org/blog/2014/the-quest-for-focus/</link><pubDate>Tue, 30 Dec 2014 00:11:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2014/the-quest-for-focus/</guid><description>&lt;p&gt;As designers, software developers, and business geeks we thrive on a few things. We seek inspiration. We obsess over details. We work long hours. And we need &lt;em&gt;focus&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Computers and software have evolved to the point where nearly anything is possible. It&amp;rsquo;s an amazing threshold, as we are rarely limited by the hardware, OS, and languages. We&amp;rsquo;re mostly limited by our own ability to produce. We are the weakest link in our productivity.&lt;/p&gt;</description></item><item><title>Full circle, or why I'm abandoning my custom CMS and using WordPress again</title><link>https://warpedvisions.org/blog/2014/full-circle-or-why-im-abandoning-my-custom-cms-and-using-wordpress-again/</link><pubDate>Fri, 12 Dec 2014 23:17:09 +0000</pubDate><guid>https://warpedvisions.org/blog/2014/full-circle-or-why-im-abandoning-my-custom-cms-and-using-wordpress-again/</guid><description>&lt;p&gt;As a software designer, I love to design software. As software developer, I love building software. When I dream of better things, I funnel my ideas into new projects. When I don&amp;rsquo;t have time for all of my side projects, the projects pile up in a corner and gather dust. And when a side project is an unfinished publishing platform it gets in the way of writing.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m intensly interested in writing and publishing on the web. There are just so many possibilities for saying interesting things and making the presentation of those things more useful. I&amp;rsquo;ve dedicated a chunk of my &lt;a href="http://napkinware.ca"&gt;consulting time&lt;/a&gt; to making beautiful interactive sites for non-profits, and I use a slice of my spare time for maintaining a number of my own sites (and those of friends and family). I believe that what we&amp;rsquo;re seeing on the web today is a shadow of what we will publish in the future, and it excites me.&lt;/p&gt;</description></item><item><title>The road to and from and (hopefully) back to simplicity</title><link>https://warpedvisions.org/blog/2014/the-road-to-and-from-and-hopefully-back-to-simplicity/</link><pubDate>Fri, 02 May 2014 23:12:15 +0000</pubDate><guid>https://warpedvisions.org/blog/2014/the-road-to-and-from-and-hopefully-back-to-simplicity/</guid><description>&lt;p&gt;&lt;img loading="lazy" src="https://images.warpedvisions.org/ms-basic-atari.gif"&gt;&lt;/p&gt;
&lt;p&gt;I wrote my first computer program when I was 8. It was a simple adventure game written in BASIC, a mess of &lt;code&gt;GOTO&lt;/code&gt; and &lt;code&gt;PRINT&lt;/code&gt; statements. I saved it to tape a few times, proud enough of my first creation that I didn&amp;rsquo;t want to lose it. And despite what I didn&amp;rsquo;t understand my mind exploded with ideas.&lt;/p&gt;
&lt;p&gt;I continued to write games and curios into my early teens. I wrote text adventures and arcade ripoffs. I hacked at biometric data collection using a busted set of paddles and mixed mode graphics. I designed and built a large (but clunky) side scrolling adventure game using only a set of customized fonts. I plagiarized code from magazines and hacked at my machine until the wee hours of the night.&lt;/p&gt;</description></item><item><title>The art of code review</title><link>https://warpedvisions.org/blog/2013/the-art-of-code-review/</link><pubDate>Sun, 30 Jun 2013 22:53:23 +0000</pubDate><guid>https://warpedvisions.org/blog/2013/the-art-of-code-review/</guid><description>&lt;p&gt;I review a lot of code these days. It&amp;rsquo;s an incredible way to nudge a team of bright people toward greatness. It allows me to look at problems from the outside with a perspective of experience and distance from the low level design. The perspective is important too, and I see things that I often miss in my own code. You see, we&amp;rsquo;re easily blinded when we&amp;rsquo;re too close to the problems we&amp;rsquo;re trying to solve.&lt;/p&gt;</description></item><item><title>Simple patterns: PHP to JavaScript</title><link>https://warpedvisions.org/blog/2013/simple-patterns-php-to-javascript/</link><pubDate>Tue, 25 Jun 2013 22:44:12 +0000</pubDate><guid>https://warpedvisions.org/blog/2013/simple-patterns-php-to-javascript/</guid><description>&lt;p&gt;You can pass data between the client and server in a number of ways. I like to mirror data structures between my server and client, so that I have the same basic data model available in both realms. There are a few ways to do this, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Calling an API that returns &lt;code&gt;JSON&lt;/code&gt; (or &lt;code&gt;JSONP&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Calling an API that returns some UI, which can include some &lt;code&gt;JSON&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Getting an entire page that includes your data model in &lt;code&gt;JSON&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sending a client data is trivial in most dynamic languages, and PHP is no different. You return a response body with the result of a &lt;code&gt;json_encode&lt;/code&gt; and your data model. The technique works just as well in APIs as it does in standard &lt;code&gt;HTML&lt;/code&gt; templates:&lt;/p&gt;</description></item><item><title>Five things to love about PHP</title><link>https://warpedvisions.org/blog/2013/five-things-to-love-about-php/</link><pubDate>Mon, 17 Jun 2013 22:20:54 +0000</pubDate><guid>https://warpedvisions.org/blog/2013/five-things-to-love-about-php/</guid><description>&lt;p&gt;PHP is a great language. It follows a long lineage of C-based syntaxes, mirroring much of the C standard library. It performs well, is trivial to deploy, and has been stable for many years. And, it&amp;rsquo;s almost universally &lt;a href="https://www.google.ca/search?client=safari&amp;amp;rls=en&amp;amp;q=why+php+sucks&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;redir_esc=&amp;amp;ei=OLrZUejjJ6KPiAK9-IH4Bg"&gt;hated&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While many people look down on PHP, it&amp;rsquo;s worth considering where it shines compared to other languages. I find that in many uses, PHP provides a great set of features and elegance. Not only is it competent, but there are places where it is truly a great little tool.&lt;/p&gt;</description></item><item><title>HTTP, GET, and fuzzy semantics</title><link>https://warpedvisions.org/blog/2013/http-get-and-fuzzy-semantics/</link><pubDate>Sat, 26 Jan 2013 23:28:05 +0000</pubDate><guid>https://warpedvisions.org/blog/2013/http-get-and-fuzzy-semantics/</guid><description>&lt;p&gt;A developer asked me a seemingly obvious question today:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I have an API &lt;code&gt;GET&lt;/code&gt; request that requires a &lt;code&gt;JSON&lt;/code&gt; body. Is that okay?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&amp;rsquo;s a good question too. It turns out the answer isn&amp;rsquo;t as simple as it should be. On principle the answer is, &amp;ldquo;&lt;em&gt;No&lt;/em&gt;, it&amp;rsquo;s not cool&amp;rdquo;. A &lt;code&gt;GET&lt;/code&gt; is an idempotent request for a resource. You don&amp;rsquo;t request a resource with a resource (what would that mean?), you request it with a &lt;em&gt;resource identifier&lt;/em&gt;. The &lt;code&gt;HTTP&lt;/code&gt; spec, however, is unclear on the subject and does not explicitly disallow it (it probably should).&lt;/p&gt;</description></item><item><title>Summer design fragments</title><link>https://warpedvisions.org/blog/2012/summer-design-fragments/</link><pubDate>Sun, 30 Sep 2012 22:50:12 +0000</pubDate><guid>https://warpedvisions.org/blog/2012/summer-design-fragments/</guid><description>&lt;p&gt;I&amp;rsquo;ve been busy working on visual design bits for work projects this summer. My method is simple:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sketches and storyboards&lt;/li&gt;
&lt;li&gt;Static mockups (HTML/CSS, some Javascript)&lt;/li&gt;
&lt;li&gt;Live mockups (to test integration and interactions)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Uncovering what a feature means is fundamental to the method. It exposes the nouns and verbs of the problem, and hints at the useful metaphors. The freeform nature of sketching and developing storyboards based on this language helps me focus on figuring out what the things mean, as well as finding their shape and rhythm. I end up working on several different approaches before it&amp;rsquo;s obvious which ones are workable for the client and product.&lt;/p&gt;</description></item><item><title>The myth of uphill</title><link>https://warpedvisions.org/blog/2012/the-myth-of-uphill/</link><pubDate>Mon, 03 Sep 2012 23:06:39 +0000</pubDate><guid>https://warpedvisions.org/blog/2012/the-myth-of-uphill/</guid><description>&lt;p&gt;Friction works against you. It exceeds your ability to progress. It deflates you, stripping your motivation. It&amp;rsquo;s the hill you
see before starting a difficult project. It&amp;rsquo;s the gravity that pulls you away when interest wanes.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m starting a small project for a client today. It&amp;rsquo;s a simple set of improvements to something I built for them last year,
using a toolkit I wouldn&amp;rsquo;t normally use (but one that fit their uses well enough). I had forgotten a lot about the toolkit when
quoting on the work, and by the time I remember it&amp;rsquo;s clear that there are challenges ahead of me.&lt;/p&gt;</description></item><item><title>Simple sets in JavaScript</title><link>https://warpedvisions.org/blog/2012/simple-sets-in-javascript/</link><pubDate>Tue, 29 May 2012 22:47:12 +0000</pubDate><guid>https://warpedvisions.org/blog/2012/simple-sets-in-javascript/</guid><description>&lt;p&gt;One of my favourite JavaScript features is its literal object notation.
It allows you to declare data structures in &lt;code&gt;JSON&lt;/code&gt;, which is a very
succinct, C-like syntax. You can use this notation to declare SETs, and
the &lt;code&gt;a in b&lt;/code&gt; syntax to verify a variable is in a set:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/* Declare your set as a JSON constant */
var valid_widgets = {
&amp;#39;widget-viewer&amp;#39;: 1,
&amp;#39;special-viewer&amp;#39;: 1,
&amp;#39;widget-editor&amp;#39;: 1
};
/* Fail if something isn&amp;#39;t in the set */
if ( ! (options.widget in valid_widgets) )
return false;
/* Profit! */
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As the &lt;code&gt;in&lt;/code&gt; keyword operates on the index of the referred object, we set
the value of the constants to &lt;code&gt;1&lt;/code&gt; (true). A bit of a hack, but it
results in a very clean way of checking if something is part of a set of
valid values.&lt;/p&gt;</description></item><item><title>Giga-boxels, the future is big</title><link>https://warpedvisions.org/blog/2012/giga-boxels-the-future-is-big/</link><pubDate>Sun, 08 Apr 2012 22:22:47 +0000</pubDate><guid>https://warpedvisions.org/blog/2012/giga-boxels-the-future-is-big/</guid><description>&lt;p&gt;Somehow I missed the recent larger EC2 unit sizes:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Console" loading="lazy" src="https://images.warpedvisions.org/2012/03/cc2_console_menu_1.png"&gt;&lt;/p&gt;
&lt;p&gt;When I saw this, I immediately thought: these numbers will have K, M, and G suffixes within the next 5 years. Compute units will be sold as 88 mega-ECUs. Imagine 88 giga-ECUs?&lt;/p&gt;
&lt;p&gt;The ECU is similar to our old measure of computing: boxen (except more virtual). The idea of giga-boxen boggles, but is inevitable (boxen is so much more inspiring than ECUs), or maybe it should be &lt;strong&gt;boxels&lt;/strong&gt;?&lt;/p&gt;</description></item><item><title>Do just one more thing</title><link>https://warpedvisions.org/blog/2012/do-just-one-more-thing/</link><pubDate>Wed, 28 Mar 2012 22:51:08 +0000</pubDate><guid>https://warpedvisions.org/blog/2012/do-just-one-more-thing/</guid><description>&lt;p&gt;You start the day finding consciousness. Slowly or quickly, it doesn’t matter … you become aware of the world incrementally.
Maybe you hit the snooze button once? Twice? Or maybe you wish you did. If you’re like me, you’ll find some caffeine and make
the trek to work.&lt;/p&gt;
&lt;p&gt;And if you’re lucky you will find yourself in your office quickly, alert, and ready to go. You work your way down your list
of tasks until your customers, coworkers, or biology interrupt you. It may be minutes. It may be hours. The question is, what
do you do when you’re interrupted?&lt;/p&gt;</description></item><item><title>The facade of uptime</title><link>https://warpedvisions.org/blog/2012/the-facade-of-uptime/</link><pubDate>Fri, 10 Feb 2012 00:04:49 +0000</pubDate><guid>https://warpedvisions.org/blog/2012/the-facade-of-uptime/</guid><description>&lt;p&gt;While writing a spec earlier today the last few years of progress in server land hit me: uptime is a facade.&lt;/p&gt;
&lt;p&gt;In the early days, server resources were expensive and scarce. Uptime was sacred. Long running hardware was celebrated, UNIX
tools were born, beer was consumed.&lt;/p&gt;
&lt;p&gt;The problem of focusing on the hardware is that it detracts from the time you spend developing software. Remember those late
nights configuring RAID setups? What about hunting down faster drives, or terminating SCSI cables?&lt;/p&gt;</description></item><item><title>Tables versus CSS, redux</title><link>https://warpedvisions.org/blog/2012/tables-versus-css-redux/</link><pubDate>Mon, 09 Jan 2012 23:51:27 +0000</pubDate><guid>https://warpedvisions.org/blog/2012/tables-versus-css-redux/</guid><description>&lt;p&gt;I&amp;rsquo;m a bit surprised that the &lt;a href="http://www.reddit.com/r/programming/comments/7uecr/css_should_not_be_used_for_layout_good_rant/c07fqvk"&gt;argument&lt;/a&gt;
over &lt;a href="http://www.jwz.org/doc/markup.html"&gt;tables versus semantic layout&lt;/a&gt; is still floating around. It ignores the obvious:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Any set of nodes can be rendered like a table&lt;/li&gt;
&lt;li&gt;Any table node can be rendered like a non-table node&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is no difference between a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; and a &lt;code&gt;&amp;lt;td&amp;gt;&lt;/code&gt;, except for the default layout settings and nesting. The
&lt;a href="http://www.quirksmode.org/css/display.html"&gt;major browsers support&lt;/a&gt; the distinction with the &lt;code&gt;display: table-cell;&lt;/code&gt; and its important
variants, so it&amp;rsquo;s a matter of how you want to organize your data.&lt;/p&gt;</description></item><item><title>Real work is boring (but I love it)</title><link>https://warpedvisions.org/blog/2011/real-work-is-boring-but-i-love-it/</link><pubDate>Sun, 25 Dec 2011 00:17:39 +0000</pubDate><guid>https://warpedvisions.org/blog/2011/real-work-is-boring-but-i-love-it/</guid><description>&lt;p&gt;I had an epiphany early this year: getting good at something isn&amp;rsquo;t about finding a groove or being especially clever, it&amp;rsquo;s
about honing a method of doing something. Or lots of methods, meticulously crafted, carefully practiced, and well executed
over and over again. That&amp;rsquo;s it.&lt;/p&gt;
&lt;p&gt;The problem is in discovering the method. It&amp;rsquo;s harder than you expect.&lt;/p&gt;
&lt;p&gt;It turns out that most things, while easier than you&amp;rsquo;d think, are much different than you&amp;rsquo;d expect. The process for making
an excellent curry, for example, is nothing like what I had imagined, nor is the path to better photography, or art, or
anything. Finding methods for things is in itself curious, and my methods for getting to good versions of things is always unexpected.&lt;/p&gt;</description></item><item><title>The problem of organization</title><link>https://warpedvisions.org/blog/2011/the-problem-of-organization/</link><pubDate>Mon, 31 Oct 2011 23:07:59 +0000</pubDate><guid>https://warpedvisions.org/blog/2011/the-problem-of-organization/</guid><description>&lt;p&gt;It&amp;rsquo;s not that these tools and techniques are bad in themselves, but our use of each should be fit into a well tuned approach
to building software. An entire project delivery should be tidy, professional, and complete.&lt;/p&gt;
&lt;p&gt;There are a few causes to the problem of organizational buildup. Our software is limited, our methods need improvement, and the
unseen pieces of our project pile up and are left a mess once we ship. categories: rants&lt;/p&gt;</description></item><item><title>How to beat writers block</title><link>https://warpedvisions.org/blog/2011/how-to-beat-writers-block/</link><pubDate>Mon, 24 Oct 2011 22:29:58 +0000</pubDate><guid>https://warpedvisions.org/blog/2011/how-to-beat-writers-block/</guid><description>&lt;p&gt;So you can&amp;rsquo;t write. You&amp;rsquo;re empty, tired, and unfocused. You&amp;rsquo;ve tried exercise, meditation, caffeine, binge sleeping, and a
dozen other cures&amp;ndash;but nothing comes out. And when you do happen to squeeze out a few paragraphs, you stall, spiralling
further into your uninspired daze. You are burnt out.&lt;/p&gt;
&lt;p&gt;Writer&amp;rsquo;s block and burnout are the same problem: undue mental exhaustion brought on by overuse, misuse, and other stress. It&amp;rsquo;s
important to understand that you cause your own burnout, either directly through your actions, or indirectly through your lack
of action. It&amp;rsquo;s &lt;em&gt;your&lt;/em&gt; choice.&lt;/p&gt;</description></item><item><title>On becoming a designer</title><link>https://warpedvisions.org/blog/2011/on-becoming-a-designer/</link><pubDate>Mon, 06 Jun 2011 22:36:00 +0000</pubDate><guid>https://warpedvisions.org/blog/2011/on-becoming-a-designer/</guid><description>&lt;p&gt;I&amp;rsquo;ve become passionate about design. It&amp;rsquo;s a subtle craft that says something, things that can&amp;rsquo;t normally be said with
words. It suggests things. It implores us to think in a particular way. It encourages us to go here or there. It is enough
of a metaphor to be easily recognized, but not so much that it becomes tacky, unless of course tacky is the thing you need.
Design is the artful side of craftsmanship, the soul of a thing.&lt;/p&gt;</description></item><item><title>HOWTO get better at stuff</title><link>https://warpedvisions.org/blog/2011/howto-get-better-at-stuff/</link><pubDate>Mon, 16 May 2011 22:25:04 +0000</pubDate><guid>https://warpedvisions.org/blog/2011/howto-get-better-at-stuff/</guid><description>&lt;p&gt;If you want to get better at something, do a lot of it. Throw yourself at practice and real chances to do it.&lt;/p&gt;
&lt;p&gt;When you want to become great at something, stick with it, obsess over it, and suck up all of the knowledge that surrounds it.&lt;/p&gt;
&lt;p&gt;And when you want to become truly incredible at something, you need to invert your thinking: reflect on the fundamentals, write, and do anything that lets you define what that thing is.&lt;/p&gt;</description></item><item><title>The evolution of thinking in software design</title><link>https://warpedvisions.org/blog/2011/the-evolution-of-thinking-in-software-design/</link><pubDate>Tue, 10 May 2011 23:00:13 +0000</pubDate><guid>https://warpedvisions.org/blog/2011/the-evolution-of-thinking-in-software-design/</guid><description>&lt;p&gt;I know a few generations of developers. I find they tend toward different ways of thinking about software design, based on the
languages and decomposition tools that were available at the time they formed their thinking. Their tendencies shift over time
too, but often their imaginations are limited by whichever mode of thought they&amp;rsquo;re working in at the time.&lt;/p&gt;
&lt;p&gt;By design I mean the approach to solving a problem with software, including software architecture and low level design (not
product, visual, or UX design). These are another universe around how we think about solving people&amp;rsquo;s problems with software,
a topic for another set of posts.&lt;/p&gt;</description></item><item><title>On being awesome: just do it</title><link>https://warpedvisions.org/blog/2011/on-being-awesome-just-do-it/</link><pubDate>Tue, 25 Jan 2011 00:22:59 +0000</pubDate><guid>https://warpedvisions.org/blog/2011/on-being-awesome-just-do-it/</guid><description>&lt;p&gt;&lt;a href="http://www.43folders.com/2011/01/17/permission-to-be-awesome"&gt;Merlin Mann&lt;/a&gt; asks us why we&amp;rsquo;re waiting to be awesome, as
he remembers Steve Job&amp;rsquo;s &lt;a href="https://www.youtube.com/watch?v=UF8uR6Z6KLc"&gt;2005 Stanford address&lt;/a&gt;. It&amp;rsquo;s a good question:
why do we wait?&lt;/p&gt;
&lt;p&gt;There are all sorts of reasons, of course, but in the end my simple philosophy is: &lt;em&gt;just fucking do it&lt;/em&gt;. Sometimes
I have to say it to myself out loud, in the voice of &lt;a href="http://www.reddit.com/r/AskReddit/comments/f5hvt/what_do_so_many_people_find_enjoyable_in_the_big/?limit=500"&gt;the Dude&lt;/a&gt;,
when things like absurd politics or chunky technical problems get in my way. &amp;ldquo;Just do it, man.&amp;rdquo; I need to be reminded to carry on.&lt;/p&gt;</description></item><item><title>Things I'm still learning, 2010 edition</title><link>https://warpedvisions.org/blog/2010/things-im-still-learning/</link><pubDate>Sat, 11 Dec 2010 00:15:30 +0000</pubDate><guid>https://warpedvisions.org/blog/2010/things-im-still-learning/</guid><description>&lt;p&gt;2010 has come and gone. I&amp;rsquo;ve shipped a few projects, each a number of times. I&amp;rsquo;ve registered dozens of domain names and dropped a few of the older ones. I&amp;rsquo;ve started (but not finished) a dozen spare time projects. I&amp;rsquo;ve had hundreds of new ideas, and a few of them were even interesting. I&amp;rsquo;ve learned a lot, but not enough (it&amp;rsquo;s never enough). I&amp;rsquo;ve expanded my horizons and gotten stuck in ruts. I&amp;rsquo;ve gained weight and I&amp;rsquo;ve lost weight.&lt;/p&gt;</description></item><item><title>Exposing design</title><link>https://warpedvisions.org/blog/2010/exposing-design/</link><pubDate>Mon, 22 Nov 2010 23:19:14 +0000</pubDate><guid>https://warpedvisions.org/blog/2010/exposing-design/</guid><description>&lt;p&gt;When you describe a design to a group of people, each person imagines something different. Depending on your story and the
individuals, understanding may vary wildly. And if it differs enough, the result is chaotic&amp;ndash;unpredictable and often negative.&lt;/p&gt;
&lt;p&gt;You need to fit how you show your ideas to different groups of people carefully, and notice when you your story isn&amp;rsquo;t hitting.
For your closest team members you can wave your hands and scrawl ideas on a chalkboard. For people you work less frequently, you
need more detail: proper drawings and clean wireframes. For non-technical clients you need even more, polished, functional
prototypes and pretty drawings.&lt;/p&gt;</description></item><item><title>HOWTO: Directory recursion in Boost (and other tips)</title><link>https://warpedvisions.org/blog/2008/howto-directory-recursion-in-boost-and-other-tips/</link><pubDate>Wed, 23 Apr 2008 22:26:01 +0000</pubDate><guid>https://warpedvisions.org/blog/2008/howto-directory-recursion-in-boost-and-other-tips/</guid><description>&lt;p&gt;Boost&amp;rsquo;s &lt;a href="http://www.boost.org/doc/libs/1_35_0/libs/filesystem/doc/index.htm"&gt;Filesystem&lt;/a&gt; library is an incredible resource: it abstracts paths, directories, and &lt;code&gt;stat&lt;/code&gt; results. It simplifies coding shell problems in C++, it&amp;rsquo;s portable, and is maintained by a large community of contributors. The one downside of Boost is that some of its newer libraries are poorly documented.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; Until I have time to get involved in the Boost project, I&amp;rsquo;m going to post examples here.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Traversing a directory tree&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is the coolest feature I&amp;rsquo;ve found in &lt;code&gt;boost::filesystem&lt;/code&gt; so far. It treats directory elements like iterators, and has a convenience iterator that flattens the problem of iterating through a directory tree recursively. The only examples I found for it were in their extensive test sources, (See &lt;a href="http://www.boost.org/doc/libs/1_35_0/libs/filesystem/test/convenience_test.cpp"&gt;convenience tests&lt;/a&gt; and &lt;a href="http://www.boost.org/doc/libs/1_35_0/libs/filesystem/test/operations_test.cpp"&gt;operations tests&lt;/a&gt; for more examples.) which are a bit light on comments.&lt;/p&gt;</description></item></channel></rss>