Blog posts page 2 of 44

Using variable web fonts for perf

  • đź“…
  • đź“ť 1,345
  • đź•™ 6
  • 📦 Typography

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.

Unfortunately the problem still exists that either the browser has to wait before it draws anything while it is getting the font or it renders without the font then re-renders the page again once the font is available. Neither is a great solution and Google’s PageSpeed will hit you for either so what is an enterprising web developer to do?

Migrating from OpenTracing.NET to OpenTelemetry.NET

  • đź“…
  • đź“ť 1,338
  • đź•™ 6
  • 📦 .NET

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.

I was recently brought in as a consultant to help migrate an existing system that used OpenTracing in .NET that recorded trace data into Jaeger so that they might migrate to the latest OpenTelemetry libraries. I thought it would be useful to document what I learnt as the migration process is not particularly clear.

Developing a great SDK: Guidelines & Principles

  • đź“…
  • đź“ť 2,068
  • đź•™ 10
  • 📦 Development

A good SDK builds on the fundamentals of good software engineering but SDKs have additional requirements to consider.

When developing software as a team a level of familiarity is reached between the team members. Concepts, approaches, technologies, and terminology are shaped by the company and the goals are typically aligned.

Shipping 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.

Every breaking change is a reason for them to stop and reconsider their options. If your library is paid-for or the preferred way for paying users to access your services then lost users can come with a real financial cost.

Mac OS System 9 on Windows

  • đź“…
  • đź“ť 1,485
  • đź•™ 7
  • 📦 Apple
  • đź’¬ 1

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.

One limitation I’ve run into is digging into old Macintosh fonts. While James Friend’s PCE.js puts System 6 and System 7 at your fingertips when it comes to later MacOS 7.5, 8 or 9 releases the site doesn’t have you covered as PCE doesn’t support PowerPC emulation (it emulates Motorola 68000 and Intel 8086 processors).

Creating OR expressions in LINQ

  • đź“…
  • đź“ť 618
  • đź•™ 3
  • 📦 .NET

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.

People often need to build up LINQ expressions at runtime based on filters or criteria a user has selected. Adding criteria is incredibly easy, as you can chain operations together on the IQueryable interface, e.g.

From CircleCI to GitHub Actions for Jekyll publishing

I’ve been a big fan of static site generation since I switched from WordPress to Jekyll back in 2018. I’m also a big fan of learning new technologies as they come along, and now GitHub Actions are out in the wild; I thought this would be an opportunity to see how I can port my existing custom CircleCI build to Jekyll.

A quick recap from part 5 — Hosting & Building, my CircleCI configuration was basically two jobs that have subsequently been tweaked since then. They are:

Notes from my Spectrum +3 manual

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.

My ZX Spectrum +3 Manual conversion is now available!

My own Delphi story - celebrating 25 years

It’s 1995, and a wiry-looking engineer in need of a haircut is working at a tech services company in the Channel Islands. The island is Jersey (you can see the French coastline on a clear day), and he’s over here for a week or two for training from his nearby Guernsey home.

This company does everything from IBM AS/400 maintenance to custom PC software development — the developer involved was brought in and trained to work on a banking package on those AS/400s but has ended up on the PC development side through a series of improbable events.

DDR4 memory information in Linux

If you’ve built a PC desktop in the last few years, you’ve probably been exposed to the confusing array of DDR4 information when it comes to buying RAM.

What it comes down to is not all RAM is created equal. Once you get past pin size and memory capacity, you’ll have to filter down by speed. Speed isn’t a simple one-figure number — you may see a rated speed like 2400MHz, but you may also see another bunch of numbers like 16–16–16–39 indicating the necessary clock cycles to perform certain types of memory operations.