Show HN: Genre map explorer for Spotify, a literate datavis tool

This notebook overlays your Spotify playlists over the Every Noise at Once genre map, built by Spotify's Glenn McDonald. It will let you see how your playlists relate to each other genre wise, as well as to see the genres assigned to artists you've listened to. Spotify have publi … | Continue reading


@observablehq.com | 1 year ago

Observable transitions to paid plan for private notebooks

Observable was created to help everyone make sense of the world with data, together. People are drawn to Observable because of its thriving community: a generous, creative, diverse group working with data through visualization. The community is learning from, building upon, and i … | Continue reading


@observablehq.com | 1 year ago

Reactive Hypertext Literal

Observable has a reactive runtime that operates at the level of individual cell. As a consequence, HTML literals that reference other cells are re-evaluated in their entirety whenever their dependencies change. As an example, each time this number changes, the entire HTML fragmen … | Continue reading


@observablehq.com | 1 year ago

GeoArrow and GeoParquet in Deck.gl

Easier rendering of large geospatial data Kyle BarronAugust 11, 2022 As I explored in my last post, GeoParquet is an exciting new format for browser-based applications. But that post glossed over the details of rendering data in deck.gl. In this post I'll focus more on the GeoArr … | Continue reading


@observablehq.com | 1 year ago

SQLite-HTTP: A SQLite extension for making HTTP requests

`sqlite-http` is a new SQLite extension that allows you to create HTTP requests in SQLite. Think of `fetch()`, `requests.get()`, or `curl`, but entirely in SQL! Tried out DALL·E to generate blog post thumbnails... was pretty fun! Demo sqlite-http is written in Go, which can't be … | Continue reading


@observablehq.com | 1 year ago

SQLite-lines – a SQLite extension for reading files line-by-line

sqlite-lines is a new SQLite extension that quickly read lines from a file. This, paired with SQLite's JSON support, can be used to parse NDJSON/JSONL files, log files, and simple txt files. In fact, using `sqlite-lines` and SQLite's JSON support is one of the fastest NDJSON read … | Continue reading


@observablehq.com | 1 year ago

Zig and WASM

Here's how to compile and run a simple WebAssembly program with Zig 0.9.1. Save the following code to the file `main.zig`: Install Zig (eg. `brew install zig`) then run this command in the same folder as `main.zig`: We can now instantiate a WebAssembly runtime to execute the comp … | Continue reading


@observablehq.com | 1 year ago

Experimenting with Comby for Quick Syntactic Rewrites

I'm experimenting with a new programming language, Zig, by porting some basic matrix math utilities from Go. In Go, tests often use a table-driven paradigm. For example, here's a test for 2d affine matrix multiplication: Individual tests are specified as instances of an anonymous … | Continue reading


@observablehq.com | 1 year ago

Understanding vector embeddings with Feder by a reverse image search example

You may be puzzled by how computers understand similarity. Humans have a natural sensitivity and unique processing channels for visualinformation, while for computers, it is not possible to understand the picturesdirectly, but rather to embed them into vector data. And what is an … | Continue reading


@observablehq.com | 1 year ago

Notebook Dataflow Debugger (Ndd)

A moldable tool to find unexpected dataflow events in Observable. Discussion on Twitter. State UI timeline timeline holder reset button pause toggle break toggler Time window Implementation Get the runtime find the main module (the notebook itself, not its imports) track notebook … | Continue reading


@observablehq.com | 1 year ago

Generating graphs that look like stock charts

It turns out it's pretty easy to generate graphs that look like stock prices graphs. Just generate a bunch of random values from 0-1, then take the integral of that (each integrated value is the sum of all the previous original values). The resulting random walk looks a lot like … | Continue reading


@observablehq.com | 1 year ago

Show HN: Livecode a Webserver in a Browser

WEBcode.run lets you create serverless endpoints within Observable notebooks, so you can implement webhooks, dashboard servers and webapps without leaving your browser. The defining feature of WEBCode.run over other serverless platforms is livecoding. Livecoding routes production … | Continue reading


@observablehq.com | 1 year ago

The Power of JavaScript Generators – Anjana Vakil

