56,966 blogs Β· [ { "id": "01a087c9-eabd-726b-afcc-076cc81f4cfe", "title": "A TDD Mindset", "url": "https://programmaticallyspeaking.com/a-tdd-mindset.html", "published_at": "2025-07-16T21:30:00+00:00" }, { "id": "01a087c9-eac3-7035-89f8-da394abd6e01", "title": "Don't write code, generate it!", "url": "https://programmaticallyspeaking.com/dont-write-code-generate-it.html", "published_at": "2024-09-06T14:30:00+00:00" }, { "id": "01a087c9-eac3-7035-89f8-da394b44df95", "title": "Return on Investment for Test-Driven Development", "url": "https://programmaticallyspeaking.com/return-on-investment-for-test-driven-development.html", "published_at": "2023-04-28T15:30:00+00:00" }, { "id": "01a087c9-eac3-7035-89f8-da394bf0bfee", "title": "Discovering Nim, part 1", "url": "https://programmaticallyspeaking.com/discovering-nim-part-1.html", "published_at": "2022-12-02T07:00:00+00:00" }, { "id": "01a087c9-eac3-7035-89f8-da394c15eb2d", "title": "πŸŽ„ Advent of Code 2022, at last! πŸŽ„", "url": "https://programmaticallyspeaking.com/advent-of-code-2022-at-last.html", "published_at": "2022-12-01T20:30:00+00:00" }, { "id": "01a087c9-eac3-7035-89f8-da394cd278d9", "title": "A quick look at Cypress component testing", "url": "https://programmaticallyspeaking.com/a-quick-look-at-cypress-component-testing.html", "published_at": "2022-06-29T06:00:00+00:00" }, { "id": "01a087c9-eac3-7035-89f8-da394d1d4c05", "title": "Consequences of array covariance in C#", "url": "https://programmaticallyspeaking.com/consequences-of-array-covariance-in-csharp.html", "published_at": "2021-10-22T16:00:00+00:00" }, { "id": "01a087c9-eac3-7035-89f8-da394db19513", "title": "TDD and prototypingβ€”a love story?", "url": "https://programmaticallyspeaking.com/tdd-and-prototyping-a-love-story.html", "published_at": "2018-07-10T06:40:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b1e2c1d8b", "title": "Git-diffing Excel files, part 2", "url": "https://programmaticallyspeaking.com/git-diffing-excel-files-part-2.html", "published_at": "2018-01-02T22:30:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b1e5efc49", "title": "Nashorn's JSObject in context", "url": "https://programmaticallyspeaking.com/nashorns-jsobject-in-context.html", "published_at": "2017-11-12T22:00:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b1f3ca108", "title": "Scala pattern matching & lowercase case objects", "url": "https://programmaticallyspeaking.com/scala-pattern-matching-lowercase-case-objects.html", "published_at": "2016-11-30T21:54:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b2023f9a6", "title": "Git-diffing Excel files", "url": "https://programmaticallyspeaking.com/git-diffing-excel-files.html", "published_at": "2016-03-04T15:00:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b20770c01", "title": "How Enumerable.Concat brought down a production server", "url": "https://programmaticallyspeaking.com/how-enumerableconcat-brought-down-a-production-server.html", "published_at": "2014-11-26T22:30:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b2093f0fa", "title": "The mysteriously escaped request path in ASP.NET", "url": "https://programmaticallyspeaking.com/the-mysteriously-escaped-request-path-in-aspnet.html", "published_at": "2013-11-19T21:30:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b21730a6a", "title": "How git changed my commit behavior", "url": "https://programmaticallyspeaking.com/how-git-changed-my-commit-behavior.html", "published_at": "2013-10-11T10:00:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b220ba133", "title": "Why I hate implicit return in CoffeeScript", "url": "https://programmaticallyspeaking.com/why-i-hate-implicit-return-in-coffeescript.html", "published_at": "2012-10-26T11:04:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b225e921f", "title": "Tricked by the IDE, broke the build", "url": "https://programmaticallyspeaking.com/tricked-by-the-ide-broke-the-build.html", "published_at": "2012-09-17T22:45:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b22a3f295", "title": "Suck it up and be a noob", "url": "https://programmaticallyspeaking.com/suck-it-up-and-be-a-noob.html", "published_at": "2012-09-17T20:36:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b22f84230", "title": "One assertion per test, please", "url": "https://programmaticallyspeaking.com/one-assertion-per-test-please.html", "published_at": "2012-07-24T23:25:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b2364c9e5", "title": "A Chrome extension for easy ID linking", "url": "https://programmaticallyspeaking.com/a-chrome-extension-for-easy-id-linking.html", "published_at": "2012-07-21T20:44:00+00:00" }, { "id": "01a087c9-eac4-7042-b520-984b23ab27ac", "title": "Changing the user profile path in Windows 7", "url": "https://programmaticallyspeaking.com/changing-the-user-profile-path-in-windows-7.html", "published_at": "2012-07-11T22:12:00+00:00" }, { "id": "01a087c9-ead0-721c-a918-2a5e055432c6", "title": "Offline repository sync using git bundle", "url": "https://programmaticallyspeaking.com/offline-repository-sync-using-git-bundle.html", "published_at": "2012-06-11T13:03:00+00:00" }, { "id": "01a087c9-ead0-721c-a918-2a5e05a32f97", "title": "Regular expression multiline mode - what's a newline?", "url": "https://programmaticallyspeaking.com/regular-expression-multiline-mode-whats-a-newline.html", "published_at": "2012-05-30T09:17:00+00:00" }, { "id": "01a087c9-ead0-721c-a918-2a5e05c52a34", "title": "Testing asynchronous background workers in .NET", "url": "https://programmaticallyspeaking.com/testing-asynchronous-background-workers-in-net.html", "published_at": "2012-05-07T22:35:00+00:00" }, { "id": "01a087c9-ead0-721c-a918-2a5e064b85ef", "title": "Your decisions are likely to suck", "url": "https://programmaticallyspeaking.com/your-decisions-are-likely-to-suck.html", "published_at": "2012-04-25T05:40:00+00:00" }, { "id": "01a087c9-ead1-703f-b331-121135fdd8f6", "title": "Abusing XML literals in VB.NET", "url": "https://programmaticallyspeaking.com/abusing-xml-literals-in-vbnet.html", "published_at": "2012-04-25T04:32:00+00:00" }, { "id": "01a087c9-ead1-703f-b331-121136be363e", "title": "Swedish to not-so-Swedish through diacritics removal", "url": "https://programmaticallyspeaking.com/swedish-to-not-so-swedish-through-diacritics-removal.html", "published_at": "2012-04-05T23:43:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6b9c4c915", "title": "Mocking __iter__ with a magic mock in Python", "url": "https://programmaticallyspeaking.com/mocking-__iter__-with-a-magic-mock-in-python.html", "published_at": "2012-03-28T22:08:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6ba44245d", "title": "Nothing surprises me in VB.NET", "url": "https://programmaticallyspeaking.com/nothing-surprises-me-in-vbnet.html", "published_at": "2012-03-27T17:11:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6baef14f6", "title": "NSubstitute vs Moq - a quick comparison", "url": "https://programmaticallyspeaking.com/nsubstitute-vs-moq-a-quick-comparison.html", "published_at": "2012-02-27T21:50:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6bb3f6863", "title": "Using Git locally within a Subversion branch", "url": "https://programmaticallyspeaking.com/using-git-locally-within-a-subversion-branch.html", "published_at": "2012-01-19T22:44:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6bb7f3543", "title": "LVM recipe: determine which physical volume(s) a logical volume is located on", "url": "https://programmaticallyspeaking.com/lvm-recipe-determine-which-physical-volumes-a-logical-volume-is-located-on.html", "published_at": "2012-01-19T21:44:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6bc7887c3", "title": "Node.js experimentation - a GitHub clone script", "url": "https://programmaticallyspeaking.com/nodejs-experimentation-a-github-clone-script.html", "published_at": "2012-01-19T09:32:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6bcac63f4", "title": "Strongly typed properties in Java vs C#", "url": "https://programmaticallyspeaking.com/strongly-typed-properties-in-java-vs-c.html", "published_at": "2012-01-18T23:48:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6bd2dd24d", "title": "Generic extension method with multiple constraints", "url": "https://programmaticallyspeaking.com/generic-extension-method-with-multiple-constraints.html", "published_at": "2012-01-18T12:47:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6bd864737", "title": "Playing with Java annotation processing", "url": "https://programmaticallyspeaking.com/playing-with-java-annotation-processing.html", "published_at": "2012-01-06T16:16:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6bdf24a25", "title": "Adventures in updating hard drive firmware", "url": "https://programmaticallyspeaking.com/adventures-in-updating-hard-drive-firmware.html", "published_at": "2012-01-06T11:14:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6be2ff5af", "title": "Generator combined with with/using statement - Python vs C#", "url": "https://programmaticallyspeaking.com/generator-combined-with-withusing-statement-python-vs-c.html", "published_at": "2011-12-30T01:07:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6beb5732f", "title": "Certificate error when upgrading to Oneric", "url": "https://programmaticallyspeaking.com/certificate-error-when-upgrading-to-oneric.html", "published_at": "2011-12-30T00:33:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6bf56ae8c", "title": "Getting network interfaces in Python", "url": "https://programmaticallyspeaking.com/getting-network-interfaces-in-python.html", "published_at": "2011-12-29T23:50:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6bf67f2d6", "title": "New features in diskgraph", "url": "https://programmaticallyspeaking.com/new-features-in-diskgraph.html", "published_at": "2011-12-29T18:34:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6c0342960", "title": "Presenting diskgraph", "url": "https://programmaticallyspeaking.com/presenting-diskgraph.html", "published_at": "2011-12-28T01:33:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6c0b8d348", "title": "Mocking iteration over file in Python", "url": "https://programmaticallyspeaking.com/mocking-iteration-over-file-in-python.html", "published_at": "2011-12-23T23:00:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6c0dcad26", "title": "Split on separator but keep the separator, in Python", "url": "https://programmaticallyspeaking.com/split-on-separator-but-keep-the-separator-in-python.html", "published_at": "2011-12-23T22:41:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6c12bd718", "title": "Function return value caching in F#", "url": "https://programmaticallyspeaking.com/function-return-value-caching-in-f.html", "published_at": "2011-12-19T23:40:00+00:00" }, { "id": "01a087c9-ead2-7167-a067-b4c6c22351eb", "title": "A Maven POM for building JSR335 code", "url": "https://programmaticallyspeaking.com/a-maven-pom-for-building-jsr335-code.html", "published_at": "2011-12-19T22:48:00+00:00" }, { "id": "01a087c9-eadd-7142-a237-f7ae7ddc7d5b", "title": "Some notes on building Project Lambda to test closures and defender methods in Java", "url": "https://programmaticallyspeaking.com/some-notes-on-building-project-lambda-to-test-closures-and-defender-methods-in-java.html", "published_at": "2011-12-14T23:32:00+00:00" }, { "id": "01a087c9-eadd-7142-a237-f7ae7e8c863b", "title": "Forcing a .NET application to use a 4.0 CLR", "url": "https://programmaticallyspeaking.com/forcing-a-net-application-to-use-a-40-clr.html", "published_at": "2011-12-14T07:26:00+00:00" }, { "id": "01a087c9-eade-733c-bf46-f65e7e653a24", "title": "A convoluted way to list controllers per block device in Linux", "url": "https://programmaticallyspeaking.com/a-convoluted-way-to-list-controllers-per-block-device-in-linux.html", "published_at": "2011-12-08T20:49:00+00:00" }, { "id": "01a087c9-eade-733c-bf46-f65e7ecad93d", "title": "Serializing non-qualified attributes with ElementTree", "url": "https://programmaticallyspeaking.com/serializing-non-qualified-attributes-with-elementtree.html", "published_at": "2011-11-21T22:41:00+00:00" }, { "id": "01a087c9-eade-733c-bf46-f65e7efc05f2", "title": "OpenCover in Jenkins", "url": "https://programmaticallyspeaking.com/opencover-in-jenkins.html", "published_at": "2011-10-24T11:49:00+00:00" }, { "id": "01a087c9-eade-733c-bf46-f65e7fb02c3b", "title": "Code demo using git, part 2", "url": "https://programmaticallyspeaking.com/code-demo-using-git-part-2.html", "published_at": "2011-10-17T07:46:00+00:00" }, { "id": "01a087c9-eade-733c-bf46-f65e7fc96cb7", "title": "Uniprocessor HAL to multiprocessor HAL in Windows", "url": "https://programmaticallyspeaking.com/uniprocessor-hal-to-multiprocessor-hal-in-windows.html", "published_at": "2011-10-17T05:01:00+00:00" }, { "id": "01a087c9-eade-733c-bf46-f65e80c6b7fb", "title": "My .screenrc", "url": "https://programmaticallyspeaking.com/my-screenrc.html", "published_at": "2011-10-17T04:48:00+00:00" }, { "id": "01a087c9-eade-733c-bf46-f65e8110811f", "title": "Code demo using git", "url": "https://programmaticallyspeaking.com/code-demo-using-git.html", "published_at": "2011-10-10T17:27:00+00:00" }, { "id": "01a087c9-eadf-7130-b634-0c826ef34233", "title": "Cancer.js?", "url": "https://programmaticallyspeaking.com/cancerjs.html", "published_at": "2011-10-06T06:13:00+00:00" }, { "id": "01a087c9-eae2-72f7-921e-008109ff524c", "title": "When security gets in your face", "url": "https://programmaticallyspeaking.com/when-security-gets-in-your-face.html", "published_at": "2011-10-01T22:12:00+00:00" }, { "id": "01a087c9-eae2-72f7-921e-00810a1f2336", "title": "On discovering Test-Driven Development", "url": "https://programmaticallyspeaking.com/on-discovering-test-driven-development.html", "published_at": "2011-10-01T21:51:00+00:00" }, { "id": "01a087c9-eae2-72f7-921e-00810ae49db0", "title": "Test data provider using Python metaclass", "url": "https://programmaticallyspeaking.com/test-data-provider-using-python-metaclass.html", "published_at": "2011-10-01T21:41:00+00:00" }, { "id": "01a087c9-eae4-73da-9b1c-96650d40b63a", "title": "Mocking Zope interfaces", "url": "https://programmaticallyspeaking.com/mocking-zope-interfaces.html", "published_at": "2011-09-28T13:10:00+00:00" }, { "id": "01a087c9-eae5-73be-9002-30aed3ebe9bc", "title": "Debugging Java focus problems using the focus log", "url": "https://programmaticallyspeaking.com/debugging-java-focus-problems-using-the-focus-log.html", "published_at": "2011-09-28T12:28:00+00:00" } ] posts Claim your blog
Back to programmaticallyspeaking.com
Blog Β· corpus.blog/blogs/programmaticallyspeaking.com/posts

programmaticallyspeaking.com

programmaticallyspeaking.com

2025

2024

2023

2022

2021

2018

2017

2016

2014

2013

2012

2011