<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[substack.dylanbeattie.net]]></title><description><![CDATA[Reflections on computers, code, the web, music, video, comedy, travel... and all the wonderful ways of bashing them together to see what happens.]]></description><link>https://substack.dylanbeattie.net</link><image><url>https://substackcdn.com/image/fetch/$s_!6biD!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ecc19c8-3244-42f4-b9b6-211c90ae5537_800x800.png</url><title>substack.dylanbeattie.net</title><link>https://substack.dylanbeattie.net</link></image><generator>Substack</generator><lastBuildDate>Sat, 02 May 2026 00:00:59 GMT</lastBuildDate><atom:link href="https://substack.dylanbeattie.net/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Dylan Beattie]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[dylan@dylanbeattie.net]]></webMaster><itunes:owner><itunes:email><![CDATA[dylan@dylanbeattie.net]]></itunes:email><itunes:name><![CDATA[Dylan Beattie]]></itunes:name></itunes:owner><itunes:author><![CDATA[Dylan Beattie]]></itunes:author><googleplay:owner><![CDATA[dylan@dylanbeattie.net]]></googleplay:owner><googleplay:email><![CDATA[dylan@dylanbeattie.net]]></googleplay:email><googleplay:author><![CDATA[Dylan Beattie]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Hang of Thursdays #7]]></title><description><![CDATA[This week I'm talking about Moq, SponsorLink and open source funding. Plus news about the next London .NET meetup, ULTRARAM, and a whole lot of crunchy deadlines. Also, there's a cute otter.]]></description><link>https://substack.dylanbeattie.net/p/the-hang-of-thursdays-7</link><guid isPermaLink="false">https://substack.dylanbeattie.net/p/the-hang-of-thursdays-7</guid><dc:creator><![CDATA[Dylan Beattie]]></dc:creator><pubDate>Thu, 17 Aug 2023 16:20:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DG_O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey folks. So&#8230; you know the thing where you agree to do something, because it&#8217;s literally <em>months</em> away, and you&#8217;ll totally have time to get it all prepared by then &#8212; and then somehow it&#8217;s not months away any more, it&#8217;s two weeks&#8230; and it&#8217;s not one thing, it&#8217;s about five things?</p><p>Welcome to my week! I&#8217;m updating the course materials for the <a href="https://cphdevfest.com/workshops/modern-web-development-with-c-and-net/957e969dd365">workshop I&#8217;m giving at the Copenhagen Developers Festival</a>, all about how to build web apps with C# using all the amazing new shiny stuff that ships with .NET 7. <em>(Did I mention that tickets are still on sale, and as well as the workshops there&#8217;s an amazing programme of talks, shows and live entertainment?)</em> </p><p>I&#8217;m also figuring out how to fit Guitaraoke on an aeroplane to take it to Denmark, preparing a new talk about how I created Guitaraoke (including a bit about how to fit it all on an aeroplane and take it to Denmark) &#8212; oh, and planning my 45th birthday party, which is not only going to be awesome, but is also going to be the public beta test of Guitaraoke: Portable Edition, including a bunch of changes to the software, which I&#8217;m going to do on <em>&lt;looks at calendar&gt;</em> Saturday morning, about eight hours before the show.</p><p>So, yes. Life is a little crunchy, and for some reason in the middle of all this I&#8217;m writing a newsletter to tell you all about how crunchy it is.</p><p>I may have chosen&#8230; poorly.</p><h2>Moq, Sponsorlink, and Open Source Funding</h2><p>If you follow any of the .NET content on Twitter, Reddit, Github, or just about any online community with a strong .NET presence, you&#8217;ll have caught last week&#8217;s drama about Moq.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DG_O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DG_O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DG_O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DG_O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DG_O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DG_O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:16429814,&quot;alt&quot;:&quot;A photograph of a cute otter making a funny face. She has cute little otter paws and does not want you to get angry about NuGet packages.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A photograph of a cute otter making a funny face. She has cute little otter paws and does not want you to get angry about NuGet packages." title="A photograph of a cute otter making a funny face. She has cute little otter paws and does not want you to get angry about NuGet packages." srcset="https://substackcdn.com/image/fetch/$s_!DG_O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DG_O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DG_O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DG_O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2815a8a-b66a-4b05-b859-cb9ed0a04b59_6000x4000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">If you find reading about open source makes you angry, please take a moment to contemplate this otter. Look at her little otter hands! Aaah&#8230; isn&#8217;t that better?  Photo &#169; Ondrej Chvatal / Shutterstock.</figcaption></figure></div><p>Whatever you think about the specifics of this scenario, it got a lot of people talking about open source funding again &#8212; and that&#8217;s a good thing, because open source is completely broken. Companies like Meta, Google, Apple &#8212; not to mention your bank, your airline, your car, and every single app you have installed on your smartphone &#8212; use open source software. It&#8217;s a fact of modern software development. But they&#8217;re not giving anything back. These companies use open source libraries to create products that turn over hundreds of millions of dollars in revenue, and the developers who create and maintain those libraries are struggling to make ends meet.</p><p>David Whitney wrote about this way back in 2021, in his fantastic essay &#8220;<a href="https://davidwhitney.co.uk/Blog/2021/12/13/open_source_exploitation">Open Source Exploitation</a>&#8221;, and he recorded a <a href="https://www.youtube.com/watch?v=CYKdNphIr-k">.NET Rocks episode</a> on the same topic with Carl Franklin and Richard Campbell at NDC Oslo last year. SixLabors, the creators of the excellent ImageSharp library, have been similarly vocal &#8212; and eloquent &#8212; about <a href="https://sixlabors.com/posts/license-changes/">making license changes</a> they consider necessary to create sufficient sustainable income to support the development of their product.</p><p>I&#8217;ve been involved with open source since the 1990s, and one of the most consistent tenets of open source evangelism is the principle that <em>if the project maintainers do something you don&#8217;t like, you can keep using the code you&#8217;ve already got. </em>That&#8217;s one of the key value propositions of using open source software in the first place: <em>it gives you control</em>. Nobody can take it away, nobody can stop you using it, and nobody can force you to upgrade to a version you don&#8217;t want to use.</p><p>The folks who created Moq owe you <em>absolutely nothing</em> unless you are in possession of a commercial support contract that says otherwise. It&#8217;s open source. You don&#8217;t like what they did with 4.20? Fork 4.19. Maintain that fork. It&#8217;s yours now; you can do whatever you want to with it. You need a feature? Build it. You find a bug? Fix it.</p><p>The people saying we all need to remove Moq from our code right now? How about just&#8230; don&#8217;t upgrade? Nobody&#8217;s forcing you to. If Moq 4.19 solved your problems last month, Moq 4.19 will still solve your problems this month, and next month. Besides, I&#8217;d wager good money that the people obsessing about a minor point upgrade are probably the same people who are still running .NET Framework 2.0 in production.</p><p>This is a topic I&#8217;ll come back to in a future article, but for now, I wanted to leave you with a number to think about. The creator of Moq, Daniel Cazzulino, aka <a href="https://twitter.com/kzu">kzu</a>, wrote a <a href="https://www.cazzulino.com/software-as-music.html">great article in February</a> in which he compared open source licensing models to music subscription platforms. I thought this was an interesting idea, and I wondered what the numbers would look like.</p><p>NuGet has a page at <a href="https://www.nuget.org/stats/packages">https://www.nuget.org/stats/packages</a> where they publish the total package downloads for the past 6 weeks. At the time of writing, Moq is the 12th most popular package on NuGet, with 19,992,598 downloads. </p><p>Spotify pays around $0.003 per stream.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>If NuGet paid as well as Spotify, Moq would have earned $63,576.46 in revenue in the past six weeks. That&#8217;s over $10,000 per week.</p><p>Just putting the number out there.</p><h2>London .NET September Meetup</h2><p>The next London .NET meetup is going to be on September 13th, at Accurx&#8217;s office in Shoreditch.</p><p>We&#8217;ve got <a href="https://twitter.com/lottepitcher?lang=en">Lotte Pitcher</a> coming along to give us an introduction to Umbraco for .NET developers. Umbraco&#8217;s the leading content management system (CMS) on the .NET platform; it&#8217;s free, it&#8217;s open source, and it&#8217;s supported by one of the most committed developer communities I&#8217;ve ever seen. Lotte&#8217;s going to give us the lowdown on all the latest Umbraco features, like headless content management and EF Core support, as well as everything a .NET developer needs to know to get started with the latest release.</p><p>Our second guest speaker is <a href="https://twitter.com/david_whitney">David Whitney</a> &#8212; yes, the same one &#8212; talking about how he built a Gameboy emulator, for fun, in C#. I&#8217;ve seen a version of this talk before and I absolutely loved it: building an emulator means tackling some properly hardcore tech problems, and David&#8217;s an excellent speaker who always manages to strike a great balance between engaging storytelling and gritty technical detail.</p><p>If either or both of those sounds like your kind of thing, registration&#8217;s open now &#8212; sign up and come along!</p><p><a href="https://www.meetup.com/london-net-user-group/events/295373351/">https://www.meetup.com/london-net-user-group/events/295373351/</a></p><h2>ULTRARAM</h2><p>So, this week I learned that (1) there&#8217;s a Flash Memory Summit in Santa Clara, (2) it has an awards ceremony, (3) one of the awards is for &#8220;Most Innovative Flash Memory Startup&#8221;, and (4) it&#8217;s just <a href="https://www.electronicsweekly.com/news/business/825195-2023-08/">been won by something called ULTRARAM</a>, invented at the University of Lancaster, which sounds like it could be an absolute game-changer.</p><p>We&#8217;ve always had to choose between two kinds of digital storage: volatile and non-volatile. Volatile memory &#8212; DRAM &#8212; is fast, but it&#8217;s expensive, and it only works as long as it&#8217;s drawing power. You turn off the power, anything you haven&#8217;t saved to disk is gone forever. Non-volatile memory &#8212; flash memory, SSDs, mechanical hard drives &#8212; is orders of magnitude slower, but it&#8217;s also orders of magnitude larger, and doesn&#8217;t require power to remember what&#8217;s stored on it. ULTRARAM sounds like the best of both worlds: high-capacity, non-volatile memory that&#8217;s as fast as DRAM.</p><p>It&#8217;s early days yet, but if it turns out to be viable, ULTRARAM would mean we could build devices that drew literally<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> zero power while they were in sleep mode, and woke up instantly when you pressed a key or moved the mouse.</p><p>Their official site is at <a href="https://ultraram.tech/">ultraram.tech</a>, and Dave James has a good <a href="https://www.pcgamer.com/ultraram-may-be-a-silly-name-but-its-the-holy-grail-for-memory-tech-and-means-your-pc-could-hibernate-for-over-1000-years/">write-up over at pcgamer.com</a>.</p><h2>This week I&#8217;ve been&#8230;</h2><p><strong>Reading</strong>: &#8220;<a href="https://maryrobinettekowal.com/writing/the-calculating-stars/">The Calculating Stars</a>&#8221; by Mary Robinette Kowal. There&#8217;s something wonderful about finishing a book by an author you&#8217;ve not read before, and that you thoroughly enjoyed, and then discovering there&#8217;s <em>all this other stuff they wrote </em>&#8212; and so, after finishing &#8220;The Spare Man&#8221;, I&#8217;m working through her back catalogue. &#8220;The Calculating Stars&#8221; is the story of Dr. Elma York&#8217;s endeavours to become the first woman in space, set against an immaculately realised alternative history of the United States of America in the mid-20th century.</p><p><strong>Listening to:</strong> &#8220;<a href="https://open.spotify.com/album/5VPHis9kklY9G0JbggEHtq">Drive</a>&#8221; by The Defiants, featuring current and former members of Danger Danger. &#8220;Drive&#8221; is apparently their third album &#8212; I honestly had no idea they existed until a review popped up in one of my social media feeds earlier this week, so I looked them up on Spotify, and I&#8217;ve had this album on repeat ever since. It&#8217;s not challenging, it&#8217;s not progressive, it&#8217;s not revolutionary &#8212; it&#8217;s just a big fat slab of very good, very slick, 80s-inspired melodic hard rock, and in a few places Paul Laine&#8217;s vocal sounds uncannily reminiscent of Jon Bon Jovi circa &#8220;New Jersey&#8221;.</p><p><strong>Watching:</strong> Nothing. Seriously. Which is a little weird&#8230; when I decided to include a weekly rundown of my media habits, I honestly didn&#8217;t think there would be weeks when I watched literally zero minutes of film or TV, but here we are; there&#8217;s not been a whole lot of downtime this week and what little I&#8217;ve had has been spent reading books and playing guitar. Mind you, last year when I had COVID I watched the whole of Stranger Things in a week &#8212; I binged season 1 on Monday, season 2 on Tuesday, and so on, because I wanted to know why everybody was going on about &#8220;Master of Puppets&#8221; &#8212; so I guess it all averages out in the end.</p><p>And that&#8217;s a wrap. Have fun, take it easy, be excellent to each other (yes, <em>especially</em> when talking about open source on Reddit), and catch you next week.</p><p><em>Dylan</em></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>According to <a href="https://producerhive.com/music-marketing-tips/streaming-royalties-breakdown/">producerhive.com</a>, Deezer pays $0.0011, Apple pays $0.008 and Tidal pays a whopping 1.28 cents per stream.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Yes, literally, as in <em>literally</em> literally.</p></div></div>]]></content:encoded></item><item><title><![CDATA[The Hang of Thursdays #6]]></title><description><![CDATA[Gearing up for Autumn conference season, designing new stickers, and a picture of some seagulls. What can I say, it's been a slow news week down here on the coast...]]></description><link>https://substack.dylanbeattie.net/p/the-hang-of-thursdays-6</link><guid isPermaLink="false">https://substack.dylanbeattie.net/p/the-hang-of-thursdays-6</guid><dc:creator><![CDATA[Dylan Beattie]]></dc:creator><pubDate>Thu, 10 Aug 2023 10:38:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GXml!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey folks. I&#8217;m still down in Camber, on the south coast of England, but the weather this week has cheered up significantly; blue skies, sunshine, a nice gentle breeze&#8230; which means it&#8217;s been a perfect week to sit at a laptop doing workshop prep, booking travel for the autumn conference season, designing new stickers and swag, and generally being a bit of a nerd.</p><h2>Dr. Timezone and the Airport Mayhem: Autumn 2023 Edition</h2><p>Europe kinda shuts down over the summer. When I first set up my own company back in January 2020 (yeah, I know, timing, LOL), I talked to a lot of folks I knew who&#8217;d done something similar, and one thing that really stuck with me was a great bit of advice from <a href="https://about.me/kevlin">Kevlin Henney</a>:</p><blockquote><p>&#8220;Don&#8217;t worry too much about getting bookings in July and August, because even if the person who wants to hire you isn&#8217;t on holiday, the accountant who&#8217;s supposed to pay your invoice probably is.&#8221;</p></blockquote><p>That&#8217;s turned out to be great advice so far: budget for two quiet months in summer (and two quiet months over Christmas), and just accept you&#8217;re not going to be doing much. In fact, one of the things I enjoy most about being self-employed is the absence of busywork. When I&#8217;m busy, I&#8217;m <em>busy</em> &#8212; but when I&#8217;m not? No big deal. Chill out, design some stickers, write a few songs, do a little carpentry, and only occasionally wake up in a cold sweat at 4 am wondering what I&#8217;ll do if things never pick up again. But so far, they always have.</p><p>Here&#8217;s what picking up again looks like. On Thursday 24 August I&#8217;m flying to Denmark. The Linebreakers have booked a long weekend in R&#229;geleje, on the north coast of Zealand, where we&#8217;ll get to actually do some proper rehearsal for a change. Then on Sunday we head to Copenhagen for the CPH Developers Festival. Two days of in-person workshops about full stack web development with C# and .NET, followed by three days of conference/festival. Home for six days, then off to Nottingham, where I&#8217;m running a speaker workshop for the folks who have been selected to speak at <a href="https://dddeastmidlands.com/">DDD East Midlands</a> this year. I <em>love</em> DDDEM; it&#8217;s a fantastic conference run by awesome people, and offering this kind of opportunity to their speakers is just one of the many, many ways they&#8217;re helping to support the developer community.</p><p>I&#8217;ll get home from Nottingham late on Saturday night, and have a day at home. Monday 11 September I&#8217;m on a Eurostar to Rotterdam and then the Intercity to Utrecht, where I&#8217;m a keynote speaker at the <a href="https://tweakers.net/partners/devsummit2023/1900/sprekerstracks/">Tweakers Developer Summit</a>. Then I&#8217;m heading back first thing on Wednesday morning to host the London .NET User Group meetup.</p><p>The following week I&#8217;m at <a href="https://digit.dev/">Digit 2023</a> in Tartu, Estonia, where I&#8217;m presenting a keynote, running a seminar, and doing the music at the after-party. I spoke at Digit last year and had a great time, and Estonia is a wonderful country to visit. The only slight complication is that, although Tartu <em>does</em> have an airport<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>, as of September 2022 it doesn&#8217;t have any scheduled commercial flights &#8212; so getting there involves flying to Tallinn via Helsinki and taking a local train.</p><p>Two days at home. Back on Eurostar to Brussels, onwards to Antwerp to run a day of speaker training with the crew from Axxes, then on to Amsterdam for <a href="https://drivun.co/">DrivUn</a> on 27 September, where I&#8217;m doing a keynote and the Linebreakers are performing at the conference party.</p><p>After that, we have a Schr&#245;dingerian bit of scheduling where I might be coming home or I might be going to Malm&#245;<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>. Then from the start of October through to December I&#8217;m doing a talk at the University of Sussex, DDD East Midlands in Nottingham, a talk at the <a href="https://www.meetup.com/birmingham-dotnet-and-xamarin-user-group/events/293566551/">.NET group in Birmingham</a>, then I&#8217;m off to <a href="https://ndcporto.com/">NDC Porto</a> in Portugal, <a href="https://codecamp.ro/conferences/codecamp_iasi/">CodeCamp Iasi</a> <em>(pronounced &#8220;yash&#8221;)</em> in Romania, <a href="https://www.xpandconf.com/">XPand 2023 in Jordan</a>, probably another trip to Copenhagen, <a href="https://www.buildstuff.events/">BuildStuff in Lithuania</a>, and then at the start of December I&#8217;m doing the YOW! Tour of Australia: back-to-back conferences in <a href="https://yowcon.com/melbourne-2023">Melbourne</a>, <a href="https://yowcon.com/brisbane-2023">Brisbane</a>, and <a href="https://yowcon.com/sydney-2023">Sydney</a>, and a few days in Perth because it turns out I know a surprising number of excellent people who live there.</p><p>There&#8217;s about 50 hours of Zoom training and online stuff sprinkled in there, too, and that&#8217;ll <em>probably</em> be a wrap for 2023&#8230; but hey, if you see a gap somewhere that lines up with your event (or, even better, you want to book me to run a workshop or give a talk in a country I&#8217;ll already be visiting!), <a href="mailto:dylan@dylanbeattie.net">get in touch</a>.</p><p>On a completely unrelated note, my latest hot startup idea is a service where you drop off your suitcase full of dirty laundry when you land at your home airport, tell them what your next flight is, and they unpack, wash, dry, repack, and check your suitcase in for your next flight for you. If anybody wants to invest &#163;50 million in my startup, I promise to think about really hard for a few months and then explain why it didn&#8217;t work.</p><h2>New Stickers</h2><p>I love parodies, I love stickers, I love rock bands&#8230; and I love banging things together to see what happens. Here&#8217;s the latest from the bit of my brain that likes to play with Adobe Illustrator:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GXml!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GXml!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GXml!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GXml!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GXml!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GXml!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:203439,&quot;alt&quot;:&quot;A parody of the Guns n' Roses band logo. The words GUNS N  ROSES have been replaced with ONES N ZEROS, the pistols on the original logo are stylised metal digit 1s, and the roses have been replaced with stylised red roses in the shape of a digit 0.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A parody of the Guns n' Roses band logo. The words GUNS N  ROSES have been replaced with ONES N ZEROS, the pistols on the original logo are stylised metal digit 1s, and the roses have been replaced with stylised red roses in the shape of a digit 0." title="A parody of the Guns n' Roses band logo. The words GUNS N  ROSES have been replaced with ONES N ZEROS, the pistols on the original logo are stylised metal digit 1s, and the roses have been replaced with stylised red roses in the shape of a digit 0." srcset="https://substackcdn.com/image/fetch/$s_!GXml!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GXml!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GXml!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GXml!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f2c0158-dc5e-4c5a-93fc-2d4270a56510_1920x1080.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Welcome to the jungle, baby, we&#8217;ve got video games.</figcaption></figure></div><p>I&#8217;ll be ordering a bunch of these designs from the lovely people at <a href="https://stickerapp.co.uk/">StickerApp</a> very soon, along with a few other new designs and fresh batches of perennial favourites like the &#8220;certified Rockstar developer&#8221; stickers. For now, the only way to get them is in person, so come along to one of the events I&#8217;m at and ask nicely &#8212; but I&#8217;m hoping to have some kind of online ordering available later this year, for all you folks out there who think a set of parody rockstar developer stickers would make an ideal Christmas gift.</p><p>Incidentally, the &#8220;rose shaped like a zero&#8221; that appears in this design marks the first time I&#8217;ve ever used AI in any of my sticker artwork; it was generated by Midjourney. Asking for a &#8220;digit one number 1, steel, gun metal, polished metal, photograph&#8221;, and countless other variations on the same theme, didn&#8217;t even come <em>close</em> to producing anything usable, so the rest is 100% good old organic human creativity.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.dylanbeattie.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Want this in your inbox? Sure you do. Then you can read it in your email and it&#8217;ll look like you&#8217;re working! Go on. Subscribe. It&#8217;ll be fun.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>This week I&#8217;ve been&#8230;</h2><p><strong>Watching:</strong> Honestly? Not a lot, unless walking on the beach watching juvenile herring gulls counts as watching. They&#8217;re very cute, and extremely squeaky.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-27S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc001d238-6891-4a13-99ff-e2f8b3edfcb0_5184x3456.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-27S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc001d238-6891-4a13-99ff-e2f8b3edfcb0_5184x3456.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-27S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc001d238-6891-4a13-99ff-e2f8b3edfcb0_5184x3456.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-27S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc001d238-6891-4a13-99ff-e2f8b3edfcb0_5184x3456.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-27S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc001d238-6891-4a13-99ff-e2f8b3edfcb0_5184x3456.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-27S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc001d238-6891-4a13-99ff-e2f8b3edfcb0_5184x3456.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c001d238-6891-4a13-99ff-e2f8b3edfcb0_5184x3456.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4494548,&quot;alt&quot;:&quot;A young herring gull, with brown and white plumage, is hassling its parent, a slightly larger bird with white and grey feathers. The parent does not look amused.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A young herring gull, with brown and white plumage, is hassling its parent, a slightly larger bird with white and grey feathers. The parent does not look amused." title="A young herring gull, with brown and white plumage, is hassling its parent, a slightly larger bird with white and grey feathers. The parent does not look amused." srcset="https://substackcdn.com/image/fetch/$s_!-27S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc001d238-6891-4a13-99ff-e2f8b3edfcb0_5184x3456.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-27S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc001d238-6891-4a13-99ff-e2f8b3edfcb0_5184x3456.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-27S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc001d238-6891-4a13-99ff-e2f8b3edfcb0_5184x3456.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-27S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc001d238-6891-4a13-99ff-e2f8b3edfcb0_5184x3456.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Mum! Mum! I want chips. Can we get chips? I&#8217;m bored. I want a snack! MUM! That man has chips. I&#8217;m gonna steal his chips. MUM WATCH THIS&#8230; Mum?&#8221;</figcaption></figure></div><p><strong>Listening to:</strong> One from the vaults this week: &#8220;<a href="https://en.wikipedia.org/wiki/Dead_Air_for_Radios">Dead Air for Radios</a>&#8221; by Chroma Key. I was a <em>huge </em>Dream Theater fan in the 1990s &#8212; or perhaps it&#8217;s more accurate to say that I&#8217;m still a huge fan of the music Dream Theater released in the 1990s; &#8220;Awake&#8221; is one of my favourite albums of all time, and a big part of that is down to the musical influence of their original keyboard player, Kevin Moore. </p><p>Kevin left the band after releasing &#8220;Awake&#8221;, and &#8220;Dead Air for Radios&#8221; was his first solo project, released under the band name Chroma Key. It&#8217;s an album of textures: haunting, lyrical soundscapes, stark piano over rich waves of ambient synth; the sound of a man who walked out of one of the most promising prog metal bands in history, sold his belongings, packed what was left into a station wagon and hit the open road.</p><p><strong>Reading:</strong> &#8220;<a href="https://www.goodreads.com/book/show/55077658-the-spare-man">The Spare Man</a>&#8221; by Mary Robinette Kowal. Another one from this year&#8217;s Hugo Awards shortlist, it&#8217;s a rollicking good murder mystery disguised as science fiction. There&#8217;s enough hard science here for the premise, a murder on board a passenger spacecraft in transit between Earth and Mars, to ring true. The fun, though, is in the characters, the plot twists, and the occasional sense that you&#8217;re enjoying a literary cocktail that&#8217;s one part &#8220;<a href="https://en.wikipedia.org/wiki/Spaceship_Medic">Spaceship Medic</a>&#8221;, one part &#8220;<a href="https://en.wikipedia.org/wiki/Murder_on_the_Orient_Express">Murder on the Orient Express</a>&#8221;, and a generous dash of something you can&#8217;t quite place but it&#8217;s really rather good.</p><p>And that&#8217;s a wrap, folks. Take it easy, have fun, and be excellent to each other.</p><p><em>Dylan</em></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>The international airport code for Tartu is TAY, and before Finnair shut down the only commercial route late last year, you could fly from TAY to HEL and back. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>A certain tolerance for uncertainty is very much a prerequisite for this kind of job&#8230; it turns out that the most mysterious part of being an International Man of Mystery is never knowing whether a provisional booking is actually going to happen or not.</p></div></div>]]></content:encoded></item><item><title><![CDATA[The Hang of Thursdays #5]]></title><description><![CDATA[Framework laptops, inkjet printers, a programming language based on Cree, the NDC London Call for Papers, and the story of Kevin Mitnick's first hack.]]></description><link>https://substack.dylanbeattie.net/p/the-hang-of-thursdays-5</link><guid isPermaLink="false">https://substack.dylanbeattie.net/p/the-hang-of-thursdays-5</guid><dc:creator><![CDATA[Dylan Beattie]]></dc:creator><pubDate>Thu, 03 Aug 2023 10:28:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SDtx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello! This week&#8217;s THOTH is coming to you from Camber, a tiny village on the south coast of England, where I&#8217;m staying at my parents&#8217; house for a couple of weeks while they&#8217;re away. This week so far has been torrential rain and 40 mph winds &#8212; aka &#8220;traditional English seaside holiday weather&#8221; &#8212; so the usual Camber activities of walking on the beach, swimming in the sea and cycling into Rye to enjoy its many excellent pubs have been postponed in favour of sitting indoors poking the internet.</p><h2>The Framework 16 laptop</h2><p>My main travel laptop these days is a <a href="https://frame.work/gb/en">Framework 13</a>. It&#8217;s a fantastic machine that I love dearly, and I was really excited when Framework announced earlier this year that they&#8217;d be launching a 16&#8221; modular laptop. Looks like I wasn&#8217;t the only one: the Framework 16 opened for pre-orders last week, and the first batch sold out in less than 12 hours.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.dylanbeattie.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">substack.dylanbeattie.net is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Sean Hollister at The Verge has <a href="https://www.theverge.com/22665800/framework-laptop-16-hands-on-preview-modular-gaming-laptop">a great write-up</a> about what makes it special &#8212; and how Framework are hoping to succeed where so many other brands have failed in delivering the first laptop that genuinely supports a modular, replaceable gaming GPU.</p><p>I haven&#8217;t ordered one yet&#8230; but I know a few folks who have, and I suspect that after I get my hands on one of theirs to try out, it won&#8217;t be long before I&#8217;m putting in an order for my own.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><h2>Cree# and Ancestral Code</h2><p>This has been around for a few years, but I&#8217;d never heard of it until somebody pinged me a link last week: Jon Corbett has created a programming language based on Cree, an Indigenous language spoken by around 120,000 people across Canada. Cree# isn&#8217;t just another esoteric language, though; it&#8217;s been explicitly created to help preserve the Cree language and culture. As Jon puts it:</p><blockquote><p>&#8220;My primary target communities here are Cree communities that are looking for new (and exciting) ways to encourage students (especially in the K-12 grades) to use their heritage language as much as possible, and resist using English as their primary language.&#8221;</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SDtx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SDtx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png 424w, https://substackcdn.com/image/fetch/$s_!SDtx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png 848w, https://substackcdn.com/image/fetch/$s_!SDtx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png 1272w, https://substackcdn.com/image/fetch/$s_!SDtx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SDtx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png" width="839" height="830" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:830,&quot;width&quot;:839,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A radial computer keyboard, where each key is labelled with glyphs used in the Cree alphabet&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A radial computer keyboard, where each key is labelled with glyphs used in the Cree alphabet" title="A radial computer keyboard, where each key is labelled with glyphs used in the Cree alphabet" srcset="https://substackcdn.com/image/fetch/$s_!SDtx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png 424w, https://substackcdn.com/image/fetch/$s_!SDtx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png 848w, https://substackcdn.com/image/fetch/$s_!SDtx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png 1272w, https://substackcdn.com/image/fetch/$s_!SDtx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d7e97a-d41d-446c-b8b6-20b6797603c7_839x830.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Jon Corbett&#8217;s design for a keyboard (Creeboard?) based on the Cree star chart, from https://esoteric.codes/blog/jon-corbett</figcaption></figure></div><p>Cree#&#8217;s syntax and conventions reflect the visual art and storytelling traditions of the culture that inspired it, and it&#8217;s not quite like anything I&#8217;ve seen before.</p><ul><li><p><a href="https://esoteric.codes/blog/jon-corbett">Interview with Jon Corbett at esoteric.codes</a></p></li><li><p><a href="https://news.ycombinator.com/item?id=26771369">Cree# on Hacker News</a> (April 2021)</p></li></ul><h2>Fun with Printers</h2><p>For somebody who works with code, web pages and digital media, I print a lot. I use printed notes and schedules when I&#8217;m running online workshops, I rely on printed checklists when I&#8217;m packing for conference trips and gigs, and I print proofs of my sticker designs and other odd bits of artwork.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TSsD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4bca3e-4b4f-422e-adc1-bc27da88a6e9_1000x1034.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TSsD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4bca3e-4b4f-422e-adc1-bc27da88a6e9_1000x1034.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TSsD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4bca3e-4b4f-422e-adc1-bc27da88a6e9_1000x1034.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TSsD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4bca3e-4b4f-422e-adc1-bc27da88a6e9_1000x1034.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TSsD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4bca3e-4b4f-422e-adc1-bc27da88a6e9_1000x1034.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TSsD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4bca3e-4b4f-422e-adc1-bc27da88a6e9_1000x1034.jpeg" width="1000" height="1034" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d4bca3e-4b4f-422e-adc1-bc27da88a6e9_1000x1034.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1034,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;CDN media&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="CDN media" title="CDN media" srcset="https://substackcdn.com/image/fetch/$s_!TSsD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4bca3e-4b4f-422e-adc1-bc27da88a6e9_1000x1034.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TSsD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4bca3e-4b4f-422e-adc1-bc27da88a6e9_1000x1034.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TSsD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4bca3e-4b4f-422e-adc1-bc27da88a6e9_1000x1034.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TSsD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4bca3e-4b4f-422e-adc1-bc27da88a6e9_1000x1034.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Printers get a bad rap. Sure, you can buy a colour inkjet printer for &#163;50. That&#8217;s <em>ridiculously</em> cheap. Printers are big and they&#8217;re packed with moving parts; you can&#8217;t sell a printer for &#163;50 and make a profit. No, a &#163;50 printer is a loss leader. A &#163;50 printer is a way to get you to spend another &#163;50 on cartridges every few months &#8212; cartridges that have microchips in them, which <a href="https://www.cnet.com/tech/services-and-software/lexmark-invokes-dmca-in-toner-suit/">in some cases</a> have been used to store encryption keys so that anybody trying to reverse-engineer them to create compatible low-cost replacements can be prosecuted under the Digital Millennium Copyright Act.</p><p>Last month, my printer died. Something something print head won&#8217;t align beep beep no more prints for you. It was a Canon Pixma iP4900 that I&#8217;d salvaged from an office clear-out nearly 10 years ago; apart from costing me a small fortune on ink cartridges over the years, it was fantastic. </p><p>My new printer&#8217;s also a Canon. It&#8217;s a <a href="https://www.canon.co.uk/printers/pixma-g6050/">Canon Pixma G6050</a>. It didn&#8217;t cost &#163;50; it cost &#163;240. It&#8217;s an all-in-one printer, scanner and colour copier; it&#8217;s got built-in wired and wireless ethernet; but most important of all: <strong>it doesn&#8217;t use cartridges</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wWUF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6b4b34-9942-472d-941c-c63154ceae91_2028x1576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wWUF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6b4b34-9942-472d-941c-c63154ceae91_2028x1576.png 424w, https://substackcdn.com/image/fetch/$s_!wWUF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6b4b34-9942-472d-941c-c63154ceae91_2028x1576.png 848w, https://substackcdn.com/image/fetch/$s_!wWUF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6b4b34-9942-472d-941c-c63154ceae91_2028x1576.png 1272w, https://substackcdn.com/image/fetch/$s_!wWUF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6b4b34-9942-472d-941c-c63154ceae91_2028x1576.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wWUF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6b4b34-9942-472d-941c-c63154ceae91_2028x1576.png" width="1456" height="1131" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f6b4b34-9942-472d-941c-c63154ceae91_2028x1576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1131,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1968129,&quot;alt&quot;:&quot;a photograph of an inkjet printer with four plastic bottles of printer ink.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a photograph of an inkjet printer with four plastic bottles of printer ink." title="a photograph of an inkjet printer with four plastic bottles of printer ink." srcset="https://substackcdn.com/image/fetch/$s_!wWUF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6b4b34-9942-472d-941c-c63154ceae91_2028x1576.png 424w, https://substackcdn.com/image/fetch/$s_!wWUF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6b4b34-9942-472d-941c-c63154ceae91_2028x1576.png 848w, https://substackcdn.com/image/fetch/$s_!wWUF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6b4b34-9942-472d-941c-c63154ceae91_2028x1576.png 1272w, https://substackcdn.com/image/fetch/$s_!wWUF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6b4b34-9942-472d-941c-c63154ceae91_2028x1576.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">If you really want, you can mix all the inks together to make Brown Flavour!</figcaption></figure></div><p>See that? Bottles of ink. Just ink. No microchips, no DRM. Just a couple of big old plastic tanks full of ink. I particularly love that instead of angry messages about how it can&#8217;t print because it&#8217;s out of cyan, there&#8217;s just a message in the UI that says &#8220;Hey, ah, please check there&#8217;s ink in the tanks before printing and if there isn&#8217;t then maybe don&#8217;t print right now?&#8221;</p><p>It&#8217;s been a month, and I&#8217;ve printed about 150 pages; so far I&#8217;m delighted with it, and I&#8217;m sure that when I eventually have to fork out the princely sum of &#163;19.99 for a full set of ink refills I&#8217;ll be even more delighted. </p><h2>NDC London Call for Papers</h2><p>NDC London, one of my favourite conferences, will be back in January 2024, and the Call for Papers is open until 1 September. If you&#8217;d like to be part of it, this is your chance. I&#8217;m on the programme committee; we&#8217;re looking for talks on everything from embedded systems to ethics to web assembly to language models. What are you and your team working on? What problems are you trying to solve? How did you get there?</p><ul><li><p><a href="https://sessionize.com/ndc-london-2024/">NDC London Call for Papers at Sessionize</a></p></li></ul><p>I wrote a blog post a while ago about how the selection process works, which is still very much relevant, so maybe take a look at <a href="https://dylanbeattie.net/2017/10/17/why-you-werent-picked-for-ndc-london.html">Why Your Talk Wasn&#8217;t Picked For NDC London</a> before submitting anything.</p><h2>Kevin Mitnick RIP</h2><p>I was sad to see the news that Kevin Mitnick has died from pancreatic cancer. Mitnick was probably the world&#8217;s most famous computer hacker; his exploits were legendary in the fledgling infosec community when I was an undergraduate back in the 1990s, and following his release from prison in 2000 he reinvented himself as a security consultant.</p><p>My favourite Mitnick story has nothing to do with computers. As a teenager, he noticed that when the buses in his home town of Los Angeles broke down or were taken out of service, passengers would be issued with transfer tickets so they could switch to another bus and continue their journey. Mitnick found a stack of unused transfer tickets in a dumpster near the bus station, and realised that if he could find a way to validate them, he could ride the buses for free &#8212; so he told staff he was working on a school project about transportation and wanted to buy a ticket punch for his project, and voil&#224;! Free bus rides. I always thought that was a particularly elegant hack: observe the system, find the loopholes, wait for a lucky break, and round it all off with a little social engineering.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.dylanbeattie.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Want this in your inbox? Sure you do. Then you can read it in your email and it&#8217;ll look like you&#8217;re working! Go on. Subscribe. It&#8217;ll be fun.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>This week I&#8217;ve been&#8230;</h2><p><strong>Watching:</strong> <a href="https://www.imdb.com/title/tt1517268/">Barbie</a> &#8212; at the first completely sold-out cinema showing I&#8217;ve been to since 2019. It&#8217;s good. It&#8217;s very good. Charming, visually stunning, and laugh-out-loud funny.</p><p>Special shout out to the most unlikely credit you&#8217;re likely to see in a motion picture soundtrack any time soon, for &#8220;I&#8217;m Just Ken&#8221; &#8212; written by Mark Ronson, performed by Ryan Gosling, and featuring Wolfgang van Halen and Slash. Now <em>that&#8217;s</em> a supergroup I&#8217;d pay good money to see in concert.</p><p><strong>Listening to:</strong> &#8220;<a href="https://www.youtube.com/watch?v=4tBF7x0d1CY">Wild in the City</a>&#8221;, the new single from Nitrate. Founded by songwriter Nick Hogg, Nitrate are a melodic rock band from Nottingham whose last album &#8220;<a href="https://open.spotify.com/album/3rUgNcaIBXsF73ZWsWCn7A">Renegade</a>&#8221; has been top of my Spotify playlist for months. Slick, polished 80s-style rock, luscious waves of shimmering synthesizers and screaming guitars, and some seriously catchy hooks. </p><p><strong>Reading:</strong> &#8220;<a href="https://www.youtube.com/watch?v=k59iTTdt6G4">DOOM Guy: Life in First Person</a>&#8221; by John Romero. John&#8217;s autobiography is as much the story of id Software as it is the story of his own life, from the infamous Super Mario PC demo to Doom, Quake, Daikatana and beyond. I think it&#8217;s fair to say that John is better at writing code than he is at writing prose; there&#8217;s a wealth of detail here, but the writing can get a little clunky from time to time. Nevertheless, John remains one of the world&#8217;s most celebrated programmers, and the story of how a bunch of long-haired D&amp;D fans revolutionised the gaming industry is compelling.</p><p>And that&#8217;s a wrap, folks. Take it easy, have fun, and be excellent to each other.</p><p><em>Dylan</em></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>It&#8217;s my eyes, you see. 13&#8221; screens just aren&#8217;t *quite* big enough for all the really important programming work I have to do. Honest.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[The Hang of Thursdays #4]]></title><description><![CDATA[A special THOTH from We Are Developers World Congress in Berlin]]></description><link>https://substack.dylanbeattie.net/p/the-hang-of-thursdays-4</link><guid isPermaLink="false">https://substack.dylanbeattie.net/p/the-hang-of-thursdays-4</guid><dc:creator><![CDATA[Dylan Beattie]]></dc:creator><pubDate>Fri, 28 Jul 2023 11:06:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!e7CK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Gr&#252;&#223;e aus Berlin!</em> I&#8217;m in town for the WeAreDevelopers World Congress (WADWC), so this week&#8217;s newsletter is all about what&#8217;s happening, who&#8217;s here, and what they&#8217;re talking about. And, yes, it&#8217;s Friday. I know. Relax. It&#8217;s fine.</p><p>This event is <em>huge</em> &#8212; somebody at the speaker dinner last night said there were 12,000 people here, and having been on site for two days, I can easily believe it. Fifteen stages, hundreds of speakers and sessions, two expo halls; it&#8217;s so big it fills both buildings of the Berlin Messe convention centre, and outside in the plaza area between the building there are more stages, food trucks and a few exhibitor stands. It&#8217;s absolutely colossal, and I can&#8217;t hope to do more than scratch the surface&#8230; but here are the bits I did manage to see.</p><h2>Tim Berners-Lee and the Future of the Open Web</h2><p>The big name on this year&#8217;s programme at WADWC is Sir Tim Berners-Lee, inventor of the World Wide Web, whose opening keynote was an engaging riff on the history and future of the open web. Tim&#8217;s main research project for the past few years has been <a href="https://solidproject.org/">SOLID</a>, an initiative to add authentication, identity management and standardised data APIs to the web, and he talked about the challenges of decentralising identity, the problems with the data silos that have emerged post web-2.0 &#8212; &#8220;If you want to share a LinkedIn post with your Twitter followers, you can&#8217;t; you have to create a Twitter account to do that&#8221; &#8212; and the kinds of apps that we could build on top of decentralised identity and authentication.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!e7CK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e7CK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e7CK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e7CK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e7CK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e7CK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:965073,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!e7CK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e7CK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e7CK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e7CK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff358a4e3-28b6-42eb-a6de-ccd41e123919_4032x3024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>He also talked about AI, which is very much a recurring theme at WADWC this year, and in particular the idea that we should have access to AIs that work for us &#8212; &#8220;the way your doctor works for you, or your lawyer works for you; they have access to your private data, and you trust them not to share it.&#8221;</p><p>The keynote was followed by a &#8220;fireside chat&#8221; session with Tim and <a href="https://www.linkedin.com/in/seadahmetovic/?originalSubdomain=de">Sead Ahmetovic</a>, the CEO of WeAreDevelopers, about the web, AI, and the career challenges which developers face in 2023. A couple of quotes really stood out for me. On whether he&#8217;d do anything differently if he was creating the web over again, Tim said:</p><blockquote><p>&#8220;I used the domain name system, and at the time it was managed by people like Jon Postel, and managed in a very responsible way; it wasn't just a fighting ground for investors. So maybe that was a mistake, or maybe it's something we can fix.&#8221; </p></blockquote><p>I love DNS, and I think it&#8217;s a fantastic system that works incredibly well; I&#8217;ve always thought the design of DNS was one of the key factors behind the success of the web, so it was interesting to hear that the creator of the web thinks DNS was a weak point.</p><p>On whether developers should generalise or specialise: </p><blockquote><p>&#8220;From the point of view of running open source projects, as the CTO of a company that needs talent: it's good that there's a variety of talent. We need generalists, we need specialists, we need T-shaped people, or pi-shaped people, where you've got two deep specialities.&#8221;</p></blockquote><p>That&#8217;s the first time I&#8217;d ever heard the phrase &#8220;pi-shaped&#8221;, and I think it&#8217;s delightful.</p><p>The quote that stuck with me the most, though, was when he was asked about social and ethical responsibility:</p><blockquote><p>&#8220;I suppose... one way to think about it is when you write your line of code, when you write a function: work local, but think global. Code it as though you are creating part of a huge, wonderful, very powerful system, that people are using to build effective democracy, effective science, to allow society to function much better than it does.&#8221;</p></blockquote><p>I loved that.</p><h2>John Romero on Creating Doom</h2><p>The afternoon keynote speaker was John Romero, sharing the story of how Id Software created Doom in 12 months.</p><p>It&#8217;s no exaggeration to say that Doom revolutionised computer gaming. It introduced the world to multiplayer network gaming. It pioneered the free-to-play model by making episode 1 a free download, back in the days of dial-up bulletin board systems. The 3D engine was more sophisticated than anything we&#8217;d ever seen before, the music still triggers pangs of nostalgia in an entire generation of gamers &#8212; and the word &#8220;deathmatch&#8221; was created to describe Doom&#8217;s competitive multiplayer mode.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wp_2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d165add-9f94-4adf-8c57-196f9ca92492_4032x3024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wp_2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d165add-9f94-4adf-8c57-196f9ca92492_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wp_2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d165add-9f94-4adf-8c57-196f9ca92492_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wp_2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d165add-9f94-4adf-8c57-196f9ca92492_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wp_2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d165add-9f94-4adf-8c57-196f9ca92492_4032x3024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wp_2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d165add-9f94-4adf-8c57-196f9ca92492_4032x3024.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d165add-9f94-4adf-8c57-196f9ca92492_4032x3024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1737631,&quot;alt&quot;:&quot;John Romero on stage, in front of a slide showing DOOM: 30 Years of RIP and TEAR. John wears a red and white floral shirt, black jeans, New Rock boots. He looks fabulous. &quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="John Romero on stage, in front of a slide showing DOOM: 30 Years of RIP and TEAR. John wears a red and white floral shirt, black jeans, New Rock boots. He looks fabulous. " title="John Romero on stage, in front of a slide showing DOOM: 30 Years of RIP and TEAR. John wears a red and white floral shirt, black jeans, New Rock boots. He looks fabulous. " srcset="https://substackcdn.com/image/fetch/$s_!wp_2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d165add-9f94-4adf-8c57-196f9ca92492_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wp_2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d165add-9f94-4adf-8c57-196f9ca92492_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wp_2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d165add-9f94-4adf-8c57-196f9ca92492_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wp_2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d165add-9f94-4adf-8c57-196f9ca92492_4032x3024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">John Romero at WeAreDevelopers World Congress 2023</figcaption></figure></div><p>I&#8217;ve geeked out over the history of Id Software before; my talk &#8220;<a href="https://www.youtube.com/watch?v=9CSjlZeqKOc">The Web That Never Was</a>&#8221; even has a whole alternate-history riff on what might have happened if the two Johns had been hired by Nintendo after they ported Super Mario to the IBM PC. Even so, I learned a few things watching John&#8217;s talk that I&#8217;d never heard of before, like the story of John Carmack walking through the snow to the bank to withdraw $11,000 in cash, so he could pay cash-on-delivery for his new NeXT workstation. </p><p>John also revealed that 20th Century Fox offered Id the &#8220;Aliens&#8221; licence &#8212; cue a few astonished gasps from the audience &#8212; &#8220;but it only had aliens; there weren&#8217;t any demons. We talked about it for, like, half an hour, and decided no&#8221;.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> We also learned that Carmack&#8217;s decision to use BSP trees as the game&#8217;s main data structure came after a sunken octagonal staircase caused a recursion bug that slowed gameplay down to a crawl and sent Carmack digging through computer science papers looking for a solution.</p><h2>Other Highlights</h2><p>I caught <a href="https://www.thegiftcode.dev">Gift Egwuenu</a>&#8217;s session &#8220;Going Beyond Passwords: The Future of User Authentication&#8221;, which was a great overview of the history of password-based security, what&#8217;s wrong with it, and the current state of authentication &#8212; single sign-on, multifactor auth systems, and how security standards like FIDO fit into your system&#8217;s authentication flow. I &#8220;met&#8221; Gift at a Zoom workshop I ran back in 2020, when we were all doing everything online; she&#8217;s been doing all sorts of awesome things, so it was great to finally meet her in person.</p><p>Stack Overflow has a huge presence here. They sponsored the speaker dinner/reception event on Wednesday night, and they&#8217;re taking advantage of WADWC to announce a whole load of new features &#8212; basically their vision for incorporating generative AI into the Stack Overflow platform. I must say that Prashanth Chandrasekar&#8217;s product announcement session didn&#8217;t really grab me, but then later Prashanth returned to the stage alongside Joel Spolsky (you know, Joel on Software, founder of Stack Overflow, FogBuz, CityDesk, etc.) and Sead Ahmetovic for a Q&amp;A session about the past and future of Stack Overflow. One comment that stood out for me was Joel talking about embracing the idea of Google as a user interface:</p><blockquote><p>&#8220;When we built Stack Overflow, we knew that Google was going to be the UI. We weren&#8217;t expecting people to come to Stack Overflow; we expected them to Google their problem and find the answer on Stack Overflow. Now, ChatGPT, and to a lesser extent Copilot, have become the frontend to Stack Overflow&#8217;s knowledge base. You don&#8217;t just get the answer, you get the answer modified to suit your codebase, ready to copy and paste into your solution, and I think that&#8217;s great; it makes life so much easier for developers.&#8221;</p></blockquote><p>They talked a great deal about trust as well. Prashanth shared the statistic that, according to the most recent Stack Overflow developer survey, &#8220;70% of developers want to use AI tools, but only 40% of them trust AI&#8221;. He discussed the work they&#8217;ve been doing to close that gap, particularly with regard to sources and citations so a developer can find out exactly where the AI found the solution to a particular problem.</p><p>Personally, I&#8217;m optimistic about it all. Code reuse is clearly a good idea. Prashanth used the example of parsing phone numbers, which I thought was great: as a user, it sucks using platforms that keep rejecting your phone number as invalid, but it also doesn&#8217;t make sense for every dev team out there to build their own algorithm for parsing and validating phone numbers. We&#8217;ve had healthy package management ecosystems for long enough now to have a pretty good idea of what they can do, and there&#8217;s clearly still a whole class of problems out there that we don&#8217;t want to solve from scratch every time, but that don&#8217;t really lend themselves to importing a package or standard library.</p><p>The challenge, of course, is that AI is easily capable of producing an infinite amount of crap, and if we train the next generation of language models on the SEO clickbait produced by the previous generation, we&#8217;re in a race to the bottom in terms of quality. We&#8217;ll see how we go.</p><h2>Rocking in the rain</h2><p>And then there&#8217;s my bit &#8212; two live sets of developer comedy rock&#8217;n&#8217;roll. I was playing on the Airstream Stage, a converted Airstream trailer outside next the food trucks and beer tents&#8230; which was absolutely fantastic until it started raining about an hour before I was due to go on&#8230; but you know what? I&#8217;m British. I&#8217;ve survived dozens of English summers and five Glastonbury Festivals,  and it takes more than a bit of rain to stop the show. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qTbz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37fd5b25-2f4d-47f4-8633-6cb912855bc8_4032x3024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qTbz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37fd5b25-2f4d-47f4-8633-6cb912855bc8_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qTbz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37fd5b25-2f4d-47f4-8633-6cb912855bc8_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qTbz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37fd5b25-2f4d-47f4-8633-6cb912855bc8_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qTbz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37fd5b25-2f4d-47f4-8633-6cb912855bc8_4032x3024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qTbz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37fd5b25-2f4d-47f4-8633-6cb912855bc8_4032x3024.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37fd5b25-2f4d-47f4-8633-6cb912855bc8_4032x3024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5347680,&quot;alt&quot;:&quot;A handwritten set list next to a Zoom G1on guitar pedal. Both are soaked with rain.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A handwritten set list next to a Zoom G1on guitar pedal. Both are soaked with rain." title="A handwritten set list next to a Zoom G1on guitar pedal. Both are soaked with rain." srcset="https://substackcdn.com/image/fetch/$s_!qTbz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37fd5b25-2f4d-47f4-8633-6cb912855bc8_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qTbz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37fd5b25-2f4d-47f4-8633-6cb912855bc8_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qTbz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37fd5b25-2f4d-47f4-8633-6cb912855bc8_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qTbz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37fd5b25-2f4d-47f4-8633-6cb912855bc8_4032x3024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I think I figured out where &#8220;Wet Wet Wet&#8221; got their name.</figcaption></figure></div><p>Thankfully, the audience agreed. Somebody even came up to me afterwards and said &#8220;you got our lead developer to sing along &#8212; we didn&#8217;t think we&#8217;d ever see that!&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G5XN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fe871a-cd94-4950-847f-e7fb9e992485_2048x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G5XN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fe871a-cd94-4950-847f-e7fb9e992485_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!G5XN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fe871a-cd94-4950-847f-e7fb9e992485_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!G5XN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fe871a-cd94-4950-847f-e7fb9e992485_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!G5XN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fe871a-cd94-4950-847f-e7fb9e992485_2048x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G5XN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fe871a-cd94-4950-847f-e7fb9e992485_2048x1536.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05fe871a-cd94-4950-847f-e7fb9e992485_2048x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:472879,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!G5XN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fe871a-cd94-4950-847f-e7fb9e992485_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!G5XN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fe871a-cd94-4950-847f-e7fb9e992485_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!G5XN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fe871a-cd94-4950-847f-e7fb9e992485_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!G5XN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05fe871a-cd94-4950-847f-e7fb9e992485_2048x1536.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">On stage with Hila Fish and Keren Kenzi at WeAreDevelopers World Congress</figcaption></figure></div><p>Huge thanks to everybody who came along &#8212; and especially to <a href="https://twitter.com/Hilafish1">Hila Fish</a> and <a href="https://twitter.com/KerenKenzi">Keren Kenzi</a> for some outstanding (and unrehearsed!) guest vocal performances. And a shout out to <a href="https://frame.work/at/en">Framework</a>, whose 13&#8221; laptop turns out to be mostly showerproof as well as fast, light, modular and generally awesome. </p><p>And that was that, apart from a few well-earned beers and the obligatory post-gig currywurst and Fritz-kola.</p><p>Time to grab lunch, say hello and goodbye to a few people, and head to the airport.</p><p>Catch you next time.</p><p><em>Dylan</em></p><p></p><p></p><p> </p><p>  </p><p></p><p></p><p></p><p></p><p></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p> A few years later, the &#8220;<a href="https://www.moddb.com/mods/alien-quake">Alien Quake</a>&#8221; community mod turned the Quake engine into aliens vs space marines, and did a much better job than the official Alien vs Predator game.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Travelling with Tiny Guitars]]></title><description><![CDATA[On the joys of owning a Steinberger headless guitar, which &#8211; let&#8217;s face it &#8211; is probably the only thing I&#8217;ll ever have in common with both Eddie van Halen and Douglas Adams.]]></description><link>https://substack.dylanbeattie.net/p/travelling-with-tiny-guitars</link><guid isPermaLink="false">https://substack.dylanbeattie.net/p/travelling-with-tiny-guitars</guid><dc:creator><![CDATA[Dylan Beattie]]></dc:creator><pubDate>Mon, 24 Jul 2023 10:52:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week <a href="https://twitter.com/gutek/status/1679569628211605512">Jakub Gutkowski asked on Twitter</a>:</p><blockquote><p><a href="https://twitter.com/dylanbeattie">@dylanbeattie</a> hey, what travel guitar (when you fly etc) are you using? Thanks!</p></blockquote><p>Sounds like a really good opportunity to geek out about guitars for a bit.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vSz8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4786ef17-eed2-4250-bac4-64660ba50f36_650x825.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vSz8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4786ef17-eed2-4250-bac4-64660ba50f36_650x825.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vSz8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4786ef17-eed2-4250-bac4-64660ba50f36_650x825.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vSz8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4786ef17-eed2-4250-bac4-64660ba50f36_650x825.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vSz8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4786ef17-eed2-4250-bac4-64660ba50f36_650x825.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vSz8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4786ef17-eed2-4250-bac4-64660ba50f36_650x825.jpeg" width="650" height="825" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4786ef17-eed2-4250-bac4-64660ba50f36_650x825.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:825,&quot;width&quot;:650,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Six Steinberger Spirit headless guitars.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Six Steinberger Spirit headless guitars." title="Six Steinberger Spirit headless guitars." srcset="https://substackcdn.com/image/fetch/$s_!vSz8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4786ef17-eed2-4250-bac4-64660ba50f36_650x825.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vSz8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4786ef17-eed2-4250-bac4-64660ba50f36_650x825.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vSz8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4786ef17-eed2-4250-bac4-64660ba50f36_650x825.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vSz8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4786ef17-eed2-4250-bac4-64660ba50f36_650x825.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The current Steinberger Spirit guitar line-up. Gotta catch &#8216;em all&#8230; right?</figcaption></figure></div><p>My travel guitars &#8212; I currently own two &#8212; are Steinberger Spirit GT-PROs, and there&#8217;s a bit of history behind them. They were originally designed by a guy called <a href="https://www.steinberger.com/Ned-Steinberger-The-Steinberger-Q-and-A-Interview.html">Ned Steinberger</a> in the 1980s. Steinberger was a true innovator; while most guitar companies were churning out the same wooden solid-body guitar in various different shapes and colours, Steinberger&#8217;s guitars were made of carbon fibre. To eliminate the headstock, he moved the tuning machines into a special bridge, and built his guitars to use specially built strings with a brass ball at both ends.</p><p>Personally, I think Steinberger&#8217;s greatest innovation was a thing called the &#8220;TransTrem&#8221;. See, the tremolo on most guitars will let you wobble the strings around a bit, get some gentle vibrato or a screeching &#8220;dive bomb&#8221; effect &#8212; but when you do, every string detunes by a different amount. The TransTrem used calibrated strings so when you grabbed the trem bar, the strings stayed in tune relative to each other &#8212; if you want to see one in action, check out &#8220;Get Up&#8221;  by Van Halen, from the 5150 album; here&#8217;s a live clip from a 1986 show showing Eddie van Halen playing one of his custom red-striped Steinbergers, complete with liberal use of the TransTrem:</p><div id="youtube2-EreBDnb_V4Y" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;EreBDnb_V4Y&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/EreBDnb_V4Y?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Steinberger sold the company to Gibson in 1987, who continued to manufacture the guitars until the mid-1990s. Then grunge happened, everybody got really miserable, the music industry unilaterally decided that the 1980s had been a horrible mistake, and Steinberger guitars went out of production for a while.</p><h2>Life, the Universe, and&#8230; Guitars?</h2><p>I had no idea any of this was going on; I think I might have seen a Steinberger on <em>Top of the Pops</em> once or twice, but I couldn&#8217;t have told you what it was called or anything more about it. Then, during the 1990s, the Guardian newspaper in the UK ran a short-lived column called &#8220;Me and My Gizmo&#8221;. They&#8217;d interview celebrities about a particular tool or piece of technology they loved &#8212; explorers talking about their Swiss Army knife, chefs talking about a piece of kitchen equipment. One week, the featured guest was Douglas Adams, talking about his favourite guitar: a white, left-handed Steinberger. </p><p>I&#8217;ve been a huge fan of Douglas Adams since I first read <em>The Hitch-Hiker&#8217;s Guide to the Galaxy</em> when I was a kid. I love his writing, I love his fascination with technology and gadgets&#8230; and it turned out he was also a huge guitar nerd. I clipped out the column, and it was pinned up above my desk in my bedroom for <em>years</em>. That original clipping went missing somewhere among my many undergraduate house moves, but with a bit of help from the lovely folks at <a href="https://zz9.org/">ZZ9 Plural Z Alpha</a>, I managed to track down a copy via the newspapers.com online archive. I&#8217;ve reproduced it here:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mXpn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc59d2f7-fb17-46e8-8e98-d42b8c8f879c_2939x1242.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mXpn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc59d2f7-fb17-46e8-8e98-d42b8c8f879c_2939x1242.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mXpn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc59d2f7-fb17-46e8-8e98-d42b8c8f879c_2939x1242.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mXpn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc59d2f7-fb17-46e8-8e98-d42b8c8f879c_2939x1242.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mXpn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc59d2f7-fb17-46e8-8e98-d42b8c8f879c_2939x1242.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mXpn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc59d2f7-fb17-46e8-8e98-d42b8c8f879c_2939x1242.jpeg" width="1456" height="615" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc59d2f7-fb17-46e8-8e98-d42b8c8f879c_2939x1242.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:615,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1026689,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mXpn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc59d2f7-fb17-46e8-8e98-d42b8c8f879c_2939x1242.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mXpn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc59d2f7-fb17-46e8-8e98-d42b8c8f879c_2939x1242.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mXpn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc59d2f7-fb17-46e8-8e98-d42b8c8f879c_2939x1242.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mXpn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc59d2f7-fb17-46e8-8e98-d42b8c8f879c_2939x1242.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;ME AND MY GIZMO No 6: Douglas Adams&#8217;s guitar&#8221;, <em>The Guardian</em>, June 23, 1994</figcaption></figure></div><blockquote><p><em>THE STUDY AT the top of Douglas Adams's house owes less to Ford Prefect than it does to Spinal Tap. The author of the Hitchhiker's Guide to the Galaxy and other ingenious comic and scientific observations works in a room festooned with guitars. Acoustic guitars, a brand new Santa Cruz guitar customised with exploding earths and dolphins in mother of pearl, ancient electric guitars, and a frightening aquamarine green guitar. Admittedly, it is a techie&#8217;s study, with a powerful Macintosh Quadra 950, a couple of lesser discarded Macs, a PowerBook, video entryphone and enough mixing and recording equipment to supply a modest studio, but it is the guitars that dominate. Adams owns about 30, but the one that really got him playing again is a white headless Steinberger. Adams began when he was 12, but the music dwindled as he travelled in his quest for the oddly named endangered fauna recorded in his book Last Chance to See.</em></p><p><em>Three years ago, he bought the Steinberger secondhand in Hollywood, for about $3,000, from the better known of the world&#8217;s two extant left-handed guitar shops (the other is in East London). It has full-length strings, but everything else is pared right down so it looks like a truncated toy. It plugs in to a Walkman-sized amp attachment, which feeds into tiny unfolding headphones, so it is perfect for Adams to take on his travels. He can be a guitar hero in hotel rooms worldwide, and even admits to practising mid-flight, &#8220;though you do get some strange looks from other passengers&#8221;. The Steinberger is made of graphite, so it is extremely strong. &#8220;If Pete Townshend had used one of these,&#8221; Adams says, &#8220;he would have done more damage to the stage than to the guitar.&#8221; Rocker lore is weighing heavy on Adams&#8217;s mind, as his buddy Dave Gilmour made him the birthday present of inviting him to join Pink Floyd for one number at Earl&#8217;s Court in October. Adams is already frantically practising the tricky full tone bends in Wish You Were Here.</em></p><p><em>That Floyd influence extends to Adams&#8217;s great ambition: to write an album. &#8220;Concept is the term I&#8217;m trying to avoid, but I&#8217;d like to write a whole piece, with a collection of songs that would make a story.&#8221; He messes about on his bank of synthesizers, electronically tweaking the sounds and storing them on disk. Performer software analyses each sound &#8211; its exact pitch, length and volume &#8211; and can transcribe any noise onto a musical score. &#8220;Singing is not the high point of my act,&#8221; he says, but he demands a whole-hearted and harmonious performance from friends at his annual Christmas carol party. &#8220;We don&#8217;t go out on the street shaking our tins, but we have a really good sing. We only invite friends who are proper singers.&#8221;</em></p><p><em>Still, Adams is stronger on the qwerty keyboard than the ivories. &#8220;I do a bit of Net-surfing, to newsgroups on music, computers, palaeontology, anthropology. And there&#8217;s a Douglas Adams fan group, so I have a look there.&#8221; His latest plaything is a virtual landscape building program, sort of cyber Capability Brown, for creating arty archipelagos, tormented seas, grassy undulations and other twiddly bits. Another handy piece of software is Now Up-to-Date, a calendar manager that schedules appointments into his wife and sister&#8217;s computers. The Adamses live in a well-wired household; when they were redecorating to make way for their imminent baby, Douglas stopped his wife from getting rid of the room&#8217;s Ethernet cable. &#8220;She&#8217;ll be needing that soon&#8221;, he predicts, &#8220;I&#8217;m just trying to work out what computer to get her.&#8221; The child will clearly be born with a mouse in her hand.</em></p><p> <em>- Ruth Shurman</em></p></blockquote><p>Douglas Adams died in 2001. Then in 2015, his original white Steinberger <a href="https://web.archive.org/web/20150508163535/http://www.ebay.co.uk/itm/VERY-RARE-STEINBERGER-GL4-TA-LEFT-HANDED-ELECTRIC-GUITAR-OWNED-BY-DOUGLAS-ADAMS-/151666385474">showed up for sale on eBay</a> and somebody sent me a link going &#8220;hey, look, you can buy Douglas Adams&#8217;s guitar!&#8221; </p><p>There were only two problems: one, I wasn&#8217;t left-handed<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>, and two, I didn&#8217;t have three and a half grand knocking around. It got me thinking, though. This was around the time that I started travelling to tech conferences abroad, and writing tech parody songs, and putting them up on YouTube; I&#8217;m not saying I <em>needed</em> a travel guitar, but I really, really <em>wanted</em> one &#8212; and if it could be a white Steinberger like Douglas&#8217;s one, then so much the better. So I did a little digging.</p><h2>The Steinberger Spirit revival</h2><p>Turns out Gibson had started making Steinberger-style guitars again in the early 2000s, under the &#8220;Spirit&#8221; model name. Now, the Steinberger Spirit is a very, very different beast from the original 1980s guitars. They&#8217;re made of wood rather than carbon fibre, they don&#8217;t have the transposing tremolo, they don&#8217;t have active pickups, and they&#8217;re not made in the USA&#8230; and they cost a few hundred pounds, rather than several thousand.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EZkt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EZkt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EZkt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EZkt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EZkt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EZkt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6113228,&quot;alt&quot;:&quot;A white Steinberger Spirit headless guitar&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A white Steinberger Spirit headless guitar" title="A white Steinberger Spirit headless guitar" srcset="https://substackcdn.com/image/fetch/$s_!EZkt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EZkt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EZkt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EZkt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4168c442-d3a6-438b-bd32-4f54ac6ca722_4032x3024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My white Steinberger Spirit GT-PRO. </figcaption></figure></div><p>I bought my white Steinberger from <a href="https://www.guitarguitar.co.uk/">Guitar Guitar</a> in Epsom in 2016 for &#163;299. It was love at first strum: I plugged it in, played it for about thirty seconds, and that was it. That guitar&#8217;s been to Australia twice, seven trips to Russia, six trips to Ukraine, the USA, Belarus, Israel, and dozens of shows all over Europe &#8212; if all those trips were in a straight line it&#8217;d be three quarters of the way to the moon by now. I&#8217;ve swapped out the regular strap buttons for Straplocks, and moved the neck strap button on to the top shoulder of the body, but apart from that it&#8217;s completely stock.</p><p>The first few trips I did with this guitar, I took it in the cabin with me, but flying with a guitar &#8212; even a tiny travel one &#8212; is a bit of a grey area. Technically, it&#8217;s not allowed, because it exceeds the cabin baggage allowance. I&#8217;ve never been <em>stopped</em>, but I&#8217;ve also never been explicitly told it&#8217;s OK&#8230; it was always a case of smile, don&#8217;t ask, and hope it works out, and I was never entirely sure what I would do if it <em>didn&#8217;t</em> work out.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Chp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99437490-0ca5-48e7-9d21-3c4b8b021244_4032x3024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Chp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99437490-0ca5-48e7-9d21-3c4b8b021244_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8Chp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99437490-0ca5-48e7-9d21-3c4b8b021244_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8Chp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99437490-0ca5-48e7-9d21-3c4b8b021244_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8Chp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99437490-0ca5-48e7-9d21-3c4b8b021244_4032x3024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Chp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99437490-0ca5-48e7-9d21-3c4b8b021244_4032x3024.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99437490-0ca5-48e7-9d21-3c4b8b021244_4032x3024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5673137,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8Chp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99437490-0ca5-48e7-9d21-3c4b8b021244_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8Chp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99437490-0ca5-48e7-9d21-3c4b8b021244_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8Chp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99437490-0ca5-48e7-9d21-3c4b8b021244_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8Chp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99437490-0ca5-48e7-9d21-3c4b8b021244_4032x3024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>These days, it goes in the hold. I have an <a href="https://www.eastpak.com/uk-en/collections/travel-c8354/transit-r-l-black-pEK-0A5BA9-008-OS--1-.html">Eastpak roller duffel case</a> which is big enough to stash my guitar in the bottom, solid enough to keep it safe in transit, and small enough to check as regular baggage, so most trips the guitar goes in the big case with clothes packed around it, and the aluminium flight case with my mixing desk, wireless gear, etc. shoved in the top.</p><p>Yeah, checked baggage doesn&#8217;t always arrive in the right place at the right time. I&#8217;ve been remarkably lucky with air travel &#8212; the only time my bag ever went missing was on the way home from St. Petersburg a few years ago, and I got a phone call less than an hour after I left the airport to say they&#8217;d found it. Still, it&#8217;s a risk, so a year or so later, I went shopping for a backup guitar in case the primary guitar went walkabout.</p><p>Turns out that the supply chain for these guitars can be a little volatile: none to be had in guitar stores, for love nor money. Eventually I tracked down a second-hand one, but trying to keep it in tune gave me all kinds of headaches. Turns out there was a huge crack in the tremolo block, which was slowly bending out of shape under the tension of the strings, and eventually snapped off altogether.</p><p>That one hung on the wall for a long while, until earlier this year, I decided to overhaul it: a new EVH-inspired paint job, new electrics, a replacement tremolo block, and a headstock adapter so I could use regular strings with it instead of special Steinberger double ball-end strings. </p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed3acbb3-1074-485a-85b6-2c6ea88e41fd_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af526a94-7687-46cc-b23a-fb611def1456_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4af7d03-2e54-4464-9a36-bbed93fa4ee8_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78221e59-f13f-47dc-846b-211fb531d35e_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e175319d-0bfc-4115-9e5a-202a0bc67d44_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8886e0d9-3a12-4545-823c-a53ccb38076e_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afa5d582-d0ed-4d6a-a72d-a59cdf813ef8_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76af56f1-d0ee-413e-91e6-ab9e1d78beb8_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6e31eaf-bd03-4101-99c2-a46c99ba7c64_4032x3024.jpeg&quot;}],&quot;caption&quot;:&quot;Overhauling a Steinberger Spirit GT-PRO guitar.&quot;,&quot;alt&quot;:&quot;An image gallery showing a headless guitar being stripped down, sanded, repainted, and reassembled. By the end, it's blue with black and white stripes, and looks extremely shiny.&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fb63af5-a15b-456b-a3c1-1652c9779e05_1456x1454.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>I&#8217;m really happy with the new paint job and the electrics&#8230; but the new trem block and the string adapter, not so much. It&#8217;s not easy to find authentic Steinberger replacement parts, so I ordered after-market replacements which are apparently made by OVERLORD OF MUSIC, and, well, they&#8217;re terrible. The string adapter lasted about four hours before tuning problems drove me to put the original headstock back on, and I ended up completely dismantling the new tremolo assembly and rebuilding the original around the replacement block from the new one, and I&#8217;m still not entirely convinced.</p><p>Replacement part woes aside, they are genuinely wonderful guitars. They&#8217;re fun, they look fantastic, they sound great and play remarkably well considering they retail for under &#163;500. Given that the famously fickle supply chain appears to be firing on all cylinders right now, I suspect that before long I might end up buying another one.</p><p>After all, no matter how many guitars you already have, the ideal number of guitars to own is N+1.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>I&#8217;m still not, in case you&#8217;re wondering.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>On my fourth, maybe fifth, trip to Russia, the attendant at the airline check-in desk told me that &#8220;guitars were not allowed on flights to Russia&#8221;. I explained I&#8217;d taken the same guitar on the same airline several times before. She said that wasn&#8217;t allowed. I thanked her for the information and said I&#8217;d remember it for next time. She handed me my boarding pass, and that was that. Even at the best of times, Russian bureaucracy never made the slightest bit of sense.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[The Hang of Thursdays #3]]></title><description><![CDATA[Streaming code, We Are Developers World Congress, the Post Office Horizon scandal back in the news, the law of abstractions, and the return of The (Other) Man in the (Other) Hat.]]></description><link>https://substack.dylanbeattie.net/p/the-hang-of-thursdays-3</link><guid isPermaLink="false">https://substack.dylanbeattie.net/p/the-hang-of-thursdays-3</guid><dc:creator><![CDATA[Dylan Beattie]]></dc:creator><pubDate>Thu, 20 Jul 2023 10:04:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!p5Gu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Coding Streams on Twitch and YouTube</h2><p>I spent a substantial chunk of last week building a web app for running guitar karaoke nights. I streamed the whole thing live<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>, which means if you really want to, you can watch almost the entire development of the app on video &#8212; all <a href="https://www.youtube.com/playlist?list=PLw0jj21rhfkOZ2qu5zREX4xTQC0NoKbUe">19 hours and 31 minutes of it</a>. (And for the record: I ran it on Saturday night, and it worked flawlessly. There were a few features I&#8217;ll add for next time, and I definitely need to add some kind of security to make sure we don&#8217;t get internet weirdos signing up and messing with the stats,  but it worked. Which is nice.)</p><p>I really enjoy those kind of live-streaming coding sessions. It&#8217;s fun, I enjoy the folks asking questions in chat, but I also find that knowing there&#8217;s even a handful of people out there watching what I&#8217;m doing really helps my focus. </p><p>I&#8217;d like to do a lot more streaming, but averaged over, say, a year, I probably only spend about 30% of my working time actually writing code &#8212; and at least half of that is stuff I&#8217;d never stream because it&#8217;s full of customer API keys and other stuff I don&#8217;t want going anywhere near a Twitch stream.</p><p>I do a lot of other stuff that might work well on a stream, though. Designing stickers in Illustrator; preparing workshop material and demos, making PowerPoint decks; I figure maybe some folks out there might like to see how it all comes together, so keep an eye on my <a href="https://www.twitch.tv/dylanbeattie">Twitch</a> or <a href="https://www.youtube.com/dylanbeattie">YouTube</a> channels if you&#8217;re interested.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.dylanbeattie.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">When I hit a thousand subscribers, I&#8217;ll release a new version of Rockstar. Go on. Sign up. Make me regret saying that.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>&#8220;Is this React or Nuxt?&#8221;</h2><p>Among the many fascinating questions that viewers shared in the chat during last week&#8217;s live stream, one the really stuck with me was somebody who dropped in while I was <a href="https://github.com/guitaraoke/app.guitaraoke.live/blob/main/GuitaraokeWebApp/wwwroot/js/script.js">adding some client-side JavaScript</a> to handle a few specific interaction scenarios, and asked &#8220;is this React or Nuxt&#8221;?</p><p>I often wonder if there&#8217;s a generation of developers out there now who have been so immersed in frameworks and abstractions for their entire careers that they literally don&#8217;t grok what JavaScript actually is. Then I wonder if there was a generation of machine code programmers who felt the same way about those young whippersnappers with their assembly languages, and then a generation of assembly hackers who didn&#8217;t trust C compilers, and C programmers who didn&#8217;t trust Java, and that maybe that&#8217;s just the way the world works. I suspect that <a href="https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/">Spolsky&#8217;s Law of Leaky Abstractions</a> remains as relevant now as it was 20 years ago. You want to do React or Nuxt? Cool &#8212; but you probably need to know enough JavaScript to understand what&#8217;s happening when the abstractions break down.</p><p>On the other hand, I watched <a href="https://twitter.com/binjimint">Ben Smith</a>&#8217;s <a href="https://joyofcoding.org/speakers/ben-smith.html">presentation at Joy of Coding</a> in Rotterdam last month. Ben codes demos, in web assembly, by hand: less than 2 kilobytes of hand-coded instructions that&#8217;ll run a <a href="https://binji.github.io/posts/raw-wasm-making-a-maze-race-part-2/">maze race game</a> right in your web browser, without a framework or compiler in sight. Yep, turns out that hand-coded assembly is alive and well right here in 2023. Pointless? Maybe. But sometimes, the point of a good demo is to remind you that not everything needs to have a point.</p><h2>We Are Developers World Congress in Berlin</h2><p>July was supposed to be downtime. No conferences, no gigs, no travel, just a nice quiet month at home &#8212; catch up with friends, work on some new talks, workshops, write a couple of songs&#8230; you know the bit in the agile manifesto where it talks about &#8220;responding to change over following a plan?&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p5Gu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p5Gu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!p5Gu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!p5Gu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!p5Gu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p5Gu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A \&quot;speaker card\&quot; from We Are Developers World Congress, advertising Dylan Beattie Live: Specs, Bugs 'n' Rock'n'Roll. 27-28 July, Berlin CityCube. Also a grinning picture of me before I had any grey in my beard. I gotta get some new pictures, you know.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A &quot;speaker card&quot; from We Are Developers World Congress, advertising Dylan Beattie Live: Specs, Bugs 'n' Rock'n'Roll. 27-28 July, Berlin CityCube. Also a grinning picture of me before I had any grey in my beard. I gotta get some new pictures, you know." title="A &quot;speaker card&quot; from We Are Developers World Congress, advertising Dylan Beattie Live: Specs, Bugs 'n' Rock'n'Roll. 27-28 July, Berlin CityCube. Also a grinning picture of me before I had any grey in my beard. I gotta get some new pictures, you know." srcset="https://substackcdn.com/image/fetch/$s_!p5Gu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!p5Gu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!p5Gu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!p5Gu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c3d6a-3eac-453e-9585-6f8bb4976eec_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Yep, next week I&#8217;m off to Berlin to do my developer comedy rock music thing at We Are Developers World Congress. This event is <em>huge</em> &#8212; not only in terms of attendance, but it&#8217;s also the first time I&#8217;ve been on a conference bill alongside names like Tim Berners-Lee, John Romero, and Joel Spolsky. Y&#8217;know, the guys who invented (or co-invented) the web, the first person shooter, and Stack Overflow, respectively. Plus a whole bunch of other amazing speakers &#8212; and did I mention it&#8217;s in Berlin, one of the coolest cities in the world? Tickets <a href="https://www.wearedevelopers.com/world-congress/tickets">are on sale now</a> &#8212; &#8364;579, but they&#8217;re doing a &#8364;299 ticket for early-stage startups and a &#8364;199 ticket for students. I&#8217;ll be rocking out on the Airstream Stage on Thursday evening; if you&#8217;re there, come &amp; say hi. I might even be giving out stickers.</p><h2>The Horizon IT Scandal</h2><p>In my talk &#8220;<a href="https://www.youtube.com/watch?v=Vk2fi7NZ3OQ">Failure is Always an Option</a>&#8221;, I share the story of the <a href="https://www.postofficescandal.uk/">Horizon IT scandal</a> which led Post Office Limited, the UK company that administers high street post office branches, to falsely prosecute more than 700 employees between 2000 and 2014 after a faulty IT system reported accounting discrepancies and financial shortfalls. Horizon is <a href="https://www.theguardian.com/business/2023/jul/17/post-office-inquiry-chair-criticises-horizon-compensation-scheme">back in the news</a> this week, after the chair of the inquiry expressed concerns about whether the compensation programme set up in the wake of the scandal would be able to deliver on their commitment to fully compensate the affected parties by August next year.</p><p>Liability has always been a tough question when it comes to software engineering: compared to industries like healthcare and aviation, even the most cautious software projects still look like four drunks wrestling for control of a stolen car. We can&#8217;t build perfect software; in a world where we write abstractions on top of abstractions on top of abstractions, there are just too many variables &#8212; often both literally and figuratively. What I believe sets the Horizon scandal apart, though, is the managers&#8217; and executives&#8217; absolute refusal to acknowledge the possibility that the software might be to blame. </p><p>Software has bugs, and if somebody is prepared to testify under oath that it doesn&#8217;t, they&#8217;re either lying, or they&#8217;re stupid<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> &#8212; or quite possibly both. It&#8217;d just be nice to see the executives behind these kind of fiascos face some consequences once in a while.</p><h3>This week I&#8217;ve been&#8230;</h3><p><strong>Listening to:</strong> <a href="https://extreme-band.com/">&#8220;SIX&#8221; by Extreme</a>. I suspect I&#8217;m not the only Extreme fan who loves every moment of their second album<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> but then finds most of their subsequent output rather less compelling. SIX is growing on me, though. A little whimsical in places, and a track or two that wouldn&#8217;t be out of place on a Muse album, but when SIX  kicks into gear, it kicks <em>hard</em>. Nuno Bettencourt remains one of the finest guitar players the world has ever seen &#8212; check out <a href="https://www.youtube.com/watch?v=fqkKFhFMaIw">this video</a> of Queen&#8217;s Brian May reacting to Nuno&#8217;s solo on Get The Funk Out; it&#8217;s simply wonderful &#8212; and on tracks like BANSHEE and lead single RISE, the guitar work here is just sublime. No idea why they set all the song titles in CAPITALS, though.</p><p><strong>Watching:</strong> <a href="https://www.imdb.com/title/tt1462764/">Indiana Jones and the Dial of Destiny</a>. Yes, they made another Indiana Jones film. Yes, Harrison Ford is 81 years old. Yes, the fourth one was a horrible mistake. Yes, that sound you can hear is <em>taurus pecunias </em>going &#8220;please, father, I&#8217;m so tired&#8230; let me sleep now?&#8221;</p><p>The thing is, I <em>love</em> cinema. A film has to be very, very bad indeed for me not to enjoy it on the big screen, and Indy V is not bad at all. The story is endearingly daft, there&#8217;s the odd spot of slightly wonky CGI, and plot holes you can fly a plane though &#8212; quite literally, in one case. But the cast are on cracking form; it has charm, and pace, and is packed with the kind of set-pieces that are so much fun to watch you don&#8217;t even think about how daft the whole thing is until afterwards.</p><p><strong>Reading:</strong> <a href="https://www.waterstones.com/book/nettle-and-bone/t-kingfisher/9781803360997">Nettle and Bone</a> by T. Kingfisher. I knew nothing about this book other than that it made the shortlist for this year&#8217;s <a href="https://www.thehugoawards.org/">Hugo Awards</a>. I&#8217;m planning to read &#8212; or at least start reading &#8212; all six shortlisted novels between now and the awards ceremony in October; I&#8217;d already read and thoroughly enjoyed John Scalzi&#8217;s <em>The Kaiju Preservation Society</em>, but T. Kingfisher is a new name to me, and so far I like it a lot. If dark fantasy with witches and dustwives and bone dogs and even an actual fairy godmother sounds like your kind of thing, check it out.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.dylanbeattie.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Yeah, I know. You never subscribe to things. Go on. Break the chains of your conditioning. Dare to dream the impossible dream. SUBSCRIBE!</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>And that&#8217;s the week, folks. Next week&#8217;s issue will be a special THOTH<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> from We Are Developers World Congress in Berlin, and quite probably a review of <a href="https://en.wikipedia.org/wiki/Barbenheimer">#barbenheimer</a>.</p><p>Until then, stay safe, have fun, and be excellent to each other.</p><p><em>Dylan</em></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>At the moment, I&#8217;m using <a href="http://restream.io">restream.io</a> to stream to both Twitch and YouTube; Twitch generally seems to be a better platform for this kind of streaming, but I have way more followers on YouTube so I&#8217;m hedging my bets for now.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Ok, or maybe they work for NASA.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Which I shan&#8217;t name here, because the title contains a naughty word and the spam filters won&#8217;t like it.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>The Hang Of Thursdays. THOTH &#8212; you know, the <a href="https://en.wikipedia.org/wiki/Thoth">Egyptian god of maths, science and magic</a>.</p></div></div>]]></content:encoded></item><item><title><![CDATA[The Hang of Thursdays, #2]]></title><description><![CDATA[This week we're talking MVP renewals, London .NET, taking Guitaraoke to Denmark, rejected GitHub profile achievements, and social media going into meltdown.]]></description><link>https://substack.dylanbeattie.net/p/the-hang-of-thursdays-2</link><guid isPermaLink="false">https://substack.dylanbeattie.net/p/the-hang-of-thursdays-2</guid><dc:creator><![CDATA[Dylan Beattie]]></dc:creator><pubDate>Thu, 13 Jul 2023 12:32:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2l9Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff225516e-5b2d-4a2d-9cc1-b97af6d3aa15_6000x3368.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>The MVP Renewal Cycle #mvpbuzz</h2><p>This week my networks have been buzzing with people sharing the news that they&#8217;d been renewed as a Microsoft MVP. MVPs &#8212; &#8220;Most Valuable Professionals&#8221; &#8212; are &#8220;technology experts who passionately share their knowledge with the community&#8221;. People who work with Microsoft technology and who run meetups, speak at conferences, write books, write blogs, maintain open source projects; activities which aren&#8217;t really your <em>job</em>, but which benefit the wider community.</p><p>Microsoft aren&#8217;t the only company that does this; I know a few Google Developer Experts and Java Champions, and I even met a Docker Captain once. I know there are some mixed feelings about these kinds of programmes in general, and the Microsoft MVP programme in particular &#8212; usually sentiments along the lines of &#8220;wow, you did all this free marketing for a trillion-dollar company and they sent you a certificate!&#8221;</p><p>But, whatever you think about Microsoft, corporations, and these kinds of programmes, just about every Microsoft MVP I&#8217;ve ever met has been a thoroughly excellent person, and that alone makes it a programme I&#8217;m proud to be part of.</p><p>So <strong>congratulations</strong> to all the Microsoft MVPs out there who got renewed, and particular congratulations to everybody who&#8217;s just been awarded for the first time. For me, this will be my seventh award, but I can still remember vividly what it felt like when I got my first MVP award: I was absolutely delighted<em>.</em> Recognition is a big deal.</p><h2>London .NET Meetup with Angeliki Patsiavou and Nick Chapsas</h2><p>Thanks to everybody who came along to our <a href="https://www.meetup.com/london-net-user-group/">London .NET User Group</a> meetup last night &#8212; and especially to our hosts <a href="https://www.codat.io/">Codat</a> for providing the venue, drinks, pizzas and snacks. </p><p>Our first speaker was <a href="https://twitter.com/a_patsiavou?lang=en-GB">Angeliki Patsiavou</a>, who presented a brand new talk about building and enabling cross-functional teams inspired by &#8220;The Avengers&#8221;, packed with insight and humour &#8212; not to mention one of the best slide decks I&#8217;ve seen in a while.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f225516e-5b2d-4a2d-9cc1-b97af6d3aa15_6000x3368.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a1d8c87-8f43-4a14-b1b4-919b365eea4b_6000x3368.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c0fcfc97-9944-40f6-ae23-7d89988681c5_6000x3368.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1600c0ea-8fd3-4dcf-8965-7d9078139f13_6000x3368.jpeg&quot;}],&quot;caption&quot;:&quot;London .NET meetup at Codat, July 12 2023&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd2460f2-7a30-4e20-913f-9b6b225b257f_1456x1456.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>Next up was <a href="https://www.youtube.com/@nickchapsas">Nick Chapsas</a>, with a great talk which was ostensibly about logging in .NET, but actually took us on a deep dive into the gritty internals of how strings are managed by the .NET runtime and how something as seemingly innocuous as formatting your log messages can actually have a big impact on your application&#8217;s performance and memory consumption.</p><p>For all the folks asking &#8220;did you record it?&#8221; &#8212; not this time, sorry! (although there&#8217;s a version of Nick&#8217;s talk from NDC Oslo <a href="https://www.youtube.com/watch?v=NlBjVJPkT6M">available on YouTube</a>.)</p><p>There&#8217;s good news on that front, though. LDNUG is taking a break in August, but when we come back in September, we&#8217;re planning to video all the talks from our meetups and share them online, so those of you who weren&#8217;t able to join us in person can catch up afterwards.</p><h2>Rejected GitHub Profile Achievements</h2><p><a href="https://github.com/Flet">Flet</a> has created this <a href="https://github.com/Flet/rejected-github-profile-achievements">list of rejected GitHub Profile Achievements</a>, which made me laugh out loud. I&#8217;ve definitely earned a few Procrastinators, two Secret Santas that I&#8217;m aware of, and at least one Sith Lord from the days when my team was switching from Subversion to git &#8212; but I think my most interesting achievement would have been a Tee Hee. Many years ago, I had a web project that I was working on using both Windows and macOS, and I thought it&#8217;d be a good idea to share the project folder from macOS via SMB and then map a Windows drive to it. </p><p>Turns out that if you clone a Git repo on macOS and then push it on Windows, you mess up every single line ending in the entire project. </p><p>So&#8230; yeah, don&#8217;t do that.</p><p>Flet&#8217;s list is at <a href="https://github.com/Flet/rejected-github-profile-achievements">https://github.com/Flet/rejected-github-profile-achievements</a> if you fancy a laugh. &#128513;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.dylanbeattie.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">You know what would be awesome? Getting enough subscribers on here that I could justify deleting all my other social media accounts. Yeah. That would rule.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Guitar Karaoke at the Copenhagen Developers Festival</h2><p>At the end of August, I&#8217;ll be heading to Denmark along with a lot of other familiar faces from the conference circuit to speak (and play, and sing, and generally be Loud and Extroverted) at the <a href="https://cphdevfest.com/">Copenhagen Developers Festival</a>, a new event from the folks behind NDC Conferences, which combines technical tracks during the day with live music, karaoke, science, gaming, and other fun stuff in the evenings.</p><p>I&#8217;m going to be sharing the story of how I created <a href="https://guitaraoke.live/">Guitaraoke</a> &#8212; so between now and August, I need to figure out how to virtualise a bunch of the hardware I&#8217;ve been using to run it.</p><p>One big part of that is replacing paper sign-up sheets with a web app, which I&#8217;m working on this week and streaming live at <a href="https://www.twitch.tv/videos/1869840548">twitch.tv/dylanbeattie</a>. Like all the best software development, the stream so far is about 50% actually adding features, and 50% going &#8220;but why is that test failing? <em>why!?!</em>?&#8221;</p><p>I&#8217;ll be running the new app for real at the next Guitaraoke night, which is this Saturday 15th July, at <a href="https://ignition.beer/">Ignition Brewery</a> in south-east London. After all, beta testing is best done live, in a brewery, with a guitar in one hand, a beer in the other, and room full of drunk people cheering you on.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r7rp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0ea2539-712f-43f4-af0a-f477683550db_6000x4000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r7rp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0ea2539-712f-43f4-af0a-f477683550db_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!r7rp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0ea2539-712f-43f4-af0a-f477683550db_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!r7rp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0ea2539-712f-43f4-af0a-f477683550db_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!r7rp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0ea2539-712f-43f4-af0a-f477683550db_6000x4000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r7rp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0ea2539-712f-43f4-af0a-f477683550db_6000x4000.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c0ea2539-712f-43f4-af0a-f477683550db_6000x4000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7646230,&quot;alt&quot;:&quot;A neon sign reads \&quot;Ignition Open\&quot;; three musicians are playing and singing underneath a projector screen showing the song lyrics and chords. Everybody is very sweaty and there's cables and guitars everywhere. It looks like fun.&quot;,&quot;title&quot;:&quot;A neon sign reads \&quot;Ignition Open\&quot;; three musicians are playing and singing underneath a projector screen showing the song lyrics and chords. Everybody is very sweaty and there's cables and guitars everywhere. It looks like fun.&quot;,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A neon sign reads &quot;Ignition Open&quot;; three musicians are playing and singing underneath a projector screen showing the song lyrics and chords. Everybody is very sweaty and there's cables and guitars everywhere. It looks like fun." title="A neon sign reads &quot;Ignition Open&quot;; three musicians are playing and singing underneath a projector screen showing the song lyrics and chords. Everybody is very sweaty and there's cables and guitars everywhere. It looks like fun." srcset="https://substackcdn.com/image/fetch/$s_!r7rp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0ea2539-712f-43f4-af0a-f477683550db_6000x4000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!r7rp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0ea2539-712f-43f4-af0a-f477683550db_6000x4000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!r7rp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0ea2539-712f-43f4-af0a-f477683550db_6000x4000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!r7rp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0ea2539-712f-43f4-af0a-f477683550db_6000x4000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Guitaraoke at Ignition Brewery in London, 20 May 2023</figcaption></figure></div><h3>Modern Web Development with C# and .NET</h3><p>I&#8217;m also going to be running a two-day workshop in Copenhagen on modern web development with ASP.NET Core. The web is wonderful, .NET rocks, and&#8230; well, I don&#8217;t like JavaScript frameworks.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> So I&#8217;m going to be showing folks how to build a website entirely in .NET, from frontend features like TagHelpers and SASS compilers, to minimal APIs and controllers, to some of the things .NET doesn&#8217;t really do well out of the box &#8212; email, timezones, y&#8217;know. Nice straightforward easy stuff.</p><p>Check out the workshop here: <strong><a href="https://cphdevfest.com/workshops/modern-web-development-with-c-and-net/957e969dd365">Modern Web Development with C# and .NET</a></strong></p><p>And if you want to know more about how I prepare these kinds of workshops, you might find <a href="https://substack.dylanbeattie.net/p/structuring-workshops">this post interesting</a>.</p><h2><strong>&#8220;Prompts are unsafe, and that means language models are not fit for purpose&#8221;</strong></h2><p>I really liked <a href="https://softwarecrisis.dev/letters/prompts-are-not-fit-for-purpose">this article by </a><strong><a href="https://softwarecrisis.dev/letters/prompts-are-not-fit-for-purpose">Baldur Bjarnason</a></strong> on the challenges of avoiding injection-style attacks when using large language models like ChatGPT. We&#8217;ve known about <a href="https://owasp.org/www-community/attacks/SQL_Injection">SQL injection attacks</a> for literally decades; avoiding them is trivial, but they&#8217;re still one of the most common vulnerabilities seen in the wild. Securing language models against &#8220;jailbreaking&#8221; is orders of magnitude more complex than avoiding SQL injection attacks; Baldur&#8217;s basically saying we have no idea how to do this so we shouldn&#8217;t be integrating language models with external services or exposing them to external users. Interesting and unsettling in equal measure.</p><h2>Threads, Twitter, and the Collapse of Social Media</h2><p>It&#8217;s been an entertainingly chaotic few weeks in the wonderful world of social media. My <a href="https://substack.dylanbeattie.net/p/the-social-meltdown">thoughts on the whole thing are here</a>; I also enjoyed Alex Kirshner&#8217;s &#8220;<a href="https://slate.com/technology/2023/07/threads-app-meta-review-twitter-musk-facebook-winner.html">Meta&#8217;s New Threads App is Terrible. It Might Just Bury Twitter</a>&#8221; on Slate.com, but only time will tell whether this is the beginning of the end for social media, or just the end of the beginning.</p><h2>This week I&#8217;ve been&#8230;</h2><p><strong>Reading</strong>: &#8220;<a href="https://www.oreilly.com/library/view/code-that-fits/9780137464302/">Code That Fits in Your Head</a>&#8221; by Mark Seemann. I&#8217;ve met Mark at a few conferences over the years, I find the way he talks about software complexity really refreshing, and the book is no exception: a step-by-step, case-by-case walkthrough of building a restaurant reservation system. My personal highlight so far is what Mark calls the <a href="https://blog.ploeh.dk/2019/10/07/devils-advocate/">Devil&#8217;s Advocate</a> technique: given a perfectly reasonable-looking unit test, what&#8217;s the weirdest, most off-the-wall code you can write to make the test pass &#8212; and then how can you improve the test so that it catches those loopholes and edge cases?</p><p><strong>Watching:</strong> <a href="https://en.wikipedia.org/wiki/South_Park_(season_25)">South Park, season 25</a>. I signed to Paramount+ to watch Star Trek: Strange New Worlds, which is <em>excellent</em> &#8212; and then found every season of South Park is also on there and I had a bit of catching up to do. I&#8217;ve been a fan of South Park since watching season 1 on RealPlayer 25 years ago, and it still makes me laugh until milk comes out of my nose.</p><p>(<em>On a South Park-related note, the show&#8217;s creators, Trey Parker and Matt Stone, have recently <a href="https://www.nytimes.com/2023/06/06/us/casa-bonita-restaurant.html">spent literally millions of dollars</a> refurbishing and reopening </em>La Casa Bonita<em>, the Colorado restaurant where they spent their childhood birthdays &#8212; complete with waterfalls, cliff divers, puppets, and a &#8220;person in a gorilla costume being chased by a sheriff&#8221;. I think that all sounds rather lovely.</em>)</p><p><strong>Listening to: </strong>Iron Maiden, live at the O2 here in London last Friday. A fantastic live show by a band who show absolutely no signs of slowing down; triple guitar harmonies, thundering backline, and Bruce Dickinson happy bouncing between joking with the crowd, belting out those high notes like an air-raid siren, and exchanging pyrotechnic laser fire with Eddie, Maiden&#8217;s monstrous zombie mascot who would occasionally prowl the stage in the form of a giant 12&#8217; puppet. </p><p>Shout out to opening act <a href="https://www.youtube.com/channel/UCKmi2SZRPoCqXA01qtzIqrw">Lord of the Lost</a> as well; as somebody who remembers the Eurovision Song Contest being the least credible thing <em>imaginable</em>, I find it wonderfully weird that an industrial goth rock band (!) can represent Germany in Eurovision (!!), finish last (!!!) &#8212; and then open for Iron Maiden at the O2 in front of over ten thousand people less than two months later. But we do, and they did, and it was very good indeed.</p><p>And that&#8217;s the week, folks. Take it easy, stay safe, and be excellent to each other.</p><p><em>Dylan</em></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Apparently &#8220;server-side React&#8221; is a real thing that people do now. Just&#8230; wow.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[What Should a "Cancel" Button Do, Exactly?]]></title><description><![CDATA[There's a button. It says Cancel. What'll happen when you click it? Well, you got to ask yourself one question... do you feel lucky? Well? Punk? Do ya?]]></description><link>https://substack.dylanbeattie.net/p/what-should-a-cancel-button-do-exactly</link><guid isPermaLink="false">https://substack.dylanbeattie.net/p/what-should-a-cancel-button-do-exactly</guid><dc:creator><![CDATA[Dylan Beattie]]></dc:creator><pubDate>Tue, 11 Jul 2023 21:31:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!A3UB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Good user experience design is about balance. Software lives in this weird liminal space where a perfectly innocent word has two contradictory and completely obvious meanings: anybody who&#8217;s ever written a Java program to to manage school enrolment knows that creating a class isn&#8217;t the same as creating a class, but most of the time, there&#8217;s a way to get the balance right.</p><p>Most of the time.</p><p>I got this absolute gem of a screen today, from some event management software I&#8217;m integrating with:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A3UB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A3UB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png 424w, https://substackcdn.com/image/fetch/$s_!A3UB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png 848w, https://substackcdn.com/image/fetch/$s_!A3UB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png 1272w, https://substackcdn.com/image/fetch/$s_!A3UB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A3UB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png" width="624" height="411" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:411,&quot;width&quot;:624,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22654,&quot;alt&quot;:&quot;A screenshot from an event management app, showing the form used to cancel an event. There is a single button on the form. It says \&quot;Cancel\&quot;. We don't know what it does.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot from an event management app, showing the form used to cancel an event. There is a single button on the form. It says &quot;Cancel&quot;. We don't know what it does." title="A screenshot from an event management app, showing the form used to cancel an event. There is a single button on the form. It says &quot;Cancel&quot;. We don't know what it does." srcset="https://substackcdn.com/image/fetch/$s_!A3UB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png 424w, https://substackcdn.com/image/fetch/$s_!A3UB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png 848w, https://substackcdn.com/image/fetch/$s_!A3UB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png 1272w, https://substackcdn.com/image/fetch/$s_!A3UB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444865c0-d962-4ab0-ad09-0c9b76025a90_624x411.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">No, I&#8217;m not going to tell you where it&#8217;s from. They&#8217;re still figuring a lot of this stuff out, bless &#8216;em.</figcaption></figure></div><p>To be fair, if you end up on this screen by mistake and instinctively reach for the Cancel button, it won&#8217;t <em>actually</em> cancel the event unless there&#8217;s some text in the &#8220;CANCELATION REASON&#8221; box.</p><p>If there is? You&#8217;re one click away from accidentally refunding all your tickets and emailing all the ticket holders saying the event&#8217;s been called off.</p><p>I don&#8217;t know about you, but I&#8217;d have gone with a big angry red button labelled &#8220;Cancel This Event&#8221;, and perhaps a smaller, friendlier one labelled &#8220;Go Back&#8221;&#8230; y&#8217;know, just to make it obvious which one is which.</p><p>And, just in case you ever think the software industry is paying attention and learning from our own mistakes, here&#8217;s a post I wrote over a decade ago about SagePay doing exactly the same thing: &#8220;<a href="https://dylanbeattie.net/2010/11/03/should-cancel-cancel-cancellation-or.html">Should &#8216;Cancel&#8217; cancel the cancellation, or just cancel the cancellation cancellation?</a>&#8221;</p><p></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Social Meltdown]]></title><description><![CDATA[On the disintegration of Twitter, the rise of the fediverse, and choice overload.]]></description><link>https://substack.dylanbeattie.net/p/the-social-meltdown</link><guid isPermaLink="false">https://substack.dylanbeattie.net/p/the-social-meltdown</guid><dc:creator><![CDATA[Dylan Beattie]]></dc:creator><pubDate>Tue, 11 Jul 2023 08:57:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zMpk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I just joined <a href="https://www.threads.net/@dylanbeattie">Threads</a>. If you&#8217;ve not been following the news, Threads is the new social media app from Meta, the company behind Facebook, WhatsApp and Instagram. It&#8217;s basically a carbon copy of all the worst bits of Twitter, right up to the capricious billionaire chief executive who&#8217;d probably kill their own users if they thought they could sell advertising space on the headstones.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zMpk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zMpk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png 424w, https://substackcdn.com/image/fetch/$s_!zMpk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png 848w, https://substackcdn.com/image/fetch/$s_!zMpk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png 1272w, https://substackcdn.com/image/fetch/$s_!zMpk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zMpk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png" width="1456" height="882" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:882,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3948918,&quot;alt&quot;:&quot;A graveyard in the cold winter moonlight. headstone reads \&quot;IN LOVING MEMORY OF SOCIAL MEDIA 2008-2023. NOT TECHNICALLY DEAD, BUT SURE SMELLS LIKE IT\&quot;. Cold mist crawls across the frozen ground and the whole thing is hella spooky.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A graveyard in the cold winter moonlight. headstone reads &quot;IN LOVING MEMORY OF SOCIAL MEDIA 2008-2023. NOT TECHNICALLY DEAD, BUT SURE SMELLS LIKE IT&quot;. Cold mist crawls across the frozen ground and the whole thing is hella spooky." title="A graveyard in the cold winter moonlight. headstone reads &quot;IN LOVING MEMORY OF SOCIAL MEDIA 2008-2023. NOT TECHNICALLY DEAD, BUT SURE SMELLS LIKE IT&quot;. Cold mist crawls across the frozen ground and the whole thing is hella spooky." srcset="https://substackcdn.com/image/fetch/$s_!zMpk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png 424w, https://substackcdn.com/image/fetch/$s_!zMpk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png 848w, https://substackcdn.com/image/fetch/$s_!zMpk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png 1272w, https://substackcdn.com/image/fetch/$s_!zMpk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf7d609c-1c60-4d28-b0e5-95e698be2b20_1920x1163.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Not dead, only Thread.Sleep()ing?</figcaption></figure></div><p>Threads will never replace Twitter, though, because what Twitter was, at its peak, was something remarkable. It was not <strong>a</strong> microblogging service, it was <strong>the</strong> microblogging service. If you wanted to post something publicly, you&#8217;d post it on Twitter, whether you were the <a href="https://twitter.com/potus">President of the United States of America</a>, or a <a href="https://twitter.com/bobservant">parody account based on a sitcom about a burger van in Scotland</a>.</p><p>Twitter had <strong>clout</strong>. It had influence. For better or worse, tweeting could actually change the world. The Arab Spring, Obama, Trump, Brexit&#8230; sure, it wasn&#8217;t the biggest, most popular, or most profitable social media platform. But ask yourself: have you ever seen a &#8220;serious&#8221; newspaper use LinkedIn or Facebook as a source when quoting somebody? Nope. Twitter drove the news.</p><p>I joined Twitter in 2008 (<a href="https://twitter.com/dylanbeattie/status/813023431">here&#8217;s my first tweet</a>!), around the same time I started getting involved in tech community events. Twitter was perfect for the kind of loosely-coupled connections and friendships that arise from those events. Facebook was too personal, LinkedIn was too corporate, email too time-consuming. But tagging somebody on Twitter was a wonderfully unobtrusive way to say &#8220;hey, we&#8217;re talking about this thing you might find interesting.&#8221;</p><p>It wasn&#8217;t always like that. Before microblogging, there was blogging. Blogging was great. Google Reader was a great product, Blogger and WordPress were easy enough to get up and running, and writing a blog became a <em>de facto</em> rite of passage for anybody trying to establish a name for themselves in tech, journalism, art, music.</p><p>Social media killed that, and I believe that&#8217;s because it changed the dynamic of what people do when when have five minutes to kill at their desk between meetings &#8212;  not to mention the paradigm shift from desktop to mobile that was taking place around the same time. I used to check my blog roll a few time a day. I&#8217;d post in the comments, reply to threads, write my own follow-up posts. Then social media came along, and blogs got relegated to something I&#8217;d check when I&#8217;d caught up on Facebook and Twitter&#8230; and before long, that became impossible. Too many people, too much content, and if you&#8217;ve read everything your friends posted, the algorithm can always find something else to show you.</p><p>I&#8217;m as guilty as anybody of falling for the convenience of social media. Over the years, I spent more and more time posting on Twitter and Facebook, and less and less writing on my own blog. The <a href="https://twitter.com/dylanbeattie/status/1541546213564194816">occasional</a> tweet <a href="https://twitter.com/dylanbeattie/status/103804183274192897">going viral</a> was a thrill&#8230; the most vapid, inconsequential kind of thrill, a completely arbitrary and unverifiable number on a web page going up every time the my post racked up another page impression to sell to their advertisers &#8212; but hell, they had some incredibly smart people getting paid an obscene amount of money to make going viral on those platforms feel like an accomplishment, and it worked.</p><p>Then, in November last year, Elon Musk bought Twitter.</p><p>I don&#8217;t know anything about electric cars, so based on the media coverage of Tesla&#8217;s success, I assumed Musk must be some sort of genius. </p><p>I do actually know a thing or two about rockets, and when I saw SpaceX landing two reusable launch vehicles side-by-side like something out of a 50s science fiction movie, I continued to assume that Musk must be some sort of genius.</p><p>Then he bought a software company &#8212; and as it happens, I know quite a lot about software, and about what&#8217;s involved in running complex software platforms.</p><p>I no longer believe Elon Musk is a genius. Not even close. I think a ginger cat with one brain cell would have done a better job running Twitter than Elon Musk has, unless he&#8217;s actually trying to destroy the platform and bankrupt himself in the process.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>Twitter is dying. Sure, it&#8217;s still up, I&#8217;m still using it, and so are lots of other people. But it feels like nobody&#8217;s in it for the long haul any more. It&#8217;s like when you realise your favourite bar isn&#8217;t bothering to fix the broken washroom taps any more: we&#8217;re still visiting, but we&#8217;re waiting for the day we show up to find the doors locked and the repossession notice stuck in the window, and when the day comes, nobody will really be surprised.</p><p>The problem is: there&#8217;s no compelling replacement.</p><p>In the immediate aftermath of Musk&#8217;s acquisition, a lot of folks I know set up accounts on Mastodon. Quite a lot of us discovered we already had accounts on Mastodon, which we&#8217;d completely forgotten about&#8230; and quite a few of those, myself included, discovered that the Mastodon instance we&#8217;d signed up to wasn&#8217;t a Mastodon instance any more and was now hosting some, ah, specialist adult content.</p><p>At the  time of writing, I have active accounts on Mastodon, BlueSky and Threads &#8212; not to mention <a href="https://substack.com/@dylanbeattie">Substack&#8217;s own Notes platform</a>, which looks suspiciously like Twitter but with better typography and no users. Plus all the platforms I was already on: Facebook, Instagram, LinkedIn, Telegram, WhatsApp, 43 different Slack workspaces (don&#8217;t ask), Discord, Signal, Meetup&#8230;</p><p>In a way, it&#8217;s a blessing. The sheer overload of networks means that social media no longer feels remotely convenient &#8212; and as much as I wish a few of them would hurry up and actually shut down, I suspect that&#8217;s about as likely as Nadine Dorries actually resigning.</p><p>Fundamentally, though, the process of re-evaluating Twitter&#8217;s role in my online career has led me to realise that I use &#8212; used? &#8212; Twitter for four things. </p><p>First: I use it to tell stupid jokes. No big deal. Jokes move easily onto another platform.</p><p>Second: I use it to publicly engage with companies whose behaviour I think is worthy of comment. Sometimes because they do something I think is exceptionally cool; sometimes because they do something I think is exceptionally uncool. Companies who aren&#8217;t answering the phone or replying to email will often respond to a tweet &#8212; especially from somebody with thousands of followers. I suspect this is just gone <em>(thanks Elon)</em>: I honestly can&#8217;t imagine an airline paying as much attention to Threads, Mastodon or BlueSky as they did to Twitter in its heyday, and as Twitter itself becomes increasingly irrelevant I&#8217;m sure customer service departments all over the world are breathing a huge sigh of relief.</p><p>Third: I use it to talk about tech. Fifteen years ago, when I didn&#8217;t know anybody to talk to when I needed help with .NET and Firebug and jQuery, posting on Twitter had an uncanny knack of connecting with the right people. For me, that&#8217;s not a factor any more; my network of helpful tech people has reached critical mass and is no longer beholden to a specific channel or platform.</p><p>Finally, I use Twitter to talk to people. Sometimes, this is personal: I talk to a lot of people via Twitter DMs, and in many cases, they&#8217;re people I have no other way to reach - no email, no phone number, no common Slacks or Discords. Over the next week or so, I&#8217;ll be pinging all of those people saying &#8220;hey, here&#8217;s how to reach me when this whole place finally burns down&#8221;.</p><p>Often, though, it&#8217;s more of a broadcast. It&#8217;s announcements about meetups I&#8217;m running, conferences, community events, workshops, Linebreakers concerts &#8212; and what I&#8217;d really like is to be able to use email for this.</p><p>Email is far from perfect, but what makes it unique is that it&#8217;s <em>portable</em>. When Twitter finally goes dark, I&#8217;ll lose the 15,000+ followers I&#8217;ve built up over the last fifteen years &#8212; they&#8217;ll just be gone. There&#8217;s no way for me to download a list and sync it to Threads or BlueSky. But if I have a list of email addresses, I can take that with me - and, if you&#8217;re running your own domain, so can you. I&#8217;ve moved dylanbeattie.net from my friends&#8217; Qmail box, to my own mail server, to Fastmail; it&#8217;s not trivial, but it&#8217;s possible. </p><p>I&#8217;ve never run any kind of newsletter or mailing list before; to me, email has always felt more personal than just posting stuff online and hoping the right people will see it. But, y&#8217;know, with everything that&#8217;s happening to social media at the moment, it feels like it might be time to give it a shot.</p><p>You wanna be involved? Sign up, let&#8217;s see how this thing goes.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.dylanbeattie.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">It&#8217;s just the same dumb stuff I was doing already, but in your inbox instead of on somebody else&#8217;s advertising platform.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>And if not? I&#8217;m on <a href="https://twitter.com/dylanbeattie">Twitter</a>, <a href="https://bsky.app/profile/dylanbeattie.net">BlueSky</a>, <a href="https://www.threads.net/@dylanbeattie">Threads</a>, <a href="https://www.instagram.com/dylanbeattie/">Instagram</a>, <a href="https://www.facebook.com/dylanbeattie">Facebook</a>, <a href="https://www.linkedin.com/in/dylanbeattie/">LinkedIn</a>, <a href="https://github.com/dylanbeattie">GitHub</a>, <a href="https://www.tiktok.com/@dylan_beattie">TikTok</a> &#8212; and let&#8217;s face it, whatever daft thing launches next week, I&#8217;ll probably be dylanbeattie on that as well.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>We shall leave aside, for now, the question of how moribund the automotive and aerospace industries must have been for a hack like Musk to disrupt them as successfully as he did.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[The Hang of Thursdays #1]]></title><description><![CDATA[A weekly round-up of tech news, things I'm doing, and stuff I thought was interesting.]]></description><link>https://substack.dylanbeattie.net/p/the-hang-of-thursdays-1</link><guid isPermaLink="false">https://substack.dylanbeattie.net/p/the-hang-of-thursdays-1</guid><dc:creator><![CDATA[Dylan Beattie]]></dc:creator><pubDate>Thu, 06 Jul 2023 13:29:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!K57d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08bbb305-ecae-4ed0-b4bd-fb394ec4c80a_3088x2320.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello! Welcome! So, this is a completely new thing and I really don&#8217;t know yet what kind of shape it&#8217;s going to take, but as <a href="https://yungpueblo.com/">yung pueblo</a> said:<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><blockquote><p><em>main goal for july: no more waiting.</em></p><p><em>don&#8217;t get stuck in the planning stage. </em></p><p><em>you know what you need to do. </em></p><p><em>be bold and start making moves, even if the plan is not clear.</em></p></blockquote><p>That hit a nerve. I&#8217;ve been saying for years that I need to write more. Folks who know me, or follow me online, know I do all kinds of stuff &#8212; tech, computers, music, travel. Lots of what I do is quite good fun, and even the bits that aren&#8217;t normally throw up the odd funny story along the way. I do a lot of stuff, and I like to write about what I&#8217;m doing, but recently a lot of the stuff I write ends up on platforms like Facebook.</p><h4>&#8230;but hang on, don&#8217;t you already have a blog?</h4><p>Yeah, I do! I got a whole website over at <a href="https://dylanbeattie.net/">dylanbeattie.net</a>. It&#8217;s mine, I own it, I built it myself using Jekyll, it&#8217;s currently hosted for free using GitHub Pages.</p><p>But&#8230; after five years, I&#8217;ve decided that blogging with Jekyll doesn&#8217;t work for me. Jekyll and GitHub Pages are brilliant for hosting static web content, but I want to be able to pull out my phone at the airport, connect my Bluetooth keyboard, write some words, paste a couple of photos, push a button, and boom, it&#8217;s live. That&#8217;s why so much of what I write ends up on Facebook instead of my own site, but I&#8217;ve been following a few folks who publish on Substack, and I like what I hear, I decided to give it a shot.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p>So here it is: a weekly update on where I&#8217;m going, what I&#8217;m doing, and anything I thought was interesting. Like it? Want more? Here&#8217;s a button!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://substack.dylanbeattie.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://substack.dylanbeattie.net/subscribe?"><span>Subscribe now</span></a></p><h2>What&#8217;s Happening?</h2><p>July is delightfully quiet, and that&#8217;s just fine. May and June were back-to-back conferences and tech events - Bucharest, Essen, Hamburg, Berlin, Oslo, Stockhom, Athens, Odense, Rotterdam, Utrecht and Amsterdam, bouncing home in between for just long enough to do the laundry, host a London.NET meetup and run a guitar karaoke night. Being on the road is fun, but it&#8217;s nice to be home for a while.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08bbb305-ecae-4ed0-b4bd-fb394ec4c80a_3088x2320.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c16ee640-6cab-4a74-88e0-82dec973ab6d_3088x2320.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44ececa4-ab45-4eb2-9029-f1f30a673905_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9e6082d-81fd-42aa-bc37-dc921b3678ee_1200x1600.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb0d3eba-ed65-4479-bb61-62e02d1b8bd3_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54afc19d-f9d7-473d-96cd-11eb3e42ef49_3088x2320.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8bcaf318-c3ef-40cb-9685-87be041855ad_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1224f410-adc4-4e99-8499-341da5050ec6_4032x3024.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22352e83-e9e2-4cf8-90c8-5c02696a3460_4032x3024.jpeg&quot;}],&quot;caption&quot;:&quot;Berlin, Hamburg, Bucharest, Stockholm, Oslo, Athens, Rotterdam... I need a vacation.&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cd7a5a2-d0a2-4fdc-91ff-926f6ef0a4b7_1456x1454.png&quot;}},&quot;isEditorNode&quot;:true}"></div><h2>Email vs Capitalism, or Why We Can&#8217;t Have Nice Things</h2><p>At NDC Oslo last month, I presented a completely new talk about email, spam, and the challenges of running a free, open, decentralised communication network in a world that&#8217;s increasingly controlled by billion-dollar multinationals.</p><div id="youtube2-mrGfahzt-4Q" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;mrGfahzt-4Q&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/mrGfahzt-4Q?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>I&#8217;m pretty happy with how it came out, but watching the recording back, I&#8217;m seriously thinking this one might warrant splitting into two separate talks - a fun, accessible talk with all the weird history, the RFC edge cases, the story of junk mail, and then a second one aimed at developers that gets into the gritty detail of things like DMARC records and how to mash up Mailjet and Razor to build a .NET mail templating engine. Or maybe keep the live presentation as the fun talk, and move all the gritty detail into some sort of video course folks can find online.</p><p>And yes, as several commenters have already pointed out, I screwed up one of the &#8220;let&#8217;s break email!&#8221; experiments you see in the video. </p><p>Oops. </p><p>I&#8217;ll fix it for next time.</p><h3>London .NET Meetup at Codat on July 12th</h3><p>After a long hiatus during the pandemic, the London .NET User Group is very much back up and running. We&#8217;re going to be meeting at Codat&#8217;s offices in Farringdon on Wednesday 12th July; Angeliki Patsiavou is going to be talking about what &#8220;The Avengers&#8221; taught her about working with developers, and then Nick Chapsas will be talking about logging in .NET and why we&#8217;re all doing it wrong. Nick&#8217;s basically an internet superstar with <a href="https://www.youtube.com/channel/UCrkPsvLGln62OMZRO6K-llg">about a bazillion followers on YouTube</a> &#8212; and as of right now, we&#8217;ve got 100 people RSVP&#8217;d for next week and 40 of them are first-timers who&#8217;ve never been to a London .NET meetup before, which is fantastic.</p><p>There&#8217;s a few places still available if you want to come along: </p><p><a href="https://www.meetup.com/london-net-user-group/events/294304925/">https://www.meetup.com/london-net-user-group/events/294304925/</a></p><p>And, note to myself: I am <em>absolutely</em> going to remember to print name badges this time, because the number of folks I recognise but can&#8217;t remember their names is getting embarrassing.</p><h2>This week I&#8217;ve been&#8230;</h2><p><strong>Reading:</strong> &#8220;<a href="https://store.orbit-books.co.uk/products/season-of-skulls?_pos=2&amp;_sid=2b784b872&amp;_ss=r">Season of Skulls</a>&#8221; by Charles Stross. It&#8217;s the latest novel set in the world of the &#8220;Laundry Files&#8221;, which started life as a wonderfully macabre mashup of HP Lovecraft and the Jargon File, and now gleefully bounces from trope to trope trashing genre conventions as it goes. Daft, delightfully written, and enormous fun.</p><p><strong>Listening:</strong> &#8220;<a href="https://open.spotify.com/album/5mENWT44VJdv0bkkjYOjIa?si=PUdCYozLQlSwWpr566jgCQ">Rosalie Cunningham</a>&#8221; by Rosalie Cunningham. I saw Rosalie and her band at Prognosis Festival at the O2 back in April, and have had the album on constant repeat ever since. It&#8217;s &#8212; for me, anyway &#8212; a rare example of music that sounds genuinely progressive without just being &#8220;complicated heavy metal with lots of time signatures&#8221;, and I&#8217;m thoroughly enjoying it.</p><p><strong>Watching:</strong> &#8220;<a href="https://www.youtube.com/watch?v=lBrwkqlg1jA">Still: A Michael J. Fox Movie</a>&#8221; popped up unexpectedly on Apple TV, and it&#8217;s excellent. It&#8217;s the story of Michael J. Fox, his acting career &#8212; Family Ties, Back to the Future, Spin City &#8212; and how his diagnosis with Parkinson&#8217;s disease at the age of 29 affected his life and his work. It&#8217;s brilliantly put together, combining interview footage with Fox today with staccato clips cut together from his movies and TV shows &#8212; watch out for the montage showing how he&#8217;d always find something to do with his left hand so viewers wouldn&#8217;t notice the tremors; it&#8217;s quite amazing.</p><p>And that&#8217;s a wrap. Drop a comment below, let me know what you think? </p><p>Until next time: rock on, have fun, and be excellent to each other.</p><p><em>Dylan</em></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>or maybe didn&#8217;t say, but somebody shared it on Facebook with his name on it and that&#8217;s basically the same thing, right?</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>I figure any publishing platform that&#8217;s hosting writing by <a href="https://tomcox.substack.com/">Tom Cox</a>, <a href="https://catvalente.substack.com/">Cat Valente</a> and <a href="https://tinabeattie.substack.com/">my mum</a> is probably doing something right.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Structuring Workshops]]></title><description><![CDATA[How I design and prepare content for in-person and online coding workshops]]></description><link>https://substack.dylanbeattie.net/p/structuring-workshops</link><guid isPermaLink="false">https://substack.dylanbeattie.net/p/structuring-workshops</guid><dc:creator><![CDATA[Dylan Beattie]]></dc:creator><pubDate>Wed, 05 Jul 2023 17:29:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bsup!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I was in the Netherlands last week at <a href="https://gotoams.nl/2023">GOTO Amsterdam</a>, and I got chatting with <a href="https://hollycummins.com/">Holly Cummins</a> about what&#8217;s involved in running workshops at these kinds of events. She emailed me afterwards to ask for a bit of advice about preparing workshops:</p><blockquote><p><em>As a professional workshop giver, how do you handle the mix of self-paced and lecture in your stuff? Do you manage to work in anything properly interactive?</em></p></blockquote><p>&#8230;and, well, I figured some folks besides Holly might find my answer interesting, so here we go.</p><p>Let&#8217;s start with a bit of context. The folks you see giving talks at tech conferences are usually not getting paid to be there. Good events generally cover speakers&#8217; travel and accommodation, and often throw in a really nice dinner somewhere, but typically only the keynote speakers actually get paid a fee. </p><p>For a lot of speakers, this is fine; they have jobs, their companies are quite happy to pay their salary while they&#8217;re speaking at a few events a year. But for those of us who are independent contractors and freelancers, travel and expenses will only go so far; sooner or later, you need to actually bring in some cash, so a common approach here is to run pre-conference workshops, and split the revenue.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> This means folks like me end up running a <em>lot</em> of workshops. I&#8217;ve taught workshops on .NET, API design, systems architecture, JavaScript, public speaking and communication skills, both online and in person, and while I wouldn&#8217;t say I&#8217;m an expert educator, here&#8217;s a few things I&#8217;ve figured out along the way.</p><h2><strong>Interaction Styles and the 18 Minute Rule</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bsup!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bsup!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bsup!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bsup!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bsup!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bsup!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg" width="800" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:125804,&quot;alt&quot;:&quot;An illustration showing consumption: an audience of people watching a movie. Conversation: a family around a dinner table. Collaboration: people working around a boardroom table. Concentration: somebody working alone at a desk covered with computer equipment&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An illustration showing consumption: an audience of people watching a movie. Conversation: a family around a dinner table. Collaboration: people working around a boardroom table. Concentration: somebody working alone at a desk covered with computer equipment" title="An illustration showing consumption: an audience of people watching a movie. Conversation: a family around a dinner table. Collaboration: people working around a boardroom table. Concentration: somebody working alone at a desk covered with computer equipment" srcset="https://substackcdn.com/image/fetch/$s_!bsup!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bsup!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bsup!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bsup!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51f7b59-326c-462a-add5-933604df59cd_800x450.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Illustrations &#169; Iconic Bestiary / <a href="https://www.shutterstock.com/g/IconicBestiary">Shutterstock </a></figcaption></figure></div><p>There are four different kinds of interaction I&#8217;ve noticed in these kinds of sessions:</p><ul><li><p><strong>Consumption</strong>: slides &amp; talk. The presenter presents; the class just sits and listens.</p></li><li><p><strong>Collaboration</strong>: working together to solve a specific problem. Breakout sessions, group exercises, mob programming.</p></li><li><p><strong>Conversation: </strong>freeform discussion, &#8220;any questions&#8221;, folks in the group sharing their own experience and perspective without any specific objective.</p></li><li><p><strong>Concentration</strong>: heads-down, quietly working on individual exercises.</p></li></ul><p>TED Talks are famously 18 minutes long, based on <a href="https://techinch.com/blog/ted-talk-18-minute-time-limit-history">the observation</a> that 18 minutes is &#8220;long enough to be serious and short enough to hold people&#8217;s attention.&#8221; I keep this number in mind when I&#8217;m figuring out the structure of a workshop, and I try to switch between interaction styles around every 18 minutes.</p><p>It&#8217;s not an exact science, and it isn&#8217;t always possible &#8212; but that&#8217;s what I aim for.</p><h2><strong>Chunks and Breaks</strong></h2><p>I really don&#8217;t like to go for more than an hour without a break: workshops run a lot better when everybody has coffee, water, snacks, and bathrooms. </p><p>I try to structure each hour as:</p><p><strong>18 minutes of talk &amp; slides:</strong> I tell the group what we&#8217;re going to be learning about, explain where it fits into the programme, why it&#8217;s important, where it came from.</p><p><strong>18 minutes of collaboration:</strong> Some of my workshops involve a lot of code, so in these sections, I&#8217;ll use all kinds of techniques to get other people involved. I use <a href="https://visualstudio.microsoft.com/services/live-share/">Visual Studio LiveShare</a> to facilitate mob programming; one person writing code for a few minutes while everybody else contributes ideas, and then we rotate. I&#8217;ll walk the group through implementing a component for a live demo, and then we&#8217;ll all run our components and see them interacting across the network.</p><p><strong>18 minutes of concentration</strong>: using pre-prepared exercises that people can work through on their own. During these exercises, I&#8217;ll walk around the room, give people a chance to ask for help quietly, see how everybody&#8217;s getting on &#8212; but it&#8217;s also a chance for me to reply to that Slack message, update the example we&#8217;re going to use in the next section, and deal with that urgent email about dietary requirements for the speaker dinner later.</p><p>Finally, I wrap up each section with a chance for discussion and questions before we take a break. Sometimes, this ends up being &#8220;any questions? anybody? no? OK, let&#8217;s take a break!&#8221; Sometimes, it&#8217;s ten or fifteen minutes of very engaged discussion, so be prepared to make time for it if that&#8217;s the case.</p><h2><strong>Pacing</strong></h2><p>One of the biggest challenges with structuring technical content is accounting for different levels of expertise within the group. I&#8217;ve had classes where one student could probably have powered through the material in a few hours, while another student gets to lunchtime on day 1 and still hasn&#8217;t managed to install the prerequisites or open a code editor. </p><p>This means that if you leave folks to work at their own pace, you&#8217;ll end with a significant disparity in who&#8217;s where - and that makes it much harder to run any kind of collaboration or discussion sessions, because you really need everybody on the same metaphorical page for those kinds of sessions to work effectively.</p><p>One solution that&#8217;s worked for me is to build the workshop from one-hour modules, and publish a snapshot of the sample code needed at the start of each section. This way, even if somebody struggled a bit with the previous instalment (or had to duck out to deal with an urgent production issue - it happens!), they can start fresh at the top of the next section and then go back and look at the other stuff later.</p><p>Alongside this, I try to include side quests: extra bonus exercises which are interesting but not essential - something I sometimes called <strong>bombadil</strong>, after the Lord of the Rings character who&#8217;s absolutely delightful but completely expendable when it comes to progressing the story. That way, folks who blast through the basic part of the exercise have something to get their teeth into while the rest of us are catching up.</p><h2>Logistics</h2><h3>Handbooks and References</h3><p>I publish online handbooks for all my workshops - here&#8217;s a few examples:</p><ul><li><p>Distributed Systems with .NET: <a href="https://ursatile.github.io/dsnet/">https://ursatile.github.io/dsnet/</a></p></li><li><p>Building a JavaScript Ray Tracer: <a href="https://ursatile.github.io/jsray/">https://ursatile.github.io/jsray/</a></p></li><li><p>Vanilla JS Web Components: <a href="https://ursatile.github.io/jsweb/">https://ursatile.github.io/jsweb/</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://ursatile.github.io/jsray/13-patterns.html" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QDjw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b43f02-b731-4435-933f-a52f4d78cec8_1136x762.png 424w, https://substackcdn.com/image/fetch/$s_!QDjw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b43f02-b731-4435-933f-a52f4d78cec8_1136x762.png 848w, https://substackcdn.com/image/fetch/$s_!QDjw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b43f02-b731-4435-933f-a52f4d78cec8_1136x762.png 1272w, https://substackcdn.com/image/fetch/$s_!QDjw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b43f02-b731-4435-933f-a52f4d78cec8_1136x762.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QDjw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b43f02-b731-4435-933f-a52f4d78cec8_1136x762.png" width="1136" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80b43f02-b731-4435-933f-a52f4d78cec8_1136x762.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1136,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:308798,&quot;alt&quot;:&quot;A screenshot from a web page, showing a table of contents, a JavaScript code snippet, and a rendered photograph of coloured spheres on a plane. It's very shiny.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://ursatile.github.io/jsray/13-patterns.html&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot from a web page, showing a table of contents, a JavaScript code snippet, and a rendered photograph of coloured spheres on a plane. It's very shiny." title="A screenshot from a web page, showing a table of contents, a JavaScript code snippet, and a rendered photograph of coloured spheres on a plane. It's very shiny." srcset="https://substackcdn.com/image/fetch/$s_!QDjw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b43f02-b731-4435-933f-a52f4d78cec8_1136x762.png 424w, https://substackcdn.com/image/fetch/$s_!QDjw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b43f02-b731-4435-933f-a52f4d78cec8_1136x762.png 848w, https://substackcdn.com/image/fetch/$s_!QDjw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b43f02-b731-4435-933f-a52f4d78cec8_1136x762.png 1272w, https://substackcdn.com/image/fetch/$s_!QDjw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b43f02-b731-4435-933f-a52f4d78cec8_1136x762.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A screenshot from my workshop handbook &#8220;<a href="https://ursatile.github.io/jsray/13-patterns.html">Building a JavaScript Ray Tracer</a>&#8221;</figcaption></figure></div><p>These include all the code samples and snippets I&#8217;ll use during each teaching section, instructions for exercises, downloadable code samples, and links to documentation and further reading. They&#8217;re created using Jekyll with the Just the Docs theme, written mostly in Markdown with snippets of HTML where necessary, and published on GitHub Pages. Could they be better? Sure. Are they good enough? Yeah.</p><h3>Using Chat</h3><p>Wherever possible, I try to get all the workshop attendees in a Slack channel or a Discord chat or something. This makes it way easier to share code samples, URLs and screenshots, but it also offers more ways to interact with the audience. </p><p>I&#8217;m a big fan of using <strong>chatstorms</strong>: I&#8217;ll ask a question in Slack, the audience all compose their answer but they <strong>do not post it</strong> until I count them in. Then I&#8217;ll count 3, 2, 1, POST, everybody posts their reply at the same time, and we can all see each other&#8217;s replies and responses. It&#8217;s a great way to encourage participation without singling out any particular individual, and I&#8217;ve often seen it work really well in groups where participants don&#8217;t have English as a first language and are more comfortable responding in writing than verbally.</p><h2>And finally&#8230;</h2><p>You&#8217;ll end up preparing material you don&#8217;t get to use. That&#8217;s OK.</p><p>You&#8217;ll end up preparing material that seems like a really good idea&#8230; and the first time you try it out with a group of students, it&#8217;ll be a total train wreck. That&#8217;s OK. Figure out &#8212; or ask &#8212; what didn&#8217;t work; go back to the drawing board, work out what to do differently next time.</p><p>Things will go wrong. Demos won&#8217;t work. If something goes wrong&#8230; hey, unexpected hands-on debugging session! Explain what you&#8217;re doing. Talk the attendees through your diagnostic process. Remember to check DNS (it&#8217;s <em>always</em> DNS).</p><p>Teaching these kinds of workshops is hard work&#8230; but remember, when it&#8217;s done, it&#8217;s done. Relax, decompress, maybe make a few notes on what worked, what didn&#8217;t work, then take the evening off. If anybody finds any bugs, tell them they&#8217;re not bugs, they&#8217;re homework. ;)</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>That&#8217;s not <em>always</em> the case: if the trainer is a professional developer advocate, running these kinds of workshops is usually part of their job.</p><p></p></div></div>]]></content:encoded></item></channel></rss>