# DamienG > Damien Guard on software development, typography, vintage computing, and .NET. ## About Damien Guard is a software engineer in Guernsey building developer tools and data access libraries, currently the MongoDB provider for Entity Framework Core, with past roles at Microsoft, Netflix, GitHub and Auth0. He writes about software development (mostly .NET), typography and font design, vintage computing, and technology, and created the Envy Code R programming font and the ZX Origins collection of 8x8 pixel fonts. Posts are dated and written by Damien. Older posts reflect the software and opinions of their time, so check the date before relying on one. ## Key pages - [About](https://damieng.com/about/): Who Damien is, and how to get in touch. - [Fonts & typography](https://damieng.com/typography/): Envy Code R, ZX Origins, the Advent of Fonts releases and recovered system fonts. - [ZX Origins](https://damieng.com/typography/zx-origins/): The 8x8 pixel-font collection from 8-bit computers, with downloads. - [Softography](https://damieng.com/softography/): Software Damien has built, extended or contributed to. - [Guernsey reference](https://damieng.com/reference/guernsey/): Posts and reference pages about Guernsey. - [Appearances](https://damieng.com/appearances/): Talks and other appearances. - [Disclosures](https://damieng.com/about/responsible-disclosure/): Licensing, AI use, hosting and conflicts of interest. ## Blog by category - [Development](https://damieng.com/blog/category/development/): Software development, mostly .NET. - [Technology](https://damieng.com/blog/category/technology/): Hardware, software and services. - [Fun](https://damieng.com/blog/category/fun/): Everything else. ## Latest posts - [VTX5000: Part 5 - Rendering](https://damieng.com/blog/2026/vtx5000-part-5-rendering/): In part 4 we followed data to and from the TI modem through the Intel 8251 USART landing in our buffers. Next up is the most interesting part—rendering those Viewdata 40×24 frames on what is typically a 32×24 display. - [VTX5000: Part 4 - Communications](https://damieng.com/blog/2026/vtx5000-part-4-comms-routines/): In part 3 we saw how the VTX5000's 8K ROM is structured and how the BASIC program drives the terminal. - [VTX5000: Part 3 - Software ROM](https://damieng.com/blog/2026/vtx5000-part-3-software-rom/): 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... - [VTX5000: Part 2 - Hardware](https://damieng.com/blog/2026/prism-vtx5000-part-2/): 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. - [VTX5000: Part 1 - Prism, Prestel and Teletext](https://damieng.com/blog/2026/prism-vtx5000-part-1/): 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. - [Sell to Guernsey - An Overlooked Opportunity for UK Sellers](https://damieng.com/blog/2025/sell-and-ship-to-guernsey/): 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. - [HTML5 Video Cheatsheet: Optimising videos for the web](https://damieng.com/blog/2025/html5-video-cheatsheet/): Creating videos for your page can be tricky, especially if you want to ensure your videos load quickly, play smoothly, auto start, and work across all devices and browsers. - [The Art of Amiga lettering](https://damieng.com/blog/2025/art-of-amiga-lettering/): A gallery of remarkable title-screen and demo-scene logos hand-plotted in Deluxe Paint, celebrating the typographic artistry of the Amiga era. - [Transactions in the MongoDB EF Core Provider](https://damieng.com/blog/2025/mongodb-explicit-transactions/): Database transactions ensure that multi-record (or in our case multi-document) operations either all succeed or all fail together. - [Queryable Encryption with the MongoDB EF Core Provider](https://damieng.com/blog/2025/mongodb-queryable-encryption/) - [Lazy Loading with EF Core Proxies](https://damieng.com/blog/2025/ef-proxies/): With the Microsoft.EntityFrameworkCore.Proxies NuGet package you can use lazy loading 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. - [Enhancing content articles in Nuxt3](https://damieng.com/blog/2025/improved-content-articles-in-nuxt3/): 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. - [Generated Excerpts for Nuxt3 Content](https://damieng.com/blog/2024/generated-excerpts-for-nuxt3-content/): 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. - [Nuxt Content v1 content.db database & file size](https://damieng.com/blog/2024/nuxt-content-db-and-size/): An examination of Nuxt's content.db and how to shrink it for performance. - [Email form sender with AWS Lambda, Brevo & reCAPTCHA](https://damieng.com/blog/2024/send-email-with-aws-and-brevo/): 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. - [A blog comment receiver for Cloudflare Workers](https://damieng.com/blog/2023/cloudflare-blog-comment-receiver/): 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. - [Email form sender with Nuxt3, Cloudflare, Brevo & reCAPTCHA](https://damieng.com/blog/2023/send-email-with-nuxt3-cloudflare-and-brevo/) - [Extracting files from Tatung Einstein disk images](https://damieng.com/blog/2023/tatung-einstein-disk-file-extraction/): 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. - [Rendering content with Nuxt3](https://damieng.com/blog/2023/rendering-content-with-nuxt3/): 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. - [A quick primer on floppy disks](https://damieng.com/blog/2023/floppy-disk-primer/): 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. - [Adding reading time to Nuxt3 content](https://damieng.com/blog/2023/reading-time-with-nuxt3-content/): 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. - [Estimating JSON size](https://damieng.com/blog/2022/estimating-json-size/): 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 differently—either broken into smaller pieces of work or serialised to an external source and a pointer put into the message instead. - [Using variable web fonts for perf](https://damieng.com/blog/2021/using-variable-webfonts-for-speed/): 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. - [Migrating from OpenTracing.NET to OpenTelemetry.NET](https://damieng.com/blog/2021/migrating-from-opentracing-to-opentelemetry/): 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 OpenCensus but have now merged to form OpenTelemetry. - [Developing a great SDK: Guidelines & Principles](https://damieng.com/blog/2021/developing-a-great-sdk/): A good SDK builds on the fundamentals of good software engineering but SDKs have additional requirements to consider. - [Shipping breaking changes](https://damieng.com/blog/2021/breaking-changes/): Breaking changes are always work for your users. Work you are forcing them to do when they upgrade to your new version. They took a dependency on your library or software because it saved them time but now it's costing them time. - [Mac OS System 9 on Windows](https://damieng.com/blog/2021/mac-os-9-on-windows/): I'm often digging into old bitmap font and UX design out of curiosity—and someday hope to revive a lot of these fonts in more modern formats using a pipeline similar to that for ZX Origins so we can get all the usable fonts, screenshots etc. out of them. - [Creating OR expressions in LINQ](https://damieng.com/blog/2021/or-expressions-in-linq/): As everybody who has read my blog before knows, I love LINQ and miss it when coding in other languages, so it's nice when I get a chance to use it again. When I come back to it with fresh eyes, I notice some things aren't as easy as they should be—and this time is no exception. - [From CircleCI to GitHub Actions for Jekyll publishing](https://damieng.com/blog/2020/from-circleci-to-github-actions/) - [Notes from my Spectrum +3 manual](https://damieng.com/blog/2020/pokes-for-spectrum/): I've recently been working on a full HTML5 conversion of the Sinclair Spectrum +3 manual with full canvas-drawn screenshots and diagrams for smooth scaling/high res displays as well as some close font matching and layout as well as cross-reference links all over the place. ## Feeds and indexes - [Sitemap](https://damieng.com/sitemap.xml): every page on the site. - [RSS](https://damieng.com/rss.xml), [Atom](https://damieng.com/atom.xml) and [JSON Feed](https://damieng.com/feed.json): the latest blog posts.