corpus.blog
Most cited
Talked about
Blogs
41554 blogs · [ { "id": "01a087aa-490b-7036-bd0c-1cab1309087b", "title": "`position: fixed` breaks if any of its ancestors uses `transform`", "url": "https://mtsknn.fi/blog/breaking-css-position-fixed/", "published_at": "2021-04-24T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab13a5f20b", "title": "JavaScript functions have a `length` property", "url": "https://mtsknn.fi/blog/js-fn-length/", "published_at": "2021-04-17T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab148afd45", "title": "Different logics behind heights and widths in CSS", "url": "https://mtsknn.fi/blog/css-height-and-width-logics/", "published_at": "2021-04-17T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab151d987d", "title": "Block vs inline directions in CSS", "url": "https://mtsknn.fi/blog/css-block-vs-inline/", "published_at": "2021-04-10T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab1565ddc7", "title": "Updating React context outside of a component", "url": "https://mtsknn.fi/blog/updating-react-context/", "published_at": "2021-04-03T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab1599f19d", "title": "Excel stores time durations as days", "url": "https://mtsknn.fi/blog/excel-durations/", "published_at": "2021-04-03T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab16559d96", "title": "\"Blocked plug-in\" error in Safari when opening a PDF file", "url": "https://mtsknn.fi/blog/safari-pdf-error/", "published_at": "2021-03-20T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab175577af", "title": "Broken CSS-animated SVG files in Safari and iOS Safari", "url": "https://mtsknn.fi/blog/safari-broken-svg/", "published_at": "2021-03-20T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab176e7ba4", "title": "Firefox DevTools can explain why some CSS styles have no effect", "url": "https://mtsknn.fi/blog/firefox-devtools-inactive-css/", "published_at": "2021-03-20T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab17bc93df", "title": "4+ types of documentation", "url": "https://mtsknn.fi/blog/4-types-of-documentation/", "published_at": "2021-03-20T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab18159f16", "title": "Turning constructor params into class props in TypeScript", "url": "https://mtsknn.fi/blog/ts-param-props/", "published_at": "2021-03-13T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab18cdb325", "title": "Cool way to check for leap years in JavaScript", "url": "https://mtsknn.fi/blog/js-leap-year/", "published_at": "2021-03-13T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab1950aa4d", "title": "Cleaner unit test mocking in C# with NSubstitute", "url": "https://mtsknn.fi/blog/csharp-nsubstitute/", "published_at": "2021-03-13T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab1a286865", "title": "Cleaner unit test assertions in C# with Fluent Assertions", "url": "https://mtsknn.fi/blog/csharp-fluent-assertions/", "published_at": "2021-03-13T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab1b01a026", "title": "How to disable ImageProcessor's upscaling feature", "url": "https://mtsknn.fi/blog/how-to-disable-imageprocessors-upscaling-feature/", "published_at": "2021-03-10T09:00:00+00:00" }, { "id": "01a087aa-490b-7036-bd0c-1cab1b489d94", "title": "My notes on two nice .NET refactoring videos", "url": "https://mtsknn.fi/blog/dotnet-refactoring/", "published_at": "2021-03-06T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1c9312ac0", "title": "Smoother CSS animations with the `will-change` property", "url": "https://mtsknn.fi/blog/css-will-change/", "published_at": "2021-03-06T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1c93a8434", "title": "CSS: `display: flow-root` is better than the clearfix hack", "url": "https://mtsknn.fi/blog/css-flow-root/", "published_at": "2021-03-06T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1c9a9ba47", "title": "Action-driven CSS animations", "url": "https://mtsknn.fi/blog/action-driven-css-animations/", "published_at": "2021-03-06T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1c9e58f7e", "title": "Casting in C#: cast expression vs `as` and `is` operators", "url": "https://mtsknn.fi/blog/casting-in-csharp-cast-expression-vs-as-and-is-operators/", "published_at": "2021-03-03T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1ca5ea9a5", "title": "Name front-end test cases from user perspective", "url": "https://mtsknn.fi/blog/tests-from-user-perspective/", "published_at": "2021-02-27T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1cb567ffc", "title": "Episerver + AutoMapper is a confusing combo", "url": "https://mtsknn.fi/blog/episerver-automapper/", "published_at": "2021-02-27T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1cc19d2d2", "title": "Prefer accessible queries with (React) Testing Library", "url": "https://mtsknn.fi/blog/accessible-test-queries/", "published_at": "2021-02-27T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1ccdf113d", "title": "Assume vs presume in English", "url": "https://mtsknn.fi/blog/assume-vs-presume-in-english/", "published_at": "2021-02-25T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1cce65cda", "title": "How to quickly count (source) lines of code using `npx cloc`", "url": "https://mtsknn.fi/blog/how-to-quickly-count-source-lines-of-code-using-npx-cloc/", "published_at": "2021-02-24T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1cd8e1099", "title": "Excluding your own mobile browser visits from Plausible Analytics", "url": "https://mtsknn.fi/blog/how-to-exclude-your-own-mobile-browser-visits-from-plausible-analytics/", "published_at": "2021-02-17T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1ce132604", "title": "How to get component's HTML without mounting in Mithril.js", "url": "https://mtsknn.fi/blog/how-to-get-components-html-without-mounting-in-mithriljs/", "published_at": "2021-02-10T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1ce7fda81", "title": "Coding SVG icons by hand", "url": "https://mtsknn.fi/blog/coding-svg-icons-by-hand/", "published_at": "2021-02-05T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1cf5ba57c", "title": "How to debounce events in Mithril.js", "url": "https://mtsknn.fi/blog/how-to-debounce-events-in-mithriljs/", "published_at": "2021-02-04T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1cf68bfa6", "title": "How to nest selectors in Mithril.js for extra brevity", "url": "https://mtsknn.fi/blog/how-to-nest-selectors-in-mithriljs-for-extra-brevity/", "published_at": "2021-02-02T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1cf7ebcce", "title": "Lazy and greedy quantifiers in regular expressions", "url": "https://mtsknn.fi/blog/lazy-and-greedy-quantifiers-in-regex/", "published_at": "2021-01-29T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d035661a", "title": "Formatting lists with JavaScript's `Intl.ListFormat`", "url": "https://mtsknn.fi/blog/formatting-lists-in-js/", "published_at": "2021-01-29T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d0deb9cf", "title": "Episerver + TinyMCE + React = uh oh!", "url": "https://mtsknn.fi/blog/episerver-tinymce-react/", "published_at": "2021-01-29T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d117bd98", "title": "How to pretty print JSON in JavaScript", "url": "https://mtsknn.fi/blog/how-to-pretty-print-json-in-javascript/", "published_at": "2021-01-28T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d11e9164", "title": "3 ways to convert a path into cumulative segments in JavaScript", "url": "https://mtsknn.fi/blog/converting-a-path-into-cumulative-segments-in-javascript/", "published_at": "2021-01-26T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d1dea9fe", "title": "Two types of skills and two types of learning", "url": "https://mtsknn.fi/blog/two-types-of-skills-and-two-types-of-learning/", "published_at": "2021-01-22T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d1ea07ee", "title": "`new Date()` and `Date.parse()` are bad at parsing dates", "url": "https://mtsknn.fi/blog/javascripts-date-constructor-is-bad-at-parsing-dates/", "published_at": "2021-01-22T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d21581ae", "title": "\"Illegal invocation\" errors in JavaScript", "url": "https://mtsknn.fi/blog/illegal-invocations-in-js/", "published_at": "2021-01-22T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d2af6d6a", "title": "Dynamic tag names in Pug", "url": "https://mtsknn.fi/blog/dynamic-tag-names-in-pug/", "published_at": "2021-01-22T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d3464e8c", "title": "Mnemonic for `array.shift()` vs `array.unshift()` in JavaScript", "url": "https://mtsknn.fi/blog/mnemonic-for-array-shift-vs-array-unshift-in-javascript/", "published_at": "2021-01-21T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d3ce8423", "title": "Using non-default locales with `toLocaleString()` in Node.js", "url": "https://mtsknn.fi/blog/using-non-default-locales-with-tolocalestring-in-nodejs/", "published_at": "2021-01-15T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d496f8f3", "title": "My new microphone: RØDE Procaster", "url": "https://mtsknn.fi/blog/my-new-microphone-rode-procaster/", "published_at": "2021-01-15T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d5537644", "title": "Locality of Behavior / Co-location", "url": "https://mtsknn.fi/blog/locality-of-behavior-and-co-location/", "published_at": "2021-01-15T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d645291a", "title": "Calculating week numbers in JS is surprisingly complex", "url": "https://mtsknn.fi/blog/calculating-week-numbers-in-js-is-surprisingly-complex/", "published_at": "2021-01-15T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d730c941", "title": "How to do overlapping matches with regular expressions", "url": "https://mtsknn.fi/blog/how-to-do-overlapping-matches-with-regular-expressions/", "published_at": "2021-01-13T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d811980c", "title": "`fn.apply()` vs `fn.call()` in JavaScript + better alternative", "url": "https://mtsknn.fi/blog/fn-apply-vs-fn-call-in-javascript-better-alternative/", "published_at": "2021-01-11T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d8d74822", "title": "When to use the `xmlns` and `version` SVG attributes", "url": "https://mtsknn.fi/blog/when-to-use-the-xmlns-and-version-svg-attributes/", "published_at": "2021-01-08T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d8ecc93a", "title": "Uncontrolled form inputs in React", "url": "https://mtsknn.fi/blog/uncontrolled-form-inputs-in-react/", "published_at": "2021-01-08T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1d9726014", "title": "My notes on \"Tail Call Optimization: The Musical!\"", "url": "https://mtsknn.fi/blog/notes-on-tail-call-optimization-the-musical/", "published_at": "2021-01-08T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1da61fbde", "title": "How to sort `package.json` automatically", "url": "https://mtsknn.fi/blog/how-to-sort-package-json-automatically/", "published_at": "2021-01-06T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1da8d30a5", "title": "How to force push in Git with style (and some safety)", "url": "https://mtsknn.fi/blog/how-to-force-push-in-git-with-style-and-some-safety/", "published_at": "2021-01-04T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1db5ba145", "title": "How to undo the last / previous / most recent commit in Git", "url": "https://mtsknn.fi/blog/how-to-undo-the-last-previous-most-recent-commit-in-git/", "published_at": "2021-01-02T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1dc03a5b3", "title": "How to chunk an array in JavaScript", "url": "https://mtsknn.fi/blog/how-to-chunk-an-array-in-javascript/", "published_at": "2021-01-01T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1dcc017c0", "title": "How to bypass Episerver's Content Delivery API when doing Ajax requests", "url": "https://mtsknn.fi/blog/how-to-bypass-episervers-content-delivery-api-when-doing-ajax-requests/", "published_at": "2020-12-23T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1dd904603", "title": "TFA stands for \"The Featured Article\"", "url": "https://mtsknn.fi/blog/tfa-stands-for-the-featured-article/", "published_at": "2020-12-01T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1de85ebf5", "title": "RFC 2119 in a nutshell", "url": "https://mtsknn.fi/blog/rfc-2119-in-a-nutshell/", "published_at": "2020-11-17T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1de955438", "title": "Hyperscript: hyperior alternative to JSX", "url": "https://mtsknn.fi/blog/hyperscript-hyperior-alternative-to-jsx/", "published_at": "2020-11-03T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1df0243a0", "title": "`contenteditable` + `::first-letter` + Chrome = buggy combo", "url": "https://mtsknn.fi/blog/contenteditable-first-letter-chrome-buggy-combo/", "published_at": "2020-10-13T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1df2109ba", "title": "How to change Modified date programmatically in Episerver", "url": "https://mtsknn.fi/blog/how-to-change-modified-date-programmatically-in-episerver/", "published_at": "2020-10-08T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1df3742e4", "title": "Switch statements: `default` doesn't have to be the last case", "url": "https://mtsknn.fi/blog/switch-statements-default-doesnt-have-to-be-the-last-case/", "published_at": "2020-10-03T09:00:00+00:00" }, { "id": "01a087aa-490c-7010-8aaa-d1b1dfa5684a", "title": "Mnemonic for Markdown's link syntax (and image syntax)", "url": "https://mtsknn.fi/blog/how-to-remember-markdowns-link-syntax/", "published_at": "2020-09-28T09:00:00+00:00" } ] posts
Claim your blog
Back to mtsknn.fi
Blog · corpus.blog/blogs/mtsknn.fi/posts
mtsknn.fi
mtsknn.fi
2021
`position: fixed` breaks if any of its ancestors uses `transform`
original ↗
24 Apr 2021
JavaScript functions have a `length` property
original ↗
17 Apr 2021
Different logics behind heights and widths in CSS
original ↗
17 Apr 2021
Block vs inline directions in CSS
original ↗
10 Apr 2021
Updating React context outside of a component
original ↗
3 Apr 2021
Excel stores time durations as days
original ↗
3 Apr 2021
"Blocked plug-in" error in Safari when opening a PDF file
original ↗
20 Mar 2021
Broken CSS-animated SVG files in Safari and iOS Safari
original ↗
20 Mar 2021
Firefox DevTools can explain why some CSS styles have no effect
original ↗
20 Mar 2021
4+ types of documentation
original ↗
20 Mar 2021
Turning constructor params into class props in TypeScript
original ↗
13 Mar 2021
Cool way to check for leap years in JavaScript
original ↗
13 Mar 2021
Cleaner unit test mocking in C# with NSubstitute
original ↗
13 Mar 2021
Cleaner unit test assertions in C# with Fluent Assertions
original ↗
13 Mar 2021
How to disable ImageProcessor's upscaling feature
original ↗
10 Mar 2021
My notes on two nice .NET refactoring videos
original ↗
6 Mar 2021
Smoother CSS animations with the `will-change` property
original ↗
6 Mar 2021
CSS: `display: flow-root` is better than the clearfix hack
original ↗
6 Mar 2021
Action-driven CSS animations
original ↗
6 Mar 2021
Casting in C#: cast expression vs `as` and `is` operators
original ↗
3 Mar 2021
Name front-end test cases from user perspective
original ↗
27 Feb 2021
Episerver + AutoMapper is a confusing combo
original ↗
27 Feb 2021
Prefer accessible queries with (React) Testing Library
original ↗
27 Feb 2021
Assume vs presume in English
original ↗
25 Feb 2021
How to quickly count (source) lines of code using `npx cloc`
original ↗
24 Feb 2021
Excluding your own mobile browser visits from Plausible Analytics
original ↗
17 Feb 2021
How to get component's HTML without mounting in Mithril.js
original ↗
10 Feb 2021
Coding SVG icons by hand
original ↗
5 Feb 2021
How to debounce events in Mithril.js
original ↗
4 Feb 2021
How to nest selectors in Mithril.js for extra brevity
original ↗
2 Feb 2021
Lazy and greedy quantifiers in regular expressions
original ↗
29 Jan 2021
Formatting lists with JavaScript's `Intl.ListFormat`
original ↗
29 Jan 2021
Episerver + TinyMCE + React = uh oh!
original ↗
29 Jan 2021
How to pretty print JSON in JavaScript
original ↗
28 Jan 2021
3 ways to convert a path into cumulative segments in JavaScript
original ↗
26 Jan 2021
Two types of skills and two types of learning
original ↗
22 Jan 2021
`new Date()` and `Date.parse()` are bad at parsing dates
original ↗
22 Jan 2021
"Illegal invocation" errors in JavaScript
original ↗
22 Jan 2021
Dynamic tag names in Pug
original ↗
22 Jan 2021
Mnemonic for `array.shift()` vs `array.unshift()` in JavaScript
original ↗
21 Jan 2021
Using non-default locales with `toLocaleString()` in Node.js
original ↗
15 Jan 2021
My new microphone: RØDE Procaster
original ↗
15 Jan 2021
Locality of Behavior / Co-location
original ↗
15 Jan 2021
Calculating week numbers in JS is surprisingly complex
original ↗
15 Jan 2021
How to do overlapping matches with regular expressions
original ↗
13 Jan 2021
`fn.apply()` vs `fn.call()` in JavaScript + better alternative
original ↗
11 Jan 2021
When to use the `xmlns` and `version` SVG attributes
original ↗
8 Jan 2021
Uncontrolled form inputs in React
original ↗
8 Jan 2021
My notes on "Tail Call Optimization: The Musical!"
original ↗
8 Jan 2021
How to sort `package.json` automatically
original ↗
6 Jan 2021
How to force push in Git with style (and some safety)
original ↗
4 Jan 2021
How to undo the last / previous / most recent commit in Git
original ↗
2 Jan 2021
How to chunk an array in JavaScript
original ↗
1 Jan 2021
2020
How to bypass Episerver's Content Delivery API when doing Ajax requests
original ↗
23 Dec 2020
TFA stands for "The Featured Article"
original ↗
1 Dec 2020
RFC 2119 in a nutshell
original ↗
17 Nov 2020
Hyperscript: hyperior alternative to JSX
original ↗
3 Nov 2020
`contenteditable` + `::first-letter` + Chrome = buggy combo
original ↗
13 Oct 2020
How to change Modified date programmatically in Episerver
original ↗
8 Oct 2020
Switch statements: `default` doesn't have to be the last case
original ↗
3 Oct 2020
Mnemonic for Markdown's link syntax (and image syntax)
original ↗
28 Sept 2020
Previous