
Changing software with tests and types • https://teapawt.org/t.co/Lqt2nANGjZ @Apple • Formerly @AmericanExpress, @GitHub, @Apple • 🐘 @mdiep@mas.to • All opinions are my own, dummy
Grand Rapids, MI
Joined April 2009
- Tweets3.5K
- Following248
- Followers2.8K
- Likes4.3K
Pinned Tweet
Compiler-Driven Development:
❗️ Write a little code
✅ Make it compile
♻️ Refactor
🔁 Repeat
(Red, Green, Refactor)
Now that 3rd party Twitter clients are officially banned, I won't be using it much.
I'll be active over on Mastodon once 3rd party clients get going there.
mas.to/@mdiep
Matt Diephouse retweeted
The Swift on Server ecosystem continues to expand with swift-nio-imap, a new, open source package to make parsing and encoding IMAPv4 easier: swift.org/blog/swift-nio-ima…
This chapter of Real World Haskell, which makes a distinction between concurrency and parallelism, was an interesting read.
book.realworldhaskell.org/re…
Matt Diephouse retweeted
What’s @Sendable? And how does it relate to @escaping???
Where @escaping allows a function to be passed across asynchronous boundaries, @Sendable allows a function to be passed across concurrent boundaries.
Learn more: pointfree.co/episodes/ep193-…

ALT Code snippet showing 3 functions that take a closure. In the first, the closure is called from a URLSession callback closure, so it must be marked “@escaping”. In the second, the closure is called after a URLSession async function call, so it doesn’t need any annotation. In the third, the closure is called from multiple Tasks, so it must be marked “@Sendable”.
Matt Diephouse retweeted
Come work on the Mail Platform team at Apple where we build the APIs and frameworks that support features like Remind me, Undo send, Scheduled send and many more!
jobs.apple.com/en-us/details…
Matt Diephouse retweeted
Replying to @GabriellaG439 @dhall_lang
Hot take #3: An unrestricted language can never be secure
Purity is the future of language security. So long as your dependencies can run arbitrary code you will never be safe from supply chain attacks
Programming:
1. Move build settings to a shared file
Engineering:
1. Write script to record resolved build settings
2. Move build settings to a shared file
3. Diff resolved build settings to verify they didn’t change
Matt Diephouse retweeted
Replying to @mdiep
Yes 🎯
Accurate types and correctly modeling the domain is extremely underrated. I’ve found @pointfreeco to be extremely helpful in building this muscle. – at San Francisco, CA
How to improve old code:
1. Remove unused code
2. Use more accurate types
Accurate types let you prove that a function can’t take or can’t return certain values.
These form a virtuous cycle: removing unused code lets you remove unused values lets you remove unused code, etc.
🙌🏻
NEW: Pfizer asks FDA for emergency authorization of vaccine for children 5-11 trib.al/zd90ouj
TIL the term “frecency”.
“In computing, frecency is any heuristic that combines the frequency and recency into a single measure.”
en.wikipedia.org/wiki/Frecen…
Matt Diephouse retweeted
Almost missed that Xcode now supports building cross platform frameworks from a single target 🎉.
After enabling "Allow Multi-Platform Builds" and setting "Supported Platforms", Xcode 13 offers filter options for conditional compilation and linkage.
Matt Diephouse retweeted
We just open sourced a new project: Custom Dump 🎉
Custom Dump is a collection of tools for debugging, diffing, and testing your app’s data structures.
It comes with a nicer replacement for XCTAssertEqual, and can be used to build powerful debug tools.
pointfree.co/blog/posts/62-o…
I can tell when a coworker is younger than me because they share screenshots of errors instead of copying-and-pasting the text of the error.
I built a website to help people choose board games to play from their collection: WantToPlay.Games
It’s written in Elm, hosted on S3 behind CloudFront, and makes client-side XML requests to BoardGameGeek (the IMDb of board games).
I love that it’s 100% frontend.








