[{"slug":"optimizing-a-load-balancing-algorithm-to-minimize-the-runtime-of-a-static-process","metadata":{"title":"Optimizing a load balancing algorithm to minimize the runtime of a static process","createdAt":"2025-10-29T00:00:00.000Z","headings":[{"depth":2,"value":"The issue with using a “round-robin” approach in this case","data":{"hProperties":{"id":"the-issue-with-using-a-round-robin-approach-in-this-case"},"id":"the-issue-with-using-a-round-robin-approach-in-this-case"}},{"depth":2,"value":"Defining a new solution","data":{"hProperties":{"id":"defining-a-new-solution"},"id":"defining-a-new-solution"}},{"depth":3,"value":"Initial observations of the Cypress run command","data":{"hProperties":{"id":"initial-observations-of-the-cypress-run-command"},"id":"initial-observations-of-the-cypress-run-command"}},{"depth":3,"value":"Defining requirements of the new algorithm","data":{"hProperties":{"id":"defining-requirements-of-the-new-algorithm"},"id":"defining-requirements-of-the-new-algorithm"}},{"depth":2,"value":"The “weighted-largest” algorithm in depth","data":{"hProperties":{"id":"the-weighted-largest-algorithm-in-depth"},"id":"the-weighted-largest-algorithm-in-depth"}},{"depth":3,"value":"Examples: Comparisons of different file timing distributions","data":{"hProperties":{"id":"examples-comparisons-of-different-file-timing-distributions"},"id":"examples-comparisons-of-different-file-timing-distributions"}},{"depth":3,"value":"Conclusion from the initial trials","data":{"hProperties":{"id":"conclusion-from-the-initial-trials"},"id":"conclusion-from-the-initial-trials"}},{"depth":3,"value":"Examples: Real world trials","data":{"hProperties":{"id":"examples-real-world-trials"},"id":"examples-real-world-trials"}},{"depth":2,"value":"Additional considerations and final conclusions","data":{"hProperties":{"id":"additional-considerations-and-final-conclusions"},"id":"additional-considerations-and-final-conclusions"}}],"tags":[]}},{"slug":"how-i-perform-code-reviews","metadata":{"title":"How I perform code reviews","createdAt":"2025-07-01T00:00:00.000Z","headings":[{"depth":2,"value":"Context","data":{"hProperties":{"id":"context"},"id":"context"}},{"depth":2,"value":"Affordability","data":{"hProperties":{"id":"affordability"},"id":"affordability"}},{"depth":2,"value":"Standardization","data":{"hProperties":{"id":"standardization"},"id":"standardization"}},{"depth":3,"value":"Conclusion","data":{"hProperties":{"id":"conclusion"},"id":"conclusion"}}],"tags":[]}},{"slug":"compare-changes-to-encrypted-files-without-revealing-secrets-in-a-github-actions-pull-request","metadata":{"title":"Compare changes to encrypted files without revealing secrets in a GitHub Actions pull request workflow","createdAt":"2025-04-09T00:00:00.000Z","headings":[{"depth":3,"value":"Building a GitHub Workflow","data":{"hProperties":{"id":"building-a-git-hub-workflow"},"id":"building-a-git-hub-workflow"}},{"depth":3,"value":"The process","data":{"hProperties":{"id":"the-process"},"id":"the-process"}},{"depth":3,"value":"Set up the workflow file","data":{"hProperties":{"id":"set-up-the-workflow-file"},"id":"set-up-the-workflow-file"}},{"depth":3,"value":"Set up the custom JavaScript command for diff-env-files","data":{"hProperties":{"id":"set-up-the-custom-java-script-command-for-diff-env-files"},"id":"set-up-the-custom-java-script-command-for-diff-env-files"}},{"depth":2,"value":"The workflow in action","data":{"hProperties":{"id":"the-workflow-in-action"},"id":"the-workflow-in-action"}},{"depth":3,"value":"Conclusion","data":{"hProperties":{"id":"conclusion"},"id":"conclusion"}}],"tags":[]}},{"slug":"load-balancing-cypress-tests-without-cypress-cloud","metadata":{"title":"Load balancing Cypress tests without Cypress Cloud","createdAt":"2025-02-28T00:00:00.000Z","updatedAt":"2026-01-24T00:00:00.000Z","tags":["cypress","automation","testing"],"headings":[{"depth":2,"value":"What is a load balancer?","data":{"hProperties":{"id":"what-is-a-load-balancer"},"id":"what-is-a-load-balancer"}},{"depth":2,"value":"The general approach of using a load balancer for tests","data":{"hProperties":{"id":"the-general-approach-of-using-a-load-balancer-for-tests"},"id":"the-general-approach-of-using-a-load-balancer-for-tests"}},{"depth":2,"value":"How does it work for Cypress automated tests?","data":{"hProperties":{"id":"how-does-it-work-for-cypress-automated-tests"},"id":"how-does-it-work-for-cypress-automated-tests"}},{"depth":3,"value":"Installation","data":{"hProperties":{"id":"installation"},"id":"installation"}},{"depth":3,"value":"Usage","data":{"hProperties":{"id":"usage"},"id":"usage"}},{"depth":3,"value":"Scripts","data":{"hProperties":{"id":"scripts"},"id":"scripts"}},{"depth":2,"value":"Example on GitHub Actions","data":{"hProperties":{"id":"example-on-git-hub-actions"},"id":"example-on-git-hub-actions"}},{"depth":3,"value":"Running tests on pull requests","data":{"hProperties":{"id":"running-tests-on-pull-requests"},"id":"running-tests-on-pull-requests"}},{"depth":3,"value":"Merging back on pull requests","data":{"hProperties":{"id":"merging-back-on-pull-requests"},"id":"merging-back-on-pull-requests"}}]}},{"slug":"misconceptions-with-testing-paradigms-and-how-to-address-them","metadata":{"title":"Misconceptions with testing paradigms and how to address them","createdAt":"2024-09-05T00:00:00.000Z","tags":["testing","software-engineering","learning"],"headings":[{"depth":3,"value":"Testing is mainly used as simply checking for a pass/fail state, but it is just one part of a larger method.","data":{"hProperties":{"id":"testing-is-mainly-used-as-simply-checking-for-a-pass-fail-state-but-it-is-just-one-part-of-a-larger-method"},"id":"testing-is-mainly-used-as-simply-checking-for-a-pass-fail-state-but-it-is-just-one-part-of-a-larger-method"}},{"depth":2,"value":"Testing a feature is an approximation of a situation.","data":{"hProperties":{"id":"testing-a-feature-is-an-approximation-of-a-situation"},"id":"testing-a-feature-is-an-approximation-of-a-situation"}},{"depth":2,"value":"A test is arbitrary unless sufficiently described.","data":{"hProperties":{"id":"a-test-is-arbitrary-unless-sufficiently-described"},"id":"a-test-is-arbitrary-unless-sufficiently-described"}},{"depth":2,"value":"Higher degrees of manageability is directly related to greater assumptions of reality.","data":{"hProperties":{"id":"higher-degrees-of-manageability-is-directly-related-to-greater-assumptions-of-reality"},"id":"higher-degrees-of-manageability-is-directly-related-to-greater-assumptions-of-reality"}},{"depth":3,"value":"Sub-point: Production is not reality.","data":{"hProperties":{"id":"sub-point-production-is-not-reality"},"id":"sub-point-production-is-not-reality"}},{"depth":2,"value":"Integrating external systems assumes a level of trust has been met.","data":{"hProperties":{"id":"integrating-external-systems-assumes-a-level-of-trust-has-been-met"},"id":"integrating-external-systems-assumes-a-level-of-trust-has-been-met"}},{"depth":3,"value":"Sub-point: Test code may be considered an independent entity from the application.","data":{"hProperties":{"id":"sub-point-test-code-may-be-considered-an-independent-entity-from-the-application"},"id":"sub-point-test-code-may-be-considered-an-independent-entity-from-the-application"}},{"depth":2,"value":"Everyone owns quality, but those who provide the product bear the ultimate responsibility.","data":{"hProperties":{"id":"everyone-owns-quality-but-those-who-provide-the-product-bear-the-ultimate-responsibility"},"id":"everyone-owns-quality-but-those-who-provide-the-product-bear-the-ultimate-responsibility"}},{"depth":2,"value":"Measuring the usefulness of quality in the present is unrealized, but constant discovery can bring future stability.","data":{"hProperties":{"id":"measuring-the-usefulness-of-quality-in-the-present-is-unrealized-but-constant-discovery-can-bring-future-stability"},"id":"measuring-the-usefulness-of-quality-in-the-present-is-unrealized-but-constant-discovery-can-bring-future-stability"}},{"depth":1,"value":"Conclusion","data":{"hProperties":{"id":"conclusion"},"id":"conclusion"}}]}}]