<?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: The Hang of Thursdays]]></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/s/the-hang-of-thursdays</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: The Hang of Thursdays</title><link>https://substack.dylanbeattie.net/s/the-hang-of-thursdays</link></image><generator>Substack</generator><lastBuildDate>Thu, 14 May 2026 15:00:39 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[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[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></channel></rss>