The Curious Engineer

All blogs / Essays / personal

Tom MacWright

macwright.com

The blog, projects, and assorted output of Tom MacWright

Essays / personalJavaScript / TypeScriptGeneral

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

  1. Recently
  2. Recently
  3. Yesteryear
  4. Lightning Rods
  5. Uglify bug
  6. New Observable
  7. Recently
  8. Recently
  9. Placemark is now fully open source
  10. Placemark is now fully open source
  11. Lawnmower story
  12. Everything is Tuberculosis
  13. The Mountain in the Sea
  14. The new geojson.io
  15. Technology optimism hour
  16. Technology optimism hour
  17. Subscription minimizing
  18. Diary of a Very Bad Year
  19. Printing tiny photos for paper journals
  20. Printing tiny photos for paper journals
  21. Recently
  22. Recently
  23. Recently
  24. Recently
  25. Intermezzo bag
  26. Intermezzo bag
  27. Recently
  28. Recently
  29. Eleventy
  30. Eleventy
  31. In the Atmosphere
  32. Recently
  33. I haven't made anything with AT Proto yet
  34. Recently
  35. New tote bag
  36. Color dithering
  37. Recently
  38. Sketches

2025 24

  1. Theme selector
  2. A brief history of specifiers and protocols
  3. 2025 Year in Review
  4. Recently
  5. Val Town 2023-2025 Retrospective
  6. Recently
  7. Recently
  8. Porteur bag 2
  9. Cooking with glasses
  10. Recently
  11. Recently
  12. epanet-js
  13. Recently
  14. Making a custom porteur bag
  15. Reading Zanzibar
  16. Recently
  17. Directive prologues and JavaScript dark matter
  18. Tidbyt without the company
  19. Recently
  20. Personal tools
  21. Introducing the blogroll
  22. Recently
  23. Recently
  24. 2025 Predictions

2024 16

  1. Recently 2024
  2. Bandcamp wrapped
  3. Recently: Cycling and Autumn
  4. Recently
  5. Recently
  6. Recently
  7. Reverse engineering a day’s worth of websites
  8. Obsidian Freeform
  9. Recently
  10. Recently
  11. Recently
  12. Figma Plugins
  13. Recently
  14. Recently
  15. Work hard and take everything really seriously
  16. Placemark is now open source

2023 23

  1. Year in Review
  2. Homeownership
  3. Recently
  4. Placemark is going open source and shutting down
  5. Roll
  6. Recently
  7. Rendering Tidbyt graphics in Rust
  8. Recently
  9. Masked email is a killer feature for Fastmail
  10. Playing with bikeshare data, part one
  11. Recently
  12. Open charter companies and relicensing
  13. Recently
  14. Recently
  15. Recently
  16. The one about AI
  17. Recently
  18. Competition
  19. Recently
  20. Recently
  21. On Placemark
  22. Val.town
  23. Recently

2022 26

  1. My favorite books of 2022
  2. Playing with ActivityPub
  3. Recently
  4. Web technology optimism hour
  5. Recently
  6. Recently
  7. Hacker News
  8. Zig raytracer
  9. Wilderplace
  10. Recently
  11. Recently
  12. Activation
  13. Lumina: a review
  14. Recently
  15. Recently
  16. Are new geospatial formats useful (to me?)
  17. Recently
  18. Hivemapper impressions
  19. Recently
  20. Tidbyt: a review
  21. Using files with browsers, in reality
  22. Indie bookshelves
  23. Development notes
  24. Recently
  25. A semblance of understanding
  26. Recently

2021 24

  1. Sharing in the presence of computers and corporations
  2. Recently
  3. In defense of verification
  4. Recently
  5. Recently
  6. Recently
  7. Hacking is the opposite of marketing
  8. Two Wishes for Dev Tooling
  9. Recently
  10. You can now buy this theme
  11. Recently
  12. Recently - New York
  13. The return of fancy tools
  14. Vendor by default
  15. Immutable approaches
  16. Recently
  17. One way to represent things
  18. A year of Rails
  19. Picking better names for variables, functions, and projects
  20. Recently
  21. Tom Rates Hills: Tank Hill
  22. Gedcom
  23. Rust is a hard way to make a web API
  24. Recently

2020 29

  1. It's better to be naive than jaded
  2. The new reading stack
  3. Review: Keyboardio Atreus
  4. Sharrows, the bicycle infrastructure that doesn’t work and nobody wants
  5. Recently
  6. Monetization experiments on this website
  7. Recently
  8. If not SPAs, What?
  9. Tom Rates Hills: Holly Park
  10. Tom Rates Hills: Mount Sutro
  11. Recently
  12. Recently
  13. A clean start for the web
  14. Recently
  15. Recently
  16. Ethics in Geo
  17. Recently
  18. Second-guessing the modern web
  19. Linkrot
  20. Recently
  21. Old fashioned front
  22. Recently
  23. Dark
  24. Chess
  25. Meditation
  26. Recently
  27. Math keeps changing
  28. Recently
  29. Prepper-style music hoarding

