56,966 blogs · [ { "id": "01a0df52-8989-7197-b31c-f1db8af724bb", "title": "Public Software, Private Knowledge, or: Digital Sovereignty Starts at the Kindergarten", "url": "https://danielwestheide.com/blog/public-software-private-knowledge/", "published_at": "2026-07-09T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db8b9f9eaa", "title": "Night of the Living SaaS, or: Surviving Software is DaaS", "url": "https://danielwestheide.com/blog/night-of-the-living-saas/", "published_at": "2026-06-09T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db8c7e86d8", "title": "Pair Programming Considered Unnecessary: The Costs of Productive Solitude", "url": "https://danielwestheide.com/blog/pair-programming-considered-unnecessary/", "published_at": "2026-03-29T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db8cbb1b5f", "title": "Developing with AI through the Cognitive Lens", "url": "https://danielwestheide.com/blog/developing-with-ai-through-the-cognitive-lens/", "published_at": "2026-03-20T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db8d6f5b7b", "title": "Scala from Scratch: Understanding", "url": "https://danielwestheide.com/books/scala-from-scratch-understanding/", "published_at": "2020-08-25T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db8e2ff6b7", "title": "Scala from Scratch: Exploration", "url": "https://danielwestheide.com/books/scala-from-scratch-exploration/", "published_at": "2019-12-08T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db8e4d1e80", "title": "Goodbye Octopress, hello Zola!", "url": "https://danielwestheide.com/blog/goodbye-octopress-hello-zola/", "published_at": "2019-09-23T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db8e581aef", "title": "The Complexity Trap: Think Before You Leap", "url": "https://danielwestheide.com/blog/the-complexity-trap/", "published_at": "2018-12-07T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db8ee831b5", "title": "Introducing kontextfrei", "url": "https://danielwestheide.com/blog/introducing-kontextfrei/", "published_at": "2017-10-31T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db8fcfdc41", "title": "The Empathic Programmer", "url": "https://danielwestheide.com/blog/the-empathic-programmer/", "published_at": "2017-01-16T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db907e0f50", "title": "When Option is not good enough", "url": "https://danielwestheide.com/blog/when-option-is-not-good-enough/", "published_at": "2016-04-26T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db90b2adcc", "title": "Put your writes where your master is: Compile-time restriction of Slick effect types", "url": "https://danielwestheide.com/blog/put-your-writes-where-your-master-is-compile-time-restriction-of-slick-effect-types/", "published_at": "2015-06-28T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db90e3c36e", "title": "The Neophyte's Guide to Scala Part 16: Where to Go from Here", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-16-where-to-go-from-here/", "published_at": "2013-04-03T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db91a8cb6c", "title": "The Neophyte's Guide to Scala Part 15: Dealing with Failure in Actor Systems", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-15-dealing-with-failure-in-actor-systems/", "published_at": "2013-03-20T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db925cf74b", "title": "The Neophyte's Guide to Scala Part 14: The Actor approach to concurrency", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-14-the-actor-approach-to-concurrency/", "published_at": "2013-02-27T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db92bd1554", "title": "The Neophyte's Guide to Scala Part 13: Path-dependent types", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-13-path-dependent-types/", "published_at": "2013-02-13T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db93154bdf", "title": "The Neophyte's Guide to Scala Part 12: Type classes", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-12-type-classes/", "published_at": "2013-02-06T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db93f98114", "title": "The Neophyte's Guide to Scala Part 11: Currying and partially applied functions", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-11-currying-and-partially-applied-functions/", "published_at": "2013-01-30T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db9424a644", "title": "The Neophyte's Guide to Scala Part 10: Staying DRY with higher-order functions", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-10-staying-dry-with-higher-order-functions/", "published_at": "2013-01-23T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db946d7021", "title": "The Neophyte's Guide to Scala Part 9: Promises and Futures in practice", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-9-promises-and-futures-in-practice/", "published_at": "2013-01-16T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db94fc83e4", "title": "The Neophyte's Guide to Scala Part 8: Welcome to the Future", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-8-welcome-to-the-future/", "published_at": "2013-01-09T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db9531cbd5", "title": "The Neophyte's Guide to Scala Part 7: The Either type", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-7-the-either-type/", "published_at": "2013-01-02T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db95ec235b", "title": "The Neophyte's Guide to Scala", "url": "https://danielwestheide.com/books/the-neophytes-guide-to-scala/", "published_at": "2013-01-01T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db9677012b", "title": "The Neophyte's Guide to Scala Part 6: Error handling with Try", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-6-error-handling-with-try/", "published_at": "2012-12-26T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db96a9571e", "title": "The Neophyte's Guide to Scala Part 5: The Option type", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-5-the-option-type/", "published_at": "2012-12-19T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db96fa2b26", "title": "The Neophyte's Guide to Scala Part 4: Pattern Matching Anonymous Functions", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-4-pattern-matching-anonymous-functions/", "published_at": "2012-12-12T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db97f00e78", "title": "The Neophyte's Guide to Scala Part 3: Patterns Everywhere", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-3-patterns-everywhere/", "published_at": "2012-12-05T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db98416959", "title": "The Neophyte's Guide to Scala Part 2: Extracting Sequences", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-2-extracting-sequences/", "published_at": "2012-11-28T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db98dca82a", "title": "The Neophyte's Guide to Scala Part 1: Extractors", "url": "https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-1-extractors/", "published_at": "2012-11-21T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db9904dd52", "title": "Functional Programming Principles in scala: A Wrap-up", "url": "https://danielwestheide.com/blog/functional-programming-principles-in-scala-a-wrap-up/", "published_at": "2012-11-04T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db9905b5d1", "title": "Bonn Agile August 2012: CQRS-based Architectures", "url": "https://danielwestheide.com/blog/bonn-agile-august-2012-cqrs-based-architectures/", "published_at": "2012-08-26T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db99a62cfa", "title": "Book Review: Team Geek", "url": "https://danielwestheide.com/blog/book-review-team-geek/", "published_at": "2012-08-13T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db9a63a421", "title": "Advance Hackathon 2012: A Retrospective", "url": "https://danielwestheide.com/blog/advance-hackathon-2012-a-retrospective/", "published_at": "2012-05-01T00:00:00+00:00" }, { "id": "01a0df52-8989-7197-b31c-f1db9a70bb92", "title": "Mission Statement", "url": "https://danielwestheide.com/blog/mission-statement/", "published_at": "2011-07-01T00:00:00+00:00" } ] posts Claim your blog
Back to danielwestheide.com
Blog · corpus.blog/blogs/danielwestheide.com/posts

danielwestheide.com

danielwestheide.com

2026

2020

2019

2018

2017

2016

2015

2013

2012

2011