41554 blogs · [ { "id": "01a0d865-ef2d-7091-a7dc-521f97c8f471", "title": "Nix, Flakes, and Decentralized Inputs", "url": "https://freerangebits.com/posts/2026/09/decentralized-flake-inputs/", "published_at": "2026-09-22T14:25:20+00:00" }, { "id": "01a0821c-35fe-71a1-be85-762df988f88a", "title": "Automatic Theme Switching in Emacs", "url": "https://freerangebits.com/posts/2025/02/emacs-light-dark/", "published_at": "2025-02-24T11:23:47+00:00" }, { "id": "01a0821c-35fe-71a1-be85-762dfa0f6635", "title": "Patching Instead of Pinning", "url": "https://freerangebits.com/posts/2024/01/patch-instead-of-pin/", "published_at": "2024-01-06T18:44:19+00:00" }, { "id": "01a0821c-35fe-71a1-be85-762dfa13e2f6", "title": "Archiving in Org Mode", "url": "https://freerangebits.com/posts/2024/01/archiving-in-org-mode/", "published_at": "2024-01-04T19:45:09+00:00" }, { "id": "01a0821c-35fe-71a1-be85-762dfa1689f9", "title": "Pinning GnuPG with nixpkgs", "url": "https://freerangebits.com/posts/2023/12/gnupg-broke-emacs/", "published_at": "2023-12-31T17:49:30+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825d8cde9f4", "title": "Why the world needs Haskell", "url": "https://freerangebits.com/posts/2013/07/why-haskell/", "published_at": "2013-07-09T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825d8d926db", "title": "Parsing with Haskell and Attoparsec", "url": "https://freerangebits.com/posts/2013/06/parsing-with-haskell/", "published_at": "2013-06-26T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825d935f085", "title": "Learn to read and write Scheme expressions", "url": "https://freerangebits.com/posts/2013/04/expressions/", "published_at": "2013-04-29T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825d9f4ef95", "title": "Picking your first programming language", "url": "https://freerangebits.com/posts/2013/03/first-language/", "published_at": "2013-03-24T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825daa1046b", "title": "JavaScript as a virtual machine?", "url": "https://freerangebits.com/posts/2013/01/javascript-as-a-vm/", "published_at": "2013-01-03T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825db6db078", "title": "Unix cheat sheets", "url": "https://freerangebits.com/posts/2012/09/unix-cheat-sheet/", "published_at": "2012-09-17T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825db7563a5", "title": "Being explicit with your code", "url": "https://freerangebits.com/posts/2012/04/explicit-code/", "published_at": "2012-04-17T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825dc3b7da6", "title": "RubyGem Version Specifiers", "url": "https://freerangebits.com/posts/2012/04/gem-versions/", "published_at": "2012-04-03T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825dc4a8642", "title": "Ruby/Rails Compatibility Matrix", "url": "https://freerangebits.com/posts/2012/03/ror-compatibility/", "published_at": "2012-03-14T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825dc9ac6ac", "title": "Ruby's catch/throw, goto's little brother", "url": "https://freerangebits.com/posts/2012/03/ruby-goto/", "published_at": "2012-03-09T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825dcf84457", "title": "Fun stuff for Friday Feb. 24", "url": "https://freerangebits.com/posts/2012/02/fun-friday-24/", "published_at": "2012-02-24T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825ddeb853a", "title": "Fun stuff for Friday Feb. 10", "url": "https://freerangebits.com/posts/2012/02/fun-friday-10/", "published_at": "2012-02-10T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825dea18b76", "title": "Using Haskell to improve your C++", "url": "https://freerangebits.com/posts/2012/02/haskell-cxx/", "published_at": "2012-02-06T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825decbc5d2", "title": "Rails 4.0 will drop support for Ruby 1.8.7", "url": "https://freerangebits.com/posts/2012/02/rails-drops-ruby18/", "published_at": "2012-02-02T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825df8b37c1", "title": "Why estimating is hard", "url": "https://freerangebits.com/posts/2012/01/estimating/", "published_at": "2012-01-31T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e06c62b1", "title": "Fixing programming by besting current languages", "url": "https://freerangebits.com/posts/2012/01/besting-declarative-programming/", "published_at": "2012-01-26T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e134e13c", "title": "I took some programming in school != programmer", "url": "https://freerangebits.com/posts/2012/01/amateur-programming/", "published_at": "2012-01-24T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e14d2b76", "title": "2012 seems to be the year for learning to code", "url": "https://freerangebits.com/posts/2012/01/learn-to-code/", "published_at": "2012-01-02T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e1dd116a", "title": "Hashing algorithm vulnerable to denial of service", "url": "https://freerangebits.com/posts/2011/12/hash-table-dos/", "published_at": "2011-12-29T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e2683913", "title": "Java is dead, long live Java", "url": "https://freerangebits.com/posts/2011/12/openjdk/", "published_at": "2011-12-21T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e2e7b8b6", "title": "Fun stuff for Friday Dec. 16", "url": "https://freerangebits.com/posts/2011/12/fun-friday-16/", "published_at": "2011-12-16T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e3d3b868", "title": "PostgreSQL as a key-value store", "url": "https://freerangebits.com/posts/2011/12/postgresql-kv-store/", "published_at": "2011-12-13T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e477fc90", "title": "Improving your skills by reading commits", "url": "https://freerangebits.com/posts/2011/12/commit-learning/", "published_at": "2011-12-07T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e52bcfa6", "title": "VendorKit: bundler for Objective-C", "url": "https://freerangebits.com/posts/2011/12/vendorkit/", "published_at": "2011-12-05T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e5a99f03", "title": "Fun stuff for Friday Dec. 2", "url": "https://freerangebits.com/posts/2011/12/fun-friday-02/", "published_at": "2011-12-02T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e6488560", "title": "HAML users repent before it's too late", "url": "https://freerangebits.com/posts/2011/12/haml-is-unforgivable/", "published_at": "2011-12-01T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e6970f1f", "title": "Seven databases in seven weeks", "url": "https://freerangebits.com/posts/2011/12/seven-databases/", "published_at": "2011-12-01T07:00:00+00:00" }, { "id": "01a0821c-35fe-71a1-be85-762dfa24e099", "title": "Don't be affraid to learn vi or emacs", "url": "https://freerangebits.com/posts/2011/11/learn-vi/", "published_at": "2011-11-23T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e6bfa698", "title": "Git workflows and configuration", "url": "https://freerangebits.com/posts/2011/11/git-workflow/", "published_at": "2011-11-22T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e75d8f68", "title": "Simple code makes good software", "url": "https://freerangebits.com/posts/2011/11/simple-code/", "published_at": "2011-11-21T07:00:00+00:00" }, { "id": "01a0821c-35fe-71a1-be85-762dfab20c74", "title": "Fun stuff for Friday Nov. 18", "url": "https://freerangebits.com/posts/2011/11/fun-friday-18/", "published_at": "2011-11-18T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e7df2689", "title": "Concurrency in Ruby 1.9", "url": "https://freerangebits.com/posts/2011/11/ruby-concurrency/", "published_at": "2011-11-17T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e841f6fd", "title": "The Objective-C object model", "url": "https://freerangebits.com/posts/2011/11/objc-object-model/", "published_at": "2011-11-16T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e8500f43", "title": "C++11 move semantics and rvalue references", "url": "https://freerangebits.com/posts/2011/11/cxx-move/", "published_at": "2011-11-15T07:00:00+00:00" }, { "id": "01a0821c-35fe-71a1-be85-762dfb4010e1", "title": "Remote pair programming in a terminal", "url": "https://freerangebits.com/posts/2011/11/remote-pairing/", "published_at": "2011-11-14T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e8c04173", "title": "Fun stuff for Friday Nov. 11", "url": "https://freerangebits.com/posts/2011/11/fun-friday-11/", "published_at": "2011-11-11T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e9147147", "title": "Those Objective-C \"@\" Directives", "url": "https://freerangebits.com/posts/2011/11/objc-at/", "published_at": "2011-11-10T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e96049cd", "title": "The basics of good programming style", "url": "https://freerangebits.com/posts/2011/11/good-code/", "published_at": "2011-11-09T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825e979de47", "title": "A closer look at Redis", "url": "https://freerangebits.com/posts/2011/11/redis/", "published_at": "2011-11-08T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825ea6c2158", "title": "Managing debt buildup while developing", "url": "https://freerangebits.com/posts/2011/11/debt/", "published_at": "2011-11-07T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825eaf9229b", "title": "Fun stuff for Friday Nov. 4", "url": "https://freerangebits.com/posts/2011/11/fun-friday-04/", "published_at": "2011-11-04T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825eb1570d2", "title": "Self-guided Ruby on Rails 3.1 Tutorial", "url": "https://freerangebits.com/posts/2011/11/ror-example/", "published_at": "2011-11-04T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825eb3dd1eb", "title": "The longevity of OS APIs vs. web APIs", "url": "https://freerangebits.com/posts/2011/11/api-longevity/", "published_at": "2011-11-04T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825eb91af20", "title": "Global Day of Coderetreat", "url": "https://freerangebits.com/posts/2011/11/coderetreat/", "published_at": "2011-11-03T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825eba19c57", "title": "Learning the fundamentals of Scala", "url": "https://freerangebits.com/posts/2011/11/learn-scala/", "published_at": "2011-11-02T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825ec9a61e7", "title": "Giving JavaScript another chance", "url": "https://freerangebits.com/posts/2011/11/javascript/", "published_at": "2011-11-01T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825eca87e71", "title": "More on code coverage metrics", "url": "https://freerangebits.com/posts/2011/10/code-coverage/", "published_at": "2011-10-31T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825ed6b83b6", "title": "Fun stuff for Friday", "url": "https://freerangebits.com/posts/2011/10/fun-friday-28/", "published_at": "2011-10-28T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825ee3f87f8", "title": "Garbage collection/reference counting in C++11", "url": "https://freerangebits.com/posts/2011/10/cxx-gc/", "published_at": "2011-10-27T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825eee4aceb", "title": "Don't do your own date/time calculations", "url": "https://freerangebits.com/posts/2011/10/date-time/", "published_at": "2011-10-26T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825ef83e18d", "title": "Keep learning and make mistakes", "url": "https://freerangebits.com/posts/2011/10/keep-learning/", "published_at": "2011-10-24T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825efe6d245", "title": "Fun stuff for Friday", "url": "https://freerangebits.com/posts/2011/10/fun-friday-21/", "published_at": "2011-10-21T07:00:00+00:00" }, { "id": "01a0821c-35fe-71a1-be85-762dfbd21578", "title": "Write HTML/XML faster with Zen Coding", "url": "https://freerangebits.com/posts/2011/10/zen-coding/", "published_at": "2011-10-20T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f08c2ea1", "title": "Using regular expressions in C++11", "url": "https://freerangebits.com/posts/2011/10/cxx-regex/", "published_at": "2011-10-20T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f1f1d0f4", "title": "Still looking for a language to learn this year?", "url": "https://freerangebits.com/posts/2011/10/language-lists/", "published_at": "2011-10-19T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f24a6379", "title": "Sharing your private Git repositories", "url": "https://freerangebits.com/posts/2011/10/git-server/", "published_at": "2011-10-18T07:00:00+00:00" }, { "id": "01a0821c-35fe-71a1-be85-762dfc55524f", "title": "Challenge your text editor fu", "url": "https://freerangebits.com/posts/2011/10/editor-golf/", "published_at": "2011-10-17T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f31d2252", "title": "Reactions to Dart, 17k line Hello World", "url": "https://freerangebits.com/posts/2011/10/dart-reactions/", "published_at": "2011-10-14T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f3e8e30e", "title": "Programming tips from a photographer", "url": "https://freerangebits.com/posts/2011/10/photography-tips/", "published_at": "2011-10-13T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f4ca3086", "title": "Subversion 1.7 released, goodbye .svn pollution", "url": "https://freerangebits.com/posts/2011/10/subversion-1-7/", "published_at": "2011-10-12T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f59ba6fd", "title": "C++11 is officially released, goodbye C++0x", "url": "https://freerangebits.com/posts/2011/10/cxx11/", "published_at": "2011-10-11T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f5c2a753", "title": "Google's language for people who hate JavaScript", "url": "https://freerangebits.com/posts/2011/10/google-dart/", "published_at": "2011-10-11T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f61f4873", "title": "Unix toolbox: sed and awk", "url": "https://freerangebits.com/posts/2011/10/sed-awk/", "published_at": "2011-10-10T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f6b78e4b", "title": "NewtonScript and other prototype-based languages", "url": "https://freerangebits.com/posts/2011/10/newtonscript/", "published_at": "2011-10-07T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f7a1c488", "title": "Playing with Google Go", "url": "https://freerangebits.com/posts/2011/10/google-go/", "published_at": "2011-10-06T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f89e4f85", "title": "Ruby Core Team: Dude, Ruby 1.8 is dead, really", "url": "https://freerangebits.com/posts/2011/10/ruby-18/", "published_at": "2011-10-06T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f8b4451c", "title": "Don't write CPU intensive code in JS, duh", "url": "https://freerangebits.com/posts/2011/10/nodejs-cpu/", "published_at": "2011-10-04T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f8bde092", "title": "The diminishing returns of testing", "url": "https://freerangebits.com/posts/2011/10/testing-value/", "published_at": "2011-10-03T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825f9257461", "title": "The path to being a better developer", "url": "https://freerangebits.com/posts/2011/10/better-dev/", "published_at": "2011-10-03T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825fa165214", "title": "Replacing master with another Git branch", "url": "https://freerangebits.com/posts/2011/09/git-replace-master/", "published_at": "2011-09-30T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825faa16d07", "title": "Google releases JS Test", "url": "https://freerangebits.com/posts/2011/09/google-jstest/", "published_at": "2011-09-29T07:00:00+00:00" }, { "id": "01a08779-f6fc-7276-9d1a-e825fafdf010", "title": "Understanding Ruby Singleton Classes", "url": "https://freerangebits.com/posts/2008/09/ruby-singleton/", "published_at": "2008-09-15T07:00:00+00:00" }, { "id": "01a0821c-35fe-71a1-be85-762dfcee5ecd", "title": "Behind the code: project planning", "url": "https://freerangebits.com/posts/2008/07/project-planning/", "published_at": "2008-07-24T07:00:00+00:00" } ] posts Claim your blog
Back to Peter J. Jones
Blog · corpus.blog/blogs/freerangebits.com/posts

Peter J. Jones

freerangebits.com

2026

2025

2024

2023

2013

2012

2011

2008