41554 blogs · [ { "id": "01a08732-9c9f-720a-9220-7e4d850f0758", "title": "SQLite prefixes its temp files with `etilqs_`", "url": "https://avi.im/blag/2026/etilqs/", "published_at": "2026-04-18T14:10:33+00:00" }, { "id": "01a08732-9c9f-720a-9220-7e4d8525e480", "title": "Setsum - order agnostic, additive, subtractive checksum", "url": "https://avi.im/blag/2025/setsum/", "published_at": "2025-09-13T14:19:24+00:00" }, { "id": "01a08732-9c9f-720a-9220-7e4d85c1537a", "title": "Oldest recorded transaction", "url": "https://avi.im/blag/2025/oldest-txn/", "published_at": "2025-09-06T14:23:34+00:00" }, { "id": "01a08732-9c9f-720a-9220-7e4d85c796af", "title": "Replacing a cache service with a database", "url": "https://avi.im/blag/2025/db-cache/", "published_at": "2025-08-31T14:00:10+00:00" }, { "id": "01a08732-9c9f-720a-9220-7e4d86164d13", "title": "SQLite commits are not durable under default settings", "url": "https://avi.im/blag/2025/sqlite-fsync/", "published_at": "2025-08-24T15:16:20+00:00" }, { "id": "01a08732-9c9f-720a-9220-7e4d86a5d5e3", "title": "PSA: SQLite WAL checksums fail silently and may lose data", "url": "https://avi.im/blag/2025/sqlite-wal-checksum/", "published_at": "2025-07-22T13:24:26+00:00" }, { "id": "01a08732-9c9f-720a-9220-7e4d87147009", "title": "Rickrolling Turso DB (SQLite rewrite in Rust)", "url": "https://avi.im/blag/2025/rickrolling-turso/", "published_at": "2025-07-20T17:36:59+00:00" }, { "id": "01a08732-9c9f-720a-9220-7e4d87ddba79", "title": "Collection of insane and fun facts about SQLite", "url": "https://avi.im/blag/2024/sqlite-facts/", "published_at": "2024-12-30T09:53:57+00:00" }, { "id": "01a08732-9c9f-720a-9220-7e4d881f40dc", "title": "How bloom filters made SQLite 10x faster", "url": "https://avi.im/blag/2024/sqlite-past-present-future/", "published_at": "2024-12-22T12:33:15+00:00" }, { "id": "01a08732-9c9f-720a-9220-7e4d8828f462", "title": "In search of a faster SQLite", "url": "https://avi.im/blag/2024/faster-sqlite/", "published_at": "2024-12-14T14:18:30+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a235789551", "title": "Galloping Search", "url": "https://avi.im/blag/2024/galloping-search/", "published_at": "2024-12-07T11:11:34+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a235e1b815", "title": "Building a distributed log using S3 (under 150 lines of Go)", "url": "https://avi.im/blag/2024/s3-log/", "published_at": "2024-11-30T17:46:21+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a2365341c5", "title": "Zero Disk Architecture", "url": "https://avi.im/blag/2024/zero-disk-architecture/", "published_at": "2024-11-24T11:50:31+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a237234c70", "title": "PSA: Most databases do not do checksums by default", "url": "https://avi.im/blag/2024/databases-checksum/", "published_at": "2024-11-09T15:41:18+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a2374eee49", "title": "PSA: SQLite does not do checksums", "url": "https://avi.im/blag/2024/sqlite-bit-flip/", "published_at": "2024-11-09T07:26:46+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a2382e3dd6", "title": "Disaggregated Storage - a brief introduction", "url": "https://avi.im/blag/2024/disaggregated-storage/", "published_at": "2024-11-02T13:21:55+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23915c9a5", "title": "Why does SQLite (in production) have such a bad rep?", "url": "https://avi.im/blag/2024/sqlite-bad-rep/", "published_at": "2024-06-19T14:30:09+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a239fecc4b", "title": "SQLite Slaps", "url": "https://avi.im/blag/2024/sqlite-slaps/", "published_at": "2024-06-18T09:20:02+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23a36642c", "title": "Now", "url": "https://avi.im/blag/now/", "published_at": "2024-03-02T14:10:54+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23a9147ee", "title": "Learning C", "url": "https://avi.im/blag/2024/learning-c/", "published_at": "2024-03-02T09:38:39+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23b2a5a83", "title": "Snapshot Testing", "url": "https://avi.im/blag/2024/snapshot-testing/", "published_at": "2024-03-01T13:22:48+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23b696dc4", "title": "Win: contribution to libSQL (SQLite) codebase", "url": "https://avi.im/blag/2024/win-sqlite-contribution/", "published_at": "2024-02-16T03:15:29+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23c323843", "title": "Errata in Hekaton MVCC paper", "url": "https://avi.im/blag/2023/hekaton-paper-typo/", "published_at": "2023-04-20T17:29:15+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23c6b4068", "title": "Internet is wholesome: MVCC edition", "url": "https://avi.im/blag/2023/internet-mvcc/", "published_at": "2023-04-20T16:49:15+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23c93791e", "title": "It is becoming difficult for me to be productive in Python", "url": "https://avi.im/blag/2023/refactoring-python/", "published_at": "2023-02-05T12:26:57+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23ceeebca", "title": "MongoDB secondary only index", "url": "https://avi.im/blag/2022/mongo-secondary-index/", "published_at": "2022-05-22T13:05:44+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23dbbc432", "title": "Introducing CaskDB – a project to teach you writing a key-value store", "url": "https://avi.im/blag/2022/py-caskdb/", "published_at": "2022-05-10T16:16:11+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23eb815f0", "title": "Recurse Center: Winter Break", "url": "https://avi.im/blag/2022/rc-winter-break/", "published_at": "2022-01-01T13:56:30+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23eec7399", "title": "Recurse Center Day 24: Hacking Go compiler to add a new keyword", "url": "https://avi.im/blag/2021/rc-day-24/", "published_at": "2021-12-08T07:33:55+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a23f835ff9", "title": "Recurse Center Day 20: Django v4 upgrade (from v1)", "url": "https://avi.im/blag/2021/rc-day-20/", "published_at": "2021-12-02T11:48:07+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a2406eb917", "title": "Recurse Center Day 19", "url": "https://avi.im/blag/2021/rc-day-19/", "published_at": "2021-12-01T07:52:37+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a240eafb25", "title": "Recurse Center Day 18", "url": "https://avi.im/blag/2021/rc-day-18/", "published_at": "2021-11-30T14:50:58+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24106e949", "title": "Recurse Center Day 17", "url": "https://avi.im/blag/2021/rc-day-17/", "published_at": "2021-11-24T10:43:29+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a2411cd401", "title": "Recurse Center Day 16: Open Source", "url": "https://avi.im/blag/2021/rc-day-16/", "published_at": "2021-11-23T10:43:29+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a241b86aab", "title": "Recurse Center Day 15: B Tree Algorithms", "url": "https://avi.im/blag/2021/rc-day-15/", "published_at": "2021-11-20T14:45:47+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a2429a1923", "title": "Recurse Center Day 14: NoSQL Transactions", "url": "https://avi.im/blag/2021/rc-day-14/", "published_at": "2021-11-19T14:45:44+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a242a9f3d7", "title": "Recurse Center Day 13: Why 'Raft'?", "url": "https://avi.im/blag/2021/rc-day-13/", "published_at": "2021-11-18T12:09:30+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a2432bc8d8", "title": "Recurse Center Day 12: Isolation Anomalies", "url": "https://avi.im/blag/2021/rc-day-12/", "published_at": "2021-11-17T12:09:27+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a243955a28", "title": "Recurse Center Day 11: B Tree Insertions", "url": "https://avi.im/blag/2021/rc-day-11/", "published_at": "2021-11-16T10:37:59+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24476462e", "title": "Recurse Center Day 10: Learning Distributed Systems", "url": "https://avi.im/blag/2021/rc-day-10/", "published_at": "2021-11-13T17:52:10+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a244f1d0ee", "title": "Recurse Center Day 9: Papers We Love", "url": "https://avi.im/blag/2021/rc-day-9/", "published_at": "2021-11-12T11:05:35+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a245dd3f2b", "title": "Recurse Center Day 8: B Tree Fill Factor (Part 2)", "url": "https://avi.im/blag/2021/rc-day-8/", "published_at": "2021-11-11T10:30:32+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a246c8581d", "title": "Recurse Center Day 7: Basics of ncurses", "url": "https://avi.im/blag/2021/rc-day-7/", "published_at": "2021-11-10T10:38:08+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a247578ed7", "title": "Recurse Center Day 6: B Tree Root", "url": "https://avi.im/blag/2021/rc-day-6/", "published_at": "2021-11-09T10:50:15+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a247edc3ae", "title": "Recurse Center First Week", "url": "https://avi.im/blag/2021/rc-week-1/", "published_at": "2021-11-07T15:38:49+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a2485c74b0", "title": "Recurse Center Day 5: Garbage Collection Algorithms", "url": "https://avi.im/blag/2021/rc-day-5/", "published_at": "2021-11-06T11:29:29+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24880119e", "title": "Recurse Center Day 4: B Tree fill factor", "url": "https://avi.im/blag/2021/rc-day-4/", "published_at": "2021-11-05T11:29:22+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24973e2c4", "title": "Recurse Center Day 3: Hammock Driven Development", "url": "https://avi.im/blag/2021/rc-day-3/", "published_at": "2021-11-03T20:06:42+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a249b43f65", "title": "Recurse Center Day 2: BTree Node", "url": "https://avi.im/blag/2021/rc-day-2/", "published_at": "2021-11-02T18:44:57+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a249e115d4", "title": "Recurse Center Day 1: init", "url": "https://avi.im/blag/2021/rc-day-1/", "published_at": "2021-11-01T22:40:59+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24ad5207d", "title": "What I want to do at Recurse Center", "url": "https://avi.im/blag/2021/rc-plans/", "published_at": "2021-10-24T14:16:15+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24b8ab425", "title": "Accepted to the Recurse Center!", "url": "https://avi.im/blag/2021/rc-accepted-woooooooo/", "published_at": "2021-09-17T14:16:04+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24bf761af", "title": "Towards Inserting One Billion Rows in SQLite Under A Minute", "url": "https://avi.im/blag/2021/fast-sqlite-inserts/", "published_at": "2021-07-17T16:40:44+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24c8684e5", "title": "Marshaling Struct with Special Fields to JSON in Golang", "url": "https://avi.im/blag/2021/golang-marshaling-special-fields/", "published_at": "2021-05-01T09:05:53+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24d20878a", "title": "I ended up adding duplicate records on a unique index in MongoDB", "url": "https://avi.im/blag/2021/mongo-dupes-in-unique-index/", "published_at": "2021-03-31T14:21:35+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24de42790", "title": "Setting up Github Actions for Hugo", "url": "https://avi.im/blag/2020/gh-actions-hugo/", "published_at": "2020-11-29T08:45:53+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24e4819a9", "title": "Moving to Hugo", "url": "https://avi.im/blag/2020/moving-to-hugo/", "published_at": "2020-11-29T05:28:48+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24eeecbd8", "title": "Catching SIGTERM in Python", "url": "https://avi.im/blag/2016/sigterm-in-python/", "published_at": "2016-02-20T11:33:00+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24ef208ff", "title": "Git/Github fork-pull request-update cycle", "url": "https://avi.im/blag/2016/git-fork-cycle-github/", "published_at": "2016-02-19T17:33:00+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24f9c49c5", "title": "Using uWSGI with Python 3", "url": "https://avi.im/blag/2015/uwsgi-python3/", "published_at": "2015-12-18T08:33:00+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a24fa55271", "title": "When is my Cake Day?", "url": "https://avi.im/blag/2015/kekday/", "published_at": "2015-11-20T16:50:00+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a250a0ac24", "title": "Staying Ahead of Amazon, in Amazon Treasure Hunt Contest", "url": "https://avi.im/blag/2015/amazon-treasure-hunt/", "published_at": "2015-10-31T16:50:00+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a251109cee", "title": "How I Am Maintaining Multiple Emails For Git On A Same Machine", "url": "https://avi.im/blag/2015/multiple-git-emails/", "published_at": "2015-08-01T16:50:00+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a251f236c5", "title": "An exploit on Gaana.com gave me access to their entire User Database", "url": "https://avi.im/blag/2015/hacking-gaana/", "published_at": "2015-05-31T13:50:00+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a2527a8454", "title": "Flashing Asus-WRT Merlin by XVortex on NetGear NightHawk R7000", "url": "https://avi.im/blag/2015/asus-wrt-merlin-on-netgear-r7000/", "published_at": "2015-05-10T16:50:00+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a2529ab05d", "title": "Install Windows 8 UEFI on Legacy BIOS with Clover (and Dual boot with Yosemite)", "url": "https://avi.im/blag/2014/install-uefi-windows-yosemite-dualboot/", "published_at": "2014-12-28T10:50:00+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a252e8e66b", "title": "Scraping Javascript page using Python", "url": "https://avi.im/blag/2014/scraping-javascript-website-python/", "published_at": "2014-10-18T08:33:00+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a252f3121c", "title": "Installing Transmission (remote and CLI) client on Raspberry Pi", "url": "https://avi.im/blag/2013/installing-transmission-raspberry-pi/", "published_at": "2013-12-05T04:50:00+00:00" }, { "id": "01a08732-9ca0-70e0-a1f4-33a253837dd1", "title": "About", "url": "https://avi.im/blag/about/", "published_at": null }, { "id": "01a08732-9ca0-70e0-a1f4-33a253a62b48", "title": "Projects", "url": "https://avi.im/blag/projects/", "published_at": null } ] posts Claim your blog
Back to avi.im
Blog · corpus.blog/blogs/avi.im/posts

avi.im

avi.im

2026

2025

2024

2 Mar 2024

2023

2022

2021

2020

2016

2015

2014

2013

Undated