Hacker Blogs
Work in progress: 15,409 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #2415

C

Chris Morgan

Personal blog · chrismorgan.info · on HN as chrismorganprogrammingwebphilosophy

Chris Morgan's personal blog at chrismorgan.info covers programming, web and philosophy. Since 2013, 34 different Hacker News readers have linked it 111 times, most often “Why your first FizzBuzz implementation in Rust may not work”. It is still writing: the last post was on 2026-05-16, and you can follow it by feed.

Visit the blog
111mentions?
34HN people?
2013–2026first – last linked?
Links on Hacker News per year · peak 23 in 2026

I’m a software developer by trade and a Christian by life.

The author on HN?

chrismorgan · 27,002 karma · member since 2012

https://chrismorgan.info/, me@chrismorgan.info I’m available for hire for consulting, training and mentoring in Rust, everything web, performance and more: https://chrismorgan.info/hire-me/ [ my public key: https://keybase.io/chrismorgan; my proof: https://keybase.io/chrismorgan/sigs/rEm41-0pghG3ITW8S5HeuFLA9TznvPSlg9NKgXXRXqQ ]

From their public HN profile, which links to this site.

Most-linked posts?

  1. Why your first FizzBuzz implementation in Rust may not work
    7 people · 14 mentions · first linked 2020-03-25
  2. I've Banned Query Strings
    5 people · 5 mentions · first linked 2026-05-08
  3. Rust Ownership from the Hard Way
    3 people · 3 mentions · first linked 2021-02-21
  4. Rust ownership, the hard way
    3 people · 3 mentions · first linked 2015-05-12
  5. Why your first Rust FizzBuzz implementation may not work
    3 people · 3 mentions · first linked 2014-10-12
  6. The Unlicense is an inferior license wrapped in an atrocious name
    2 people · 5 mentions · first linked 2022-03-04
  7. /
    2 people · 3 mentions · first linked 2021-08-24
  8. Font-Family Recommendations
    2 people · 2 mentions · first linked 2026-06-25
  9. Atom is better than RSS, in ways that matter
    2 people · 2 mentions · first linked 2026-08-01
  10. A few ways of specifying per-theme colours in only CSS
    2 people · 2 mentions · first linked 2026-05-16

