<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>DamienG's Blog</title>
        <link>https://damieng.com</link>
        <description>Damien Guard on software development, typography, vintage computing, and .NET.</description>
        <lastBuildDate>Wed, 02 Sep 2026 08:06:31 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright 2004-2025 Damien Guard. All rights reserved.</copyright>
        <item>
            <title><![CDATA[VTX5000: Part 5 - Rendering]]></title>
            <link>https://damieng.com/blog/2026/vtx5000-part-5-rendering/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2026/vtx5000-part-5-rendering/</guid>
            <pubDate>Sun, 31 May 2026 06:23:29 GMT</pubDate>
            <description><![CDATA[In part 4 we followed data to and from the TI modem through the Intel 8251 USART landing in our buffers.  Now comes the interesting part - rendering those Viewdata 40×24 frames on what is typically a 32×24 display.]]></description>
            <enclosure url="https://img.damieng.com/32e5daaa-2402-4878-983d-f12643efbdb9-Micronet800Spectrum.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[VTX5000: Part 4 - Communications]]></title>
            <link>https://damieng.com/blog/2026/vtx5000-part-4-comms-routines/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2026/vtx5000-part-4-comms-routines/</guid>
            <pubDate>Wed, 06 May 2026 10:19:24 GMT</pubDate>
            <description><![CDATA[In part 3 we saw how the VTX5000's 8K ROM is structured and how the BASIC program drives the terminal. ]]></description>
            <enclosure url="https://img.damieng.com/94c63c46-0b41-47ff-84fd-67c1b8013d54-Intel8251Datasheet.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[VTX5000: Part 3 - Software ROM]]></title>
            <link>https://damieng.com/blog/2026/vtx5000-part-3-software-rom/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2026/vtx5000-part-3-software-rom/</guid>
            <pubDate>Wed, 15 Apr 2026 23:00:00 GMT</pubDate>
            <description><![CDATA[In part 1 we covered the history of Prestel and Prism, and in part 2 we cracked open the VTX5000 to examine the hardware. Now how did they squeeze a viewdata terminal app into 8KB...]]></description>
        </item>
        <item>
            <title><![CDATA[VTX5000: Part 2 - Hardware]]></title>
            <link>https://damieng.com/blog/2026/prism-vtx5000-part-2/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2026/prism-vtx5000-part-2/</guid>
            <pubDate>Mon, 30 Mar 2026 23:00:00 GMT</pubDate>
            <description><![CDATA[With the design spec in hand, Prism Microproducts contracted O.E. Ltd - a UK electronics manufacturer - to implement and produce the VTX5000 as a self-contained Prestel terminal that sat beneath the rubber-keyed Speccy and plugged straight into the edge connector at the back meaning no extra hardware and no extra power supply.]]></description>
            <enclosure url="https://img.damieng.com/4ed2cd33-eb04-418f-aee5-c67279cafbcf-PrismVTX5000Modem_PCB.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[VTX5000: Part 1 - Prism, Prestel and Teletext]]></title>
            <link>https://damieng.com/blog/2026/prism-vtx5000-part-1/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2026/prism-vtx5000-part-1/</guid>
            <pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The Prism VTX5000 for the ZX Spectrum and the first modem I ever owned. With its bright colourful viewdata graphics and decent-download 1200/75 bps speed it ignited my life-long interest in data communications and online communities.]]></description>
            <enclosure url="https://img.damieng.com/fc5b9571-b19e-4684-b05e-354ace5b59c3-ceefax_holidays2.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Sell to Guernsey - An Overlooked Opportunity for UK Sellers]]></title>
            <link>https://damieng.com/blog/2025/sell-and-ship-to-guernsey/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2025/sell-and-ship-to-guernsey/</guid>
            <pubDate>Tue, 09 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[If you're an online retailer in the UK you probably want to maximise your market but a lot of retailers don't realise their store is configured not to ship to the British Channel Islands (Guernsey and Jersey) or the Isle of Man as the defaults in some online store software, like Shopify, exclude them.]]></description>
        </item>
        <item>
            <title><![CDATA[HTML5 Video Cheatsheet: Optimizing videos for the web]]></title>
            <link>https://damieng.com/blog/2025/html5-video-cheatsheet/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2025/html5-video-cheatsheet/</guid>
            <pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Creating videos for your page can be tricky, especially if you ensure your videos load quickly, play smoothly, auto start, and work across all devices and browsers.]]></description>
        </item>
        <item>
            <title><![CDATA[The Art of Amiga lettering]]></title>
            <link>https://damieng.com/blog/2025/art-of-amiga-lettering/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2025/art-of-amiga-lettering/</guid>
            <pubDate>Thu, 04 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A gallery of remarkable title-screen and demo-scene logos hand-plotted in Deluxe Paint, celebrating the typographic artistry of the Amiga era.]]></description>
            <enclosure url="https://img.damieng.com/blog/amiga-lettering/image_1.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Transactions in the MongoDB EF Core Provider]]></title>
            <link>https://damieng.com/blog/2025/mongodb-explicit-transactions/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2025/mongodb-explicit-transactions/</guid>
            <pubDate>Sat, 25 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Database transactions ensure that multi-record (or in our case multi-document) operations either all succeed or all fail together.]]></description>
        </item>
        <item>
            <title><![CDATA[Queryable Encryption with the MongoDB EF Core Provider]]></title>
            <link>https://damieng.com/blog/2025/mongodb-queryable-encryption/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2025/mongodb-queryable-encryption/</guid>
            <pubDate>Mon, 22 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[MongoDB's Queryable Encryption lets you encrypt sensitive database fields while keeping them searchable. Unlike traditional encryption-at-rest that renders data unreadable to the database, queryable encryption supports equality and range queries on encrypted fields without requiring decryption first.]]></description>
        </item>
        <item>
            <title><![CDATA[Lazy Loading with EF Core Proxies]]></title>
            <link>https://damieng.com/blog/2025/ef-proxies/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2025/ef-proxies/</guid>
            <pubDate>Wed, 02 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[With the Microsoft.EntityFrameworkCore.Proxies NuGet package you can use to traverse navigation properties. This is often preferable to joins and includes such as when using one-to-many or only exploring a subset of the navigations based on client-side logic or for providers that don't support include yet.]]></description>
        </item>
        <item>
            <title><![CDATA[Enhancing content articles in Nuxt3]]></title>
            <link>https://damieng.com/blog/2025/improved-content-articles-in-nuxt3/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2025/improved-content-articles-in-nuxt3/</guid>
            <pubDate>Fri, 14 Feb 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[I've already covered reading time and generated excerpts for Nuxt3 content but there are still a couple more things you can do to enhance your content articles.]]></description>
        </item>
        <item>
            <title><![CDATA[Generated Excerpts for Nuxt3 Content]]></title>
            <link>https://damieng.com/blog/2024/generated-excerpts-for-nuxt3-content/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2024/generated-excerpts-for-nuxt3-content/</guid>
            <pubDate>Thu, 01 Aug 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Nuxt3 has been my stack of choice for a while now and it was time to port my site over from Nuxt2 - an exercise in itself I should blog about - but more concretely is the idea of excerpts.]]></description>
        </item>
        <item>
            <title><![CDATA[Nuxt Content v1 content.db database & file size]]></title>
            <link>https://damieng.com/blog/2024/nuxt-content-db-and-size/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2024/nuxt-content-db-and-size/</guid>
            <pubDate>Tue, 14 May 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[An examination of Nuxt's content.db and how to shrink it for performance.]]></description>
            <enclosure url="https://img.damieng.com/blog/firefox-content-db.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Email form sender with AWS Lambda, Brevo & reCAPTCHA]]></title>
            <link>https://damieng.com/blog/2024/send-email-with-aws-and-brevo/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2024/send-email-with-aws-and-brevo/</guid>
            <pubDate>Thu, 25 Apr 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[In this article I'll show you how to use AWS Lambda to send an email with Brevo using their API while being protected by reCAPTCHA.]]></description>
        </item>
        <item>
            <title><![CDATA[A blog comment receiver for Cloudflare Workers]]></title>
            <link>https://damieng.com/blog/2023/cloudflare-blog-comment-receiver/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2023/cloudflare-blog-comment-receiver/</guid>
            <pubDate>Tue, 24 Oct 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[A number of years back I switched to a static site generator for damieng.com, firstly with Jekyll, and then with Nuxt when I wanted more flexibility. I've been happy with the results and the site is now faster, cheaper, more secure and easier for me to maintain.]]></description>
        </item>
        <item>
            <title><![CDATA[Email form sender with Nuxt3, Cloudflare, Brevo & reCAPTCHA]]></title>
            <link>https://damieng.com/blog/2023/send-email-with-nuxt3-cloudflare-and-brevo/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2023/send-email-with-nuxt3-cloudflare-and-brevo/</guid>
            <pubDate>Wed, 31 May 2023 18:03:00 GMT</pubDate>
            <description><![CDATA[I've been using Nuxt quite extensively on the static sites I work on and host and use Cloudflare Pages to host them. It's a great combination of power, flexibility, performance and cost (free).]]></description>
            <enclosure url="https://img.damieng.com/blog/brevo-dashboard.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Extracting files from Tatung Einstein disk images]]></title>
            <link>https://damieng.com/blog/2023/tatung-einstein-disk-file-extraction/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2023/tatung-einstein-disk-file-extraction/</guid>
            <pubDate>Mon, 13 Feb 2023 18:03:00 GMT</pubDate>
            <description><![CDATA[Kevin Edwards got hold of some 3" disks containing source code to various old commercial games and once they were imaged with a high quality process (a Kryoflux) it was time to write some tooling to get the files out of the corresponding DSK file.]]></description>
            <enclosure url="https://img.damieng.com/blog/einstein-bbc-dim.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Rendering content with Nuxt3]]></title>
            <link>https://damieng.com/blog/2023/rendering-content-with-nuxt3/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2023/rendering-content-with-nuxt3/</guid>
            <pubDate>Fri, 10 Feb 2023 18:03:00 GMT</pubDate>
            <description><![CDATA[I've been a big fan of Nuxt2 and Nuxt3 is definitely a learning curve and I have to admit the documentation is a bit lacking - lots of small fragments and many different ways to do things.]]></description>
        </item>
        <item>
            <title><![CDATA[A quick primer on floppy disks]]></title>
            <link>https://damieng.com/blog/2023/floppy-disk-primer/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2023/floppy-disk-primer/</guid>
            <pubDate>Wed, 08 Feb 2023 18:03:00 GMT</pubDate>
            <description><![CDATA[I've always been fascinated by floppy disks from the crazy stories of Steve Wozniak designing the Disk II controller using a handful of logic chips and carefully-timed software to the amazing tricks to create - and break - copy protection recently popularised by 4am.]]></description>
            <enclosure url="https://img.damieng.com/blog/vintage-placeholder.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Adding reading time to Nuxt3 content]]></title>
            <link>https://damieng.com/blog/2023/reading-time-with-nuxt3-content/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2023/reading-time-with-nuxt3-content/</guid>
            <pubDate>Tue, 07 Feb 2023 18:03:00 GMT</pubDate>
            <description><![CDATA[I've been using Nuxt2 quite a bit for my sites (including this one) and am now starting to use Nuxt3 for a few new ones and am finding the docs lacking in many places or confusing in others so hope to post a few more tips in the coming weeks.]]></description>
        </item>
        <item>
            <title><![CDATA[Estimating JSON size]]></title>
            <link>https://damieng.com/blog/2022/estimating-json-size/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2022/estimating-json-size/</guid>
            <pubDate>Tue, 22 Mar 2022 18:03:00 GMT</pubDate>
            <description><![CDATA[I've been working on a system that heavily uses message queuing (RabbitMQ via MassTransit specifically) and occasionally the system needs to deal with large object graphs that need to be processed different - either broken into smaller pieces of work or serialized to an external source and a pointer put into the message instead.]]></description>
        </item>
        <item>
            <title><![CDATA[Using variable web fonts for perf]]></title>
            <link>https://damieng.com/blog/2021/using-variable-webfonts-for-speed/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2021/using-variable-webfonts-for-speed/</guid>
            <pubDate>Fri, 03 Dec 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Webfonts are now ubiquitous across the web to the point where most of the big players even have their own typefaces and the web looks a lot better for it.]]></description>
        </item>
        <item>
            <title><![CDATA[Migrating from OpenTracing.NET to OpenTelemetry.NET]]></title>
            <link>https://damieng.com/blog/2021/migrating-from-opentracing-to-opentelemetry/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2021/migrating-from-opentracing-to-opentelemetry/</guid>
            <pubDate>Mon, 29 Nov 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[OpenTracing is an interesting project that allows for the collection of various trace sources to be correlated together to provide a timeline of activity that can span services for reporting in a central system. They were competing with OpenCenus but have now merged to form OpenTelemetry.]]></description>
        </item>
        <item>
            <title><![CDATA[Developing a great SDK: Guidelines & Principles]]></title>
            <link>https://damieng.com/blog/2021/developing-a-great-sdk/</link>
            <guid isPermaLink="false">https://damieng.com/blog/2021/developing-a-great-sdk/</guid>
            <pubDate>Thu, 05 Aug 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[A good SDK builds on the fundamentals of good software engineering but SDKs have additional requirements to consider.]]></description>
        </item>
    </channel>
</rss>