41554 blogs · [ { "id": "01a08771-831b-7013-ad2f-4e06babdf068", "title": "How I use AI to help me prepare talks", "url": "https://edofic.com/blog/2025-12-10-ai-talks/", "published_at": "2025-12-10T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06bb51b349", "title": "GraphQL ❤️ SQLite", "url": "https://edofic.com/blog/2023-05-06-graphql-sqlite/", "published_at": "2023-05-06T11:20:31+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06bc203493", "title": "(Re)Learning AWK with ChatGPT", "url": "https://edofic.com/blog/2023-03-31-awk-chatgpt/", "published_at": "2023-03-31T14:12:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06bc7ee822", "title": "Hypermedia driven micro frontends", "url": "https://edofic.com/posts/2022-06-29-hypermedia-driven-micro-frontends/", "published_at": "2022-06-29T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06bd0771fc", "title": "How I fell in love with low-js", "url": "https://edofic.com/posts/2022-01-28-low-js/", "published_at": "2022-01-28T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06bd8253db", "title": "Tailwind CSS vs Pico CSS", "url": "https://edofic.com/posts/2022-01-18-tailwind-vs-pico/", "published_at": "2022-01-18T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06bd9d86c1", "title": "Speed is a feature; thoughts on modern web performance", "url": "https://edofic.com/posts/2021-12-29-speed-is-a-feature/", "published_at": "2021-12-29T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06bdf315d0", "title": "Trying Out Remix", "url": "https://edofic.com/posts/2021-12-19-trying-out-remix/", "published_at": "2021-12-19T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06be483127", "title": "Running amd64 docker images with Podman on Apple Silicon (M1)", "url": "https://edofic.com/posts/2021-09-12-podman-m1-amd64/", "published_at": "2021-09-12T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06bea5bbc3", "title": "Trying out Prometheus", "url": "https://edofic.com/posts/2021-06-27-trying-out-prometheus/", "published_at": "2021-06-27T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06bf88a863", "title": "Trying out Microk8s", "url": "https://edofic.com/posts/2021-04-15-trying-microk8s/", "published_at": "2021-04-15T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c0882510", "title": "Trying out Rancher", "url": "https://edofic.com/posts/2021-04-14-trying-out-rancher/", "published_at": "2021-04-14T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c1180b64", "title": "Trying out Okteto Cloud", "url": "https://edofic.com/posts/2021-02-27-trying-out-okteto-cloud/", "published_at": "2021-02-27T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c1238d0f", "title": "Trying out Okteto (CLI)", "url": "https://edofic.com/posts/2021-02-22-trying-out-okteto-cli/", "published_at": "2021-02-22T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c1ae776a", "title": "Trying out Buffalo", "url": "https://edofic.com/posts/2021-02-07-trying-out-buffalo/", "published_at": "2021-02-07T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c1bf3ae5", "title": "Attaching your local machine to a Kubernetes cluster", "url": "https://edofic.com/posts/2020-10-17-attach-to-k8s/", "published_at": "2020-10-17T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c2307ec7", "title": "Surprising ease of gaming on Linux in 2020", "url": "https://edofic.com/posts/2020-06-07-linux-gaming/", "published_at": "2020-06-07T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c27523e9", "title": "Rename rebase with git", "url": "https://edofic.com/posts/2020-04-20-rebase-rename/", "published_at": "2020-04-20T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c2b69999", "title": "Moving to Hugo", "url": "https://edofic.com/posts/2020-01-15-hugo/", "published_at": "2020-01-15T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c3474699", "title": "Linear time sorting", "url": "https://edofic.com/posts/2018-05-25-linear-time-sorting/", "published_at": "2018-05-25T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c357309a", "title": "Integrating Jira into Google Sheets", "url": "https://edofic.com/posts/2018-01-25-jira-gsheet/", "published_at": "2018-01-25T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c3e7b4b5", "title": "NixOS install & labor pains", "url": "https://edofic.com/posts/2018-01-24-nixos-install-pains/", "published_at": "2018-01-24T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c428493e", "title": "Implementing apply on tuples in Scala", "url": "https://edofic.com/posts/2017-09-01-scala-tuple-apply/", "published_at": "2017-09-01T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c4667924", "title": "Dockerless Services (with Nix)", "url": "https://edofic.com/posts/2017-08-30-dockerless-services/", "published_at": "2017-08-30T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c540ce92", "title": "TDD-ing a toy sized project", "url": "https://edofic.com/posts/2016-09-21-toy-sized-tdd/", "published_at": "2016-09-21T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c5d49cf5", "title": "Repairing a corrupt Git repo using a clone", "url": "https://edofic.com/posts/2016-02-24-git-repair/", "published_at": "2016-02-24T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c6139110", "title": "Lazy unary numbers", "url": "https://edofic.com/posts/2015-05-03-unary-numbers/", "published_at": "2015-05-03T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c6805ec2", "title": "Cheap tagged types in Scala", "url": "https://edofic.com/posts/2015-05-02-tagged-types/", "published_at": "2015-05-02T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c75187b7", "title": "Approaches to designing a Haskell API", "url": "https://edofic.com/posts/2014-10-05-haskell-apis/", "published_at": "2014-10-05T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c8047530", "title": "Static linking with GHC on ArchLinux", "url": "https://edofic.com/posts/2014-05-03-ghc-arch-static/", "published_at": "2014-05-03T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c882df7f", "title": "Coroutines for free", "url": "https://edofic.com/posts/2014-04-14-free-coroutines/", "published_at": "2014-04-14T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c8895de3", "title": "Practical Future[Option[A]] in Scala", "url": "https://edofic.com/posts/2014-03-07-practical-future-option/", "published_at": "2014-03-07T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c893139e", "title": "Comparing Haskell Web Frameworks", "url": "https://edofic.com/posts/2014-02-23-haskell-web/", "published_at": "2014-02-23T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c8e552d5", "title": "Product and sum types (Go and Haskell)", "url": "https://edofic.com/posts/2014-02-17-product-and-sum-types/", "published_at": "2014-02-17T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c96d5434", "title": "Hakyll", "url": "https://edofic.com/posts/2014-01-08-hakyll/", "published_at": "2014-01-08T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06c9f2157d", "title": "Virtual machine in C++", "url": "https://edofic.com/posts/2013-10-18-virtual-machine-cpp/", "published_at": "2013-10-18T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06ca19f7ea", "title": "Setting up for better Scala development on Android", "url": "https://edofic.com/posts/2013-09-04-better-scala-android/", "published_at": "2013-09-04T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06ca7c0d73", "title": "750 words", "url": "https://edofic.com/posts/2013-01-27-750-words/", "published_at": "2013-01-27T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06ca920abd", "title": "Chaining implicit conversion in scala", "url": "https://edofic.com/posts/2013-01-27-chaining-implicits/", "published_at": "2013-01-27T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06cad1118e", "title": "Generic singletons through dependent method types", "url": "https://edofic.com/posts/2013-01-27-generic-singletons/", "published_at": "2013-01-27T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06cb0a8b1c", "title": "Monadic IO with ScalaZ", "url": "https://edofic.com/posts/2013-01-27-monadic-io/", "published_at": "2013-01-27T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06cb45fb65", "title": "Null-coalescing(??) in scala", "url": "https://edofic.com/posts/2013-01-27-null-coalescing/", "published_at": "2013-01-27T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06cc1214d6", "title": "Union types in scala", "url": "https://edofic.com/posts/2013-01-27-union-types/", "published_at": "2013-01-27T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06cca365c4", "title": "Cool Monday - Exploration of dynamic db acces from scala", "url": "https://edofic.com/posts/2012-12-10-dynamic-db/", "published_at": "2012-12-10T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06cd1685cb", "title": "Homework - functional style (outer sorting)", "url": "https://edofic.com/posts/2012-12-04-hw-functional/", "published_at": "2012-12-04T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06cde800ea", "title": "Cool Monday - Functional compilers and atoms", "url": "https://edofic.com/posts/2012-11-26-functional-compilers/", "published_at": "2012-11-26T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06ceccbef7", "title": "Nomadic programming", "url": "https://edofic.com/posts/2012-11-23-nomadic-programming/", "published_at": "2012-11-23T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06cef65cd3", "title": "Cool Monday - CERC and my trip to Krakow", "url": "https://edofic.com/posts/2012-11-19-cerc/", "published_at": "2012-11-19T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06cfcd6735", "title": "Why Linux will never win the desktop", "url": "https://edofic.com/posts/2012-11-17-y-u-no-linux/", "published_at": "2012-11-17T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d0b9e112", "title": "Cool Monday - Scala Macros", "url": "https://edofic.com/posts/2012-11-12-scala-macros/", "published_at": "2012-11-12T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d0dea8cd", "title": "Cool Monday - Hindley-Milner on a dynamic language", "url": "https://edofic.com/posts/2012-11-05-hindley-milner/", "published_at": "2012-11-05T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d1240e47", "title": "Hunt for a web framework that works", "url": "https://edofic.com/posts/2012-11-02-web-framework/", "published_at": "2012-11-02T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d1c7c545", "title": "Cool Monday - HList and Shapeless", "url": "https://edofic.com/posts/2012-10-29-hlist-shapeless/", "published_at": "2012-10-29T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d28a718c", "title": "Design patterns are bullshit!", "url": "https://edofic.com/posts/2012-10-29-design-patterns-bullshit/", "published_at": "2012-10-29T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d29a7c92", "title": "Setting up for scala development on Android", "url": "https://edofic.com/posts/2012-10-22-scala-android/", "published_at": "2012-10-22T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d32eb582", "title": "Javascript faster than light! (well C actually)", "url": "https://edofic.com/posts/2012-10-21-javascript-ftl/", "published_at": "2012-10-21T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d427ba71", "title": "Making a programming language Part 7b - using objects", "url": "https://edofic.com/posts/2012-10-08-creating-a-language-7b/", "published_at": "2012-10-08T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d4bf81c7", "title": "Making a programming language Part 8 - going faster", "url": "https://edofic.com/posts/2012-09-29-creating-a-language-8/", "published_at": "2012-09-29T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d5943ede", "title": "Making a programming language Part 7a - objects", "url": "https://edofic.com/posts/2012-09-27-creating-a-language-7a/", "published_at": "2012-09-27T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d5e95f47", "title": "Making a programming language Part 6 - functions", "url": "https://edofic.com/posts/2012-09-25-creating-a-language-6/", "published_at": "2012-09-25T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d5eb1ccd", "title": "Power sets", "url": "https://edofic.com/posts/2012-09-21-power-sets/", "published_at": "2012-09-21T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d6c0c6a7", "title": "Pretty function composition in scala and asynchronous function composition on android", "url": "https://edofic.com/posts/2012-09-17-composition/", "published_at": "2012-09-17T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d75666da", "title": "Making a programming language Part 5 - variables and decisions", "url": "https://edofic.com/posts/2012-09-02-creating-a-language-5/", "published_at": "2012-09-02T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d81d24eb", "title": "Making a programming language Part 4 - Hello World", "url": "https://edofic.com/posts/2012-09-01-creating-a-language4/", "published_at": "2012-09-01T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d8d601d0", "title": "Making a programming language Part 3 - adding features", "url": "https://edofic.com/posts/2012-08-31-creating-a-language3/", "published_at": "2012-08-31T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06d9bb7d0d", "title": "Making a programming language Part 2 - something that kinda works", "url": "https://edofic.com/posts/2012-08-30-creating-a-language-2/", "published_at": "2012-08-30T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06da6f358f", "title": "Making a programming language Part 1 - how to start", "url": "https://edofic.com/posts/2012-08-29-creating-a-language-1/", "published_at": "2012-08-29T00:00:00+00:00" }, { "id": "01a08771-831b-7013-ad2f-4e06dad691cb", "title": "About me", "url": "https://edofic.com/about/", "published_at": null } ] posts Claim your blog
Back to edofic.com
Blog · corpus.blog/blogs/edofic.com/posts

edofic.com

edofic.com

2025

2023

2022

2021

2020

2018

2017

2016

2015

2014

2013

2012

Undated