57,803 blogs · [ { "id": "01a08751-e81f-728d-96d4-a1151e46f93d", "title": "Testing controller concerns with Minitest", "url": "https://blog.pablobm.com/2026/07/18/testing-controller-concerns-with-minitest/", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1151e7488c5", "title": "LSP servers in Neovim, with Mason", "url": "https://blog.pablobm.com/2026/01/17/neovim-lsp-stack/", "published_at": "2026-01-17T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1151ed7394c", "title": "46", "url": "https://blog.pablobm.com/2026/01/07/46/", "published_at": "2026-01-07T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1151f08ec3e", "title": "Install Calibre in your home directory on Linux", "url": "https://blog.pablobm.com/2025/10/20/calibre-installed-in-home-dir/", "published_at": "2025-10-20T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1151ff4a138", "title": "Batch and delay DB writes to improve app performance", "url": "https://blog.pablobm.com/2025/05/28/batch-and-delay-db-writes-improve-performance/", "published_at": "2025-05-28T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a115205a1c04", "title": "45", "url": "https://blog.pablobm.com/2025/01/07/45/", "published_at": "2025-01-07T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a115213999da", "title": "Configuring a Focusrite Scarlett on Debian", "url": "https://blog.pablobm.com/2024/08/19/focusrite-scarlett-gen1-debian/", "published_at": "2024-08-19T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a115214fc498", "title": "How to talk about algorithm efficiency", "url": "https://blog.pablobm.com/2024/07/12/how-to-talk-about-code-efficiency/", "published_at": "2024-07-12T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a11521a4760f", "title": "Ruby: `SyntaxError: void value expression`", "url": "https://blog.pablobm.com/2024/02/16/ruby-void-value-expression/", "published_at": "2024-02-16T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a11521e581bb", "title": "44", "url": "https://blog.pablobm.com/2024/01/07/44/", "published_at": "2024-01-07T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1152246d084", "title": "“Unable to access CD Drive” on DOSBox", "url": "https://blog.pablobm.com/2023/04/18/unable-to-access-cd-drive-on-dosbox/", "published_at": "2023-04-18T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1152319993c", "title": "43", "url": "https://blog.pablobm.com/2023/01/07/43/", "published_at": "2023-01-07T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1152400583b", "title": "Disable HSTS on Dokku", "url": "https://blog.pablobm.com/2022/11/12/disable-hsts-on-dokku/", "published_at": "2022-11-12T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1152429b4ef", "title": "42", "url": "https://blog.pablobm.com/2022/01/07/42/", "published_at": "2022-01-07T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a11524dd6760", "title": "Configuring VCR to work with Selenium WebDriver", "url": "https://blog.pablobm.com/2021/10/14/vcr-webdriver-errors/", "published_at": "2021-10-14T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a11525b724fb", "title": "41", "url": "https://blog.pablobm.com/2021/01/07/41/", "published_at": "2021-01-07T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1152640acad", "title": "How to move commits to the correct branch", "url": "https://blog.pablobm.com/2020/07/23/how-to-move-commits-to-correct-branch/", "published_at": "2020-07-23T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1152692bc5e", "title": "Docker `error while creating mount source path` on macOS", "url": "https://blog.pablobm.com/2020/05/30/docker-mkdir-error/", "published_at": "2020-05-30T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a11527783359", "title": "Notes on implementing a Referrer Policy", "url": "https://blog.pablobm.com/2020/04/14/referrer-policy/", "published_at": "2020-04-14T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a11527aac0f8", "title": "Testing non-existence", "url": "https://blog.pablobm.com/2020/01/09/testing-non-existence/", "published_at": "2020-01-09T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a11527bc50fa", "title": "40", "url": "https://blog.pablobm.com/2020/01/07/40/", "published_at": "2020-01-07T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a115287aea25", "title": "To mock, or not to mock", "url": "https://blog.pablobm.com/2019/10/31/to-mock-or-not-to-mock/", "published_at": "2019-10-31T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a11528b391d4", "title": "Map/Reduce with CouchDB: a visual primer", "url": "https://blog.pablobm.com/2019/07/18/map-reduce-with-couchdb-a-visual-primer/", "published_at": "2019-07-18T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a115293fcd4b", "title": "The Store without Ember Data", "url": "https://blog.pablobm.com/2019/01/15/store-without-ember-data/", "published_at": "2019-01-15T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a11529f24f9d", "title": "39", "url": "https://blog.pablobm.com/2019/01/07/39/", "published_at": "2019-01-07T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1152a550645", "title": "Pluralization (and singularization)", "url": "https://blog.pablobm.com/2018/08/07/pluralization-and-singularization/", "published_at": "2018-08-07T00:00:00+00:00" }, { "id": "01a08751-e81f-728d-96d4-a1152a83a8c2", "title": "Is a number within a range?", "url": "https://blog.pablobm.com/2018/06/17/number-within-a-range/", "published_at": "2018-06-17T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564c9c124af2", "title": "Map, then reduce", "url": "https://blog.pablobm.com/2018/02/27/map-then-reduce/", "published_at": "2018-02-27T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564c9c34d8ad", "title": "Ember Data: URIs for singular resources", "url": "https://blog.pablobm.com/2018/01/30/ember-data-singular-resources/", "published_at": "2018-01-30T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564c9ccd56ab", "title": "38", "url": "https://blog.pablobm.com/2018/01/07/38/", "published_at": "2018-01-07T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564c9db7386e", "title": "Keep it simple (express-session vs cookie-session)", "url": "https://blog.pablobm.com/2017/12/10/keep-it-simple-express-session-vs-cookie-session/", "published_at": "2017-12-10T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564c9e90b129", "title": "Third party files on a custom Debian Live installer", "url": "https://blog.pablobm.com/2017/11/19/third-party-files-on-a-custom-debian-live/", "published_at": "2017-11-19T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564c9f5ff873", "title": "Rebooting machines with Ansible", "url": "https://blog.pablobm.com/2017/08/05/rebooting-machines-with-ansible/", "published_at": "2017-08-05T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca026a8bd", "title": "Timetable for (most) any concert in London", "url": "https://blog.pablobm.com/2017/07/28/timetable-for-most-any-concert-in-london/", "published_at": "2017-07-28T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca04f01cf", "title": "`WARNING: server ‘gpg-agent’ is older than us`", "url": "https://blog.pablobm.com/2017/05/30/warning-server-gpg-agent-is-older-than-us/", "published_at": "2017-05-30T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca0abf50b", "title": "Detect if a number has decimals", "url": "https://blog.pablobm.com/2017/05/28/detect-if-a-number-has-decimals/", "published_at": "2017-05-28T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca1694dd9", "title": "Messing up at work", "url": "https://blog.pablobm.com/2017/04/30/messing-up-at-work/", "published_at": "2017-04-30T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca240c1c4", "title": "Your VPN can be an attack vector", "url": "https://blog.pablobm.com/2017/02/12/your-vpn-can-be-an-attack-vector/", "published_at": "2017-02-12T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca31b4f2a", "title": "A simple asset pipeline with Broccoli.js", "url": "https://blog.pablobm.com/2017/01/22/a-simple-asset-pipeline-with-broccolijs/", "published_at": "2017-01-22T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca3ca3a0a", "title": "37", "url": "https://blog.pablobm.com/2017/01/07/37/", "published_at": "2017-01-07T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca3d46fe2", "title": "I choose you, Ember.js", "url": "https://blog.pablobm.com/2016/11/28/i-choose-you-emberjs/", "published_at": "2016-11-28T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca3dbf9fc", "title": "Palm-mute on GarageBand", "url": "https://blog.pablobm.com/2016/10/19/palm-mute-on-garageband/", "published_at": "2016-10-19T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca3ea5d2b", "title": "The “p” sound in English", "url": "https://blog.pablobm.com/2016/08/30/the-p-sound-in-english/", "published_at": "2016-08-30T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca4e58a0a", "title": "Up-to-date Firefox on Debian Live", "url": "https://blog.pablobm.com/2016/07/28/up-to-date-firefox-on-debian-live/", "published_at": "2016-07-28T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca4f65b12", "title": "Upgrading to Ember 2.x", "url": "https://blog.pablobm.com/2016/06/21/upgrading-to-ember-2x/", "published_at": "2016-06-21T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca5c9c86b", "title": "Implicit `index` routes in Ember.js", "url": "https://blog.pablobm.com/2016/05/29/implicit-index-routes-in-emberjs/", "published_at": "2016-05-29T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca6baf6cb", "title": "Large files on a custom Debian installer", "url": "https://blog.pablobm.com/2016/04/18/large-files-on-a-custom-debian-installer/", "published_at": "2016-04-18T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca731539f", "title": "Hash syntax in Ruby 2.2", "url": "https://blog.pablobm.com/2016/03/17/hash-syntax-in-ruby-22/", "published_at": "2016-03-17T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca809dc72", "title": "Memory upgrade for an MSI Wind U135", "url": "https://blog.pablobm.com/2016/02/21/memory-upgrade-for-an-msi-wind-u135/", "published_at": "2016-02-21T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca8c52597", "title": "Ruby: difference between `__method__` and `__callee__`", "url": "https://blog.pablobm.com/2016/01/20/ruby-difference-between-method-and-callee/", "published_at": "2016-01-20T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca8f74685", "title": "36", "url": "https://blog.pablobm.com/2016/01/07/36/", "published_at": "2016-01-07T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca9250418", "title": "Proprietary drivers on a custom Debian installer", "url": "https://blog.pablobm.com/2015/07/31/proprietary-drivers-on-a-custom-debian-installer/", "published_at": "2015-07-31T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca9c456fa", "title": "35", "url": "https://blog.pablobm.com/2015/01/07/35/", "published_at": "2015-01-07T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564ca9c76530", "title": "Fishy-looking ATM", "url": "https://blog.pablobm.com/2014/11/16/fishy-looking-atm/", "published_at": "2014-11-16T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564caa48e3cc", "title": "Closing a FirefoxOS app", "url": "https://blog.pablobm.com/2014/03/30/closing-firefoxos-app/", "published_at": "2014-03-30T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564caafad353", "title": "34", "url": "https://blog.pablobm.com/2014/01/07/34/", "published_at": "2014-01-07T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564cab81018d", "title": "Dual flush: interface design gone down the drain", "url": "https://blog.pablobm.com/2013/06/11/dual-flush-interface-design/", "published_at": "2013-06-11T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564cac4a4d90", "title": "My first impressions of Netflix", "url": "https://blog.pablobm.com/2013/05/02/my-first-impressions-of-netflix/", "published_at": "2013-05-02T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564cad355400", "title": "33", "url": "https://blog.pablobm.com/2013/01/07/33/", "published_at": "2013-01-07T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564cad66f14e", "title": "I don't own a smartphone", "url": "https://blog.pablobm.com/2012/11/13/i-dont-own-a-smartphone/", "published_at": "2012-11-13T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564cadf2a4b6", "title": "Browser privacy", "url": "https://blog.pablobm.com/2012/03/05/browser-privacy/", "published_at": "2012-03-05T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564caea0aa83", "title": "32", "url": "https://blog.pablobm.com/2012/01/07/32/", "published_at": "2012-01-07T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564caf7d247c", "title": "ActiveRecord: getting a backtrace of your SQL queries", "url": "https://blog.pablobm.com/2011/12/06/activerecord-backtrace-sql-queries/", "published_at": "2011-12-06T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564cb05b0da5", "title": "Amazon's Kindle customer service", "url": "https://blog.pablobm.com/2011/11/26/amazons-kindle-customer-service/", "published_at": "2011-11-26T00:00:00+00:00" }, { "id": "01a08751-e820-715f-8697-564cb1568267", "title": "Eclipse doesn't let me to findViewById", "url": "https://blog.pablobm.com/2011/11/22/eclipse-android-findviewbyid/", "published_at": "2011-11-22T00:00:00+00:00" } ] posts Claim your blog
Back to blog.pablobm.com
Blog · corpus.blog/blogs/blog.pablobm.com/posts

blog.pablobm.com

blog.pablobm.com

2026

7 Jan 2026

2025

7 Jan 2025

2024

7 Jan 2024

2023

7 Jan 2023

2022

7 Jan 2022

2021

7 Jan 2021

2020

7 Jan 2020

2019

7 Jan 2019

2018

7 Jan 2018

2017

7 Jan 2017

2016

7 Jan 2016

2015

7 Jan 2015

2014

7 Jan 2014

2013

7 Jan 2013

2012

7 Jan 2012

2011