41554 blogs · [ { "id": "01a0875f-7a96-7322-9611-175c4a5b03d5", "title": "A few ways of specifying per-theme colours in only CSS", "url": "https://chrismorgan.info/css-themed-colours", "published_at": "2026-05-16T11:05:00+00:00" }, { "id": "01a0875f-7a97-7338-8f73-c67e17f7858f", "title": "I’ve banned query strings", "url": "https://chrismorgan.info/no-query-strings", "published_at": "2026-05-08T14:30:01+00:00" }, { "id": "01a0875f-7a97-7338-8f73-c67e17f9f36f", "title": "Making my new website: under construction; poke, prod and play", "url": "https://chrismorgan.info/2026-website", "published_at": "2026-05-08T14:30:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d5821e0be1", "title": "U+: pretty Unicode code point literals for Rust", "url": "https://chrismorgan.info/blog/U+/", "published_at": "2022-04-01T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d58271341d", "title": "Don’t use the Unlicense: it’s an inferior license wrapped in an atrocious name.", "url": "https://chrismorgan.info/blog/unlicense/", "published_at": "2022-01-14T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d582799945", "title": "#[cfg_attr(…, path = …)] for platform-specific module implementations", "url": "https://chrismorgan.info/blog/rust-cfg_attr-mod-path/", "published_at": "2021-06-18T00:00:01+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d582c8ca23", "title": "make me a sandwich", "url": "https://chrismorgan.info/blog/make-me-a-sandwich/", "published_at": "2021-06-18T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d5834d8988", "title": "Using make and git diff for a simple and powerful test harness", "url": "https://chrismorgan.info/blog/make-and-git-diff-test-harness/", "published_at": "2020-05-22T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d58423cb93", "title": "<_>::v::<_>", "url": "https://chrismorgan.info/blog/rust-artwork-owl/", "published_at": "2019-08-20T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d5849d78ce", "title": "My dark theme implementation", "url": "https://chrismorgan.info/blog/dark-theme-implementation/", "published_at": "2019-08-19T00:00:01+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d58560f14e", "title": "A new website", "url": "https://chrismorgan.info/blog/2019-website/", "published_at": "2019-08-19T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d5857c1b98", "title": "Tween: a middleware library experiment", "url": "https://chrismorgan.info/blog/tween/", "published_at": "2016-06-01T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d585a677f3", "title": "Rust ownership, the hard way", "url": "https://chrismorgan.info/blog/rust-ownership-the-hard-way/", "published_at": "2015-05-12T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d585d62696", "title": "Quick tip: the #[cfg_attr] attribute", "url": "https://chrismorgan.info/blog/rust-cfg_attr/", "published_at": "2015-04-22T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d5862546e8", "title": "Why your first FizzBuzz implementation may not work: an exploration into some initially surprising but great parts of Rust (though you still may not like them)", "url": "https://chrismorgan.info/blog/rust-fizzbuzz/", "published_at": "2014-10-03T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d58677d061", "title": "Teepee design: the HTTP method", "url": "https://chrismorgan.info/blog/teepee-design-method/", "published_at": "2014-07-08T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d58681ca46", "title": "Teepee design: header representation", "url": "https://chrismorgan.info/blog/teepee-design-header-representation/", "published_at": "2014-05-10T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d587737c6c", "title": "Teepee design: Status-Line, take two", "url": "https://chrismorgan.info/blog/teepee-design-status-line-take-two/", "published_at": "2014-04-25T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d5880aa1e1", "title": "Teepee design: a careful look at the HTTP/1.1 Status-Line", "url": "https://chrismorgan.info/blog/teepee-design-status-line/", "published_at": "2014-04-25T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d588df4b6a", "title": "Blindly random (or: old stories + computers = ?)", "url": "https://chrismorgan.info/blog/blindly-random/", "published_at": "2014-04-23T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d5898af478", "title": "Introducing Teepee: the next step for rust-http", "url": "https://chrismorgan.info/blog/introducing-teepee/", "published_at": "2014-04-23T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d58a6dd299", "title": "Say “no” to import side‐effects in Python", "url": "https://chrismorgan.info/blog/say-no-to-import-side-effects-in-python/", "published_at": "2014-04-05T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d58a85c516", "title": "The tech behind my Rust docs presentation", "url": "https://chrismorgan.info/blog/rust-docs-vision-presentation-internals/", "published_at": "2013-12-19T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d58b122867", "title": "A broad vision for the Rust docs stack", "url": "https://chrismorgan.info/blog/rust-docs-vision-presentation/", "published_at": "2013-12-19T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d58b94f009", "title": "GitHub: a case study in link maintenance and 404 pages", "url": "https://chrismorgan.info/blog/github-links-case-study/", "published_at": "2013-10-04T00:00:00+00:00" }, { "id": "01a0c502-c6bb-7028-b0b8-42d58bb4d0bb", "title": "My first post, concerning the blog itself", "url": "https://chrismorgan.info/blog/first-post/", "published_at": "2013-10-02T00:00:00+00:00" } ] posts Claim your blog
Back to Chris Morgan (software developer, Bible student, &c.)
Blog · corpus.blog/blogs/chrismorgan.info/posts

Chris Morgan (software developer, Bible student, &c.)

chrismorgan.info

2026

2022

2021

2020

2019

2016

2015

2014

2013