How to Navigate the Roman Empire

The Tabula Peutingeriana is one of the most remarkable surviving maps from the ancient world. Held at the Austrian National Library in Vienna, it is a medieval copy of a Roman road map, originally drawn on a parchment scroll almost seven metres long and just 34 centimetres high. The map depicts the road network of the Roman Empire, stretching from the British Isles and the Atlantic coast to the Middle East and India. Thousands of place names, roads and distances are recorded along its routes. Unlike a modern geographical map, the Tabula Peutingeriana makes little attempt to represent the world to scale. Its extraordinary elongated shape, with the Mediterranean compressed into a narrow strip,... more →
Posted in: Interactive Maps

How the World Draws the World

I recently shared this map (above) showing the countries of the world as drawn by over 3,000 people playing the Borderline country border game. This combined map brings together all the borders and coastlines drawn by players in Borderline and its companion game, Coastlines. In Borderline, players attempt to draw the outlines of individual countries on a blank map from memory. The results can be surprisingly interesting, which is why, alongside the global map above, you can also explore How the crowd draws every country.  This multiple-map visualization animates between each country’s actual borders and a composite outline created from all the players’ attempts to... more →
Posted in: Interactive Maps

Generating PDF Invoices from Word Templates with officeParser

Last week I shared a demo ("Generating PDFs from Word Templates with officeParser") that made use of the awesome officeParser open source library. That demo was a simple "customer report" web app that took custom data and a Word template. Once the form was submitted, the library converted tokens in the Word template to real data and output a PDF. I decided to build another demo using the library, this time on the server with a simple Node.js script. As I mentioned previously, this new feature mimics Adobe’s Document Generation API. At the time I wrote my blog post, the library just supported simple transformations. So given “ in your Word template, if you passed... more →
Posted in: JavaScript

A Fair Election Map for the Midterms

Will there be fair elections on November 3rd? I can’t promise that, but Karim Douieb can promise a fair election map. His 2026 House Forecast Map replaces the standard geographical congressional district map with one where every district is equal in size. Click the “One seat, one cell” button, and the map morphs from a ‘geographic map into one where each state is resized by its seats and every district gets the same area.’ Reading the Battlefield The interactive map synthesizes data from the Cook Political Report, categorizing all 435 House seats according to race competitiveness ratings: Solid / Likely / Lean Democrats: 214 seats Solid / Likely / Lean Republicans:... more →
Posted in: Interactive Maps

Generating PDFs from Word Templates with officeParser

I’ve been singing the praises of the officeParser library for a while. It’s an open source JavaScript library that can parse, extract, and convert between PDFs and Office documents, as well as OpenOffice, ePub and more. My demos have all focused on client-side examples but obviously the library would work great in a server side workflow as well. I haven’t worked at Adobe for years now, but I still get strangely excited working with documents. I’ll just add that to the long list of reasons I’m a big nerd. A few weeks ago, I reached out to Harsh Ankur about an idea inspired by Adobe’s Document Generation API. This was probably my favorite API in their suite of... more →
Posted in: JavaScript

Building the Unicorn-themed app of my dreams with TinyJS

Everyone likes to talk about light versus dark theme while no one is addressing the real need for our users – a proper unicorn theme. I mean, take a look at this beauty: This is Uninote, a desktop note taking application that – well – takes notes. You create notebooks, write notes, and that’s it. No AI features. Nothing complex, just a note taking app. I’ve had a love/hate relationship with these apps for years. I was a huge Evernote fan until it went to poo. I currently use OneNote and… it’s ok but I wish it was better. And yes, before folks chime in with suggestions, I’m aware I’ve got choices, but I "share" note access with... more →
Posted in: JavaScript

The World’s Most Notable Places.

Do you remember the World’s Most Notable People Map. On Monday, I decided I’d build a World’s Most Notable Places Map, showing locations based on their Wikipedia QRank. I abandoned the project today after discovering the Wikipedia Importance Map. Earlier this month, Wikimedia Enterprise released the Geospatial Wikidata Databset.. This is a large, open dataset that connects geographic features in OpenStreetMap (OSM) with information held in Wikidata, Wikipedia and Wikivoyage. The idea behind the dataset is simple but powerful: OpenStreetMap tells you where things are and provides their geographic shapes, while Wikimedia projects can tell you what they are, why they matter... more →
Posted in: Interactive Maps

Adding a PDF Display to Eleventy

This will be a short one. I’ve talked about embedding PDFs on web pages for probably close to ten years now. Blame Adobe. Blame me being a nerd and finding this stuff interesting. Blame whoever. While I’ve blogged about the topic, I’ve also actually done that on my site here, in a variety of different ways. A while back I realized I wasn’t being consistent with how I did… "stuff" here, like call outs, Youtube links, etc. I started a guide doc so I’d have a quick way to remember what I did last time, and be more consistent. One item on there I had left as "figure it out later" was proper PDF embedding. This week I finally nailed that down.... more →
Posted in: JavaScript
1 2 3 … 249