56,966 blogs · [ { "id": "01a0da03-a899-706d-87e9-b733c729ed94", "title": "How I refactor code with an LLM", "url": "https://mortoray.com/how-i-refactor-code-with-an-llm/", "published_at": "2026-09-24T05:48:49+00:00" }, { "id": "01a087a8-fdb7-704b-b62d-47f850337315", "title": "Quality or collapse in the age of LLM coding", "url": "https://mortoray.com/quality-or-collapse-in-the-age-of-llm-coding/", "published_at": "2026-02-16T18:36:54+00:00" }, { "id": "01a087a8-fdb8-724b-aa55-c224b6db939e", "title": "Modify GameObject Values with Unity AnimationMode", "url": "https://mortoray.com/modify-game-object-values-with-unity-animation-mode/", "published_at": "2026-02-15T14:10:11+00:00" }, { "id": "01a087a8-fdb9-73fa-943d-636d24fe4751", "title": "Why language interpreters and virtual machines are slow", "url": "https://mortoray.com/why-language-interpreters-are-slow/", "published_at": "2026-01-07T20:20:32+00:00" }, { "id": "01a087a8-fdb9-73fa-943d-636d2513d169", "title": "React Hooks Demystified: The mechanics of useState", "url": "https://mortoray.com/react-hooks-demystified-the-mechanics-of-usestate/", "published_at": "2025-09-25T14:40:46+00:00" }, { "id": "01a087a8-fdb9-73fa-943d-636d25350c52", "title": "Universal id to name mapping for the frontend and backend", "url": "https://mortoray.com/universal-id-to-name-mapping-for-frontend-and-backend/", "published_at": "2025-06-29T09:06:02+00:00" }, { "id": "01a087a8-fdb9-73fa-943d-636d26251ce0", "title": "Loading a boostrap scene while testing in the Unity editor", "url": "https://mortoray.com/loading-bootstrap-scene-in-unity-editor/", "published_at": "2025-06-01T09:37:41+00:00" }, { "id": "01a087a8-fdb9-73fa-943d-636d2668986d", "title": "Structured loading: Universal data access and interaction", "url": "https://mortoray.com/structured-loading-universal-data-access-and-interaction/", "published_at": "2025-03-07T07:49:31+00:00" }, { "id": "01a087a8-fdb9-73fa-943d-636d27016888", "title": "Unwrapping intermediate representations", "url": "https://mortoray.com/unwrapping-intermediate-representations/", "published_at": "2025-03-02T13:28:59+00:00" }, { "id": "01a087a8-fdb9-73fa-943d-636d27d9ef28", "title": "An exponential probability queue", "url": "https://mortoray.com/an-exponential-probability-queue/", "published_at": "2025-01-12T10:43:02+00:00" }, { "id": "01a087a8-fdb9-73fa-943d-636d2849abf5", "title": "Shared Data Loading Across Components", "url": "https://mortoray.com/shared-data-loading-across-components/", "published_at": "2024-07-24T05:12:09+00:00" }, { "id": "01a0bb96-d2a6-716e-bef6-ff6e53556e17", "title": "The many faces of undefined in JavaScript", "url": "https://mortoray.com/the-many-faces-of-undefined-in-javascript/", "published_at": "2024-06-26T05:01:28+00:00" }, { "id": "01a0bb96-d2a6-716e-bef6-ff6e53598df2", "title": "Why do we use intermediate representations / languages?", "url": "https://mortoray.com/why-we-use-intermediate-representations/", "published_at": "2024-06-16T08:11:15+00:00" }, { "id": "01a0bb96-d2a6-716e-bef6-ff6e53ce2a78", "title": "Finding connected cities in a road network", "url": "https://mortoray.com/finding-connected-cities-in-a-road-network/", "published_at": "2024-06-09T07:35:40+00:00" }, { "id": "01a0bb96-d2a6-716e-bef6-ff6e53e2fc16", "title": "How “AI” can help me as a programmer", "url": "https://mortoray.com/how-ai-can-help-me-as-a-programmer/", "published_at": "2023-10-16T04:59:41+00:00" }, { "id": "01a0bb96-d2a6-716e-bef6-ff6e54500326", "title": "What is Runtime Type Information?", "url": "https://mortoray.com/what-is-runtime-type-information/", "published_at": "2023-09-11T16:27:52+00:00" }, { "id": "01a0bb96-d2a6-716e-bef6-ff6e54af64ea", "title": "What is Structural Typing?", "url": "https://mortoray.com/what-is-structural-typing/", "published_at": "2023-08-25T05:53:00+00:00" }, { "id": "01a0bb96-d2a6-716e-bef6-ff6e54e817e9", "title": "Sharing data types on a multi-language project", "url": "https://mortoray.com/sharing-data-types-on-a-multilanguage-project/", "published_at": "2023-08-14T18:34:23+00:00" }, { "id": "01a0bb96-d2a6-716e-bef6-ff6e55182f27", "title": "Writing a binairo generator", "url": "https://mortoray.com/writing-a-binairo-generator/", "published_at": "2023-05-06T15:08:08+00:00" }, { "id": "01a0bb96-d2a6-716e-bef6-ff6e55f638cf", "title": "Why UI layout calculations are slow", "url": "https://mortoray.com/why_ui_layout_calculations_are_slow/", "published_at": "2023-02-03T09:03:45+00:00" }, { "id": "01a0bb96-d2a6-716e-bef6-ff6e56adc67a", "title": "My disappointment with Unity’s UI Toolkit", "url": "https://mortoray.com/my-disappointment-with-unity-uitoolkit/", "published_at": "2023-01-18T06:31:37+00:00" }, { "id": "01a0bb9f-9335-704e-a918-fa54d84512db", "title": "Finding neighbours in a hex map", "url": "https://mortoray.com/finding-neighbours-in-a-hex-map/", "published_at": "2023-01-12T06:35:02+00:00" }, { "id": "01a0bb9f-9335-704e-a918-fa54d90221d4", "title": "A mini-redux in React", "url": "https://mortoray.com/a-mini-redux-in-react/", "published_at": "2022-12-22T16:38:08+00:00" }, { "id": "01a0bb9f-9335-704e-a918-fa54d98ed75d", "title": "Keeping my monitor brightness after power save and switch", "url": "https://mortoray.com/keeping-my-monitor-brightness-after-power-save-and-switch/", "published_at": "2022-11-30T06:53:58+00:00" }, { "id": "01a0bb9f-9335-704e-a918-fa54da02e308", "title": "Building a Halloween riddle game", "url": "https://mortoray.com/building-a-halloween-riddle-game/", "published_at": "2022-10-26T18:08:30+00:00" }, { "id": "01a0bb9f-9335-704e-a918-fa54da1a4d8d", "title": "System Architecture for Edaqa’s Room", "url": "https://mortoray.com/system-architecture-for-edaqas-room/", "published_at": "2021-04-15T18:21:59+00:00" }, { "id": "01a0bb9f-9335-704e-a918-fa54dadb3811", "title": "Highly inefficient invisible animations (CSS/Firefox/Chrome/React)", "url": "https://mortoray.com/highly-inefficient-invisible-animations-css-firefox-chrome-react/", "published_at": "2021-01-16T15:54:33+00:00" }, { "id": "01a0bb9f-9335-704e-a918-fa54dbd7bef2", "title": "High-Throughput Game Message Server with Python websockets", "url": "https://mortoray.com/high-throughput-game-message-server-with-python-websockets/", "published_at": "2020-12-05T22:08:01+00:00" }, { "id": "01a0bb9f-9335-704e-a918-fa54dc7a4991", "title": "What I look for while play-testing", "url": "https://mortoray.com/what-i-look-for-while-play-testing/", "published_at": "2020-11-23T15:08:40+00:00" }, { "id": "01a0bb9f-9335-704e-a918-fa54dd204525", "title": "How to write a custom selector in React", "url": "https://mortoray.com/how-to-write-a-custom-selector-in-react/", "published_at": "2020-08-16T18:24:22+00:00" }, { "id": "01a0bb9f-9335-704e-a918-fa54dde8afdf", "title": "I Wrote an Online Escape Game", "url": "https://mortoray.com/i-wrote-an-online-escape-game/", "published_at": "2020-07-31T18:24:51+00:00" }, { "id": "01a0bba5-5a00-7145-938f-71c7618b67f0", "title": "Your 30th Year in Code", "url": "https://mortoray.com/your-30th-year-in-code/", "published_at": "2019-08-02T21:06:54+00:00" }, { "id": "01a0bba5-5a00-7145-938f-71c76236bb93", "title": "Why switch is better than if-else", "url": "https://mortoray.com/why-switch-is-better-than-if-else/", "published_at": "2019-06-29T07:07:24+00:00" }, { "id": "01a0bba5-5a00-7145-938f-71c7626f0d3e", "title": "Fluid layout animation: Invalidation and caching", "url": "https://mortoray.com/fluid-layout-animation-invalidation-and-caching/", "published_at": "2019-06-24T06:53:45+00:00" }, { "id": "01a0bba5-5a00-7145-938f-71c7627562aa", "title": "Creating a custom author box on WordPress", "url": "https://mortoray.com/creating-a-custom-author-box-on-wordpress/", "published_at": "2019-06-13T17:03:46+00:00" }, { "id": "01a0bba5-5a00-7145-938f-71c7633b5411", "title": "A Failed Experiment with Python Type Annotations", "url": "https://mortoray.com/a-failed-experiment-with-python-type-annotations/", "published_at": "2019-06-11T08:44:58+00:00" }, { "id": "01a0bba5-5a00-7145-938f-71c7643353e8", "title": "A Parade of Web Tech", "url": "https://mortoray.com/a-parade-of-web-tech/", "published_at": "2019-05-12T14:41:39+00:00" }, { "id": "01a0bba5-5a00-7145-938f-71c76479cc4f", "title": "Terrible interview question: Swap variables without a temporary", "url": "https://mortoray.com/terrible-interview-question-swap-variables-without-a-temporary/", "published_at": "2019-04-25T13:38:09+00:00" }, { "id": "01a0bba5-5a00-7145-938f-71c7649110ca", "title": "A programmer’s introduction to user portraits", "url": "https://mortoray.com/a-programmers-introduction-to-user-portraits/", "published_at": "2019-03-28T11:35:39+00:00" }, { "id": "01a0bba5-5a00-7145-938f-71c764e76356", "title": "The amortized cost of vector insert is 3", "url": "https://mortoray.com/the-amortized-cost-of-vector-insert-is-3/", "published_at": "2019-03-26T09:05:02+00:00" }, { "id": "01a0bba5-5a00-7145-938f-71c7656b766e", "title": "Lessons learned from recording my first class", "url": "https://mortoray.com/lessons-learned-from-recording-my-first-class/", "published_at": "2019-03-22T12:02:15+00:00" }, { "id": "01a0bbaa-6838-7194-9224-6d6a5d067c9f", "title": "The Internet Lottery™ for content creators", "url": "https://mortoray.com/the-internet-lottery-for-content-creators/", "published_at": "2019-03-13T13:41:32+00:00" }, { "id": "01a0bbaa-6838-7194-9224-6d6a5d5d9e6d", "title": "Invented Here Syndrome", "url": "https://mortoray.com/invented-here-syndrome/", "published_at": "2019-03-06T07:49:41+00:00" }, { "id": "01a0bbaa-6838-7194-9224-6d6a5e550e98", "title": "Essential code for lists and vectors in an interview", "url": "https://mortoray.com/essential-code-for-lists-and-vectors-in-an-interview/", "published_at": "2019-03-01T10:47:40+00:00" }, { "id": "01a0bbaa-6838-7194-9224-6d6a5efd510d", "title": "Stop waving the wand of magic numbers", "url": "https://mortoray.com/stop-waving-the-wand-of-magic-numbers/", "published_at": "2019-02-25T09:22:01+00:00" }, { "id": "01a0bbaa-6838-7194-9224-6d6a5fc30e42", "title": "How does a mutex work? What does it cost?", "url": "https://mortoray.com/how-does-a-mutex-work-what-does-it-cost/", "published_at": "2019-02-20T10:13:56+00:00" }, { "id": "01a0bbaa-6838-7194-9224-6d6a5fdcc41e", "title": "How to fail a programming interview", "url": "https://mortoray.com/how-to-fail-a-programming-interview/", "published_at": "2019-02-19T09:50:24+00:00" }, { "id": "01a0bbaa-6838-7194-9224-6d6a60b5f93f", "title": "Of course HTML is a programming language", "url": "https://mortoray.com/of-course-html-is-a-programming-language/", "published_at": "2019-02-11T12:34:11+00:00" }, { "id": "01a0bbaa-6838-7194-9224-6d6a60bcb203", "title": "The User", "url": "https://mortoray.com/the-user/", "published_at": "2019-02-05T08:25:03+00:00" }, { "id": "01a0bbaa-6838-7194-9224-6d6a6108316b", "title": "Would you program a human?", "url": "https://mortoray.com/would-you-program-a-human/", "published_at": "2019-01-29T20:56:24+00:00" }, { "id": "01a0bbaa-6838-7194-9224-6d6a619991d1", "title": "We don’t need a ternary operator", "url": "https://mortoray.com/we-dont-need-a-ternary-operator/", "published_at": "2018-09-05T14:07:52+00:00" }, { "id": "01a0bbaf-66a5-721f-baa2-8342f31a0981", "title": "ELI5: The filter, map, zip, and reduce operations", "url": "https://mortoray.com/eli5-the-filter-map-zip-and-reduce-operations/", "published_at": "2018-08-27T22:50:28+00:00" }, { "id": "01a0bbaf-66a5-721f-baa2-8342f3f621a9", "title": "Sadly, I must say goodbye to Leaf (my programming language)", "url": "https://mortoray.com/sadly-i-must-say-goodbye-to-leaf-my-programming-language/", "published_at": "2018-08-07T13:19:19+00:00" }, { "id": "01a0bbaf-66a5-721f-baa2-8342f41711af", "title": "Creating a local screen overlay for streaming (OBS, Linux)", "url": "https://mortoray.com/creating-a-local-screen-overlay-for-streaming-obs-linux/", "published_at": "2018-08-04T10:25:45+00:00" }, { "id": "01a0bbaf-66a5-721f-baa2-8342f45c6f89", "title": "ELI5: Algorithmic time complexity", "url": "https://mortoray.com/eli5-algorithmic-time-complexity/", "published_at": "2018-07-26T13:34:38+00:00" }, { "id": "01a0bbaf-66a5-721f-baa2-8342f51e3d37", "title": "I don’t know how to create a website", "url": "https://mortoray.com/i-dont-know-how-to-create-a-website/", "published_at": "2018-07-09T06:55:20+00:00" }, { "id": "01a0bbaf-66a5-721f-baa2-8342f603ed4f", "title": "Keeping tabs on shady internet authorities — What is Certificate Transparency?", "url": "https://mortoray.com/keeping-tabs-on-shady-internet-authorities-what-is-certificate-transparency/", "published_at": "2018-06-04T05:52:19+00:00" }, { "id": "01a0bbaf-66a5-721f-baa2-8342f61f9e2e", "title": "How I use ‘variant’ in the Leaf compiler", "url": "https://mortoray.com/how-i-use-variant-in-the-leaf-compiler/", "published_at": "2018-05-25T05:21:09+00:00" }, { "id": "01a0bbaf-66a5-721f-baa2-8342f690c892", "title": "Core Layout Protocol API (UI Engine)", "url": "https://mortoray.com/core-layout-protocol-api-ui-engine/", "published_at": "2018-05-09T13:05:36+00:00" }, { "id": "01a0bbaf-66a5-721f-baa2-8342f7722cf2", "title": "Fitting an image to its element frame", "url": "https://mortoray.com/fitting-an-image-to-its-element-frame/", "published_at": "2018-04-11T08:21:43+00:00" }, { "id": "01a0bbaf-66a5-721f-baa2-8342f786a2af", "title": "How I write my blog?", "url": "https://mortoray.com/how-i-write-my-blog/", "published_at": "2018-04-06T08:53:15+00:00" }, { "id": "01a0bbb4-44ac-7367-a5b3-de3dca0e8b50", "title": "What is a “box model”? (UI Element layout)", "url": "https://mortoray.com/what-is-a-box-model-ui-element-layout/", "published_at": "2018-03-29T08:13:26+00:00" }, { "id": "01a0bbb4-44ac-7367-a5b3-de3dca5218a9", "title": "What is responsive layout?", "url": "https://mortoray.com/what-is-responsive-layout/", "published_at": "2018-03-26T08:17:08+00:00" }, { "id": "01a0bbb4-44ac-7367-a5b3-de3dcaa68d71", "title": "UI Engine Layout: Additive, Partitioned and Layered", "url": "https://mortoray.com/ui-engine-layout-additive-partitioned-and-layered/", "published_at": "2018-03-22T10:52:55+00:00" }, { "id": "01a0bbb4-44ac-7367-a5b3-de3dcb6467dc", "title": "UI Layout: Working with Pixels, Points and Density", "url": "https://mortoray.com/ui-layout-working-with-pixels-points-and-density/", "published_at": "2018-03-19T11:26:03+00:00" }, { "id": "01a0bbb4-44ac-7367-a5b3-de3dcc0266ee", "title": "Dissecting my Rusty Superhero Bots — The code review", "url": "https://mortoray.com/dissecting-my-rusty-superhero-bots-the-code-review/", "published_at": "2018-03-16T08:50:11+00:00" }, { "id": "01a0bbb4-44ac-7367-a5b3-de3dccba34d0", "title": "Dissecting my Rusty Superhero Bots — A contest post-mortem", "url": "https://mortoray.com/dissecting-my-rusty-superhero-bots-a-contest-post-mortem/", "published_at": "2018-03-16T08:40:53+00:00" }, { "id": "01a0bbb4-44ac-7367-a5b3-de3dccd1279f", "title": "UI Layout: Natural versus dependent size", "url": "https://mortoray.com/ui-layout-natural-versus-dependent-size/", "published_at": "2018-03-15T09:25:52+00:00" }, { "id": "01a0bbb4-44ac-7367-a5b3-de3dcd256162", "title": "Drawing a bitmap in the window (Leaf-SDL #2)", "url": "https://mortoray.com/drawing-a-bitmap-in-the-window-leaf-sdl-2/", "published_at": "2018-03-09T11:45:10+00:00" }, { "id": "01a0bbb4-44ac-7367-a5b3-de3dcda097f3", "title": "Fixing some vector drawing issues", "url": "https://mortoray.com/fixing-some-vector-drawing-issues/", "published_at": "2018-03-01T13:30:32+00:00" }, { "id": "01a0bbb4-44ac-7367-a5b3-de3dce2ffeae", "title": "New Game: A quest for graphics (Leaf-SDL #1)", "url": "https://mortoray.com/new-game-a-quest-for-graphics-leaf-sdl-1/", "published_at": "2018-02-28T09:20:52+00:00" }, { "id": "01a0bbb9-d7ce-7202-8179-8bc1d092f8eb", "title": "Innocent growth of technical debt", "url": "https://mortoray.com/innocent-growth-of-technical-debt/", "published_at": "2018-01-09T12:47:25+00:00" }, { "id": "01a0bbb9-d7ce-7202-8179-8bc1d0e76d08", "title": "Debugging a defect with a shared argument", "url": "https://mortoray.com/debugging-a-defect-with-a-shared-argument/", "published_at": "2018-01-06T08:33:28+00:00" }, { "id": "01a0bbb9-d7ce-7202-8179-8bc1d189cf19", "title": "Should function arguments be reassignable or mutable?", "url": "https://mortoray.com/should-function-arguments-be-reassignable-or-mutable/", "published_at": "2017-12-31T08:29:19+00:00" }, { "id": "01a0bbb9-d7ce-7202-8179-8bc1d252f7a6", "title": "Interview Question: A two-player card game", "url": "https://mortoray.com/interview-question-a-two-player-card-game/", "published_at": "2017-12-14T07:06:25+00:00" }, { "id": "01a0bbb9-d7ce-7202-8179-8bc1d3406e66", "title": "Are global variables bad?", "url": "https://mortoray.com/are-global-variables-bad/", "published_at": "2017-11-15T07:05:22+00:00" }, { "id": "01a0bbb9-d7ce-7202-8179-8bc1d4373f5c", "title": "What is a closure?", "url": "https://mortoray.com/what-is-a-closure-2/", "published_at": "2017-10-24T08:59:12+00:00" }, { "id": "01a0bbb9-d7ce-7202-8179-8bc1d447ce18", "title": "Hidden complexity in cute animal pictures", "url": "https://mortoray.com/hidden-complexity-in-cute-animal-pictures/", "published_at": "2017-10-05T05:40:19+00:00" }, { "id": "01a0bbb9-d7ce-7202-8179-8bc1d4add0d4", "title": "Adding += and friends to Leaf", "url": "https://mortoray.com/adding-and-friends-to-leaf/", "published_at": "2017-08-19T15:30:30+00:00" }, { "id": "01a0bbb9-d7ce-7202-8179-8bc1d4e2d47b", "title": "Why I’m not a fan of pair programming", "url": "https://mortoray.com/why-im-not-a-fan-of-pair-programming/", "published_at": "2017-08-11T07:22:24+00:00" }, { "id": "01a0bbb9-d7ce-7202-8179-8bc1d58f0f1e", "title": "What is reactive and stream programming?", "url": "https://mortoray.com/what-is-reactive-and-stream-programming/", "published_at": "2017-08-01T15:00:17+00:00" }, { "id": "01a0bbbe-3480-7103-bdd3-5926536b0510", "title": "Debugging a synchronous callback in loop defect", "url": "https://mortoray.com/debugging-a-synchronous-callback-in-loop-defect/", "published_at": "2017-07-26T13:09:00+00:00" }, { "id": "01a0bbbe-3480-7103-bdd3-5926537f3ea1", "title": "What is declarative programming?", "url": "https://mortoray.com/what-is-declarative-programming/", "published_at": "2017-07-14T05:34:01+00:00" }, { "id": "01a0bbbe-3480-7103-bdd3-592654198e98", "title": "Embedding a text file in C++ code (with Scons)", "url": "https://mortoray.com/embedding-a-text-file-in-c-code-with-scons/", "published_at": "2017-07-10T04:56:46+00:00" }, { "id": "01a0bbbe-3480-7103-bdd3-592654d826d8", "title": "I’m proud to be a programmer", "url": "https://mortoray.com/im-proud-to-be-a-programmer/", "published_at": "2017-07-03T08:20:59+00:00" }, { "id": "01a0bbbe-3480-7103-bdd3-59265574e4bc", "title": "What is event programming?", "url": "https://mortoray.com/what-is-event-programming/", "published_at": "2017-06-26T04:29:29+00:00" }, { "id": "01a0bbbe-3480-7103-bdd3-592655c3e44e", "title": "Do we need 3, or just 2 error types?", "url": "https://mortoray.com/do-we-need-3-or-just-2-error-types/", "published_at": "2017-06-13T06:32:35+00:00" }, { "id": "01a0bbbe-3480-7103-bdd3-59265681fc92", "title": "Writing software for a malicious world", "url": "https://mortoray.com/writing-software-for-a-malicious-world/", "published_at": "2017-05-30T07:06:46+00:00" }, { "id": "01a0bbbe-3480-7103-bdd3-592656fc1eb1", "title": "What is functional programming?", "url": "https://mortoray.com/what-is-functional-programming/", "published_at": "2017-05-25T06:07:31+00:00" }, { "id": "01a0bbbe-3480-7103-bdd3-5926572e1555", "title": "Improve quality and lower costs with assisted manual testing", "url": "https://mortoray.com/improve-testing-and-lower-costs-with-assisted-manual-testing/", "published_at": "2017-05-22T19:19:56+00:00" }, { "id": "01a0bbbe-3480-7103-bdd3-5926579b9cd7", "title": "Microsoft is absolutely at fault for WannaCry", "url": "https://mortoray.com/microsoft-is-absolutely-at-fault-for-wannacry/", "published_at": "2017-05-17T05:06:13+00:00" }, { "id": "01a0bbc2-b7f1-711c-876d-e7fe07412f92", "title": "Sorting a file: A real program in Leaf", "url": "https://mortoray.com/sorting-a-file-a-real-program-in-leaf/", "published_at": "2017-05-15T15:16:51+00:00" }, { "id": "01a0bbc2-b7f1-711c-876d-e7fe075eb04b", "title": "What is imperative programming?", "url": "https://mortoray.com/what-is-imperative-programming/", "published_at": "2017-05-10T17:58:52+00:00" }, { "id": "01a0bbc2-b7f1-711c-876d-e7fe07b6db80", "title": "Why does Amazon taunt me with surround sound?", "url": "https://mortoray.com/why-does-amazon-taunt-me-with-surround-sound/", "published_at": "2017-05-08T13:50:38+00:00" }, { "id": "01a0bbc2-b7f1-711c-876d-e7fe07dad925", "title": "Yummy UI food with keyframe animations", "url": "https://mortoray.com/yummy-ui-food-with-keyframe-animations/", "published_at": "2017-05-04T13:13:11+00:00" }, { "id": "01a0bbc2-b7f1-711c-876d-e7fe089407ee", "title": "Fix your crappy ads and I’ll stop blocking them", "url": "https://mortoray.com/fix-your-crappy-ads-and-ill-stop-blocking-them/", "published_at": "2017-05-02T12:04:32+00:00" }, { "id": "01a0bbc2-b7f1-711c-876d-e7fe08adc05d", "title": "Bravely squash or cowardly refuse: a git conundrum", "url": "https://mortoray.com/bravely-squash-or-cowardly-refuse-a-git-conundrum/", "published_at": "2017-04-25T14:11:12+00:00" }, { "id": "01a0bbc2-b7f1-711c-876d-e7fe0930c4bc", "title": "Working with types and named constructors in Leaf", "url": "https://mortoray.com/working-with-types-and-named-constructors-in-leaf/", "published_at": "2017-04-18T16:04:18+00:00" }, { "id": "01a0bbc2-b7f1-711c-876d-e7fe09561cda", "title": "Calculating pleasant stepping values for a chart", "url": "https://mortoray.com/calculating-pleasant-stepping-values-for-a-chart/", "published_at": "2017-04-12T14:15:26+00:00" }, { "id": "01a0bbc2-b7f1-711c-876d-e7fe0a1bcb13", "title": "The horribly horrible horrific horrifying horrid word horror", "url": "https://mortoray.com/the-horribly-horrible-horrific-horrifying-horrid-word-horror/", "published_at": "2017-04-10T15:54:25+00:00" } ] posts Claim your blog
Back to mortoray.com
Blog · corpus.blog/blogs/mortoray.com/posts

mortoray.com

mortoray.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017