41554 blogs · [ { "id": "01a0b0bd-a4fc-7343-b3f1-e6c06c9eaad0", "title": "The LLM Comments Are Not For You", "url": "https://danilafe.com/blog/comments_not_for_you/", "published_at": "2026-09-15T01:49:21+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7b765b4c", "title": "Persistence of Vision", "url": "https://danilafe.com/writing/spirits/", "published_at": "2026-04-19T06:26:00+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7bb0439a", "title": "Personal Software with the Help of LLMs", "url": "https://danilafe.com/blog/llm_personal_software/", "published_at": "2026-04-05T23:03:00+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7bee9799", "title": "Generating Flashcards from PDF Underlines", "url": "https://danilafe.com/blog/pdf_flashcards_llm/", "published_at": "2026-04-05T23:02:00+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7c1d8cfb", "title": "On Spiders", "url": "https://danilafe.com/writing/onspiders/", "published_at": "2026-03-22T06:03:00+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7c435a59", "title": "Reasons to Love the Field of Programming Languages", "url": "https://danilafe.com/blog/i_love_programming_languages/", "published_at": "2025-12-31T00:00:00+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7c97810e", "title": "Chapel's Runtime Types as an Interesting Alternative to Dependent Types", "url": "https://danilafe.com/blog/chapel_runtime_types/", "published_at": "2025-03-03T06:52:01+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7d102f5a", "title": "Implementing and Verifying \"Static Program Analysis\" in Agda, Part 9: Verifying the Forward Analysis", "url": "https://danilafe.com/blog/09_spa_agda_verified_forward/", "published_at": "2024-12-26T03:00:00+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7d181bd4", "title": "Implementing and Verifying \"Static Program Analysis\" in Agda, Part 8: Forward Analysis", "url": "https://danilafe.com/blog/08_spa_agda_forward/", "published_at": "2024-12-01T23:09:07+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7dc9f2d6", "title": "Implementing and Verifying \"Static Program Analysis\" in Agda, Part 7: Connecting Semantics and Control Flow Graphs", "url": "https://danilafe.com/blog/07_spa_agda_semantics_and_cfg/", "published_at": "2024-11-29T03:32:00+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7e4de23d", "title": "Implementing and Verifying \"Static Program Analysis\" in Agda, Part 6: Control Flow Graphs", "url": "https://danilafe.com/blog/06_spa_agda_cfg/", "published_at": "2024-11-27T23:26:42+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7ed94cac", "title": "Implementing and Verifying \"Static Program Analysis\" in Agda, Part 5: Our Programming Language", "url": "https://danilafe.com/blog/05_spa_agda_semantics/", "published_at": "2024-11-04T01:50:27+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7ee5abe5", "title": "Implementing and Verifying \"Static Program Analysis\" in Agda, Part 4: The Fixed-Point Algorithm", "url": "https://danilafe.com/blog/04_spa_agda_fixedpoint/", "published_at": "2024-11-04T01:50:26+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7fbdeafa", "title": "Implementing and Verifying \"Static Program Analysis\" in Agda, Part 3: Lattices of Finite Height", "url": "https://danilafe.com/blog/03_spa_agda_fixed_height/", "published_at": "2024-08-09T00:29:00+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a7fd40754", "title": "Implementing and Verifying \"Static Program Analysis\" in Agda, Part 2: Combining Lattices", "url": "https://danilafe.com/blog/02_spa_agda_combining_lattices/", "published_at": "2024-08-08T23:40:00+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a800c792e", "title": "Untitled Short Story", "url": "https://danilafe.com/writing/thevoid/", "published_at": "2024-08-02T03:31:18+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a803e1138", "title": "Implementing and Verifying \"Static Program Analysis\" in Agda, Part 1: Lattices", "url": "https://danilafe.com/blog/01_spa_agda_lattices/", "published_at": "2024-07-07T00:37:43+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a80b888b3", "title": "Implementing and Verifying \"Static Program Analysis\" in Agda, Part 0: Intro", "url": "https://danilafe.com/blog/00_spa_agda_intro/", "published_at": "2024-07-07T00:37:42+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a80ec5398", "title": "Microfeatures I Love in Blogs and Personal Websites", "url": "https://danilafe.com/blog/blog_microfeatures/", "published_at": "2024-06-23T18:03:10+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a818fa800", "title": "Integrating Agda's HTML Output with Hugo", "url": "https://danilafe.com/blog/agda_hugo/", "published_at": "2024-05-30T07:29:26+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a82426c43", "title": "The \"Deeply Embedded Expression\" Trick in Agda", "url": "https://danilafe.com/blog/agda_expr_pattern/", "published_at": "2024-03-11T21:25:52+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a832a2869", "title": "Bergamot: Exploring Programming Language Inference Rules", "url": "https://danilafe.com/blog/bergamot/", "published_at": "2023-12-23T02:16:44+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a83cc7907", "title": "My Favorite C++ Pattern: X Macros", "url": "https://danilafe.com/blog/chapel_x_macros/", "published_at": "2023-10-14T22:38:17+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8468b39c", "title": "The \"Is Something\" Pattern in Agda", "url": "https://danilafe.com/blog/agda_is_pattern/", "published_at": "2023-09-01T05:15:34+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a84d27609", "title": "Proving My Compiler Code Incorrect With Alloy", "url": "https://danilafe.com/blog/dyno_alloy/", "published_at": "2023-06-05T04:56:00+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a858f3c94", "title": "Search as a Polynomial", "url": "https://danilafe.com/blog/search_polynomials/", "published_at": "2023-05-23T04:39:00+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a861d4536", "title": "Generalizing Folds in Haskell", "url": "https://danilafe.com/blog/haskell_catamorphisms/", "published_at": "2022-04-22T19:19:22+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a86676f32", "title": "Declaratively Deploying Multiple Blog Versions with NixOS and Flakes", "url": "https://danilafe.com/blog/blog_with_nix/", "published_at": "2022-04-10T07:24:58+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a86e033e1", "title": "Digit Sum Patterns and Modular Arithmetic", "url": "https://danilafe.com/blog/modulo_patterns/", "published_at": "2021-12-30T23:42:40+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a87882cf8", "title": "Introducing Matrix Highlight", "url": "https://danilafe.com/blog/introducing_highlight/", "published_at": "2021-12-14T00:49:42+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a881e3fef", "title": "A Verified Evaluator for the Untyped Concatenative Calculus", "url": "https://danilafe.com/blog/coq_dawn_eval/", "published_at": "2021-11-28T04:24:57+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a891cfbb8", "title": "Formalizing Dawn in Coq", "url": "https://danilafe.com/blog/coq_dawn/", "published_at": "2021-11-21T03:04:57+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8993977e", "title": "Type-Safe Event Emitter in TypeScript", "url": "https://danilafe.com/blog/typescript_typesafe_events/", "published_at": "2021-09-05T00:18:49+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8a1542dc", "title": "Approximating Custom Functions in Hugo", "url": "https://danilafe.com/blog/hugo_functions/", "published_at": "2021-01-18T02:44:53+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8a7cbed5", "title": "Pleasant Code Includes with Hugo", "url": "https://danilafe.com/blog/codelines/", "published_at": "2021-01-14T05:31:29+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8ad5474d", "title": "Advent of Code in Coq - Day 8", "url": "https://danilafe.com/blog/01_aoc_coq/", "published_at": "2021-01-11T06:48:39+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8b98cb65", "title": "Advent of Code in Coq - Day 1", "url": "https://danilafe.com/blog/00_aoc_coq/", "published_at": "2020-12-03T02:44:56+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8c4830cb", "title": "A Typesafe Representation of an Imperative Language", "url": "https://danilafe.com/blog/typesafe_imperative_lang/", "published_at": "2020-11-02T09:07:21+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8cd487a0", "title": "Compiling a Functional Language Using C++, Part 13 - Cleanup", "url": "https://danilafe.com/blog/13_compiler_cleanup/", "published_at": "2020-09-19T23:14:13+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8d2738e1", "title": "How Many Values Does a Boolean Have?", "url": "https://danilafe.com/blog/boolean_values/", "published_at": "2020-08-22T06:05:55+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8dd3c277", "title": "Meaningfully Typechecking a Language in Idris, With Tuples", "url": "https://danilafe.com/blog/typesafe_interpreter_tuples/", "published_at": "2020-08-12T22:48:04+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8e2d98f3", "title": "Time Traveling In Haskell: How It Works And How To Use It", "url": "https://danilafe.com/blog/haskell_lazy_evaluation/", "published_at": "2020-07-30T07:58:10+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8e5221fa", "title": "DELL Is A Horrible Company And You Should Avoid Them At All Costs", "url": "https://danilafe.com/blog/dell_is_horrible/", "published_at": "2020-07-23T20:40:05+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a8f2b2716", "title": "Meaningfully Typechecking a Language in Idris, Revisited", "url": "https://danilafe.com/blog/typesafe_interpreter_revisited/", "published_at": "2020-07-22T21:37:35+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a90179a70", "title": "Rendering Mathematics On The Back End", "url": "https://danilafe.com/blog/backend_math_rendering/", "published_at": "2020-07-21T21:54:26+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a904ee848", "title": "Compiling a Functional Language Using C++, Part 12 - Let/In and Lambdas", "url": "https://danilafe.com/blog/12_compiler_let_in_lambda/", "published_at": "2020-06-21T07:50:07+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a90504d78", "title": "Building a Crystal Project with Nix, Revisited", "url": "https://danilafe.com/blog/crystal_nix_revisited/", "published_at": "2020-04-27T01:37:22+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a913090bb", "title": "Compiling a Functional Language Using C++, Part 11 - Polymorphic Data Types", "url": "https://danilafe.com/blog/11_compiler_polymorphic_data_types/", "published_at": "2020-04-15T02:05:42+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a922cd131", "title": "Compiling a Functional Language Using C++, Part 10 - Polymorphism", "url": "https://danilafe.com/blog/10_compiler_polymorphism/", "published_at": "2020-03-26T00:14:20+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a93144bc1", "title": "Math Rendering is Wrong", "url": "https://danilafe.com/blog/math_rendering_is_wrong/", "published_at": "2020-03-24T23:40:27+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a939fbdb9", "title": "Creating Recursive Functions in a Stack Based Language", "url": "https://danilafe.com/blog/stack_recursion/", "published_at": "2020-03-07T01:56:55+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a93de921e", "title": "Meaningfully Typechecking a Language in Idris", "url": "https://danilafe.com/blog/typesafe_interpreter/", "published_at": "2020-02-28T05:58:55+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a944b6d25", "title": "Building a Basic Crystal Project with Nix", "url": "https://danilafe.com/blog/crystal_nix/", "published_at": "2020-02-16T22:31:42+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a94e569b0", "title": "Compiling a Functional Language Using C++, Part 9 - Garbage Collection", "url": "https://danilafe.com/blog/09_compiler_garbage_collection/", "published_at": "2020-02-11T03:22:41+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a9565e60a", "title": "Using GHC IDE for Haskell Error Checking and Autocompletion", "url": "https://danilafe.com/blog/haskell_language_server_again/", "published_at": "2020-01-07T01:07:25+00:00" }, { "id": "01a08767-7789-714a-8dac-1a4a95ec65f3", "title": "A Language for an Assignment - Homework 3", "url": "https://danilafe.com/blog/02_cs325_languages_hw3/", "published_at": "2020-01-03T06:17:43+00:00" }, { "id": "01a08767-778a-7272-9538-8b9ae7cdfb0d", "title": "A Language for an Assignment - Homework 2", "url": "https://danilafe.com/blog/01_cs325_languages_hw2/", "published_at": "2019-12-31T04:05:10+00:00" }, { "id": "01a08767-778a-7272-9538-8b9ae8018928", "title": "A Language for an Assignment - Homework 1", "url": "https://danilafe.com/blog/00_cs325_languages_hw1/", "published_at": "2019-12-28T07:27:09+00:00" }, { "id": "01a08767-778a-7272-9538-8b9ae846153a", "title": "JavaScript-Free Sidenotes in Hugo", "url": "https://danilafe.com/blog/sidenotes/", "published_at": "2019-12-07T08:23:34+00:00" }, { "id": "01a08767-778a-7272-9538-8b9ae8ddbdca", "title": "Compiling a Functional Language Using C++, Part 8 - LLVM", "url": "https://danilafe.com/blog/08_compiler_llvm/", "published_at": "2019-10-31T05:16:22+00:00" }, { "id": "01a08767-778a-7272-9538-8b9ae9bbb492", "title": "Thoughts on Better Explanations", "url": "https://danilafe.com/blog/better_explanations/", "published_at": "2019-10-12T07:33:02+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aea189261", "title": "Compiling a Functional Language Using C++, Part 3 - Type Checking", "url": "https://danilafe.com/blog/03_compiler_typechecking/", "published_at": "2019-08-06T21:26:38+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aea1ff3dd", "title": "Compiling a Functional Language Using C++, Part 4 - Small Improvements", "url": "https://danilafe.com/blog/04_compiler_improvements/", "published_at": "2019-08-06T21:26:38+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aeaf64435", "title": "Compiling a Functional Language Using C++, Part 5 - Execution", "url": "https://danilafe.com/blog/05_compiler_execution/", "published_at": "2019-08-06T21:26:38+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aeb480f38", "title": "Compiling a Functional Language Using C++, Part 6 - Compilation", "url": "https://danilafe.com/blog/06_compiler_compilation/", "published_at": "2019-08-06T21:26:38+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aec261094", "title": "Compiling a Functional Language Using C++, Part 7 - Runtime", "url": "https://danilafe.com/blog/07_compiler_runtime/", "published_at": "2019-08-06T21:26:38+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aecdefe5a", "title": "Switching to a Static Site Generator", "url": "https://danilafe.com/blog/static_site/", "published_at": "2019-08-05T08:13:58+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aed452b80", "title": "Compiling a Functional Language Using C++, Part 0 - Intro", "url": "https://danilafe.com/blog/00_compiler_intro/", "published_at": "2019-08-03T08:02:30+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aed504cd5", "title": "Compiling a Functional Language Using C++, Part 1 - Tokenizing", "url": "https://danilafe.com/blog/01_compiler_tokenizing/", "published_at": "2019-08-03T08:02:30+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aed7a1edf", "title": "Compiling a Functional Language Using C++, Part 2 - Parsing", "url": "https://danilafe.com/blog/02_compiler_parsing/", "published_at": "2019-08-03T08:02:30+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aee3c3d29", "title": "Local Development Environment for JOS and CS 444", "url": "https://danilafe.com/blog/jos_local/", "published_at": "2019-04-07T06:01:00+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aef18dab7", "title": "Lambda Calculus and Church Encoded Integers", "url": "https://danilafe.com/blog/lambda_calculus_integers/", "published_at": "2019-03-29T05:21:26+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aefb399c9", "title": "Proof of Inductive Palindrome Definition in Coq", "url": "https://danilafe.com/blog/coq_palindrome/", "published_at": "2019-03-28T06:55:01+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aefd830f3", "title": "Setting Up Crystal on ARM", "url": "https://danilafe.com/blog/crystal_on_arm/", "published_at": "2019-03-02T06:47:50+00:00" }, { "id": "01a08767-778a-7272-9538-8b9aefffa637", "title": "Haskell Error Checking and Autocompletion With LSP", "url": "https://danilafe.com/blog/haskell_language_server/", "published_at": "2019-01-16T16:15:37+00:00" }, { "id": "01a08767-778a-7272-9538-8b9af0b31c92", "title": "A Look Into Starbound's File Formats", "url": "https://danilafe.com/blog/starbound/", "published_at": "2017-05-17T22:34:04+00:00" }, { "id": "01a08767-778a-7272-9538-8b9af0b675a3", "title": "New Look, New Features!", "url": "https://danilafe.com/blog/new_look/", "published_at": "2016-11-23T23:29:13+00:00" }, { "id": "01a08767-778a-7272-9538-8b9af13496ff", "title": "Learning Emulation, Part 2.5 - Implementation", "url": "https://danilafe.com/blog/03_learning_emulation/", "published_at": "2016-06-30T00:00:00+00:00" }, { "id": "01a08767-778a-7272-9538-8b9af1d6e9fa", "title": "Learning Emulation, Part 2", "url": "https://danilafe.com/blog/02_learning_emulation/", "published_at": "2016-06-29T00:00:00+00:00" }, { "id": "01a08767-778a-7272-9538-8b9af22ee435", "title": "Learning Emulation, Part 1", "url": "https://danilafe.com/blog/01_learning_emulation/", "published_at": "2016-06-27T00:00:00+00:00" }, { "id": "01a08767-778a-7272-9538-8b9af290ee93", "title": "About", "url": "https://danilafe.com/about/", "published_at": null }, { "id": "01a08767-778a-7272-9538-8b9af2e236ae", "title": "Content Graph", "url": "https://danilafe.com/graph/", "published_at": null }, { "id": "01a08767-778a-7272-9538-8b9af33cb767", "title": "Favorites", "url": "https://danilafe.com/favorites/", "published_at": null }, { "id": "01a08767-778a-7272-9538-8b9af383e8da", "title": "Search", "url": "https://danilafe.com/search/", "published_at": null } ] posts Claim your blog
Back to Daniel's Blog
Blog · corpus.blog/blogs/danilafe.com/posts

Daniel's Blog

danilafe.com

2026

2025

2024

2023

2022

2021

2020

2019

2017

2016

Undated