\`now\` is a builtin generator from Observable's stdlib: \`\`\`jsfunction*() { while (true) { yield Date.now(); }}\`\`\` Observable pulls from any generator once per animation frame, updating the notebook reactively. Appendix Utilities to make the notebook & presentation wor … | Continue reading


@observablehq.com | 1 year ago

Atomic Agents: Polylines and Forces

This example uses a 'seek' steering force to move particles along the nearest polyline. There is also a repulsion force between particles. Try drawing your own lines on the canvas below (code adapted from Mike Bostock's Draw Me notebook). Do not go off the sides or draw 1-point l … | Continue reading


@observablehq.com | 1 year ago

A Tiny Grammar of Graphics

If you've ever wondered how frameworks like Observable Plot, ggplot2, or Vega-Lite work, you've come to the right place! I was wondering the same thing, so I looked at a bunch of implementations, read a bunch of papers, and this is what I came up with. Below, you'll find a walkth … | Continue reading


@observablehq.com | 1 year ago

A Causally Consistent Redis Back End for a Realtime Database

Firebase's databases may be easy-to-use and intuitive, but they actually solve some of the trickiest problems in distributed databases. Firebase is often misclassified as an eventually consistent database, but if that were the full truth, you would hear developers complain of dat … | Continue reading


@observablehq.com | 1 year ago

A brief history of blue noise Poisson distribution generators

A brief history of blue noise 2 dimensions point distributions: dark ages: Monte Carlo, aka “dart-throwing”; very slow 1991: Don Mitchell publishes “Spectrally optimal sampling for distribution ray tracing,” introducing a sequential sampling algorithm which has a time complexity … | Continue reading


@observablehq.com | 1 year ago

A City in a Bottle

I'm trying to understand https://twitter.com/KilledByAPixel/status/1517294627996545024. | Continue reading


@observablehq.com | 1 year ago

SQL Cells in Observable

In addition to JavaScript, Markdown, and other types of cells, Observable has a SQL cell type that enables easy exploration of data in a database. You can connect a SQL cell to a database, write a SQL query directly in the cell, and explore the results of that query in a built-in … | Continue reading


@observablehq.com | 1 year ago

Show HN: Hackable (Firebase Compatible) Realtime Database

Let's build a 3rd party wire compatible Firebase Database Server. Introduction This is a prototype Firebase wire compatible Realtime Database Server. Vanilla Firebase web clients are able to connect and sync data with it. The server is written in Observable to simplify programmab … | Continue reading


@observablehq.com | 1 year ago

GeoParquet on the Web

The ideal Cloud-Native analytical geospatial vector file format Kyle BarronFoursquare The Web is the future of Geospatial Web applications are accessible to anyone and easily shareable No installation issues like with some desktop applications Possible to get near-native performa … | Continue reading


@observablehq.com | 2 years ago

Visualizing Air Raid Sirens in Ukraine

As Ukraine continues to heroically resist Russia's invasion, Ukrainians have to face new realities of war. One of them, a constant presence in our daily lives, is Air Raid Sirens — a loud sound indicating threat of imminent attack from the air and a call to take shelter immediate … | Continue reading


@observablehq.com | 2 years ago

Shakespeare Insult Kit

Continue reading


@observablehq.com | 2 years ago

Interactive map of the war in Ukraine, visualizing incidents over time

Data last updated: March 16, 2022 16:44 CET Data is crowdsourced by Centre for Information Resilience, Bellingcat, Conflict Intelligence Team and the wider open source community with the intent to map, document and verify significant incidents during the conflict in Ukraine. See … | Continue reading


@observablehq.com | 2 years ago

Wordle, 15M Tweets Later

Since the start of the year, the online word game Wordle has overtaken “crossword” (by 10x), “olympics” (2x) and even “covid” (1.5x) in Google Trends data. News outlets cover the game down to each day’s answer, and it apparently helped end a hostage situation in Illinois. The New … | Continue reading


@observablehq.com | 2 years ago

Understand Entropy in One Chart

Recently, a very popular YouTube video explained how to use the concept of Entropy to solve Wordle. The math for Entropy is actually quite simple, but staring at an equation doesn't quite do the concept intuitive justice. So I've taken the time to make a visual showing the concep … | Continue reading


@observablehq.com | 2 years ago

Words known better in the US than in the UK, and vice versa

The chart below visualizes words disproportionately known in one country and not the other. The data comes from this table in a paper on Word prevalence norms for 62,000 English lemmas (via): In the dataset we selected, each word was judged on average by 388 participants (282 fro … | Continue reading


@observablehq.com | 2 years ago

Words known better by males than females, and vice versa

The chart below visualizes words disproportionately known by one sex and not the other. The data comes from this table in a paper on Word prevalence norms for 62,000 English lemmas (via): In the dataset we selected, each word was judged on average by 388 participants (282 from th … | Continue reading


@observablehq.com | 2 years ago

Show HN: Extinct Butterflies

A slightly macabre, bittersweet Valentine's Day gift for my wife. It ultimately became a study in inline CSS. It's messy. That's ok. These butterflies are beautiful. Feel free to fork it 🖤 \- Izzy Paper Texture from Max Pixel Gold foil frames from Pixabay | Continue reading


@observablehq.com | 2 years ago

Show HN: Find Yoga videos to try by category

715ECA2E-8AF7-408C-9BB4-A823F5AE3B91.jpeg Inspired by and with data from the awesome site DoSome.Yoga. Yoga mat icon by Dewi Tresnahi. The goal was to see how fast I could clone the functionality of another app. My previous notebook, Printable Chess Set took 3.5 hours. This noteb … | Continue reading


@observablehq.com | 2 years ago

Show HN: Famous people who have died by overdose

Continue reading


@observablehq.com | 2 years ago

Show HN: Printable Chess Set

How fast can you build an app, from idea generation to workable prototype? From start to now, this was built in 3.5 hours. I had never used the Canvas API in depth so building that mental model was the biggest challenge. I have to make dinner so I'll leave it up to you for now! & … | Continue reading


@observablehq.com | 2 years ago

Spy vs. UPRO

Comparison of SPY (S&P 500) to UPRO (S&P 500 X3) close prices change from to relative to Zoom In on last year, close prices change from to relative to | Continue reading


@observablehq.com | 2 years ago

Reverse Engineering the Firebase Realtime Database Wire Protocol

Google kindly open sourced the Firebase Client SDKs, but there is no open source server implementation! This notebook is step 1 to remedying that omission by documenting the wire protocol. In this interactive notebook, we instrument the Realtime Database client, and create a numb … | Continue reading


@observablehq.com | 2 years ago

Bikeshare in the United States

A collection of visualizations of public docked bikeshare systems. Data sources Annual rides (Oct 2020 - Oct 2021) Citi Bike is by far the largest system in North America. 🗽 Note: Not all bikeshare systems are included in this report. Disclaimers This dashboard is not aff … | Continue reading


@observablehq.com | 2 years ago

Computing and rendering particle simulation trails without data leaving the GPU

This notebook walks through simulating a strange attractor on the GPU and then rendering particle tracks as lines. We do this without any of the data ever touching the CPU! The notebook presents the details below, but the high level summary is that the state of all particle track … | Continue reading


@observablehq.com | 2 years ago

PNG compresses images using filters

PNG compression is surprisingly simple. You take the raw pixel data, filter it, and run it through zlib. The filtering stage doesn't affect the uncompressed size, but instead tries to get it into a form that zlib can compress better. Filtering is the only image-specific compressi … | Continue reading


@observablehq.com | 2 years ago

Astronomical Clock

This clock is inspired by the astronomical clock in Prague. About The clock face shows a view of the sky and the ground in stereographic projection. The centre of this projection is the celestial south pole. If your location is on the southern hemisphere, this switches to the nor … | Continue reading


@observablehq.com | 2 years ago

So, this whole “Collatz Conjecture” thing

I'm honestly a little flabbergasted at some of the things mathematicians have deemed "hard" problems. I mean, Navier-Stokes, sure. Birch & Swinnerton-Dyer, alright. But, inasmuch as I struggle to perform the Herculean task of counting up money (which, I must assure you, is much m … | Continue reading


@observablehq.com | 2 years ago

Show HN: FaaS feat. production debugging, instant deploys and browser tooling

** Rapid HTTP endpoint development featuring production debugging, instant deploys** and Observable browser based tooling. Do you like the idea of Serverless functions-at-a-service but find the sheer pain of development is actually worse than the operation complexity it displaces … | Continue reading


@observablehq.com | 2 years ago

Show HN: Mixed Integer Programming for JavaScript

Mixed integer programming for the browser! Mixed integer programming is restricted but powerful formalism for solving optimization problems. Variables can be non-negative continuous (default) integer binary (which is integer restricted to 0 or 1) You can request to minimize or ma … | Continue reading


@observablehq.com | 2 years ago

Show HN: 65,536 Cities – Lat/long, sampled by population (252KB)

This map demonstrates random cities from the 65,536 Cities index (fetched via IPFS) on a World Map. | Continue reading


@observablehq.com | 2 years ago

Observable Data Wrangler

Data wrangling is often a complex and time consuming part of quantitative work.This (experimental) `Wrangler` function provides an interface to guide codecomposition and also display the results. It uses theArquero package, arobust data wrangling library based on the grammar of d … | Continue reading


@observablehq.com | 2 years ago

Classic Research in Data Visualization

I’ve been very happy, working in data visualization, that it’s more inclusive than some fields, less credentialed, more collaborative. You don’t need a doctoral adviser to post groundbreaking work, and citations on Twitter aren’t refereed. But my casual on-the-job vernacular lear … | Continue reading


@observablehq.com | 2 years ago

Local Spatial Autocorrelation Interactive Tutorial

Continue reading


@observablehq.com | 2 years ago

Observable HQ: SQLite Support in Notebooks

Continue reading


@observablehq.com | 2 years ago

Puppeteer Automation from the Browser

Puppeteer by Google is a headless Chrome automation library. Now you can do it in the browser without installing or running anything! By using the work of pupeteer-web (thanks @entrptaher!) we are able to make a connection with a remote pupeteer instance hosted by @endpointservic … | Continue reading


@observablehq.com | 2 years ago

Sign a PDF and Adobe: Go F* Yourself

Allows super-imposing an image of your signature on a PDF. Why not use Adobe? I once had a Adobe subscription exactly for this purpose but I was unable to cancel it. So it cost me $200 to sign a document. They are predatory, and its not just me. Why not use the free tools on the … | Continue reading


@observablehq.com | 2 years ago