<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Vaughn Dickson · Writing</title><description>Fractional, interim and full-time CTO and AI leadership for SaaS and platform companies. Projects, writing and thinking from Vaughn Dickson.</description><link>https://vaughndickson.com/</link><language>en</language><item><title>mdread: a Markdown reader with 10% of the features, built for speed and a 4K screen</title><link>https://vaughndickson.com/2026/10/19/mdread-fast-markdown-reader-for-4k-screens/</link><guid isPermaLink="true">https://vaughndickson.com/2026/10/19/mdread-fast-markdown-reader-for-4k-screens/</guid><description>I wanted a Markdown reader with 10% of the features of every other reader and editor, as fast as possible, and using all of my 4K screen. So I built one in Rust.</description><pubDate>Mon, 19 Oct 2026 06:40:54 GMT</pubDate><category>code</category><category>rust</category><category>linux</category></item><item><title>A whole replay in a URL: how Flappycar&apos;s ghost links work without a backend server</title><link>https://vaughndickson.com/2026/10/18/whole-replay-in-a-url/</link><guid isPermaLink="true">https://vaughndickson.com/2026/10/18/whole-replay-in-a-url/</guid><description>How Flappycar sends a friend your entire run as a ghost to race, with no backend server: a fixed physics step, a seeded course, and every tap packed into a couple of hundred bytes of URL.</description><pubDate>Sun, 18 Oct 2026 13:07:29 GMT</pubDate><category>ai</category><category>code</category><category>javascript</category><category>game-development</category></item><item><title>The Gotcha Game That Drives Great Engineers Away</title><link>https://vaughndickson.com/2025/06/17/the-gotcha-game-that-drives-great-engineers-away/</link><guid isPermaLink="true">https://vaughndickson.com/2025/06/17/the-gotcha-game-that-drives-great-engineers-away/</guid><description>Most tech interviews are a game of gotcha that makes the interviewer feel clever and loses solid builders. The best interviewers are great conversationalists who listen.</description><pubDate>Tue, 17 Jun 2025 06:46:20 GMT</pubDate><category>cto</category></item><item><title>How will we train junior developers in a world of generative AI?</title><link>https://vaughndickson.com/2025/06/06/how-will-we-train-junior-developers-in-a-world-of-generative-ai/</link><guid isPermaLink="true">https://vaughndickson.com/2025/06/06/how-will-we-train-junior-developers-in-a-world-of-generative-ai/</guid><description>Generative AI is delegation, not just abstraction. How do juniors build the judgement to use it well, and what should teams and employers change?</description><pubDate>Fri, 06 Jun 2025 06:13:49 GMT</pubDate><category>cto</category><category>ai</category><category>career</category></item><item><title>The Illusion of Democratized AI — And Why It Should Worry You</title><link>https://vaughndickson.com/2025/06/01/the-illusion-of-democratized-ai-and-why-it-should-worry-you/</link><guid isPermaLink="true">https://vaughndickson.com/2025/06/01/the-illusion-of-democratized-ai-and-why-it-should-worry-you/</guid><description>Training frontier models is structurally out of reach for all but a few hyperscalers. Why that concentration of compute is a strategic risk for everyone building on top.</description><pubDate>Sun, 01 Jun 2025 08:49:48 GMT</pubDate><category>cto</category><category>ai</category><category>leadership</category></item><item><title>Your real team as CTO</title><link>https://vaughndickson.com/2025/05/13/your-real-team-as-cto/</link><guid isPermaLink="true">https://vaughndickson.com/2025/05/13/your-real-team-as-cto/</guid><description>One of the biggest mistakes new CTOs make is thinking their team is still the tech team. Your real team is the executive team, and that changes how you spend your week.</description><pubDate>Tue, 13 May 2025 11:39:15 GMT</pubDate><category>cto</category><category>career</category></item><item><title>Easy async function execution in Python/Django using a queue and consumer Thread</title><link>https://vaughndickson.com/2023/06/07/easy-async-function-execution-in-python-django-using-a-queue-and-consumer-thread/</link><guid isPermaLink="true">https://vaughndickson.com/2023/06/07/easy-async-function-execution-in-python-django-using-a-queue-and-consumer-thread/</guid><description>Run API calls and tracking writes off the request thread in Django without Celery or django-q: a queue and a consumer thread are enough.</description><pubDate>Wed, 07 Jun 2023 12:17:02 GMT</pubDate><category>code</category><category>python</category></item><item><title>How to work for an international software company from SA and maximise your earnings</title><link>https://vaughndickson.com/2021/10/05/how-to-work-for-an-international-software-company-from-sa-and-maximise-your-earnings/</link><guid isPermaLink="true">https://vaughndickson.com/2021/10/05/how-to-work-for-an-international-software-company-from-sa-and-maximise-your-earnings/</guid><description>A practical guide for South African developers on landing remote work with European companies, running as a sole proprietor, invoicing, forex and provisional tax.</description><pubDate>Tue, 05 Oct 2021 08:02:40 GMT</pubDate><category>career</category></item><item><title>How to timeout a thread in Java / Limiting a threads execution time</title><link>https://vaughndickson.com/2016/07/05/how-to-timeout-a-thread-in-java-limiting-a-threads-execution-time/</link><guid isPermaLink="true">https://vaughndickson.com/2016/07/05/how-to-timeout-a-thread-in-java-limiting-a-threads-execution-time/</guid><description>Limit how long a piece of Java code may run using thread interruption and a timeout, and the catch that stops it working on arbitrary code.</description><pubDate>Tue, 05 Jul 2016 05:43:21 GMT</pubDate><category>java</category></item><item><title>How to communicate between your Chrome extension and your SPA web app</title><link>https://vaughndickson.com/2016/03/01/how-to-communicate-between-your-chrome-extension-and-your-spa-web-app/</link><guid isPermaLink="true">https://vaughndickson.com/2016/03/01/how-to-communicate-between-your-chrome-extension-and-your-spa-web-app/</guid><description>Two-way messaging between a Chrome extension and a single-page app using Chrome&apos;s external messaging API, with the background script, manifest and web app code.</description><pubDate>Tue, 01 Mar 2016 07:22:29 GMT</pubDate><category>javascript</category></item><item><title>I get NoNodeAvailableException on long-running processes using SSL TransportClient with Found.no</title><link>https://vaughndickson.com/2015/12/23/i-get-nonodeavailableexception-on-long-running-processes-using-ssl-transportclient-with-found-no/</link><guid isPermaLink="true">https://vaughndickson.com/2015/12/23/i-get-nonodeavailableexception-on-long-running-processes-using-ssl-transportclient-with-found-no/</guid><description>A hosted Elasticsearch hostname resolves to several IPs. Add only the first to a TransportClient and long-running processes eventually fail with NoNodeAvailableException.</description><pubDate>Wed, 23 Dec 2015 13:56:09 GMT</pubDate><category>java</category><category>elasticsearch</category></item><item><title>When I index something in Elasticsearch, why doesn&apos;t it show in my search straight after?</title><link>https://vaughndickson.com/2015/10/16/when-i-index-something-in-elasticsearch-why-doesnt-it-show-in-my-search-straight-after/</link><guid isPermaLink="true">https://vaughndickson.com/2015/10/16/when-i-index-something-in-elasticsearch-why-doesnt-it-show-in-my-search-straight-after/</guid><description>Elasticsearch is near-real-time: new documents appear after the next refresh. What that means and how to force it when you must.</description><pubDate>Fri, 16 Oct 2015 13:07:27 GMT</pubDate><category>devops</category><category>java</category><category>elasticsearch</category></item><item><title>Why does Apache Nutch sometimes get stuck using a single thread and crawling slowly?</title><link>https://vaughndickson.com/2015/10/16/why-does-apache-nutch-sometimes-get-stuck-using-a-single-thread-and-crawling-slowly/</link><guid isPermaLink="true">https://vaughndickson.com/2015/10/16/why-does-apache-nutch-sometimes-get-stuck-using-a-single-thread-and-crawling-slowly/</guid><description>Why an Apache Nutch crawl collapses to a single fetch queue, and the generate.max.count setting that keeps it spread across sites.</description><pubDate>Fri, 16 Oct 2015 12:55:13 GMT</pubDate><category>devops</category></item><item><title>Centralising Clojure/Java logging with Logback, LogStash, ElasticSearch, and Kibana</title><link>https://vaughndickson.com/2014/02/21/centralising-clojurejava-logging-with-logback-logstash-elasticsearch-and-kibana/</link><guid isPermaLink="true">https://vaughndickson.com/2014/02/21/centralising-clojurejava-logging-with-logback-logstash-elasticsearch-and-kibana/</guid><description>Shipping Clojure and Java logs from Logback through Logstash into Elasticsearch, and reading them in Kibana.</description><pubDate>Fri, 21 Feb 2014 14:08:41 GMT</pubDate><category>devops</category><category>java</category><category>clojure</category><category>elasticsearch</category><category>linux</category></item><item><title>Keybinding for emacs helm to recursively grep certain file extensions in your src directories</title><link>https://vaughndickson.com/2013/03/07/keybinding-for-emacs-helm-to-recursively-grep-certain-file-extensions-in-your-src-directories/</link><guid isPermaLink="true">https://vaughndickson.com/2013/03/07/keybinding-for-emacs-helm-to-recursively-grep-certain-file-extensions-in-your-src-directories/</guid><description>A short Emacs Lisp function that binds a key to a recursive Helm grep over your source directories, limited to the file extensions you care about.</description><pubDate>Thu, 07 Mar 2013 15:04:22 GMT</pubDate><category>emacs</category></item><item><title>Deploying Datomic free on EC2 or any Ubuntu system</title><link>https://vaughndickson.com/2012/11/20/deploying-datomic-free-on-ec2-or-any-ubuntu-system/</link><guid isPermaLink="true">https://vaughndickson.com/2012/11/20/deploying-datomic-free-on-ec2-or-any-ubuntu-system/</guid><description>Installing Datomic Free on Ubuntu or EC2 with an Upstart script, a symlinked runtime for painless upgrades, and rdiff-backup for backups.</description><pubDate>Tue, 20 Nov 2012 19:17:27 GMT</pubDate><category>devops</category><category>linux</category></item><item><title>Integrating Logback with Clojure</title><link>https://vaughndickson.com/2012/11/20/integrating-logback-with-clojure/</link><guid isPermaLink="true">https://vaughndickson.com/2012/11/20/integrating-logback-with-clojure/</guid><description>Getting Logback working as the logging backend for a Clojure project.</description><pubDate>Tue, 20 Nov 2012 17:40:42 GMT</pubDate><category>java</category><category>clojure</category></item></channel></rss>