https://mtsknn.fi/ https://mtsknn.fi/blog/ https://mtsknn.fi/blog/11ty-vs-eleventy/ https://mtsknn.fi/blog/2-way-sync/ https://mtsknn.fi/blog/4-1-wrapping-styles-for-markdown-prose-and-code-comments/ https://mtsknn.fi/blog/4-types-of-documentation/ https://mtsknn.fi/blog/5-rules-of-aria/ https://mtsknn.fi/blog/accept-vs-content-type/ https://mtsknn.fi/blog/accessible-test-queries/ https://mtsknn.fi/blog/action-driven-css-animations/ https://mtsknn.fi/blog/agile-process-visualized/ https://mtsknn.fi/blog/app-insights-error-logging/ https://mtsknn.fi/blog/assume-vs-presume-in-english/ https://mtsknn.fi/blog/atomic-habits/ https://mtsknn.fi/blog/auto-animate/ https://mtsknn.fi/blog/beware-implicit-values/ https://mtsknn.fi/blog/breaking-css-position-fixed/ https://mtsknn.fi/blog/bulk-logging-hours-in-jira/ https://mtsknn.fi/blog/burnout/ https://mtsknn.fi/blog/burp-suite-ux-bad/ https://mtsknn.fi/blog/button-type-button/ https://mtsknn.fi/blog/bye-acsm-and-drm/ https://mtsknn.fi/blog/bye-weekly-log/ https://mtsknn.fi/blog/calculating-week-numbers-in-js-is-surprisingly-complex/ https://mtsknn.fi/blog/casting-in-csharp-cast-expression-vs-as-and-is-operators/ https://mtsknn.fi/blog/coding-svg-icons-by-hand/ https://mtsknn.fi/blog/coin-combinations-puzzle/ https://mtsknn.fi/blog/comment-terminal-commands/ https://mtsknn.fi/blog/contenteditable-first-letter-chrome-buggy-combo/ https://mtsknn.fi/blog/converting-a-path-into-cumulative-segments-in-javascript/ https://mtsknn.fi/blog/csharp-fluent-assertions/ https://mtsknn.fi/blog/csharp-nsubstitute/ https://mtsknn.fi/blog/css-block-vs-inline/ https://mtsknn.fi/blog/css-flow-root/ https://mtsknn.fi/blog/css-height-and-width-logics/ https://mtsknn.fi/blog/css-vertical-margin-auto/ https://mtsknn.fi/blog/css-will-change/ https://mtsknn.fi/blog/cursive-parinfer/ https://mtsknn.fi/blog/daily-stand-ups/ https://mtsknn.fi/blog/date-objects-vs-date-strings/ https://mtsknn.fi/blog/dbeaver-azure-ad/ https://mtsknn.fi/blog/delegate-types-in-csharp-action-vs-func-vs-predicate/ https://mtsknn.fi/blog/dotnet-refactoring/ https://mtsknn.fi/blog/dynamic-tag-names-in-pug/ https://mtsknn.fi/blog/emphasis-as-progressive-enhancement/ https://mtsknn.fi/blog/episerver-automapper/ https://mtsknn.fi/blog/episerver-tinymce-react/ https://mtsknn.fi/blog/epub-to-azw3/ https://mtsknn.fi/blog/eslint-import-restrictions/ https://mtsknn.fi/blog/exact-dependency-versions/ https://mtsknn.fi/blog/excel-durations/ https://mtsknn.fi/blog/fiction-books-2023/ https://mtsknn.fi/blog/firefox-devtools-inactive-css/ https://mtsknn.fi/blog/firefox-slowness/ https://mtsknn.fi/blog/fizzbuzz-in-javascript-with-infinite-arrays-and-multimapping/ https://mtsknn.fi/blog/fn-apply-vs-fn-call-in-javascript-better-alternative/ https://mtsknn.fi/blog/formatting-lists-in-js/ https://mtsknn.fi/blog/frequency-illusion/ https://mtsknn.fi/blog/from-windows-to-mac/ https://mtsknn.fi/blog/git-stash-unstaged/ https://mtsknn.fi/blog/github-html-preview-bookmarklet/ https://mtsknn.fi/blog/goodbye-cookbook-hello-more-blog-posts/ https://mtsknn.fi/blog/handlebars-else-equals/ https://mtsknn.fi/blog/harry-potter/ https://mtsknn.fi/blog/how-to-bypass-episervers-content-delivery-api-when-doing-ajax-requests/ https://mtsknn.fi/blog/how-to-change-modified-date-programmatically-in-episerver/ https://mtsknn.fi/blog/how-to-chunk-an-array-in-javascript/ https://mtsknn.fi/blog/how-to-debounce-events-in-mithriljs/ https://mtsknn.fi/blog/how-to-disable-imageprocessors-upscaling-feature/ https://mtsknn.fi/blog/how-to-do-overlapping-matches-with-regular-expressions/ https://mtsknn.fi/blog/how-to-exclude-your-own-mobile-browser-visits-from-plausible-analytics/ https://mtsknn.fi/blog/how-to-force-push-in-git-with-style-and-some-safety/ https://mtsknn.fi/blog/how-to-get-components-html-without-mounting-in-mithriljs/ https://mtsknn.fi/blog/how-to-nest-selectors-in-mithriljs-for-extra-brevity/ https://mtsknn.fi/blog/how-to-pretty-print-json-in-javascript/ https://mtsknn.fi/blog/how-to-quickly-count-source-lines-of-code-using-npx-cloc/ https://mtsknn.fi/blog/how-to-remember-markdowns-link-syntax/ https://mtsknn.fi/blog/how-to-render-optimizely-content-recommendations-using-react/ https://mtsknn.fi/blog/how-to-sort-package-json-automatically/ https://mtsknn.fi/blog/how-to-trigger-daily-netlify-builds-using-github-actions/ https://mtsknn.fi/blog/how-to-undo-the-last-previous-most-recent-commit-in-git/ https://mtsknn.fi/blog/how-to-use-absolute-import-paths-in-nodejs/ https://mtsknn.fi/blog/hyperscript-hyperior-alternative-to-jsx/ https://mtsknn.fi/blog/illegal-invocations-in-js/ https://mtsknn.fi/blog/illegal-invocations-in-ts/ https://mtsknn.fi/blog/indenting-ordered-lists-in-markdown/ https://mtsknn.fi/blog/interdependent-react-prop-types-in-ts/ https://mtsknn.fi/blog/javascripts-date-constructor-is-bad-at-parsing-dates/ https://mtsknn.fi/blog/joi-conditional-multiple-values/ https://mtsknn.fi/blog/js-array-item-combinations-part-2/ https://mtsknn.fi/blog/js-array-item-combinations/ https://mtsknn.fi/blog/js-default-exports-bad/ https://mtsknn.fi/blog/js-error-stack/ https://mtsknn.fi/blog/js-fn-length/ https://mtsknn.fi/blog/js-leap-year/ https://mtsknn.fi/blog/js-read-only-array-sort/ https://mtsknn.fi/blog/js-retry-on-fail/ https://mtsknn.fi/blog/jsx-vs-htm-hyperscript-tagged-markup/ https://mtsknn.fi/blog/kayaking/ https://mtsknn.fi/blog/lazy-and-greedy-quantifiers-in-regex/ https://mtsknn.fi/blog/legacy-code/ https://mtsknn.fi/blog/linen-bedclothes/ https://mtsknn.fi/blog/local-mutations/ https://mtsknn.fi/blog/locality-of-behavior-and-co-location/ https://mtsknn.fi/blog/logitech-brio/ https://mtsknn.fi/blog/ltex/ https://mtsknn.fi/blog/memoized-fibonacci-function-in-1-line-of-javascript/ https://mtsknn.fi/blog/mirror-of-erised/ https://mtsknn.fi/blog/mnemonic-for-array-shift-vs-array-unshift-in-javascript/ https://mtsknn.fi/blog/mortgage-calculator/ https://mtsknn.fi/blog/mts-file-extension/ https://mtsknn.fi/blog/my-favorite-mnemonics-for-american-vs-british-english/ https://mtsknn.fi/blog/my-new-microphone-rode-procaster/ https://mtsknn.fi/blog/netlify-updating-private-git-submodule/ https://mtsknn.fi/blog/notes-on-tail-call-optimization-the-musical/ https://mtsknn.fi/blog/parse-dont-just-validate/ https://mtsknn.fi/blog/periods-and-commas-belong-inside-quotes-in-american-english/ https://mtsknn.fi/blog/pocket-phone/ https://mtsknn.fi/blog/react-fallback-ref/ https://mtsknn.fi/blog/react-is-a-framework/ https://mtsknn.fi/blog/react-links-in-html/ https://mtsknn.fi/blog/react-router-scroll-to-top/ https://mtsknn.fi/blog/react-two-way-data-binding/ https://mtsknn.fi/blog/react-use-state-machine/ https://mtsknn.fi/blog/reacts-ecosystem-is-a-dumb-necessity/ https://mtsknn.fi/blog/regex-numerals/ https://mtsknn.fi/blog/relative-tr-in-safari/ https://mtsknn.fi/blog/response-json-can-throw/ https://mtsknn.fi/blog/rfc-2119-in-a-nutshell/ https://mtsknn.fi/blog/running-vs-jogging/ https://mtsknn.fi/blog/safari-broken-svg/ https://mtsknn.fi/blog/safari-pdf-error/ https://mtsknn.fi/blog/scheduling-vacations-for-maximal-relaxation/ https://mtsknn.fi/blog/site-specific-components/ https://mtsknn.fi/blog/small-monitor-best/ https://mtsknn.fi/blog/smoke-testing/ https://mtsknn.fi/blog/sorting-anti-symmetry/ https://mtsknn.fi/blog/sounds-like-a-plan/ https://mtsknn.fi/blog/squircley/ https://mtsknn.fi/blog/switch-statements-default-doesnt-have-to-be-the-last-case/ https://mtsknn.fi/blog/swr-show-stale-data-on-revalidation-error/ https://mtsknn.fi/blog/tags/ https://mtsknn.fi/blog/tags/accessibility/ https://mtsknn.fi/blog/tags/battlestation/ https://mtsknn.fi/blog/tags/blogging/ https://mtsknn.fi/blog/tags/bookmarklets/ https://mtsknn.fi/blog/tags/books/ https://mtsknn.fi/blog/tags/breathing/ https://mtsknn.fi/blog/tags/clean-code/ https://mtsknn.fi/blog/tags/clojure/ https://mtsknn.fi/blog/tags/cool-tools/ https://mtsknn.fi/blog/tags/csharp/ https://mtsknn.fi/blog/tags/css-for-js-devs-course/ https://mtsknn.fi/blog/tags/css/ https://mtsknn.fi/blog/tags/documentation/ https://mtsknn.fi/blog/tags/eleventy/ https://mtsknn.fi/blog/tags/english/ https://mtsknn.fi/blog/tags/episerver/ https://mtsknn.fi/blog/tags/eslint/ https://mtsknn.fi/blog/tags/excel/ https://mtsknn.fi/blog/tags/games/ https://mtsknn.fi/blog/tags/git/ https://mtsknn.fi/blog/tags/handlebars/ https://mtsknn.fi/blog/tags/health/ https://mtsknn.fi/blog/tags/javascript/ https://mtsknn.fi/blog/tags/joi/ https://mtsknn.fi/blog/tags/mac/ https://mtsknn.fi/blog/tags/markdown/ https://mtsknn.fi/blog/tags/miscellaneous/ https://mtsknn.fi/blog/tags/mithriljs/ https://mtsknn.fi/blog/tags/mnemonics/ https://mtsknn.fi/blog/tags/netlify/ https://mtsknn.fi/blog/tags/nodejs/ https://mtsknn.fi/blog/tags/nosurf/ https://mtsknn.fi/blog/tags/pug/ https://mtsknn.fi/blog/tags/rant/ https://mtsknn.fi/blog/tags/react/ https://mtsknn.fi/blog/tags/regular-expressions/ https://mtsknn.fi/blog/tags/running/ https://mtsknn.fi/blog/tags/safari/ https://mtsknn.fi/blog/tags/sendgrid/ https://mtsknn.fi/blog/tags/sleep/ https://mtsknn.fi/blog/tags/svg/ https://mtsknn.fi/blog/tags/testing/ https://mtsknn.fi/blog/tags/typescript/ https://mtsknn.fi/blog/tags/vs-code/ https://mtsknn.fi/blog/tags/work-life-balance/ https://mtsknn.fi/blog/tags/zod/ https://mtsknn.fi/blog/tests-from-user-perspective/ https://mtsknn.fi/blog/tfa-stands-for-the-featured-article/ https://mtsknn.fi/blog/toggleable-react-state/ https://mtsknn.fi/blog/tongue-position/ https://mtsknn.fi/blog/tricky-email-aliases/ https://mtsknn.fi/blog/tricky-mailto-links/ https://mtsknn.fi/blog/ts-param-props/ https://mtsknn.fi/blog/two-types-of-skills-and-two-types-of-learning/ https://mtsknn.fi/blog/type-safer-node-cache/ https://mtsknn.fi/blog/ublock-origin-style-operator/ https://mtsknn.fi/blog/uncontrolled-form-inputs-in-react/ https://mtsknn.fi/blog/unreplied/ https://mtsknn.fi/blog/updating-react-context/ https://mtsknn.fi/blog/using-non-default-locales-with-tolocalestring-in-nodejs/ https://mtsknn.fi/blog/video-games-2023/ https://mtsknn.fi/blog/visual-mnemonic-for-array-sorting/ https://mtsknn.fi/blog/when-to-use-the-xmlns-and-version-svg-attributes/ https://mtsknn.fi/blog/why-compose-is-right-to-left/ https://mtsknn.fi/blog/yarn-install-failing/ https://mtsknn.fi/blog/youtube-still-image-bookmarklet/ https://mtsknn.fi/blog/youtube-transcript-tool/ https://mtsknn.fi/blog/zod-object-strict/ https://mtsknn.fi/feeds/ https://mtsknn.fi/projects/ https://mtsknn.fi/projects/anagram-name-generator/ https://mtsknn.fi/projects/koodikrapula/ https://mtsknn.fi/projects/masters-thesis/