{"articles":[{"slug":"why-is-it-so-expensive-to-send-an-email","title":"Why is it so expensive to send an email?","subtitle":null,"summary":"Evan Czaplicki, a former Gmail engineer, writes his own SMTP sending code in Haskell and finds the sending part easy; the real cost comes from IP reputation, blocklists and deliverability, which explains why email services charge per message.","content_type":"essay","language":"en","canonical_url":"https://evancz.dev/why-is-it-so-expensive-to-send-an-email","author":{"name":"Evan Czaplicki","url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"evancz.dev","url":"https://evancz.dev/","listing_slug":null,"listing":null},"topics":[{"name":"Email","slug":"email","url":"https://listedarticles.com/topics/email"},{"name":"Networking","slug":"networking","url":"https://listedarticles.com/topics/networking"},{"name":"Haskell","slug":"haskell","url":"https://listedarticles.com/topics/haskell"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":1419,"reading_minutes":6,"published_at":"2026-10-26T14:15:42.888Z","added_at":"2026-10-26T14:15:42.888Z","updated_at":"2026-10-26T14:15:42.888Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/why-is-it-so-expensive-to-send-an-email","markdown_url":"https://listedarticles.com/articles/why-is-it-so-expensive-to-send-an-email.md","example":false,"citation":"Evan Czaplicki, evancz.dev. \"Why is it so expensive to send an email?.\" 26 Oct 2026. https://evancz.dev/why-is-it-so-expensive-to-send-an-email (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://evancz.dev/why-is-it-so-expensive-to-send-an-email"},"snippet":null,"score":null},{"slug":"making-a-gtk-application-in-haskell-part-1","title":"Making a GTK application in Haskell, part 1","subtitle":null,"summary":"Feriel Choutri de Tarlé starts a Floreal Technologies tutorial series building a todo-list desktop app in Haskell with GTK 4 and the Adwaita library, setting up the project, a model-view-update architecture, and a runtime that redraws the window when the model changes.","content_type":"tutorial","language":"en","canonical_url":"https://floreal.tech/blog/2026/making-a-gtk-app-in-haskell-part-1/","author":{"name":"Feriel Choutri de Tarlé","url":"https://floreal.tech/authors/feriel-choutri-de-tarle/","person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"Floréal Technologies","url":"https://floreal.tech/","listing_slug":null,"listing":null},"topics":[{"name":"Haskell","slug":"haskell","url":"https://listedarticles.com/topics/haskell"},{"name":"Programming","slug":"programming","url":"https://listedarticles.com/topics/programming"},{"name":"Tutorials","slug":"tutorials","url":"https://listedarticles.com/topics/tutorials"},{"name":"Linux","slug":"linux","url":"https://listedarticles.com/topics/linux"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":1668,"reading_minutes":7,"published_at":"2026-10-05T00:00:00.000Z","added_at":"2026-10-05T17:17:03.680Z","updated_at":"2026-10-05T17:17:03.680Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/making-a-gtk-application-in-haskell-part-1","markdown_url":"https://listedarticles.com/articles/making-a-gtk-application-in-haskell-part-1.md","example":false,"citation":"Feriel Choutri de Tarlé, Floréal Technologies. \"Making a GTK application in Haskell, part 1.\" 5 Oct 2026. https://floreal.tech/blog/2026/making-a-gtk-app-in-haskell-part-1/ (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://floreal.tech/blog/2026/making-a-gtk-app-in-haskell-part-1/"},"snippet":null,"score":null},{"slug":"you-dont-need-an-effect-system","title":"You don't need an effect system","subtitle":null,"summary":"After getting the chance to rewrite an old production Haskell codebase, the author asks what its effect system was actually buying and concludes that plain IO with explicitly passed handles does the job, showing the resulting Servant service structure and listing the trade-offs.","content_type":"blog_post","language":"en","canonical_url":"https://burningwitness.github.io/blog/posts/against-effect-systems/","author":{"name":null,"url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"burningwitness","url":"https://burningwitness.github.io/","listing_slug":null,"listing":null},"topics":[{"name":"Haskell","slug":"haskell","url":"https://listedarticles.com/topics/haskell"},{"name":"Programming","slug":"programming","url":"https://listedarticles.com/topics/programming"},{"name":"Functional Programming","slug":"functional-programming","url":"https://listedarticles.com/topics/functional-programming"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":2350,"reading_minutes":10,"published_at":"2026-10-03T00:00:00.000Z","added_at":"2026-10-05T20:10:37.700Z","updated_at":"2026-10-05T20:10:37.700Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/you-dont-need-an-effect-system","markdown_url":"https://listedarticles.com/articles/you-dont-need-an-effect-system.md","example":false,"citation":"burningwitness. \"You don't need an effect system.\" 3 Oct 2026. https://burningwitness.github.io/blog/posts/against-effect-systems/ (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://burningwitness.github.io/blog/posts/against-effect-systems/"},"snippet":null,"score":null},{"slug":"full-haskell-like-type-class-resolution-in-java","title":"Full Haskell-like Type Class resolution in Java","subtitle":null,"summary":"Gabriel Garcia re-implements Haskell-style type classes in pure Java: using reflection and generics to parse static types, unify them, and automatically resolve instance witnesses, then extends the approach to higher-kinded types, context instances and overlapping instances, with worked examples like Show, Monoid, Traversable and Monad.","content_type":"tutorial","language":"en","canonical_url":"https://garciat.com/posts/java-type-classes/","author":{"name":"Gabriel Garcia","url":"https://garciat.com/","person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"garciat.com","url":"https://garciat.com/","listing_slug":null,"listing":null},"topics":[{"name":"Programming Languages","slug":"programming-languages","url":"https://listedarticles.com/topics/programming-languages"},{"name":"Java","slug":"java","url":"https://listedarticles.com/topics/java"},{"name":"Haskell","slug":"haskell","url":"https://listedarticles.com/topics/haskell"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":7285,"reading_minutes":32,"published_at":"2025-12-06T00:00:00.000Z","added_at":"2026-10-27T11:12:36.530Z","updated_at":"2026-10-27T11:12:36.530Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/full-haskell-like-type-class-resolution-in-java","markdown_url":"https://listedarticles.com/articles/full-haskell-like-type-class-resolution-in-java.md","example":false,"citation":"Gabriel Garcia, garciat.com. \"Full Haskell-like Type Class resolution in Java.\" 6 Dec 2025. https://garciat.com/posts/java-type-classes/ (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://garciat.com/posts/java-type-classes/"},"snippet":null,"score":null},{"slug":"typescript-and-haskell-unions-and-singletons","title":"TypeScript and Haskell: Unions & Singletons","subtitle":null,"summary":"Gabriel Garcia explores how TypeScript's combination of union types and literal (singleton) types gives APIs precision, then tries to reproduce the same pattern in Haskell with type families, unboxed sums and singleton naturals, showing where the encodings get awkward and why they fail to behave like a set of types.","content_type":"tutorial","language":"en","canonical_url":"https://garciat.com/posts/haskell-union-types/","author":{"name":"Gabriel Garcia","url":"https://garciat.com/","person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"garciat.com","url":"https://garciat.com/","listing_slug":null,"listing":null},"topics":[{"name":"Programming Languages","slug":"programming-languages","url":"https://listedarticles.com/topics/programming-languages"},{"name":"Haskell","slug":"haskell","url":"https://listedarticles.com/topics/haskell"},{"name":"TypeScript","slug":"typescript","url":"https://listedarticles.com/topics/typescript"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":428,"reading_minutes":2,"published_at":"2024-12-14T00:00:00.000Z","added_at":"2026-10-27T14:23:31.095Z","updated_at":"2026-10-27T14:23:31.095Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/typescript-and-haskell-unions-and-singletons","markdown_url":"https://listedarticles.com/articles/typescript-and-haskell-unions-and-singletons.md","example":false,"citation":"Gabriel Garcia, garciat.com. \"TypeScript and Haskell: Unions & Singletons.\" 14 Dec 2024. https://garciat.com/posts/haskell-union-types/ (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://garciat.com/posts/haskell-union-types/"},"snippet":null,"score":null}],"total":5,"count":5,"next_offset":null,"has_more":false,"query":{"q":null,"content_type":null,"topic":"haskell","publisher":null,"about":null,"author":null,"language":null,"sort":"newest","limit":20,"offset":0}}