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