https://dafoster.net/404/ https://dafoster.net/articles/topics/DigitalPreservation.xml https://dafoster.net/articles/topics/Django.xml https://dafoster.net/articles/topics/Productivity.xml https://dafoster.net/articles/topics/Software.xml https://dafoster.net/atom.xml https://dafoster.net/assets/bootswatch-readable-3.4.1/bootstrap.css https://dafoster.net/assets/bootswatch-readable-3.4.1/bootstrap.min.css https://dafoster.net/contact/ https://dafoster.net/projects/ https://dafoster.net/articles/topics/ https://dafoster.net/articles/ https://dafoster.net/daarchive/ https://dafoster.net/projects/techsmart-platform/ https://dafoster.net/projects/website-2/ https://dafoster.net/projects/webcrystal/ https://dafoster.net/projects/django-mysql-compressed-fields/ https://dafoster.net/projects/handbrake-subtitle-support/ https://dafoster.net/projects/website/ https://dafoster.net/projects/burn-planner/donate/ https://dafoster.net/projects/burn-planner/ https://dafoster.net/projects/typeform/ https://dafoster.net/projects/typeddict/ https://dafoster.net/projects/crystal-web-archiver/ https://dafoster.net/projects/skylark/ https://dafoster.net/projects/rdiscount/ https://dafoster.net/projects/trycast/ https://dafoster.net/projects/incoming-game/ https://dafoster.net/projects/classicbox/ https://dafoster.net/projects/revise-skill/ https://dafoster.net/projects/uhuru/ https://dafoster.net/about/ https://dafoster.net/apps/ https://dafoster.net/ https://dafoster.net/rss.xml https://dafoster.net/sitemap.txt https://dafoster.net/articles/2025/08/20/issue-counts-always-go-up/ https://dafoster.net/articles/2025/07/22/designing-software-in-the-large/ https://dafoster.net/articles/2025/03/16/the-trouble-with-the-symbol-type/ https://dafoster.net/articles/2025/03/13/dump-traceback-on-print/ https://dafoster.net/articles/2024/08/18/effective-code-reviews/ https://dafoster.net/articles/2024/06/16/pycon-us-2024-highlights/ https://dafoster.net/articles/2024/03/24/redis-relicensing-why-is-this-a-problem/ https://dafoster.net/articles/2024/02/28/bulkheads-a-pattern-for-handling-unexpected-errors-in-software/ https://dafoster.net/articles/2023/10/20/debugging-a-deadlock-in-python/ https://dafoster.net/articles/2023/10/12/custom-file-icons-and-folder-icons/ https://dafoster.net/articles/2023/08/31/how-to-make-a-binary-deb-debian-package-using-docker/ https://dafoster.net/articles/2023/02/22/debugging-bash-scripts-with-the-bashdb-debugger/ https://dafoster.net/articles/2022/07/10/crystal-1-3-0-released/ https://dafoster.net/articles/2022/07/07/compressed-text-field-for-django-and-mysql-is-released/ https://dafoster.net/articles/2021/05/02/interview-with-david-foster/ https://dafoster.net/articles/2021/03/23/crystal-web-archiver-beta-released/ https://dafoster.net/articles/2021/03/16/you-might-not-need-centralized-continuous-integration/ https://dafoster.net/articles/2021/03/09/reliable-rendering-of-web-pages-that-view-concurrently-modified-data/ https://dafoster.net/articles/2021/03/02/real-time-updates-in-django-with-websockets-channels-and-pub-sub/ https://dafoster.net/articles/2021/02/16/building-web-apps-with-vue-and-django-the-ultimate-guide/ https://dafoster.net/articles/2021/02/09/database-clamps-deterministic-performance-tests-for-database-dependent-code/ https://dafoster.net/articles/2021/02/04/privacy-sandbox-googles-answer-to-privacy-conscious-advertising/ https://dafoster.net/articles/2021/02/02/tests-as-policy-automation/ https://dafoster.net/articles/2021/01/26/python's-type-checking-renaissance/ https://dafoster.net/articles/2021/01/20/i-no-longer-trust-the-great-suspender/ https://dafoster.net/articles/2020/02/02/power-naps/ https://dafoster.net/articles/2020/01/18/stress/ https://dafoster.net/articles/2019/06/27/os-abstractions-are-failing-us/ https://dafoster.net/articles/2019/01/06/dependent-types-impressions-of-a-software-practitioner/ https://dafoster.net/articles/2018/12/15/timecharts/ https://dafoster.net/articles/2018/11/24/why-isnt-the-external-link-symbol-in-unicode/ https://dafoster.net/articles/2018/09/23/the-flat-module-pattern-in-javascript/ https://dafoster.net/articles/2018/06/02/performance-testing/ https://dafoster.net/articles/2018/04/07/unsound-type-systems-are-still-useful/ https://dafoster.net/articles/2018/01/20/how-to-implement-a-large-software-feature/ https://dafoster.net/articles/2017/12/18/how-to-annotate-a-new-recipe/ https://dafoster.net/articles/2017/12/09/how-to-learn-to-cook-my-journey/ https://dafoster.net/articles/2017/04/09/the-trouble-with-global-variables/ https://dafoster.net/articles/2017/03/25/how-to-design-large-programs-with-abstraction-and-encapsulation/ https://dafoster.net/articles/2016/08/21/how-to-upload-from-os-x-photos-to-facebook/ https://dafoster.net/articles/2016/05/21/glue-in-functional-programming-languages/ https://dafoster.net/articles/2016/05/17/abandonment-vs-unchecked-exceptions-for-error-handling/ https://dafoster.net/articles/2016/05/02/a-programmers-guide-to-practical-hats/ https://dafoster.net/articles/2016/04/22/notes-on-the-clean-coder/ https://dafoster.net/articles/2016/04/02/roles-on-software-teams/ https://dafoster.net/articles/2015/09/13/state-of-the-union-in-programming-languages/ https://dafoster.net/articles/2015/08/08/algorithms-101/ https://dafoster.net/articles/2015/06/27/unicode-101/ https://dafoster.net/articles/2015/04/26/optional-structural-static-typing-in-python/ https://dafoster.net/articles/2015/03/23/block-distracting-websites/ https://dafoster.net/articles/2015/03/14/semantic-versioning-vs-romantic-versioning/ https://dafoster.net/articles/2015/02/27/proof-terms-in-idris/ https://dafoster.net/articles/2014/12/20/languages-by-hardware-distance/ https://dafoster.net/articles/2014/11/22/error-handling-styles/ https://dafoster.net/articles/2014/11/08/learning-japanese-the-first-6-months/ https://dafoster.net/articles/2014/06/24/submitting-a-python-app-to-the-mac-app-store/ https://dafoster.net/articles/2014/05/10/reading-japanese-text-from-images-quickly/ https://dafoster.net/articles/2014/02/17/agda-second-impressions/ https://dafoster.net/articles/2014/02/02/what-is-color/ https://dafoster.net/articles/2014/01/24/agda-notes-and-evaluation/ https://dafoster.net/articles/2013/11/25/how-to-move-notes-from-an-iphone-to-an-email-account/ https://dafoster.net/articles/2013/11/12/impressions-of-haskell/ https://dafoster.net/articles/2013/10/27/scrivener-an-ide-for-thinkers-creators-and-writers/ https://dafoster.net/articles/2013/10/21/shame-on-the-nsa/ https://dafoster.net/articles/2013/10/04/washington-initiative-522-labeling-of-gmo-foods/ https://dafoster.net/articles/2013/09/30/strange-loop-2013-highlights/ https://dafoster.net/articles/2013/09/04/regular-expressions/ https://dafoster.net/articles/2013/08/25/how-i-learn-new-programming-languages/ https://dafoster.net/articles/2013/08/19/interactive-computing/ https://dafoster.net/articles/2013/08/13/fixing-a-function-at-runtime-without-restarting-the-program/ https://dafoster.net/articles/2013/08/04/skills-i-am-learning-at-splunk/ https://dafoster.net/articles/2013/08/03/skills-i-learned-at-microsoft/ https://dafoster.net/articles/2013/07/27/sending-email-from-command-line-scripts/ https://dafoster.net/articles/2013/07/13/error-handling/ https://dafoster.net/articles/2013/06/01/handling-text-correctly/ https://dafoster.net/articles/2013/05/28/rdiscount-2.1.6-released/ https://dafoster.net/articles/2013/05/12/implicit-partial-application-and-currying-considered-harmful/ https://dafoster.net/articles/2013/05/11/book-outline/ https://dafoster.net/articles/2013/05/07/avoid-feeling-like-a-port-on-the-mac/ https://dafoster.net/articles/2013/04/30/copyrights-and-licenses-for-software/ https://dafoster.net/articles/2013/04/21/exploring-onionland-the-tor-onion-darknet/ https://dafoster.net/articles/2013/04/09/making-an-existing-python-program-unicode-aware/ https://dafoster.net/articles/2013/04/07/beautiful-code-sqlite/ https://dafoster.net/articles/2013/03/22/migrating-from-bbedit-to-sublime-text/ https://dafoster.net/articles/2013/03/16/introducing-p4status-a-status-command-for-perforce/ https://dafoster.net/articles/2013/03/10/killer-apps-for-software-platforms/ https://dafoster.net/articles/2013/03/01/notes-on-racket/ https://dafoster.net/articles/2013/02/25/notes-on-prolog/ https://dafoster.net/articles/2013/02/20/visual-guide-to-programming-language-properties/ https://dafoster.net/articles/2013/02/02/rdiscount-2.0.7-released/ https://dafoster.net/articles/2013/02/01/learnings-from-sicp/ https://dafoster.net/articles/2013/01/29/unique-features-of-various-programming-languages/ https://dafoster.net/articles/2013/01/15/things-i-wish-i-knew-before-working-in-industry/ https://dafoster.net/articles/2013/01/08/programming-is-fun-but-what-matters-is-solving-a-real-problem/ https://dafoster.net/articles/2012/12/21/this-website-is-now-powered-by-jekyll/ https://dafoster.net/articles/2012/12/16/why-i-no-longer-use-drupal/ https://dafoster.net/articles/2010/11/13/retrospect-vs-time-machine/ https://dafoster.net/articles/2010/09/18/impact-anime-my-programming-experience/ https://dafoster.net/articles/2010/09/17/comparing-writing-utensils/