Michael Snoyman's Homepage
Michael's blog post archive
- Posts
- 157 from 1 Jan 2012 to 31 Aug 2026
- Posting
- now and then (3 in the last year)
- Kind
- personal blog
- Feed
- https://www.snoyman.com/rss.xml
2026 3
2025 3
2024 12
2023 3
2022 3
2021 16
- Babies and OSS maintenance
- Bitwarden encrypted backup tool
- if without else in Rust
- Stack on Slack and ARM64
- Haskell proposal: unified installer
- Haskell Foundation Board - Meeting Minutes - April 8, 2021
- Sockchain
- Haskell base proposal, part 2: unifying vector-like types
- Haskell base proposal: unifying vector-like types
- Programmer learning list
- Shutting down Haskellers.com?
- Theories of Obesity
- Moving to Fastmail: custom domain, family accounts, and more
- A parents' guide to Minecraft
- Securing internet communications: a layman's guide (2021)
- Stack Governance
2020 16
- Haskell: The Bad Parts, part 3
- The Haskell Foundation
- Live Coding: Rust reverse proxy
- Haskell: The Bad Parts, part 2
- Force your code to break
- Haskell: The Bad Parts, part 1
- Transparency
- Homeschool on PowerPoint
- Book review: Loserthink
- Stackage for Rust?
- New book available: Begin Rust
- There are no mutable parameters in Rust
- A Lazy Rust Compiler
- Basics of Carbohydrates
- Making nutrition decisions
- The Warp Executable
2019 12
- Down and dirty with Future - Rust Crash Course lesson 8
- Tokio 0.2 - Rust Crash Course lesson 9
- Boring Haskell Manifesto
- Haskell kata: withTryFileLock
- How to lose weight
- My new home network setup
- Gym Etiquette Test
- Typing Resistance
- Call for new Stack issue triager
- Shutting down haskell-lang.org
- Kids Coding, Part 4
- Mismatched global packages
2018 45
- FP Complete's opinion
- Improving Commercial Haskell
- Kids Coding Interlude: the function game
- New user empathy
- Async, futures, and tokio - Rust Crash Course lesson 7
- Proposal: Stack Code of Conduct
- Iterators and Errors - Rust Crash Course lesson 3 - exercise solutions
- Iterators and Errors - Rust Crash Course lesson 3
- Crates and more iterators - Rust Crash Course lesson 4 - exercise solutions
- Crates and more iterators - Rust Crash Course lesson 4
- Rule of Three - Parameters, Iterators, and Closures - Rust Crash Course lesson 5 - exercise solutions
- Rule of Three - Parameters, Iterators, and Closures - Rust Crash Course lesson 5
- Lifetimes and Slices - Rust Crash Course lesson 6 - exercise solutions
- Lifetimes and Slices - Rust Crash Course lesson 6
- Stack(age): History, philosophy, and future
- Why (I believe) Stackage succeeded
- How I research health
- Introducing the Rust crash course
- Is it healthy? Depends on context
- RAII is better than the bracket pattern
- Kick the Tires - Rust Crash Course lesson 1 - exercise solutions
- Kick the Tires - Rust Crash Course lesson 1
- Basics of Ownership - Rust Crash Course lesson 2 - exercise solutions
- Basics of Ownership - Rust Crash Course lesson 2
- Kids Coding, Part 1
- Kids Coding, Part 2
- Kids Coding, Part 3
- Post Fast Write-up
- Stop supporting older GHCs
- Thoughts on Fasting
- Deprecating the Haskell markdown library
- Building packages outside snapshots
- Guide to matrix.org and riot.im
- I am not snoyjerk
- My open source goals
- Stop breaking compatibility
- LambdaConf Haskell Hackathon 2018
- Quick guide to the Jewish Holidays
- The Conduitpocalypse
- Haskell Ecosystem Requests
- Stack Patching Policy
- Breaking changes, dependency trees
- Drop Conduit's Finalizers?
- Review of The Bridge strength program
- Slurp
2017 27
- Dropped packages following LTS 10
- Stack and Nightly breakage
- What Makes Haskell Unique
- Future proofing test suites
- Effective Ways to Get Help from Maintainers
- Posture
- Some Upcoming Crazy Thoughts
- The Spiderman Principle
- How to send me a pull request
- A Very Naive Overview of Exercise (Part 3)
- A Very Naive Overview of Nutrition and Exercise (Part 1)
- A Very Naive Overview of Nutrition (Part 2)
- Why I lift
- Playing with lens-aeson
- The Worst Function in Conduit
- Enough with Backwards Compatibility
- Generalizing Type Signatures
- Haskell Success Stories
- Stackage's no-revisions (experimental) field
- Better Exception Messages
- Hackage Security and Stack
- Conflicting Module Names
- Foldable.mapM_, Maybe, and recursive functions
- Follow up on mapM_
- Functors, Applicatives, and Monads
- safe-prelude: a thought experiment
- Stackage design choices: making Haskell curated package sets
2016 13
- Beware of readFile
- Call for new Stackage Curator
- An extra benefit of open sourcing
- Designing APIs for Extensibility
- Haskell Documentation, 2016 Update
- Haskell for Dummies
- Haskell's Missing Concurrency Basics
- Spreading the Gospel of Haskell
- New Conduit Tutorial
- Monads are like Lannisters
- Proposed conduit reskin
- Using AppVeyor for Haskell+Windows CI
- Restarting this blog