2019 34

  1. Tom Rates Hills: Kite Hill
  2. Recently
  3. Something is wrong with computers
  4. Recently
  5. Recently
  6. Power
  7. Finishing side projects
  8. Tom Rates Hills: Billy Goat Hill
  9. Recently
  10. Beware the ethical car
  11. Zero-sum
  12. Arweave
  13. Recently
  14. IPFS, Again
  15. Recently
  16. Dear map people
  17. Elizabeth Warren
  18. Big 4
  19. Trees
  20. Accessibility: buttons
  21. Recently
  22. Tom Rates Hills: Bernal Heights
  23. Accessibility: Color contrast is a problem
  24. How to maintain a bunch of open source projects
  25. Recently
  26. Photos
  27. A way to do CSS for applications
  28. How to blog
  29. Recently
  30. Roll 1
  31. Shiny stuff in the pipeline
  32. Stumbling blocks on the way to web performance
  33. Paper notes
  34. Recently

2018 29

  1. Recently
  2. Writing a small module in 2018
  3. Tom Rates Hills: Mount Olympus
  4. My trees
  5. You probably don't mean simplistic
  6. Recently
  7. Tom Rates Hills: Twin Peaks
  8. D12 - a prototype and documentation braindump
  9. Tom Rates Hills: Corona Heights
  10. Recently
  11. Tom Rates Hills: Buena Vista
  12. Glow
  13. Recently
  14. Permit me to convince you to get a library card
  15. Recently
  16. Against magic
  17. How and why I use (neo)vim
  18. Recently
  19. Ethics are not enough
  20. Recently
  21. The simplicity of dropping Google in 2018
  22. How and why I illustrate
  23. The other kind of privacy
  24. Recently
  25. Remember the winter
  26. Advice to the newish programmer
  27. Quick thoughts: on the introduction of technology
  28. Recently
  29. Box breathing box

2017 47

  1. Year in review
  2. Owning my reading log
  3. Recently
  4. Trees
  5. On font fallbacks and failures
  6. Recently
  7. Carrying a camera
  8. Blogs I read
  9. Updates & fixes
  10. Denial of coevalness
  11. Recently
  12. Plants
  13. Recently
  14. So you want to decentralize your website with IPFS
  15. Recently
  16. JavaScript wats, dissected
  17. So you want to decentralize your website
  18. Recently
  19. Software - what I use
  20. State of documentation.js
  21. 0 Tweets
  22. Recently
  23. Data science scratchpad
  24. The silliness of claiming rejected universal values
  25. Wah, a slightly higher level language for WebAssembly, with a reference compiler in Clojure
  26. My Mountain Dulcimer
  27. Unshipping
  28. Https
  29. Tinkerings
  30. How to try to not mansplain
  31. zeroarg
  32. Recently
  33. Trees, Elm, whiteboardable algorithms
  34. Big 3
  35. ES6 Modules aren't just syntax sugar
  36. Piano Roll
  37. Day 2
  38. Working on documentation.js
  39. Simple Statistics 3
  40. Recently - next
  41. Map, a moderately better dictionary datastructure for JavaScript
  42. The bad kind of good kind of problem to have
  43. Recently
  44. Miscellaneous
  45. The case against open source by default
  46. Recently
  47. Numbers

2016 52

  1. Where my donation dollars are going
  2. What little I know about design
  3. Placebo privacy
  4. Harder than it looks: globs
  5. A mental model of what d3-queue does
  6. That time I was a jerk
  7. Polite Technology, Open Review
  8. Everything you need to know now about RFC 7946 GeoJSON
  9. Recently
  10. Animating d3 and React
  11. Mixing d3 and React
  12. Everything is fine with JavaScript
  13. The 180th Meridian
  14. Zapier as quantification bot
  15. Recently
  16. Penmanship and programming education
  17. Optimistic and Pessimistic Versioning
  18. Free services
  19. Restrictive programming
  20. Promises
  21. Dumb Redux
  22. Recently
  23. Write-only Twitter
  24. soapbox: longitude, latitude is the right way
  25. jscodeshift - the find and replace of your dreams
  26. Undo and redo in Elm
  27. New wave modularity with Lerna, monorepos, and npm organizations
  28. Recursion
  29. That little world
  30. Falsehoods developers believe about GeoJSON
  31. Simple Statistics 2
  32. Recently
  33. My Electric Objects EO1
  34. I'm writing a book
  35. Printed running map
  36. Math as SVG for fast webpages
  37. This page weighs 15kb
  38. Things Learned
  39. Maps of Numbers
  40. Writing truthful documentation
  41. Simple lessons learned about building things
  42. Sorting
  43. Voice
  44. Bracketing
  45. Recently
  46. Polite Technology
  47. Simple undo and redo in ClojureScript
  48. Recently
  49. I'm putting 40 projects up for adoption
  50. Big 2
  51. documentation.js 4 beta
  52. Flow in Mapbox Studio

