Tom MacWright
[email protected]
Tom MacWright
Writing
⇠
Reading
Photos
Projects
Drawings
Micro
About
Recently: Cycling and Autumn
2024-11-03
Recently
2024-10-01
Recently
2024-09-05
Recently
2024-08-01
Reverse engineering a day’s worth of websites
2024-07-30
Obsidian Freeform
2024-06-02
Recently
2024-06-01
Recently
2024-05-01
Recently
2024-04-02
Figma Plugins
2024-03-29
Recently
2024-03-01
Recently
2024-02-01
Work hard and take everything really seriously
2024-01-28
Placemark is now open source
2024-01-19
Year in Review
2023-12-28
Homeownership
2023-12-21
Recently
2023-12-01
Placemark is going open source and shutting down
2023-11-13
Roll
2023-11-10
Recently
2023-11-01
Rendering Tidbyt graphics in Rust
2023-10-29
Recently
2023-10-01
Masked email is a killer feature for Fastmail
2023-09-24
Playing with bikeshare data, part one
2023-09-17
Recently
2023-09-01
Open charter companies and relicensing
2023-08-29
Recently
2023-08-01
Recently
2023-07-03
Recently
2023-06-01
The one about AI
2023-04-15
Recently
2023-04-01
Competition
2023-03-18
Recently
2023-03-03
Recently
2023-02-01
On Placemark
2023-01-28
Val.town
2023-01-27
Recently
2023-01-03
My favorite books of 2022
2022-12-27
Playing with ActivityPub
2022-12-09
Recently
2022-12-01
Web technology optimism hour
2022-11-18
Recently
2022-11-01
Recently
2022-10-03
Hacker News
2022-09-15
Focus
2022-09-14
Wilderplace
2022-09-09
Recently
2022-09-01
Recently
2022-08-01
Activation
2022-07-11
Lumina: a review
2022-07-07
Recently
2022-07-01
Recently
2022-06-01
Are new geospatial formats useful (to me?)
2022-05-30
Recently
2022-05-01
Hivemapper impressions
2022-04-16
Recently
2022-03-29
Tidbyt: a review
2022-03-11
Using files with browsers, in reality
2022-03-04
Indie bookshelves
2022-02-24
Development notes
2022-02-04
Recently
2022-02-01
A semblance of understanding
2022-01-10
Recently
2022-01-02
Sharing in the presence of computers and corporations
2021-12-07
Recently
2021-12-01
In defense of verification
2021-11-19
Recently
2021-10-01
Recently
2021-09-02
Recently
2021-08-01
Hacking is the opposite of marketing
2021-07-24
Two Wishes for Dev Tooling
2021-07-05
Recently
2021-07-01
You can now buy this theme
2021-06-11
Recently
2021-06-01
Recently - New York
2021-05-02
The return of fancy tools
2021-03-16
Vendor by default
2021-03-11
Immutable approaches
2021-03-05
Recently
2021-03-03
One way to represent things
2021-02-23
A year of Rails
2021-02-18
Picking better names for variables, functions, and projects
2021-02-17
Recently
2021-02-01
Tom Rates Hills: Tank Hill
2021-01-22
GEDCOM
2021-01-18
Rust is a hard way to make a web API
2021-01-15
Recently
2021-01-01
It's better to be naive than jaded
2020-12-27
The new reading stack
2020-12-24
Review: Keyboardio Atreus
2020-12-12
Sharrows, the bicycle infrastructure that doesn’t work and nobody wants
2020-12-04
Recently
2020-12-01
Monetization experiments on this website
2020-11-15
Recently
2020-11-01
If not SPAs, What?
2020-10-28
Tom Rates Hills: Holly Park
2020-10-12
Tom Rates Hills: Mount Sutro
2020-10-06
Recently
2020-10-01
Recently
2020-09-01
A clean start for the web
2020-08-22
Recently
2020-08-01
Recently
2020-07-01
Ethics in Geo
2020-06-21
Recently
2020-06-01
Second-guessing the modern web
2020-05-10
Linkrot
2020-05-02
Recently
2020-05-01
Elm
2020-04-26
Recently
2020-04-01
Dark
2020-03-29
Chess
2020-03-22
Meditation
2020-03-17
Recently
2020-03-01
Math keeps changing
2020-02-14
Recently
2020-02-01
Prepper-style music hoarding
2020-01-27
Tom Rates Hills: Kite Hill
2019-12-21
Recently
2019-12-01
Something is wrong with computers
2019-11-15
Recently
2019-10-01
Recently
2019-09-02
Power
2019-08-30
Finishing side projects
2019-08-25
Tom Rates Hills: Billy Goat Hill
2019-08-12
Recently
2019-08-01
Beware the ethical car
2019-07-27
Zero-sum
2019-07-20
Arweave
2019-07-02
Recently
2019-07-01
IPFS, Again
2019-06-08
Recently
2019-06-03
Dear map people
2019-05-27
Elizabeth Warren
2019-05-16
Big 4
2019-05-12
Trees
2019-04-29
Accessibility: buttons
2019-04-06
Recently
2019-04-03
Tom Rates Hills: Bernal Heights
2019-04-02
Accessibility: Color contrast is a problem
2019-03-30
How to maintain a bunch of open source projects
2019-03-28
Recently
2019-03-01
Photos
2019-02-28
A way to do CSS for applications
2019-02-09
How to blog
2019-02-06
Recently
2019-02-02
Roll 1
2019-01-10
Shiny stuff in the pipeline
2019-01-08
Stumbling blocks on the way to web performance
2019-01-05
Paper notes
2019-01-02
Recently
2019-01-01
Recently
2018-12-05
Writing a small module in 2018
2018-11-26
Tom Rates Hills: Mount Olympus
2018-11-24
My trees
2018-11-11
You probably don't mean simplistic
2018-11-09
Recently
2018-11-01
Tom Rates Hills: Twin Peaks
2018-10-15
D12 - a prototype and documentation braindump
2018-10-07
Tom Rates Hills: Corona Heights
2018-09-04
Recently
2018-09-02
Tom Rates Hills: Buena Vista
2018-08-29
Glow
2018-08-28
Recently
2018-08-04
Permit me to convince you to get a library card
2018-07-27
Recently
2018-07-07
Against magic
2018-06-19
How and why I use (neo)vim
2018-06-17
Recently
2018-06-03
Ethics are not enough
2018-05-10
Recently
2018-05-01
The simplicity of dropping Google in 2018
2018-04-26
How and why I illustrate
2018-04-11
The other kind of privacy
2018-04-09
Recently
2018-04-02
Remember the winter
2018-02-25
Advice to the newish programmer
2018-02-08
Quick thoughts: on the introduction of technology
2018-02-04
Recently
2018-02-03
Box breathing box
2018-01-05
Year in review
2017-12-22
Owning my reading log
2017-12-11
Recently
2017-12-03
Trees
2017-11-24
On font fallbacks and failures
2017-11-18
Recently
2017-11-05
Carrying a camera
2017-11-03
Blogs I read
2017-10-28
Updates & fixes
2017-10-24
Denial of coevalness
2017-10-23
Recently
2017-10-01
Plants
2017-09-04
Recently
2017-09-02
So you want to decentralize your website with IPFS
2017-08-09
Recently
2017-08-01
JavaScript wats, dissected
2017-07-29
So you want to decentralize your website
2017-07-20
Recently
2017-07-01
Software - what I use
2017-06-09
State of documentation.js
2017-06-06
0 Tweets
2017-06-05
Recently
2017-06-04
Data science scratchpad
2017-06-01
The silliness of claiming rejected universal values
2017-05-25
Wah, a slightly higher level language for WebAssembly, with a reference compiler in Clojure
2017-05-20
My Mountain Dulcimer
2017-05-18
Unshipping
2017-05-11
HTTPS
2017-05-08
Tinkerings
2017-05-06
How to try to not mansplain
2017-05-05
zeroarg
2017-05-04
Recently
2017-05-01
Trees, Elm, whiteboardable algorithms
2017-04-28
Big 3
2017-04-21
ES6 Modules aren't just syntax sugar
2017-04-18
Piano Roll
2017-04-13
Day 2
2017-04-11
Working on documentation.js
2017-04-10
Simple Statistics 3
2017-04-06
Recently - next
2017-04-01
Map, a moderately better dictionary datastructure for JavaScript
2017-03-13
The bad kind of good kind of problem to have
2017-03-03
Recently
2017-03-02
Miscellaneous
2017-02-26
The case against open source by default
2017-02-05
Recently
2017-02-04
Numbers
2017-01-28
Where my donation dollars are going
2016-12-30
What little I know about design
2016-12-28
Placebo privacy
2016-12-27
Harder than it looks: globs
2016-12-16
A mental model of what d3-queue does
2016-12-09
That time I was a jerk
2016-12-06
Polite Technology, Open Review
2016-12-04
Everything you need to know now about RFC 7946 GeoJSON
2016-11-07
Recently
2016-11-01
Animating d3 and React
2016-10-28
Mixing d3 and React
2016-10-11
Everything is fine with JavaScript
2016-10-04
The 180th Meridian
2016-09-26
Zapier as quantification bot
2016-09-18
Recently
2016-09-01
Penmanship and programming education
2016-08-28
Optimistic and Pessimistic Versioning
2016-08-23
Free services
2016-08-22
Restrictive programming
2016-08-21
Promises
2016-08-14
Dumb Redux
2016-08-02
Recently
2016-08-01
Write-only Twitter
2016-07-31
soapbox: longitude, latitude is the right way
2016-07-15
jscodeshift - the find and replace of your dreams
2016-07-12
Undo and redo in Elm
2016-07-09
New wave modularity with Lerna, monorepos, and npm organizations
2016-07-08
Recursion
2016-07-03
That little world
2016-06-06
Falsehoods developers believe about GeoJSON
2016-06-05
Simple Statistics 2
2016-06-02
Recently
2016-06-01
My Electric Objects EO1
2016-05-31
I'm writing a book
2016-05-27
Printed running map
2016-05-17
Math as SVG for fast webpages
2016-05-09
This page weighs 15kb
2016-05-03
Things Learned
2016-05-02
Maps of Numbers
2016-05-01
Writing truthful documentation
2016-04-06
Simple lessons learned about building things
2016-04-02
Sorting
2016-03-23
Voice
2016-03-20
Bracketing
2016-03-12
Recently
2016-03-01
Polite Technology
2016-02-19
Simple undo and redo in ClojureScript
2016-02-07
Recently
2016-02-01
I'm putting 40 projects up for adoption
2016-01-30
Big 2
2016-01-25
documentation.js 4 beta
2016-01-24
Flow in Mapbox Studio
2016-01-05
geojson.xyz
2015-12-13
Recently
2015-12-01
documentation.js 3.0.0
2015-10-30
Groovy, Teen Mom's final album
2015-10-21
Redesigning Istanbul
2015-10-19
How we got here
2015-10-08
Recently
2015-10-02
I have used all the todo lists
2015-09-10
Recently
2015-09-06
Canvas animations on maps
2015-08-31
Practical ramda - functional programming examples
2015-08-27
Mapnik's Second Act
2015-08-25
Map Codeflow
2015-08-17
Simple undo in JavaScript with Immutable.js - the video
2015-08-17
Canvas Animation
2015-08-14
Recently
2015-08-06
Charts in 2015
2015-07-10
How Everyone Documents
2015-07-05
Recently
2015-07-03
Recently
2015-06-02
Simple undo in JavaScript with Immutable.js
2015-05-18
In defense of JSDoc
2015-05-15
Big 1.0.0
2015-05-11
Recently
2015-05-02
More than you ever wanted to know about GeoJSON
2015-03-23
JavaScript Diagnosis
2015-03-10
Recently
2015-03-02
Errors
2015-02-28
beyond the for loop
2015-02-19
Recently
2015-02-02
Typing is not the problem
2015-01-19
See Also
2015-01-12
ownership
2015-01-11
parse-gedcom
2015-01-05
making juice with reduce / foldl
2015-01-03
Recently
2014-12-29
cream
2014-12-12
Solving Earth Problems
2014-11-21
Waltz
2014-11-17
RPL (2) - Terrarium
2014-11-10
Three Things
2014-11-06
RPL (1)
2014-11-05
Recently
2014-11-03
Foreground
2014-10-14
Sense City
2014-10-06
Recently
2014-10-01
Recently
2014-09-02
DCTN
2014-08-11
Recently
2014-08-01
The Best Font for Programming: M+
2014-07-09
Recently
2014-07-01
Recently
2014-06-01
DC Code Hackathon: v2
2014-05-08
Fuzz Testing
2014-04-18
Recently
2014-04-01
Teaching
2014-03-18
TAP & Tape, the awesome way to test JavaScript
2014-03-11
Recently
2014-03-02
Simple Open Data
2014-02-14
Recently
2014-02-01
mapschool
2014-01-06
Recently
2014-01-03
Recently
2013-12-01
Recently
2013-11-01
A Literate Raytracer
2013-10-29
Point and Shoot
2013-10-15
Recently
2013-10-01
Buttons
2013-09-05
Recently
2013-09-03
Repetitive Process
2013-08-22
subscript
2013-08-20
Transportation
2013-08-19
Recently
2013-08-01
geojson.io
2013-07-26
How Callbacks Work
2013-07-10
d3 for HTML
2013-07-07
Recently
2013-07-01
Just Enough SVG
2013-06-25
Biggie
2013-06-14
Recently
2013-06-04
Recently
2013-05-09
A Sunday & An Open DC Code
2013-04-16
The Open Code
2013-04-04
Recently
2013-04-01
Math for Pictures
2013-03-05
Recently
2013-03-03
The Code: Access vs. Ownership
2013-02-22
You Cannot Have the DC Code
2013-02-20
Literate Jenks Natural Breaks and How The Idea Of Code is Lost
2013-02-18
State Law is Public Domain. What's Public Domain?
2013-02-14
How the Law is Compiled in Washington DC
2013-02-13
How The Law Is Written and Passed in Washington, DC
2013-02-11
Mistakes
2013-02-05
Recently
2013-02-01
Javascript Module Pattern, Memory, Closures
2013-01-22
Thinking Static
2013-01-08
Recently
2013-01-03
toGeoJSON
2013-01-02
Recently
2012-11-29
Film
2012-11-21
Indexing and Searching Big Static Data
2012-11-14
Microsoft Excel and the Folk Tradition of Technology
2012-11-10
CSS For Maps
2012-11-02
GIS with Python, Shapely, and Fiona
2012-10-31
windchime
2012-10-30
Recently
2012-10-29
Open Source Projects, A Year On
2012-10-10
Mapping Protips
2012-10-06
Considering CSS
2012-10-03
Heard
2012-10-01
Recently
2012-09-20
k-means clustering
2012-09-16
bikelawDC
2012-09-10
On Scrapers
2012-09-06
Police Tweets
2012-08-31
Running maps redux
2012-08-28
mapmote, a powertool for OpenStreetMap editing
2012-08-23
Interacting with Image Maps
2012-08-20
Days and Exports
2012-08-14
Images as Maps
2012-08-13
Why Statistics?
2012-08-07
Stream Statistics
2012-08-04
Recently
2012-08-02
A Year
2012-07-04
Simple Statistics
2012-06-26
Recently
2012-06-19
Gravity Always Wins
2012-06-13
The Module Pattern, A Little More Detail
2012-06-04
How Web Maps Work
2012-05-15
Recently
2012-05-09
Grayscale
2012-05-02
Mean Tom - Teen Mom
2012-04-19
node-fresh
2012-04-17
Recently
2012-04-09
Project it Yourself
2012-03-12
Minute
2012-02-15
Recently
2012-02-09
Shadowplay
2012-02-05
Rhumb Lines and Great Circles
2012-02-02
Understanding Map Projections
2012-01-27
Yell, a Yelp Exporter, and TOSes
2012-01-24
The Wary Guide to OpenLayers
2012-01-12
JS Security With Untrusted Code
2012-01-10
Longitude Over Time - The End of 2011
2012-01-02
November 2011
2011-11-29
xtw - a menu bar item for taskwarrior
2011-11-22
San Francisco
2011-11-18
Odd Maps and How to Make them
2011-11-10
GIF Polyrhythms & GIF CLOCK
2011-11-07
Big
2011-10-28
The Month - October 2011
2011-10-25
Client-Side Javascript Testing & happen
2011-10-18
Writing Javascript for Size
2011-10-06
Your Superfund - Voronoi Tesselations
2011-09-30
Colorado
2011-09-18
Maze
2011-09-07
Easey, DND, and Updates
2011-08-23
whyday hacks - Sketch
2011-08-19
whyday hacks - Heckle
2011-08-19
Sidenotes
2011-08-17
Fast, Hacky Geospatial Queries with UTFGrid
2011-08-10
Monthly Consumption August 2011
2011-08-02
A New Running Map
2011-07-28
The First Node DC Meetup
2011-07-20
The Banjo
2011-07-18
Monthly Consumption July 2011
2011-07-08
July 4th, 2011
2011-07-04
Hello, Internet
2011-07-04