I've made great progress on my Maplibre Svelte library, enough so that it's basically ready for use and I'm starting to move on to more advanced features such as new types of layers with custom shaders. Really happy with how this turned out and how easy it is to create great maps with Maplibre.

The Demo Site has a lot more demos now, so check it out!

I also created a small utility called merge-geo, which takes a GeoJSON file and related CSV files with information about the regions in the GeoJSON, and imports the CSV data into the GeoJSON. This comes up a lot when working with US Census data and similar sources, so it can save a lot of time.



The new article on loading geodata is published and I'm happy with how it turned out. Now I've been starting on the Svelte MapLibre library.

Today I got the basic map and simple marker support working. Tomorrow I'm starting on real sources and layers, and along the way I'm planning on some wrappers to make it easier to create fancy styles and shaders too.

If you're interested in following the progress here, you can check out the Github Repo or the Demo Site.



Making some last minute changes to the new post tonight and aiming to publish it on Saturday. After that's out, I'm going to start on a Svelte wrapper for the Maplibre mapping package. This will be a basis of future posts on working with geographic data in the browser.



Finished the initial draft of my 2nd GIS post today. Coming soon: "Loading Geographic Data in a Format You Can Actually Use". Then we can move on to the fun stuff.



Starting on my next geodata blog post. This is another foundational topic — how to actually get geographic data into a format you can use in your application. I'll cover shapefiles, KML, US census data, OpenStreetMap, and more.


  • Why you should go after a market with strong demand — Some things to consider when looking to start a new product
  • Creatively Misusing TLA+ by Hillel Wayne. This quote stuck out:
  • TLA+ does worst-case model checking, so it fails if it finds any path to an error. This opens a famous trick: if you want to find the set of steps that solve a problem, write a property saying โ€œthe problem isnโ€™t solvedโ€ and make that an invariant. Then any behavior that finds the solution also breaks the invariant, and the model checker will dutifully spit out the set of steps in that behavior.
  • A bit of math trivia from John D Cook's Blog
  • If a three-digit number is divisible by 37, it remains divisible by 37 if you rotate its digits. For example, 148 is divisible by 37, and so are 814 and 481.



Yet more changes to my publishing flow over the past two days. I added the ability to set custom HTML classes and elements in my Logseq page exporter, which lets me add nice custom styling like in the "code and image" pairs in the new Introduction to GeoJSON article.

And speaking of that article, it's live on the site now. This is targeted toward newcomers to the geographic data world, so if you are a beginner, then I hope it's useful, and if not, then expect additional content soon!



I wrote 1,100 words on an intro to GeoJSON last night. The article is coming together and should be up soon once I make the content bit less dry :) This one is just the basics, but will set the stage for doing actual work.

Did a bit more tonight, but I took a break to fix some CSS stuff on this site and update my Logseq exporter to better support exporting longform writing. Now I can write blog posts in Logseq and still use the outline hierarchy to organize sections, but get flattened HTML output when I publish here.



Starting the first article geographic data article tonight. This one will be an overview of GeoJSON, to lay the foundation for more complex topics.


  • This article on rollback netcode is a nice overview of some different ways of synchronizing state when latency and timing really matters. Mostly only useful for game programming, but well explained.



I'm thinking about doing some more content on working with geographic data. This would include topics such as GeoJSON, working with PostGIS, and writing full apps with SvelteKit and Leaflet. If there is anything that you've found confusing or hard to learn in this area, let please reach out. My email is just daniel at this domain, and I'm also on Twitter and Mastodon.

In other news, I haven't been posting updates on Ergo recently, but the dataflow model is working. Still needs a bit more work to generate type definitions for the editors and for more visualizations, but the core functionality is there.