41554 blogs · [ { "id": "01a0879e-da69-727b-9331-dd2f3ec6e8a1", "title": "JIT Compiling Code in 5μs", "url": "https://malisper.me/jit-compiling-code-in-5-us/", "published_at": "2026-08-11T09:55:57+00:00" }, { "id": "01a0879e-da69-727b-9331-dd2f3f91b856", "title": "Rebuilding Postgres for 300x faster analytics: batching, operator fusion, and SIMD", "url": "https://malisper.me/how-we-made-postgres-hundreds-of-times-faster-the-query-engine/", "published_at": "2026-08-03T10:00:39+00:00" }, { "id": "01a0879e-da69-727b-9331-dd2f4033724a", "title": "Postgres in Rust: three dead ends before we passed 100% of the regression suite", "url": "https://malisper.me/postgres-in-rust-regression-suite/", "published_at": "2026-07-16T10:00:49+00:00" }, { "id": "01a0879e-da69-727b-9331-dd2f407d1b32", "title": "pgrust passes 100% of the Postgres regression tests", "url": "https://malisper.me/pgrust-passes-100-of-postgresqls-regression-tests/", "published_at": "2026-06-25T15:25:42+00:00" }, { "id": "01a0879e-da69-727b-9331-dd2f408a6300", "title": "The four horsemen behind thousands of Postgres outages", "url": "https://malisper.me/the-four-horsemen-behind-thousands-of-postgres-outages/", "published_at": "2026-05-07T05:00:13+00:00" }, { "id": "01a0879e-da69-727b-9331-dd2f413d7b4f", "title": "pgrust update: at 67% Postgres compatibility, and accelerating", "url": "https://malisper.me/pgrust-update-at-67-postgres-compatibility-and-accelerating/", "published_at": "2026-04-28T07:13:20+00:00" }, { "id": "01a0879e-da69-727b-9331-dd2f41f9dac9", "title": "pgrust: Rebuilding Postgres in Rust with AI", "url": "https://malisper.me/pgrust-rebuilding-postgres-in-rust-with-ai/", "published_at": "2026-04-20T16:03:16+00:00" }, { "id": "01a0879e-da69-727b-9331-dd2f42ccdbc1", "title": "Simple Rules for Building Simple Systems", "url": "https://malisper.me/simple-rules-for-building-simple-systems/", "published_at": "2020-03-23T13:00:10+00:00" }, { "id": "01a0879e-da69-727b-9331-dd2f4324d303", "title": "An Algorithm for Passing Programming Interviews", "url": "https://malisper.me/an-algorithm-for-passing-programming-interviews/", "published_at": "2020-03-06T20:09:28+00:00" }, { "id": "01a0879e-da69-727b-9331-dd2f43c03502", "title": "Tools in My Toolbox", "url": "https://malisper.me/tools-in-my-toolbox/", "published_at": "2020-02-10T17:26:00+00:00" }, { "id": "01a0bb51-5a77-71c1-8277-111b0edf4ea9", "title": "Advent of Code: Day 3", "url": "https://malisper.me/advent-of-code-day-3/", "published_at": "2019-12-04T04:45:37+00:00" }, { "id": "01a0bb51-5a77-71c1-8277-111b0f6f4dcb", "title": "Advent of Code: Day 2", "url": "https://malisper.me/advent-of-code-day-2/", "published_at": "2019-12-03T04:43:15+00:00" }, { "id": "01a0bb51-5a77-71c1-8277-111b0f7d0317", "title": "Advent of Code: Day 1", "url": "https://malisper.me/advent-of-code-day-1/", "published_at": "2019-12-02T00:10:24+00:00" }, { "id": "01a0bb51-5a77-71c1-8277-111b10254abd", "title": "Generating Fractals with Postgres: Self-Similar Fractals", "url": "https://malisper.me/generating-fractals-with-sql-self-similar-fractals/", "published_at": "2019-04-29T15:59:56+00:00" }, { "id": "01a0bb51-5a77-71c1-8277-111b1069b4b9", "title": "Generating Fractals with Postgres: Escape-Time Fractals", "url": "https://malisper.me/generating-fractals-with-postgres-escape-time-fractals/", "published_at": "2019-04-21T23:11:45+00:00" }, { "id": "01a0bb51-5a77-71c1-8277-111b114f5872", "title": "Generating Fractals with SQL Queries", "url": "https://malisper.me/generating-fractals-with-sql-queries/", "published_at": "2019-03-26T01:11:57+00:00" }, { "id": "01a0bb51-5a77-71c1-8277-111b11eb2290", "title": "Perfalytics is now Generally Available", "url": "https://malisper.me/perfalytics-is-now-generally-available/", "published_at": "2019-03-20T05:08:46+00:00" }, { "id": "01a0bb51-5a77-71c1-8277-111b12e46c26", "title": "Milestones", "url": "https://malisper.me/milestones/", "published_at": "2019-01-06T04:50:53+00:00" }, { "id": "01a0bb51-5a77-71c1-8277-111b135a836e", "title": "My Starting Point", "url": "https://malisper.me/my-starting-point/", "published_at": "2018-12-29T10:06:52+00:00" }, { "id": "01a0bb51-5a77-71c1-8277-111b13c3857a", "title": "Attempting a Bootstrapped Business", "url": "https://malisper.me/attempting-a-bootstrapped-business/", "published_at": "2018-12-28T06:28:13+00:00" }, { "id": "01a0bb59-659e-7358-980d-dd499ba29392", "title": "Announcing Perfalytics: Never Run EXPLAIN ANALYZE Again", "url": "https://malisper.me/announcing-perfalytics-never-run-explain-analyze-again/", "published_at": "2018-12-02T04:22:21+00:00" }, { "id": "01a0bb59-659e-7358-980d-dd499c64820b", "title": "Recording Footage of Myself Investigating a Performance Issue", "url": "https://malisper.me/recording-footage-of-myself-investigating-a-performance-issue/", "published_at": "2018-07-01T06:08:27+00:00" }, { "id": "01a0bb59-659e-7358-980d-dd499d14dedc", "title": "Tool Write Up – Hadoop", "url": "https://malisper.me/tool-write-up-hadoop/", "published_at": "2018-06-28T05:16:38+00:00" }, { "id": "01a0bb59-659e-7358-980d-dd499d8c50a4", "title": "Book Write Up – Debugging Chapters 5 and 6", "url": "https://malisper.me/book-write-up-debugging-chapters-5-and-6/", "published_at": "2018-06-25T00:18:36+00:00" }, { "id": "01a0bb59-659e-7358-980d-dd499db49966", "title": "Paper Write Up – A Critique of the CAP Theorem", "url": "https://malisper.me/a-critique-of-the-cap-theorem/", "published_at": "2018-06-24T06:59:26+00:00" }, { "id": "01a0bb59-659e-7358-980d-dd499e1e7866", "title": "My Approach to Getting Dramatically Better as a Programmer", "url": "https://malisper.me/my-approach-to-getting-dramatically-better-as-a-programmer/", "published_at": "2018-06-14T13:00:47+00:00" }, { "id": "01a0bb59-659e-7358-980d-dd499e5aa686", "title": "Postgres Backups with Continuous Archiving", "url": "https://malisper.me/postgres-backups-with-continuous-archiving/", "published_at": "2018-02-26T03:20:51+00:00" }, { "id": "01a0bb59-659e-7358-980d-dd499f388e6b", "title": "There is More to Programming Than Programming Languages", "url": "https://malisper.me/there-is-more-to-programming-than-programming-languages/", "published_at": "2017-11-22T14:00:35+00:00" }, { "id": "01a0bb59-659e-7358-980d-dd49a0376eeb", "title": "How to Get a Programming Job Straight Out of High School", "url": "https://malisper.me/how-to-get-a-programming-job-straight-out-of-high-school/", "published_at": "2017-10-31T07:00:07+00:00" }, { "id": "01a0bb59-659e-7358-980d-dd49a0e0b836", "title": "How to Improve Your Productivity as a Working Programmer", "url": "https://malisper.me/how-to-improve-your-productivity-as-a-working-programmer/", "published_at": "2017-08-31T11:52:16+00:00" }, { "id": "01a0bb61-88de-732b-bc05-1b0e5c908baa", "title": "Time for An Intermission", "url": "https://malisper.me/time-for-an-intermission/", "published_at": "2017-07-02T06:07:41+00:00" }, { "id": "01a0bb61-88de-732b-bc05-1b0e5d161dfa", "title": "Postgres JSONB", "url": "https://malisper.me/postgres-partial-indexes/", "published_at": "2017-06-30T07:00:45+00:00" }, { "id": "01a0bb61-88de-732b-bc05-1b0e5dd13f8e", "title": "track_io_timing", "url": "https://malisper.me/track_io_timing/", "published_at": "2017-06-29T07:00:14+00:00" }, { "id": "01a0bb61-88de-732b-bc05-1b0e5e56d654", "title": "Avoiding Torn Pages", "url": "https://malisper.me/avoiding-torn-pages/", "published_at": "2017-06-28T07:00:28+00:00" }, { "id": "01a0bb61-88de-732b-bc05-1b0e5e888d17", "title": "Postgres TOAST", "url": "https://malisper.me/postgres-toast/", "published_at": "2017-06-27T07:00:35+00:00" }, { "id": "01a0bb61-88de-732b-bc05-1b0e5ed54fe9", "title": "The File Layout of Postgres Tables", "url": "https://malisper.me/the-file-layout-of-postgres-tables/", "published_at": "2017-06-26T07:00:27+00:00" }, { "id": "01a0bb61-88de-732b-bc05-1b0e5f164783", "title": "How to Write a Postgres SQL UDF", "url": "https://malisper.me/how-to-write-a-postgres-sql-udf/", "published_at": "2017-06-23T07:00:02+00:00" }, { "id": "01a0bb61-88de-732b-bc05-1b0e5fb9c9ad", "title": "Postgres Upserts", "url": "https://malisper.me/postgres-upserts/", "published_at": "2017-06-22T07:00:15+00:00" }, { "id": "01a0bb61-88de-732b-bc05-1b0e600734ec", "title": "Postgres Transaction Isolation Levels", "url": "https://malisper.me/postgres-transaction-isolation-levels/", "published_at": "2017-06-21T07:00:12+00:00" }, { "id": "01a0bb61-88de-732b-bc05-1b0e6086bae1", "title": "Postgres Row Level Locks", "url": "https://malisper.me/postgres-row-level-locks/", "published_at": "2017-06-20T07:00:59+00:00" }, { "id": "01a0bb67-cfe8-7096-9937-c543cd58937c", "title": "Postgres Transactions Aren’t Fully Isolated", "url": "https://malisper.me/postgres-transactions-arent-fully-isolated/", "published_at": "2017-06-19T07:00:56+00:00" }, { "id": "01a0bb67-cfe8-7096-9937-c543cdbf79a7", "title": "Postgres Window Functions", "url": "https://malisper.me/postgres-window-functions/", "published_at": "2017-06-16T07:00:45+00:00" }, { "id": "01a0bb67-cfe8-7096-9937-c543ce398ef8", "title": "SELECT DISTINCT ON … ORDER BY", "url": "https://malisper.me/select-distinct-on-order-by/", "published_at": "2017-06-15T07:00:49+00:00" }, { "id": "01a0bb67-cfe8-7096-9937-c543cf346124", "title": "The Missing Postgres Scan: The Loose Index Scan", "url": "https://malisper.me/the-missing-postgres-scan-the-loose-index-scan/", "published_at": "2017-06-14T07:00:32+00:00" }, { "id": "01a0bb67-cfe8-7096-9937-c543d009acc8", "title": "Postgres Lateral Joins", "url": "https://malisper.me/postgres-lateral-joins/", "published_at": "2017-06-13T07:00:46+00:00" }, { "id": "01a0bb67-cfe8-7096-9937-c543d0db4b6a", "title": "Understanding Postgres Recursive CTEs", "url": "https://malisper.me/understanding-postgres-recursive-ctes/", "published_at": "2017-06-12T07:00:50+00:00" }, { "id": "01a0bb67-cfe8-7096-9937-c543d1b6b011", "title": "Postgres CTEs", "url": "https://malisper.me/postgres-ctes/", "published_at": "2017-06-09T07:00:59+00:00" }, { "id": "01a0bb67-cfe8-7096-9937-c543d22371c4", "title": "Postgres Heap Only Tuples", "url": "https://malisper.me/postgres-heap-only-tuples/", "published_at": "2017-06-08T07:00:59+00:00" }, { "id": "01a0bb67-cfe8-7096-9937-c543d2e2a1fd", "title": "Postgres Vacuum Full", "url": "https://malisper.me/postgres-vacuum-full/", "published_at": "2017-06-07T07:00:28+00:00" }, { "id": "01a0bb67-cfe8-7096-9937-c543d37dfd7e", "title": "Transaction Id Wraparound in Postgres", "url": "https://malisper.me/transaction-id-wraparound-in-postgres/", "published_at": "2017-06-06T07:00:02+00:00" }, { "id": "01a0bb6b-f9e9-712c-9c06-bbf5542afa5e", "title": "The Postgres Vacuum", "url": "https://malisper.me/the-postgres-vacuum/", "published_at": "2017-06-05T07:00:53+00:00" }, { "id": "01a0bb6b-f9e9-712c-9c06-bbf554378bcc", "title": "Postgres WAL", "url": "https://malisper.me/postgres-wal-log/", "published_at": "2017-06-02T07:00:10+00:00" }, { "id": "01a0bb6b-f9e9-712c-9c06-bbf55491ea08", "title": "The Postgres Commit Log", "url": "https://malisper.me/the-postgres-commit-log/", "published_at": "2017-06-01T07:00:53+00:00" }, { "id": "01a0bb6b-f9e9-712c-9c06-bbf5558b80d2", "title": "Postgres MVCC", "url": "https://malisper.me/postgres-mvcc/", "published_at": "2017-05-31T07:00:10+00:00" }, { "id": "01a0bb6b-f9e9-712c-9c06-bbf555f67df6", "title": "Transactions in Postgres", "url": "https://malisper.me/transactions-in-postgres/", "published_at": "2017-05-30T07:00:09+00:00" }, { "id": "01a0bb6b-f9e9-712c-9c06-bbf5562b8e91", "title": "Speeding up Postgres Index Scans with Index-Only Scans", "url": "https://malisper.me/speeding-up-postgres-index-scans-with-index-only-scans/", "published_at": "2017-05-29T07:00:58+00:00" }, { "id": "01a0bb6b-f9e9-712c-9c06-bbf55719cc9a", "title": "How Postgres Plans Queries", "url": "https://malisper.me/how-postgres-plans-queries/", "published_at": "2017-05-26T07:00:33+00:00" }, { "id": "01a0bb6b-f9e9-712c-9c06-bbf5574538f5", "title": "explain.despez.com", "url": "https://malisper.me/explain-despez-com/", "published_at": "2017-05-25T07:00:11+00:00" }, { "id": "01a0bb6b-f9e9-712c-9c06-bbf557b8dc7b", "title": "Using Explain Analyze in Postgres", "url": "https://malisper.me/using-explain-analyze-in-postgres/", "published_at": "2017-05-24T07:00:42+00:00" }, { "id": "01a0bb6b-f9e9-712c-9c06-bbf558a9e6ad", "title": "Using Explain in Postgres", "url": "https://malisper.me/using-explain-in-postgres/", "published_at": "2017-05-23T07:00:24+00:00" }, { "id": "01a0bb6f-e839-738e-b7d0-b5c4ac3d9200", "title": "Postgres Merge Joins", "url": "https://malisper.me/postgres-merge-joins/", "published_at": "2017-05-22T07:00:36+00:00" }, { "id": "01a0bb6f-e839-738e-b7d0-b5c4ad11a468", "title": "Postgres Hash Joins", "url": "https://malisper.me/postgres-hash-joins/", "published_at": "2017-05-19T07:00:32+00:00" }, { "id": "01a0bb6f-e839-738e-b7d0-b5c4add62466", "title": "Postgres Nested Loop Joins", "url": "https://malisper.me/postgres-nested-loop-joins/", "published_at": "2017-05-18T07:00:51+00:00" }, { "id": "01a0bb6f-e839-738e-b7d0-b5c4aeb01ff0", "title": "Postgres Bitmap Scans", "url": "https://malisper.me/postgres-bitmap-scans/", "published_at": "2017-05-17T07:00:50+00:00" }, { "id": "01a0bb6f-e83a-707e-8468-4c18cd1d53a7", "title": "Postgres Index Scans", "url": "https://malisper.me/postgres-index-scans/", "published_at": "2017-05-16T07:00:57+00:00" }, { "id": "01a0bb6f-e83a-707e-8468-4c18cd436375", "title": "Postgres Sequential Scans", "url": "https://malisper.me/postgres-sequential-scans/", "published_at": "2017-05-15T07:00:25+00:00" }, { "id": "01a0bb6f-e83a-707e-8468-4c18cd466bea", "title": "Building Fizzbuzz in Fractran from the Bottom Up", "url": "https://malisper.me/building-fizzbuzz-fractran-bottom/", "published_at": "2016-06-11T03:17:26+00:00" }, { "id": "01a0bb6f-e83a-707e-8468-4c18cd88678d", "title": "How to Generate Self-Referential Programs", "url": "https://malisper.me/writing-self-referential-programs/", "published_at": "2016-04-20T05:25:22+00:00" }, { "id": "01a0bb6f-e83a-707e-8468-4c18cdf3ca65", "title": "Loops in Lisp Part 4: Series", "url": "https://malisper.me/loops-in-lisp-part-4-series/", "published_at": "2016-04-13T23:56:36+00:00" }, { "id": "01a0bb6f-e83a-707e-8468-4c18cec25335", "title": "Loops in Lisp Part 3: Iterate", "url": "https://malisper.me/loops-in-lisp-part-3-iterate/", "published_at": "2016-01-12T23:48:11+00:00" }, { "id": "01a0bb73-6d26-70bb-a145-23ef5e568897", "title": "Loops in Lisp Part 2: Loop", "url": "https://malisper.me/loops-in-lisp-part-2-loop/", "published_at": "2015-12-15T04:25:00+00:00" }, { "id": "01a0bb73-6d26-70bb-a145-23ef5f3f7617", "title": "Loops in Lisp Part 1: Goto", "url": "https://malisper.me/loops-in-lisp-part-1-goto/", "published_at": "2015-11-24T04:40:47+00:00" }, { "id": "01a0bb73-6d26-70bb-a145-23ef5fab4dbf", "title": "Defmemo", "url": "https://malisper.me/defmemo/", "published_at": "2015-11-10T04:33:55+00:00" }, { "id": "01a0bb73-6d26-70bb-a145-23ef6074882a", "title": "Or=", "url": "https://malisper.me/or/", "published_at": "2015-10-13T03:32:33+00:00" }, { "id": "01a0bb73-6d26-70bb-a145-23ef608d35b9", "title": "Zap", "url": "https://malisper.me/zap/", "published_at": "2015-09-29T04:29:48+00:00" }, { "id": "01a0bb73-6d26-70bb-a145-23ef617c854e", "title": "Getting Places", "url": "https://malisper.me/getting-places/", "published_at": "2015-09-20T23:42:27+00:00" }, { "id": "01a0bb73-6d26-70bb-a145-23ef61f0a36a", "title": "Defasm", "url": "https://malisper.me/defasm/", "published_at": "2015-09-08T03:55:33+00:00" }, { "id": "01a0bb73-6d26-70bb-a145-23ef620bac12", "title": "Defaddress", "url": "https://malisper.me/defaddress/", "published_at": "2015-08-27T03:01:09+00:00" }, { "id": "01a0bb73-6d26-70bb-a145-23ef62851cf6", "title": "Debugging Lisp Part 5: Miscellaneous", "url": "https://malisper.me/debugging-lisp-part-5-miscellaneous/", "published_at": "2015-08-19T05:13:58+00:00" }, { "id": "01a0bb73-6d26-70bb-a145-23ef62aefc95", "title": "Debugging Lisp Part 4: Restarts", "url": "https://malisper.me/debugging-lisp-part-4-restarts/", "published_at": "2015-08-05T04:59:22+00:00" }, { "id": "01a0bb76-b0d9-7264-a803-0ad0fcc5d9fb", "title": "Debugging Lisp Part 3: Redefining Classes", "url": "https://malisper.me/debugging-lisp-part-3-redefining-classes/", "published_at": "2015-07-22T02:40:49+00:00" }, { "id": "01a0bb76-b0d9-7264-a803-0ad0fcf545a1", "title": "Debugging Lisp Part 2: Inspecting", "url": "https://malisper.me/debugging-lisp-part-2-inspecting/", "published_at": "2015-07-14T05:22:35+00:00" }, { "id": "01a0bb76-b0d9-7264-a803-0ad0fdd93850", "title": "Debugging Lisp Part 1: Recompilation", "url": "https://malisper.me/debugging-lisp-part-1-recompilation/", "published_at": "2015-07-07T04:37:38+00:00" }, { "id": "01a0bb76-b0d9-7264-a803-0ad0fe87d391", "title": "Multiple-value-bind", "url": "https://malisper.me/multiple-value-bind/", "published_at": "2015-06-30T04:24:58+00:00" }, { "id": "01a0bb76-b0d9-7264-a803-0ad0ff51ec30", "title": "Hofeach", "url": "https://malisper.me/hofeach/", "published_at": "2015-06-17T04:13:50+00:00" }, { "id": "01a0bb76-b0d9-7264-a803-0ad0ffcec7ed", "title": "Mapeach", "url": "https://malisper.me/mapeach/", "published_at": "2015-06-14T04:09:12+00:00" }, { "id": "01a0bb76-b0d9-7264-a803-0ad10056c5bf", "title": "CL-WHO", "url": "https://malisper.me/cl-who/", "published_at": "2015-06-10T03:47:40+00:00" }, { "id": "01a0bb76-b0d9-7264-a803-0ad100c78a7e", "title": "Once-only", "url": "https://malisper.me/once-only/", "published_at": "2015-06-06T02:53:54+00:00" }, { "id": "01a0bb76-b0d9-7264-a803-0ad101c5e315", "title": "Automatically Binding Gensyms", "url": "https://malisper.me/automatically-binding-gensyms/", "published_at": "2015-06-02T04:05:45+00:00" }, { "id": "01a0bb76-b0d9-7264-a803-0ad1024a3f01", "title": "Efficiently Building Lists", "url": "https://malisper.me/efficiently-building-lists/", "published_at": "2015-05-31T02:47:10+00:00" }, { "id": "01a0bb79-f09f-7081-bae5-115086806f19", "title": "The Ret Macro", "url": "https://malisper.me/the-ret-macro/", "published_at": "2015-05-30T03:13:55+00:00" } ] posts Claim your blog
Back to malisper.me
Blog · corpus.blog/blogs/malisper.me/posts

malisper.me

malisper.me

2026

2020

2019

2018

2017

2016

2015

13 Oct 2015
29 Sept 2015