What Hacker News says?

  1. Related to this, alpha channels can be very useful in writing a single colour that appears as different colours against known dark and light colours. For example, see the mention of #8888 in https://chrismorgan.info/blog/dark-theme-implementation/ , where that #8888 becomes effectively #bfbfbf against white, and #484848 against black.

    Comment linking /blog/dark-theme-implementation/

    on “My Current HTML Boilerplate”
  2. Submitted Using `make` and `git diff` for a simple and powerful test harness as a story · 239 points

    HN discussion
  3. Here’s an example on my site: https://chrismorgan.info/blog/rust-fizzbuzz/ That’s left-aligned (margin-left: 0; margin-right: 0) rather than centre-aligned (margin-left: auto; margin-right: auto), but it gets the point across. Headings, paragraphs, list items, &c. all get their widths constrained (deliberately to different points, in my case, which wouldn’t work if you were going centre-aligned), but figures can be…

    Comment linking /blog/rust-fizzbuzz/

    on “Full-Bleed Layout Using CSS Grid”
  4. Submitted Why your first Rust FizzBuzz implementation may not work as a story · 183 points

    HN discussion
  5. My own website has a dark theme if you have @media (prefers-color-scheme: dark), or if JavaScript is enabled, there’s a switcher in the top right hand corner. Note however that I use Triplicate T3 in the dark theme (300/700 for regular/bold), compared with Triplicate T4 in the light theme (400/700). You can fiddle with the @font-face declarations in dev tools (the font change happens in 2019b-dark.css) if you want t…

    Comment linking /blog/rust-fizzbuzz/

    on “Dev Fonts”
  6. Submitted Say “no” to import side‐effects in Python as a story · 148 points

    HN discussion
  7. I agree with you and do consider the default l glyph to be a poor choice, insufficiently distinct from 1. Fortunately, the Code variant of the font goes for a curved tail on l, so that it’s sufficiently distinct. (However, if you try to enable both the Code and Poly features—Poly meaning “don’t be a true monospace, make characters like l and i a little narrower and characters like m a little wider”—you end up with a…

    Comment linking /blog/make-and-git-diff-test-harness/

    on “Dev Fonts”
  8. Submitted The Unlicense is an inferior license wrapped in an atrocious name as a story · 123 points

    HN discussion
  9. There are already a number of libraries and frameworks that implement an HTTP setver in Rust, though things seem to be coalescing around Teepee. http://chrismorgan.info/blog/introducing-teepee.html#main There are few REST api libraries as well.

    Comment linking /blog/introducing-teepee.html

    on “The Road to Rust 1.0”
  10. Submitted Make me a sandwich as a story · 62 points

    HN discussion
  11. 1–4 are good, but 5 is not. The checkbox hack is decent in a few places (though I’d say <details> is normally a better choice now, and the checkbox hack should be accompanied by certain ARIA properties and augmented with some JavaScript to twiddle properties as it’s used), but dark mode is not one of them. The checkbox hack is only suitable for transient state that you actively don’t want to persist over page loads.…

    Comment linking /blog/dark-theme-implementation/

    on “Things you don't need JavaScript for”
  12. Submitted Introducing Teepee: the next step for rust-http as a story · 43 points

    HN discussion
  13. I recently added dark mode support with a new website for myself, using (prefers-color-scheme: dark) by default, but also allowing the user to switch between light and dark mode if they have JavaScript enabled. It also supports switching image sources in dark mode, so that I can use a dark mode screenshot in dark mode, and light in light. (I haven't yet published the draft article I have using this feature.) I wrote…

    Comment linking /blog/dark-theme-implementation/

    on “Dark mode in a website with CSS”
  14. Submitted GitHub: a case study in link maintenance and 404 pages as a story · 36 points

    HN discussion
  15. The treatment of <samp> in mvp.css is incorrect. It’s treating <code> as inline monospace, <samp> as block monospace, and completely ignoring <pre>, which is actually block monospace (with no defined semantics). Rather, <code> and <samp> should both be inline, and placed inside <pre> for block usage. This matters because it’ll mess things up if the stylesheet doesn’t load, as your blocks of code won’t be formatted p…

    Comment linking /blog/rust-fizzbuzz/

    on “Show HN: MVP.css – Minimalist stylesheet for HTML elements”
  16. Submitted Rust ownership, the hard way as a story · 4 points

    HN discussion
  17. My own summary and collection of information about the problems with the Unlicense: https://chrismorgan.info/blog/unlicense/ (I collected that mostly because I didn’t find all the relevant information in one place, or explanation of the reasonable alternatives.)

    Comment linking /blog/unlicense/

    on “Jiff: Datetime library for Rust”
  18. Submitted Teepee design: header representation as a story · 4 points

    HN discussion
  19. Unfortunately applying both Poly and Code gives you an imperfect result: the default l glyph has a flat base, Poly makes it narrower, and Code makes it a curly tail, but enable both (e.g. font-feature-settings: "ss01", "ss02") and you get the Poly glyph rather than the Code glyph or a hybrid, both of which would be nicer, and MB has said “won’t fix” (and I haven’t gone to the trouble of patching it myself). A demo o…

    Comment linking /blog/rust-fizzbuzz/

    on “Almost monospaced: the perfect fonts for writing”
  20. Submitted Rust ownership, the hard way as a story · 3 points

    HN discussion
  21. I’m disappointed that this uses a custom XML format, rather than RSS (tolerable) or Atom (better). Then you could just drop it into a feed reader fine. A few years ago, I decided to style my own feeds, and ended up with this: https://chrismorgan.info/blog/tags/fun/feed.xml . https://chrismorgan.info/atom.xsl is pretty detailed, I don’t think you’ll find one with more comprehensive feature support. (I wrote a variant…

    Comment linking /atom.xsl

    on “XSLT – Native, zero-config build system for the Web”
  22. Submitted Tween: a middleware library experiment as a story · 3 points

    HN discussion
  23. I adore that someone like Armin is so delighted to use Rust. From what I've seen of Flask and his other Python libraries, the level of consideration that he devotes to API design is absolutely inspiring. At such an early stage in the language's history, I'm optimistic that his thoughtfulness in API design will become the baseline for the entire Rust ecosystem. In this vein, I'd also like to credit Chris Morgan's Tee…

    Comment linking /blog/introducing-teepee.html

    on “A Fresh Look at Rust”
  24. Submitted Rust ownership, the hard way as a story · 3 points

    HN discussion
  25. Fun related fact people may not be aware of: you can do basically this with arbitrary XML files, defining a stylesheet which transforms the XML into HTML however you like using XSLT. As an example, Atom feeds on my website (such as < https://chrismorgan.info/blog/tags/meta/feed.xml >) render just fine in all mainstream browsers, thanks to this processing instruction at the start of the file: <?xml-stylesheet type="t…

    Comment linking /blog/tags/meta/feed.xml

    on “We should have Markdown-rendered websites”
  26. Submitted Teepee design: a careful look at the HTTP/1.1 Status-Line as a story · 3 points

    HN discussion
  27. I’ve consistently used &c. (almost always in italics, too, as was the custom due to the convention of italics for foreign language words, but especially also because it yields even prettier results in many fonts—the “et” is more likely to come through in italics¹) for 8½ years now.² I’ve only been asked about it twice (once “what is that?” and once “I think you made a typo”), though I’ve probably confused or surpris…

    Comment linking /blog/rust-fizzbuzz/

    on “The History of ‘Ampersand’ (2020)”
  28. Submitted Font-Family Recommendations as a story · 2 points

    HN discussion
  29. Pretty much all of it. For example, let's take http://chrismorgan.info/blog/teepee-design-header-representa... impl<'a> AnyRefExt<'a> for &'a Header { #[inline] fn as_ref<T: 'static>(self) -> Option<&'a T> { trait UncheckedAnyRefExt<'a> { unsafe fn as_ref_unchecked<T: 'static>(self) -> &'a T; } //I am guessing the second line is special because Rust can't deduce "to" should be a TraitObject type? let raw = require_s…

    Comment linking /blog/teepee-design-header-representation.html

    on “The Unreasonable Effectiveness of C (2013)”
  30. Submitted Font-Family Recommendations as a story · 2 points

    HN discussion

Search all of HN for chrismorgan.info

Linked by the same people?