All Posts

New Look for GNOME Maps!

If you follow me on Mastodon, you’ve probably seen plenty of screenshots of the new map style I’ve been working on. Now that it’s been merged (just in time for GNOME 46!), I think it’s time to give it a proper introduction and explain some of the design decisions I made along the way.

Further Adventures in Vector Maps

It's been almost a year since I last posted about maps, so I figure it's time for an update!

Labelling Maps is Surprisingly Hard

Or, how I got libshumate to show street names and why it took me four months

If Blockchain Is "Perfectly Secure," Why Does It Keep Getting Hacked?

Someone IRL asked me this question recently. I'm sure it's a common question, so I thought I'd write a quick explainer. The answer might not be obvious to those not versed in cybersecurity, but it cuts to the core of the problems with cryptocurrency.

Next Steps for Blueprint

Blueprint is my markup language for creating GTK user interfaces. Since the last blog post, I and several contributors have fixed a number of bugs that have come up and added several bits of missing syntax. Thanks to everyone who’s contributed by reporting issues or submitting merge requests!

Embedded Maps with ShumateSimpleMap

The first alpha release of libshumate is out, and one of the notable new features is ShumateSimpleMap. If you just want to embed a map in your app without thinking too much about layers, copyright licenses, and viewports, ShumateSimpleMap is what you’re looking for.

Introducing Blueprint: A New Way to Craft User Interfaces

In a recent blog post, I presented my latest project, a markup language for creating GTK user interfaces. I’m excited to announce it’s now ready to use!

Implementing Vector Tile Support in Libshumate

It’s incredible how things that seem simple can be so complicated. Take a “simple” maps app. There’s geometry, design, typography, a 60-gigabyte database, and a lot of complicated algorithms. Every button you press has an astonishing maze of technology supporting it.

Platforms, Compatibility, and the Future of the Free Desktop

If you’ve followed Linux (and particularly GNOME) development, you’ve probably heard the recent kind, well-meaning, respectful discussions about theming, extensions, customization, and the general direction of the Linux platform. Here’s my two cents as a GNOME developer.

A Markup Language for GTK

GTK has an XML-based format for declaratively constructing user interface components, but I've wanted to make a dedicated markup language for quite a while. This is my new prototype.

Tutorial: Mobile App Development with GNOME Builder

In my previous post, I described Builder’s new support for mobile device development. Here I’ll explain how to set it up on your favorite mobile Linux device.

Finishing GNOME Builder's Mobile Device Support

Recently I've been working on libshumate, the new maps library for GTK 4. I used my PinePhone to test the feature, so I needed a way to quickly build libshumate and run it on the phone.

Visual Studio Code, Flatpak, and C#: A Guide

It took me way too long to figure this out, so I figured I’d write a concise tutorial for anyone else who wants to do C# development using Visual Studio Code installed via flatpak.

Ok, but WHY is cryptocurrency so bad for the environment?

Cryptocurrency and especially NFTs (like “crypto art”) are the trendy new thing to talk about right now, and it makes sense: their power to change the world is tremendous. Of course, by “the world” I mean its climate, and I didn’t say it was a positive change.

Improving Tab Completion in Nautilus

As a heavy keyboard user, I use the location entry in Nautilus quite often to get around my filesystem. But something about it frustrated me, so I fixed it.

Adapting GNOME Maps to Mobile Devices: Map Details

Last year, I redesigned the info bubbles in GNOME Maps. Now I’ve made that bit of the UI adaptive, so that it fits on the screen of your favorite Linux phone!

GDScript's  _get() and  _set(): How and When to Use Them

I recently found myself writing some very messy code in Godot Engine, and I wondered if I could improve it with a bit of GDScript magic.

Coding Custom Widgets with GTK 3 and GJS

GTK provides a lot of useful widgets, but it inevitably can’t cover every possible use case. What if, for example, you need an image widget that resizes itself based on the available width, and clips its corners to fit in a popover? Fortunately, GTK makes it easy to create your own widgets that do whatever you want.

New in GNOME 40: Map Details!

I’ve contributed to quite a few GNOME apps over the years, but Maps is the one I keep going back to. It’s a pretty easy codebase, and I’m a huge map nerd.