56,966 blogs · [ { "id": "01a0876e-6ce6-70aa-bd16-2d1d0f0ff1fe", "title": "Styling the WordPress SyntaxHighlighter", "url": "https://dogweather.dev/2025/09/23/styling-the-wordpress-syntaxhighlighter/", "published_at": "2025-09-23T23:01:54+00:00" }, { "id": "01a0876e-6ce6-70aa-bd16-2d1d0f7c7d68", "title": "Pattern Matching in Ruby: A Wayfinder", "url": "https://dogweather.dev/2025/08/28/pattern-matching-in-ruby-a-wayfinder/", "published_at": "2025-08-28T22:23:10+00:00" }, { "id": "01a0876e-6ce6-70aa-bd16-2d1d1037b9ae", "title": "IndexNow: Rethinking How We Talk to Search Engines", "url": "https://dogweather.dev/2025/06/27/indexnow-rethinking-how-we-talk-to-search-engines/", "published_at": "2025-06-27T23:25:30+00:00" }, { "id": "01a0876e-6ce7-73da-bc5f-5264cde7561e", "title": "Open source wiki servers with a “draft mode”", "url": "https://dogweather.dev/2025/01/28/open-source-wiki-servers-with-a-draft-mode/", "published_at": "2025-01-28T22:09:01+00:00" }, { "id": "01a0876e-6ce7-73da-bc5f-5264ce8d3440", "title": "Low-Cost, Quality, Online MS Computer Science & Data Science Programs in 2025", "url": "https://dogweather.dev/2024/12/10/low-cost-good-quality-online-ms-computer-science-data-science-programs-in-2025/", "published_at": "2024-12-10T21:58:57+00:00" }, { "id": "01a0c508-a862-7200-8bcc-a11f1a5c5507", "title": "Cleaning up Ruby code with Railway Oriented Programming", "url": "https://dogweather.dev/2024/10/13/cleaning-up-ruby-code-with-railway-oriented-programming/", "published_at": "2024-10-14T02:42:38+00:00" }, { "id": "01a0c508-a862-7200-8bcc-a11f1b2e1a87", "title": "My answer to, “Is it practical to write functional code inside a highly OOP code base?”", "url": "https://dogweather.dev/2024/03/01/my-answer-to-is-it-practical-to-write-functional-code-inside-a-highly-oop-code-base/", "published_at": "2024-03-01T22:20:29+00:00" }, { "id": "01a0c508-a862-7200-8bcc-a11f1bebc69a", "title": "My answer to: “How can you effectively review code with complex database queries?”", "url": "https://dogweather.dev/2024/02/17/my-answer-to-how-can-you-effectively-review-code-with-complex-database-queries/", "published_at": "2024-02-18T04:54:37+00:00" }, { "id": "01a0c508-a862-7200-8bcc-a11f1c9b865d", "title": "A data-driven app without the database", "url": "https://dogweather.dev/2024/02/04/a-data-driven-app-without-the-database/", "published_at": "2024-02-05T01:32:03+00:00" }, { "id": "01a0c508-a862-7200-8bcc-a11f1cdb8346", "title": "I just realized that Python classes give you a filter predicate for free.", "url": "https://dogweather.dev/2024/01/21/i-just-realized-that-python-classes-give-you-a-filter-predicate-for-free/", "published_at": "2024-01-22T04:57:18+00:00" }, { "id": "01a0c518-fda7-7022-9d56-3ada1d6a80b3", "title": "“How to Do Code Documentation?”", "url": "https://dogweather.dev/2024/01/17/how-to-do-code-documentation/", "published_at": "2024-01-17T20:36:21+00:00" }, { "id": "01a0c518-fda7-7022-9d56-3ada1db9c62a", "title": "Top world languages used by techies", "url": "https://dogweather.dev/2024/01/08/top-world-languages-used-by-techies/", "published_at": "2024-01-08T21:01:24+00:00" }, { "id": "01a0c518-fda7-7022-9d56-3ada1e00a77b", "title": "“Are you worried that things like chat GPT will reduce the number of jobs for programmers?”", "url": "https://dogweather.dev/2024/01/01/are-you-worried-that-things-like-chat-gpt-will-reduce-the-number-of-jobs-for-programmers/", "published_at": "2024-01-01T22:14:47+00:00" }, { "id": "01a0c518-fda7-7022-9d56-3ada1e1c1aba", "title": "My Best Elixir in Python", "url": "https://dogweather.dev/2023/12/31/my-best-elixir-in-python/", "published_at": "2023-12-31T21:17:43+00:00" }, { "id": "01a0c518-fda7-7022-9d56-3ada1e34773a", "title": "Python + Pyright now do true match exhaustiveness checking", "url": "https://dogweather.dev/2022/10/03/i-discovered-that-python-now-can-do-true-match-exhaustiveness-checking/", "published_at": "2022-10-04T00:58:40+00:00" }, { "id": "01a0c523-e764-72e4-9e3b-367176961fbc", "title": "Reasons to use memoization", "url": "https://dogweather.dev/2022/10/02/reasons-to-use-memoization/", "published_at": "2022-10-02T06:49:33+00:00" }, { "id": "01a0c523-e764-72e4-9e3b-36717710feba", "title": "Six String Operations in Five Languages", "url": "https://dogweather.dev/2022/08/31/five-string-operations-in-five-languages/", "published_at": "2022-08-31T21:00:45+00:00" }, { "id": "01a0c523-e764-72e4-9e3b-3671780ac6cb", "title": "Good SEO isn’t hard", "url": "https://dogweather.dev/2022/08/29/good-seo-isnt-hard/", "published_at": "2022-08-29T21:45:16+00:00" }, { "id": "01a0c523-e764-72e4-9e3b-36717867fb37", "title": "The Iterate-and-Mutate Programming Anti-Pattern", "url": "https://dogweather.dev/2020/04/23/the-iterate-and-mutate-programming-anti-pattern/", "published_at": "2020-04-24T03:20:11+00:00" }, { "id": "01a0c523-e764-72e4-9e3b-367178d4fbf7", "title": "Elixir can be a lot easier to learn than Python", "url": "https://dogweather.dev/2020/01/07/elixir-can-be-a-lot-easier-to-learn-than-python/", "published_at": "2020-01-08T01:08:36+00:00" }, { "id": "01a0c52f-6950-732f-8394-edaa0e46ec33", "title": "Ruby RSpec or Minitest on new projects?", "url": "https://dogweather.dev/2020/01/03/ruby-rspec-or-minitest-on-new-projects/", "published_at": "2020-01-03T15:07:51+00:00" }, { "id": "01a0c52f-6950-732f-8394-edaa0e9c1494", "title": "The “MacOS Feel” that Developers Love", "url": "https://dogweather.dev/2019/11/15/the-macos-feel-that-developers-love/", "published_at": "2019-11-16T02:00:21+00:00" }, { "id": "01a0c52f-6950-732f-8394-edaa0f2ef9a4", "title": "How to produce a JSON tree with nested data from Scrapy", "url": "https://dogweather.dev/2019/03/16/how-to-produce-a-json-tree-with-nested-data-from-scrapy/", "published_at": "2019-03-16T22:50:25+00:00" }, { "id": "01a0c52f-6950-732f-8394-edaa0f5630bc", "title": "Making mistakes: Django startproject and Rails new", "url": "https://dogweather.dev/2019/03/05/making-mistakes-django-startproject-and-rails-new/", "published_at": "2019-03-06T02:51:45+00:00" }, { "id": "01a0c52f-6950-732f-8394-edaa0ff9a5bb", "title": "The perfect IDE in pictures: Part 1, *it* works for *you*", "url": "https://dogweather.dev/2018/06/11/the-perfect-ide-in-pictures-part-1-it-works-for-you/", "published_at": "2018-06-12T00:50:44+00:00" }, { "id": "01a0c539-b3c5-721e-b294-0e0258afc7b9", "title": "Testing the multi-subdomain Rails app", "url": "https://dogweather.dev/2018/06/08/testing-the-multi-subdomain-rails-app/", "published_at": "2018-06-08T08:55:41+00:00" }, { "id": "01a0c539-b3c5-721e-b294-0e02597449ac", "title": "What is a Design Pattern? (Answered.)", "url": "https://dogweather.dev/2018/05/10/what-is-a-design-pattern/", "published_at": "2018-05-10T10:14:10+00:00" }, { "id": "01a0c539-b3c5-721e-b294-0e0259ee01ab", "title": "Twitter scam: Ethereum / BasicAttentionToken “giveaway”", "url": "https://dogweather.dev/2018/05/03/twitter-scam-alert-ethereum-basicattentiontoken-giveaway/", "published_at": "2018-05-03T19:48:31+00:00" }, { "id": "01a0c539-b3c5-721e-b294-0e025ad59231", "title": "I switched from iPhone to the Pixel 2: One-week report", "url": "https://dogweather.dev/2018/04/30/i-switched-from-iphone-to-android-1-week-report/", "published_at": "2018-05-01T04:33:30+00:00" }, { "id": "01a0c539-b3c5-721e-b294-0e025bb955e7", "title": "A Docker dev config for Ruby on Rails", "url": "https://dogweather.dev/2018/02/02/setting-up-a-docker-development-environment-for-ruby-on-rails/", "published_at": "2018-02-03T04:55:14+00:00" }, { "id": "01a0c543-0164-723e-ad09-e67524493150", "title": "Setting up a Docker dev environment for Elixir+Phoenix", "url": "https://dogweather.dev/2018/02/02/a-docker-based-development-environment-for-elixirphoenix/", "published_at": "2018-02-02T09:46:57+00:00" }, { "id": "01a0c543-0164-723e-ad09-e675248bd9e4", "title": "What my top students had in common: they asked questions.", "url": "https://dogweather.dev/2018/01/27/what-all-my-top-students-had-in-common-they-asked-questions/", "published_at": "2018-01-28T03:39:09+00:00" }, { "id": "01a0c543-0164-723e-ad09-e675256b601e", "title": "The Economics of Programming: Externalized vs. Internalized Costs", "url": "https://dogweather.dev/2017/02/08/the-economics-of-programming-externalized-vs-internalized-costs/", "published_at": "2017-02-08T19:30:19+00:00" }, { "id": "01a0c543-0164-723e-ad09-e6752575e7bd", "title": "Python vs. Haskell round 2: Making Me a Better Programmer", "url": "https://dogweather.dev/2017/02/04/python-vs-haskell-round-2-making-me-a-better-programmer/", "published_at": "2017-02-04T08:23:41+00:00" }, { "id": "01a0c543-0164-723e-ad09-e67525f5e694", "title": "Python vs. Haskell round 1: Test Output", "url": "https://dogweather.dev/2017/02/03/python-vs-haskell-round-1-test-output/", "published_at": "2017-02-04T06:39:02+00:00" }, { "id": "01a0c54b-d363-731c-92a4-29b433e3d536", "title": "Engineering with Empathy: how do we decide when to fix?", "url": "https://dogweather.dev/2016/11/03/engineering-with-empathy/", "published_at": "2016-11-04T03:09:31+00:00" }, { "id": "01a0c54b-d363-731c-92a4-29b4348f7023", "title": "Why I don’t use let/let! in my RSpec", "url": "https://dogweather.dev/2016/10/20/why-i-dont-use-letlet-in-my-rspec/", "published_at": "2016-10-20T22:50:23+00:00" }, { "id": "01a0c54b-d363-731c-92a4-29b43585b558", "title": "The Benefits (not features!) of Programming with Haskell", "url": "https://dogweather.dev/2016/08/25/the-benefits-of-programming-with-haskell/", "published_at": "2016-08-25T18:41:01+00:00" }, { "id": "01a0c54b-d363-731c-92a4-29b435d013a4", "title": "Wifi LAN Performance Test comparing 3 routers and 6 computers", "url": "https://dogweather.dev/2016/08/16/wifi-lan-performance-test-comparing-3-routers-and-6-devices/", "published_at": "2016-08-16T20:04:53+00:00" }, { "id": "01a0c54b-d363-731c-92a4-29b436482d31", "title": "DigBang: Safely unsafe Ruby hash traversal", "url": "https://dogweather.dev/2016/04/13/digbang-safely-unsafe-ruby-hash-traversal/", "published_at": "2016-04-14T04:58:06+00:00" }, { "id": "01a0c554-19e2-71ce-be6f-7f6dc32bd131", "title": "Comparing Kanban apps with GitHub integration", "url": "https://dogweather.dev/2016/01/08/comparing-kanban-apps-with-github-integration/", "published_at": "2016-01-08T08:27:44+00:00" }, { "id": "01a0c554-19e2-71ce-be6f-7f6dc422bc28", "title": "Web Framework Comparison Matrix", "url": "https://dogweather.dev/2015/11/04/web-framework-comparison-matrix/", "published_at": "2015-11-05T00:00:41+00:00" }, { "id": "01a0c554-19e2-71ce-be6f-7f6dc4e87502", "title": "Goodbye “X for Y”: the cryptic Ruby error is becoming friendlier", "url": "https://dogweather.dev/2015/10/26/goodbye-x-for-y-the-cryptic-ruby-error-is-becoming-friendlier/", "published_at": "2015-10-27T03:47:14+00:00" }, { "id": "01a0c554-19e2-71ce-be6f-7f6dc589b693", "title": "Infographic: OS X El Capitan License in Plain English", "url": "https://dogweather.dev/2015/10/23/infographic-os-x-el-capitan-license-agreement/", "published_at": "2015-10-23T12:16:48+00:00" }, { "id": "01a0c554-19e2-71ce-be6f-7f6dc5f36eda", "title": "OS X El Capitan License: in Plain English", "url": "https://dogweather.dev/2015/10/17/os-x-el-capitan-license-in-plain-english/", "published_at": "2015-10-18T05:25:32+00:00" }, { "id": "01a0c55c-7563-736c-9140-488738b610d8", "title": "git commit –amend: Have Your Cake and Eat it Too", "url": "https://dogweather.dev/2015/05/25/git-commit-amend-have-your-cake-and-eat-it-too/", "published_at": "2015-05-26T00:50:40+00:00" }, { "id": "01a0c55c-7563-736c-9140-4887393739a0", "title": "A Benefit of Rails: Surrogate Keys", "url": "https://dogweather.dev/2015/05/19/a-gift-from-rails-surrogate-keys/", "published_at": "2015-05-19T21:23:17+00:00" }, { "id": "01a0c55c-7563-736c-9140-48873a28313b", "title": "Self-validating Ruby objects with ActiveModel Validations", "url": "https://dogweather.dev/2015/05/17/self-validating-plain-old-ruby-objects-with-activemodel-validations/", "published_at": "2015-05-18T01:31:50+00:00" }, { "id": "01a0c55c-7563-736c-9140-48873af09ccc", "title": "The problem with packaging in Python", "url": "https://dogweather.dev/2015/03/09/the-problem-with-packaging-in-python/", "published_at": "2015-03-09T16:31:58+00:00" }, { "id": "01a0c55c-7563-736c-9140-48873b4c78ec", "title": "Python project organization, circa early 2015", "url": "https://dogweather.dev/2015/01/30/python-project-file-organization-circa-early-2015/", "published_at": "2015-01-30T21:47:33+00:00" }, { "id": "01a0c564-c55e-71fa-905a-538ab5b9b4f9", "title": "Degrees of freedom: Four valid ways to write degrees Fahrenheit in HTML", "url": "https://dogweather.dev/2015/01/19/degrees-of-freedom-four-valid-ways-to-write-degrees-fahrenheit-in-html/", "published_at": "2015-01-20T00:22:02+00:00" }, { "id": "01a0c564-c55e-71fa-905a-538ab5bb94b1", "title": "Test Driven Devops", "url": "https://dogweather.dev/2014/01/16/new-open-source-library-for-test-driven-devops/", "published_at": "2014-01-16T10:23:08+00:00" }, { "id": "01a0c564-c55e-71fa-905a-538ab6475986", "title": "Linode vs. DigitalOcean: back to Linode for me", "url": "https://dogweather.dev/2013/12/26/linode-vs-digitalocean-linode-wins-for-me/", "published_at": "2013-12-27T03:46:12+00:00" }, { "id": "01a0c564-c55e-71fa-905a-538ab686a4af", "title": "What’s not a violation of the Law of Demeter", "url": "https://dogweather.dev/2013/12/23/whats-not-a-violation-of-the-law-of-demeter/", "published_at": "2013-12-23T19:28:55+00:00" }, { "id": "01a0c564-c55e-71fa-905a-538ab724f24a", "title": "mctop – a top-like app for monitoring memcached", "url": "https://dogweather.dev/2013/12/14/mctop-a-top-like-app-for-monitoring-memcached/", "published_at": "2013-12-14T08:53:48+00:00" }, { "id": "01a0c56b-e657-7331-86e0-5557bb8e447f", "title": "“There are two kinds of websites: the quick and the dead.”", "url": "https://dogweather.dev/2013/12/10/the-quick-and-the-dead/", "published_at": "2013-12-10T19:31:19+00:00" }, { "id": "01a0c56b-e657-7331-86e0-5557bbd1c78f", "title": "Yes, Rails does support case-insensitive queries", "url": "https://dogweather.dev/2013/12/05/yes-rails-supports-case-insensitive-database-queries/", "published_at": "2013-12-05T23:55:35+00:00" }, { "id": "01a0c56b-e657-7331-86e0-5557bc5edced", "title": "It is supremely important that we ensure our data is safe. . .", "url": "https://dogweather.dev/2013/11/20/it-is-sup/", "published_at": "2013-11-21T06:04:52+00:00" }, { "id": "01a0c56b-e657-7331-86e0-5557bcd07fb3", "title": "Efficiency with Sublime Text and Ruby", "url": "https://dogweather.dev/2013/11/20/httpsthunderboltlabs-comblog20131119efficiency-with-sublime-text-and-ruby/", "published_at": "2013-11-20T21:05:20+00:00" }, { "id": "01a0c56b-e657-7331-86e0-5557bdbddc28", "title": "Meteor Won’t Kill Rails Anytime Soon", "url": "https://dogweather.dev/2013/11/09/rails-will-ruby-kill-meteor-on-why/", "published_at": "2013-11-09T22:05:31+00:00" }, { "id": "01a0c575-d440-7258-a879-a1ac104a0fdf", "title": "Confessions of an Architecture Astronaut — Taking a Lesson from Napster", "url": "https://dogweather.dev/2013/11/05/12-years-later-joels-still-relevant-confessions-of-an-architecture-astronaut/", "published_at": "2013-11-05T18:21:29+00:00" }, { "id": "01a0c575-d440-7258-a879-a1ac11080df0", "title": "AngularJS vs. Ember.js", "url": "https://dogweather.dev/2013/06/21/angularjs-vs-emberjs/", "published_at": "2013-06-21T08:36:56+00:00" }, { "id": "01a0c575-d440-7258-a879-a1ac111eba43", "title": "Simple Tabs in AngularJS with AngularStrap", "url": "https://dogweather.dev/2013/06/12/simple-tabs-in-angularjs-with-angularstrap/", "published_at": "2013-06-12T18:43:10+00:00" }, { "id": "01a0c575-d440-7258-a879-a1ac1184640f", "title": "Chart: The best value for processor-intensive tasks on Amazon Web Services", "url": "https://dogweather.dev/2012/09/11/chart-the-best-value-for-amazon-cloud-computing/", "published_at": "2012-09-11T19:10:40+00:00" }, { "id": "01a0c575-d440-7258-a879-a1ac12395d94", "title": "Getting Baskerville on a website – price and licensing options", "url": "https://dogweather.dev/2012/08/17/survey-web-fonts-circa-august-2012-how-to-try-out-baskerville-on-a-website/", "published_at": "2012-08-17T23:15:03+00:00" }, { "id": "01a0c583-9a80-7031-8a2b-059aae34e951", "title": "My Problem with Git: No Abstraction", "url": "https://dogweather.dev/2012/04/25/my-problem-with-git-no-abstraction/", "published_at": "2012-04-25T22:00:10+00:00" }, { "id": "01a0c583-9a80-7031-8a2b-059aaf2a158c", "title": "The Hidden Dangers of Beautiful Themes", "url": "https://dogweather.dev/2012/04/22/the-hidden-dangers-of-beautiful-themes/", "published_at": "2012-04-23T05:22:44+00:00" }, { "id": "01a0c583-9a80-7031-8a2b-059ab01ac71e", "title": "Amazon AWS in pictures: ec2 billing options", "url": "https://dogweather.dev/2011/12/02/amazon-aws-in-pictures/", "published_at": "2011-12-03T02:53:27+00:00" }, { "id": "01a0c583-9a80-7031-8a2b-059ab0e5b9c1", "title": "Identifying an Anonymous Blogger", "url": "https://dogweather.dev/2011/11/26/identifying-an-anonymous-blogger/", "published_at": "2011-11-27T04:16:18+00:00" }, { "id": "01a0c583-9a80-7031-8a2b-059ab120e7f2", "title": "Speeding up my Mac: Web Browsers and the RAM They Use", "url": "https://dogweather.dev/2011/11/14/speeding-up-my-mac-web-browser-memory-test/", "published_at": "2011-11-15T03:58:16+00:00" }, { "id": "01a0c591-a154-718e-b24c-27a3ec95def0", "title": "Dorkboard and Arduino", "url": "https://dogweather.dev/2011/02/23/dorkboard-and-arduino/", "published_at": "2011-02-23T14:17:54+00:00" }, { "id": "01a0c591-a154-718e-b24c-27a3ed8a2569", "title": "App Review: Smurfs' Village — New Innovations in Money Extraction", "url": "https://dogweather.dev/2011/02/11/app-review-smurfs-village-new-innovations-in-money-extraction/", "published_at": "2011-02-11T12:23:53+00:00" }, { "id": "01a0c591-a154-718e-b24c-27a3edb930ad", "title": "That one little confusing thing about the Git version control system", "url": "https://dogweather.dev/2011/02/02/that-one-little-confusing-thing-about-the-git-version-control-system/", "published_at": "2011-02-02T20:35:13+00:00" }, { "id": "01a0c591-a154-718e-b24c-27a3edff2df9", "title": "Potential Trouble for Open Source Licenses: MDY v. Blizzard", "url": "https://dogweather.dev/2010/12/15/mdy-v-blizzard-potential-trouble-for-open-source-licenses/", "published_at": "2010-12-15T14:19:28+00:00" }, { "id": "01a0c591-a154-718e-b24c-27a3ee22ef0a", "title": "CivicApps Idea: City Should be Arbiter of Data Sources, not Simply a Source Itself.", "url": "https://dogweather.dev/2010/06/26/winner-of-civicapps-best-idea-award/", "published_at": "2010-06-26T11:59:04+00:00" } ] posts Claim your blog
Back to dogweather.dev
Blog · corpus.blog/blogs/dogweather.dev/posts

dogweather.dev

dogweather.dev

2025

2024

2023

2022

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011

2010