2015 35

  1. geojson.xyz
  2. Recently
  3. documentation.js 3.0.0
  4. Groovy, Teen Mom's final album
  5. Redesigning Istanbul
  6. How we got here
  7. Recently
  8. I have used all the todo lists
  9. Recently
  10. Canvas animations on maps
  11. Practical ramda - functional programming examples
  12. Mapnik's Second Act
  13. Simple undo in JavaScript with Immutable.js - the video
  14. Map Codeflow
  15. Canvas Animation
  16. Recently
  17. Charts in 2015
  18. How Everyone Documents
  19. Recently
  20. Recently
  21. Simple undo in JavaScript with Immutable.js
  22. In defense of JSDoc
  23. Big 1.0.0
  24. Recently
  25. More than you ever wanted to know about GeoJSON
  26. JavaScript Diagnosis
  27. Recently
  28. Errors
  29. beyond the for loop
  30. Recently
  31. Typing is not the problem
  32. See Also
  33. ownership
  34. parse-gedcom
  35. making juice with reduce / foldl

2014 27

  1. Recently
  2. Cream
  3. Solving Earth Problems
  4. Waltz
  5. RPL (2) - Terrarium
  6. Three Things
  7. RPL (1)
  8. Recently
  9. Foreground
  10. Sense City
  11. Recently
  12. Recently
  13. Dctn
  14. Recently
  15. The Best Font for Programming: M+
  16. Recently
  17. Recently
  18. DC Code Hackathon: v2
  19. Fuzz Testing
  20. Recently
  21. Teaching
  22. TAP & Tape, the awesome way to test JavaScript
  23. Recently
  24. Simple Open Data
  25. Recently
  26. mapschool
  27. Recently

2013 36

  1. Recently
  2. Recently
  3. A Literate Raytracer
  4. Point and Shoot
  5. Recently
  6. Buttons
  7. Recently
  8. Repetitive Process
  9. subscript
  10. Transportation
  11. Recently
  12. geojson.io
  13. How Callbacks Work
  14. d3 for HTML
  15. Recently
  16. Just Enough SVG
  17. Biggie
  18. Recently
  19. Recently
  20. A Sunday & An Open DC Code
  21. The Open Code
  22. Recently
  23. Math for Pictures
  24. Recently
  25. The Code: Access vs. Ownership
  26. You Cannot Have the DC Code
  27. Literate Jenks Natural Breaks and How The Idea Of Code is Lost
  28. State Law is Public Domain. What's Public Domain?
  29. How the Law is Compiled in Washington DC
  30. How The Law Is Written and Passed in Washington, DC
  31. Mistakes
  32. Recently
  33. JavaScript Module Pattern, Memory, Closures
  34. Thinking Static
  35. Recently
  36. toGeoJSON

2012 46

  1. Recently
  2. Film
  3. Indexing and Searching Big Static Data
  4. Microsoft Excel and the Folk Tradition of Technology
  5. CSS For Maps
  6. GIS with Python, Shapely, and Fiona
  7. windchime
  8. Recently
  9. Open Source Projects, A Year On
  10. Mapping Protips
  11. Considering CSS
  12. Heard
  13. Recently
  14. k-means clustering
  15. bikelawDC
  16. On Scrapers
  17. Police Tweets
  18. Running maps redux
  19. mapmote, a powertool for OpenStreetMap editing
  20. Interacting with Image Maps
  21. Days and Exports
  22. Images as Maps
  23. Why Statistics?
  24. Stream Statistics
  25. Recently
  26. A Year
  27. Simple Statistics
  28. Recently
  29. Gravity Always Wins
  30. The Module Pattern, A Little More Detail
  31. How Web Maps Work
  32. Recently
  33. Grayscale
  34. Mean Tom - Teen Mom
  35. node-fresh
  36. Recently
  37. Project it Yourself
  38. Minute
  39. Recently
  40. Shadowplay
  41. Rhumb Lines and Great Circles
  42. Understanding Map Projections
  43. Yell, a Yelp Exporter, and TOSes
  44. The Wary Guide to OpenLayers
  45. JS Security With Untrusted Code
  46. Longitude Over Time - The End of 2011

2011 24

  1. November 2011
  2. xtw - a menu bar item for taskwarrior
  3. San Francisco
  4. Odd Maps and How to Make them
  5. GIF Polyrhythms & GIF CLOCK
  6. Big
  7. The Month - October 2011
  8. Client-Side JavaScript Testing & happen
  9. Writing JavaScript for Size
  10. Your Superfund - Voronoi Tesselations
  11. Colorado
  12. Maze
  13. Easey, DND, and Updates
  14. whyday hacks - Sketch
  15. whyday hacks - Heckle
  16. Sidenotes
  17. Fast, Hacky Geospatial Queries with UTFGrid
  18. Monthly Consumption August 2011
  19. A New Running Map
  20. The First Node DC Meetup
  21. The Banjo
  22. Monthly Consumption July 2011
  23. July 4th, 2011
  24. Hello, Internet