Mike Bland: posts tagged "programming"Index of and tag-specific Atom feed for posts on Mike Bland's blog tagged: programming2023-09-11T00:00:00-04:00https://mike-bland.com/tags/programming.xmlMike Blandmbland@acm.orghttps://mike-bland.com/about.htmlWhy the Chain Reaction hasn't happened everywhere already2023-09-11T00:00:00-04:002023-09-11T00:00:00-04:00https://mike-bland.com/2023/09/11/why-the-chain-reaction-hasnt-happened-everywhere-alreadyUnit testing existed before the World Wide Web, and the Test Pyramid has
existed for years. Lack of awareness and belief hinders adoption of the
Quality Mindset, not a lack of tools or code being "too hard to test."
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Contract/Collaboration Tests and Internal APIs2023-09-08T00:00:00-04:002023-09-08T00:00:00-04:00https://mike-bland.com/2023/09/08/contract-collaboration-tests-and-internal-apisContract and Collaboration tests are medium sized tests that validate how
one's own code interacts with an external dependency. Internal APIs are
adapters that insulate most of your code from changes in such dependencies.
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Test Doubles2023-09-06T00:00:00-04:002023-09-06T00:00:00-04:00https://mike-bland.com/2023/09/06/test-doublesTest Doubles are lightweight, controllable objects that replace production
dependencies in smaller tests. Adding seams in your logic to accommodate
them enables much faster, more reliable, more thorough testing.
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Legacy code, seams, and the most important design guideline2023-08-23T00:00:00-04:002023-08-23T00:00:00-04:00https://mike-bland.com/2023/08/23/legacy-code-seams-and-the-most-important-design-guidelineMichael Feathers's definition of "legacy code," his concept of "seams," and
Scott Meyers's "most important design guideline" are profound insights.
Perhaps my "electrical outlet" example will also prove useful.
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Code duplication, large changes, and bad excuses2023-08-21T00:00:00-04:002023-08-21T00:00:00-04:00https://mike-bland.com/2023/08/21/code-duplication-large-changes-and-bad-excusesDevelopers (and those who work with them) are often misguided regarding the
tradeoffs between quality, risk, and productivity. Here I take aim at two
common bad habits and one common bad attitude.
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Revolution Fixit at Google2023-08-09T00:00:00-04:002023-08-09T00:00:00-04:00https://mike-bland.com/2023/08/09/revolution-fixit-at-googleMy Laggard encounter eventually inspired me to organize the Revolution Fixit
in January 2008, launching new tools that drastically reduced suffering all
across Google.
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Rare Happy Ending with a Laggard2023-08-07T00:00:00-04:002023-08-07T00:00:00-04:00https://mike-bland.com/2023/08/07/rare-happy-ending-with-a-laggardNormally I advise steering clear of those who directly resist change, but in
this case, honesty and an open mind created a profound opportunity.
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Formative Experiences at Google2023-08-02T00:00:00-04:002023-08-02T00:00:00-04:00https://mike-bland.com/2023/08/02/formative-experiences-googleI learned much more about software quality and automated testing at
Google—but more importantly, I began learning how to change culture.
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Formative Experiences at Northrop Grumman Mission Systems2023-07-17T00:00:00-04:002023-07-17T00:00:00-04:00https://mike-bland.com/2023/07/17/formative-experiences-ngmsMy first exposure to software quality issues and automated testing happened
by accident while working on navigation systems for US Coast Guard and Navy
vessels.
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Starting the Making Software Quality Visible blog series2023-07-11T00:00:00-04:002023-07-11T00:00:00-04:00https://mike-bland.com/2023/07/11/starting-the-making-software-quality-visible-blog-seriesThis is the first post in a long upcoming series to discuss and refine the
Making Software Quality Visible presentation.
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Video on the value of smaller tests2023-06-23T00:00:00-04:002023-06-23T00:00:00-04:00https://mike-bland.com/2023/06/23/video-on-the-value-of-smaller-testsA serendipitous find demonstrates that, at a high level, systems are systems,
and the Quality Mindset applies to them all.
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Please unsubscribe if unexpected2023-06-14T00:00:00-04:002023-06-14T00:00:00-04:00https://mike-bland.com/2023/06/14/please-unsubscribe-if-unexpectedThe unsubscribe link is at the very end of the email, if that's how you're
reading this. I'll also explain what's going on, and what I've been up to.
Copyright 2023 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.go-script-bash v1.7.02017-10-08T00:00:00-04:002017-10-08T00:00:00-04:00https://mike-bland.com/2017/10/08/go-script-bash-v1.7.0I've released go-script-bash v1.7.0, which contains powerful new test helpers and file system modules, as well as project management improvements.
Copyright 2017 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.go-script-bash v1.6.02017-08-27T00:00:00-04:002017-08-27T00:00:00-04:00https://mike-bland.com/2017/08/27/go-script-bash-v1.6.0I've released go-script-bash v1.6.0, a small release featuring its first user-contributed feature!
Copyright 2017 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Custom Links2017-08-11T11:55:00-04:002017-08-11T11:55:00-04:00https://mike-bland.com/2017/08/11/custom-linksSome wheels were meant for reinventing—if sometimes only because we need to teach ourselves how they work!
Copyright 2017 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Where in the world am I?2017-06-17T00:00:00-04:002017-06-17T00:00:00-04:00https://mike-bland.com/2017/06/17/where-in-the-world-am-iFor most of this time, I've been working in Barcelona with my first paying client, started a new project, wrote a new talk, and have been touring across Europe.
Copyright 2017 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.go-script-bash v1.5.02017-04-05T00:00:00-04:002017-04-05T00:00:00-04:00https://mike-bland.com/2017/04/05/go-script-bash-v1.5.0I've released go-script-bash v1.5.0, a relatively small release introducing the lib/prompt and lib/existence modules.
Copyright 2017 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.go-script-bash v1.4.02017-03-23T00:00:00-04:002017-03-23T00:00:00-04:00https://mike-bland.com/2017/03/23/go-script-bash-v1.4.0I've released go-script-bash v1.4.0, another large update that includes massive test performance improvements, amongst other significant new features
Copyright 2017 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.DevOpsDays Baltimore and other announcements2017-02-20T00:00:00-05:002017-02-20T00:00:00-05:00https://mike-bland.com/2017/02/20/devopsdays-baltimore-and-other-announcementsI'll be keynoting DevOpsDays Baltimore on March 8, I've made updates to my
portfolio page, and I've some updates on go-script-bash v1.4.0 and more.
Copyright 2017 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Switching to Let's Encrypt with HPKP, Part 02017-02-07T00:00:00-05:002017-02-07T00:00:00-05:00https://mike-bland.com/2017/02/07/switching-to-lets-encrypt-with-hpkp-part-0This blog now features a Let's Encrypt certificate with HPKP, and I hope to
share insights and tooling that may be of use to others.
Copyright 2017 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.go-script-bash v1.3.02017-01-16T00:00:00-05:002017-01-16T00:00:00-05:00https://mike-bland.com/2017/01/16/go-script-bash-v1.3.0I've just released go-script-bash v1.3.0, which is a massive update, especially for logging and automated testing features
Copyright 2017 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.go-script-bash v1.1.02016-11-27T00:00:00-05:002016-11-27T00:00:00-05:00https://mike-bland.com/2016/11/27/go-script-bash-v1.1.0I've just released go-script-bash v1.1.0, which adds some major new features, two new builtin commands, and multiple bug fixes and internal improvements.
Copyright 2016 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details..about.yml background2016-11-04T00:00:00-04:002016-11-04T00:00:00-04:00https://mike-bland.com/2016/11/04/about-yml-backgroundSome background on the .about.yml project metadata format prompted by an
unexpected inquiry from the TODO Group.
Copyright 2016 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.The Convergence of Wills (Surge 2016 Edition)2016-10-21T00:00:00-04:002016-10-21T00:00:00-04:00https://mike-bland.com/2016/10/21/the-convergence-of-wills-surge-2016-editionThe video of the Surge 2016 version of "The Convergence of Wills",
probably my favorite iteration of the talk so far, is now available. Plus a
bonus go-script-bash lightning talk!
Copyright 2016 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.hubot-slack-reaction-example2016-10-05T00:00:00-04:002016-10-05T00:00:00-04:00https://mike-bland.com/2016/10/05/hubot-slack-reaction-exampleJust posted a "Hello, World!" example for the new
<code>ReactionMessage</code> type I added to the <code>hubot-slack</code>
npm.
Copyright 2016 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.go-script-bash v1.0.02016-09-16T00:00:00-04:002016-09-16T00:00:00-04:00https://mike-bland.com/2016/09/16/go-script-bash-v1.0.0I've been obsessed with writing a framework for ./go scripts in Bash, and have just released v1.0.0.
Copyright 2016 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Of bots and docs2016-01-27T00:00:00-05:002016-01-27T00:00:00-05:00https://mike-bland.com/2016/01/27/of-bots-and-docsI've written a Slack bot in Node.js that files GitHub issues, and a unit
testing tutorial in Node.js based on the bot.
Copyright 2016 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.The Worst Computer Science Joke Ever2015-12-09T00:00:00-05:002015-12-09T00:00:00-05:00https://mike-bland.com/2015/12/09/worst-computer-science-joke-everSometimes, when inspiration strikes, it isn't pretty; in fact, it can be
downright painful and horrid. Please don't read this post.
Copyright 2015 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.The Next Step2014-09-29T00:00:00-04:002014-09-29T00:00:00-04:00https://mike-bland.com/2014/09/29/the-next-stepI'm moving to Washington, D.C. to join the 18F team, to help change how development is done throughout the Federal government.Copyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.OpenSSL Makefile Refactoring Report2014-08-11T00:00:00-04:002014-08-11T00:00:00-04:00https://mike-bland.com/2014/08/11/openssl-makefile-refactoring-reportI've produced a report on the early, promising results of my OpenSSL makefile refactoring experiment, in which I was successful using GNU make.Copyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.D.C. Trip Report2014-07-22T00:00:00-04:002014-07-22T00:00:00-04:00https://mike-bland.com/2014/07/22/dc-trip-reportI paid a visit to Washington, D.C. this past week, gave a tech talk on unit testing and culture change, and was amazed at the positive energy there.Copyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Makefile Refactoring2014-06-26T00:00:00-04:002014-06-26T00:00:00-04:00https://mike-bland.com/2014/06/26/makefile-refactoringI'm experimenting with refactoring OpenSSL's existing recursive Make structure into a top-Makefile-with-includes structure.Copyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.While My Heart Gently Bleeds2014-04-13T00:00:00-04:002014-04-13T00:00:00-04:00https://mike-bland.com/2014/04/13/while-my-heart-gently-bleedsA Testing on the Toilet-inspired article about the Heartbleed bug and how it could have been preventedCopyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Heartbleed2014-04-12T10:30:00-04:002014-04-12T10:30:00-04:00https://mike-bland.com/2014/04/12/heartbleedI've written a complete proof-of-concept unit and regression test for the Heartbleed bug, and am pretty happy with itCopyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Heartbleed Proof-of-Concept Unit Test2014-04-12T00:30:00-04:002014-04-12T00:30:00-04:00https://mike-bland.com/2014/04/12/heartbleed-proof-of-concept-unit-testI wrote a rough skeleton of a proof-of-concept unit test for the Heartbleed bug that I hope to polish and complete over the weekendCopyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Heartbleed and Heartbreak2014-04-09T00:00:00-04:002014-04-09T00:00:00-04:00https://mike-bland.com/2014/04/09/heartbleed-and-heartbreakThe Heartbleed bug has me seeing red just as much as Apple's SSL bug did, because it's another serious bug that could've been caught by a testCopyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Fingers Crossed2014-03-25T00:00:00-04:002014-03-25T00:00:00-04:00https://mike-bland.com/2014/03/25/fingers-crossedTurns out I couldn't let the Apple SSL bug go quite yet, as I've submitted an article to Communications of the ACM for considerationCopyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Felina2014-03-19T00:00:00-04:002014-03-19T00:00:00-04:00https://mike-bland.com/2014/03/19/felinaHopefully the Apple SSL bug is out of my system, having given an AutoTest Boston lightning talk and written a Testing on the Toilet-esque articleCopyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Playing the Changes Hack, Continued2014-03-17T00:00:00-04:002014-03-17T00:00:00-04:00https://mike-bland.com/2014/03/17/playing-the-changes-hack-continuedWrote a new script to update the tags for the playingthechanges.com MP3 files before importing them into iTunes, and accepted a challenge from David PlassCopyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Playing the Changes Hack2014-03-14T00:00:00-04:002014-03-14T00:00:00-04:00https://mike-bland.com/2014/03/14/playing-the-changes-hackMy programming skills still come into play at Berklee, as I wrote a Python script to download the MP3 files from the Playing the Changes websiteCopyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Test Mercenary (Slight Return)2014-03-04T00:00:00-05:002014-03-04T00:00:00-05:00https://mike-bland.com/2014/03/04/test-mercenary-slight-returnI've published a new article on AutoTest Central about the Testing Grouplet's Small, Medium, and Large test size schema, and more on the Apple bug.Copyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Finding the Worm2014-02-25T00:00:00-05:002014-02-25T00:00:00-05:00https://mike-bland.com/2014/02/25/finding-the-wormApple's recent SSL security bug compelled me to write a blog post for AutoTest Central illustrating how unit testing could've helped prevent itCopyright 2014 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Go, Oh So Close to Perfect!2013-12-03T00:00:00-05:002013-12-03T00:00:00-05:00https://mike-bland.com/2013/12/03/go-oh-so-close-to-perfectThe recent Go 1.2 release contains genius test coverage features, but the announcement illustrating them contains an annoying flawCopyright 2013 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.I Should Be Practicing2013-02-18T00:00:00-05:002013-02-18T00:00:00-05:00https://mike-bland.com/2013/02/18/i-should-be-practicingThere are many better uses of my time than getting sucked into writing demented Python scripts for Mac OS X. That doesn't seem to matter, always.Copyright 2013 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Tools2012-10-01T00:00:00-04:002012-10-01T00:00:00-04:00https://mike-bland.com/2012/10/01/toolsThe specific tools the Testing Grouplet, Testing Tech, Build Tools and others developed to improve testing development and efficiency at GoogleCopyright 2012 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Process and the OODA Loop2012-09-13T00:00:00-04:002012-09-13T00:00:00-04:00https://mike-bland.com/2012/09/13/processThe collection of processes Google uses for ensuring software quality, including automated developer testing as promoted by the Testing GroupletCopyright 2012 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.The Practice of Testing2012-09-11T00:00:00-04:002012-09-11T00:00:00-04:00https://mike-bland.com/2012/09/11/practice-of-testingThe basics of how automated tests should--and should not--be written, as promoted by the Testing Grouplet at GoogleCopyright 2012 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Damn It All2012-09-01T00:00:00-04:002012-09-01T00:00:00-04:00https://mike-bland.com/2012/09/01/damn-it-allI learn that I'm still a programmer after writing tools in Ruby and Go to help publish my blog, which I've also now published on Google Code.Copyright 2012 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.Object-Oriented Programming Revisited2012-08-16T00:00:00-04:002012-08-16T00:00:00-04:00https://mike-bland.com/2012/08/16/oop-revisitedThe fundamental object-oriented programming issues which produced Google's testing challenges and the solutions promoted by the Testing GroupletCopyright 2012 Mike Bland. Except as noted, licensed under a Creative Commons Attribution 4.0 International License. See https://mike-bland.com/policies.html for details.