56,966 blogs · [ { "id": "01a08760-68cb-7241-a155-c332bf647bf8", "title": "Writing Ruby Extensions in Odin", "url": "https://citizen428.net/blog/writing-ruby-extensions-odin/", "published_at": "2026-07-21T05:15:23+00:00" }, { "id": "01a08760-68cb-7241-a155-c332bfa8d30a", "title": "Exploring async Ruby", "url": "https://citizen428.net/blog/exploring-async-ruby/", "published_at": "2026-03-27T04:05:17+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c0022925", "title": "C Preprocessor Fun", "url": "https://citizen428.net/blog/c-preprocessor-fun/", "published_at": "2026-03-25T04:32:51+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c0e1cbfa", "title": "Module Functors in OCaml", "url": "https://citizen428.net/blog/ocaml-module-functors/", "published_at": "2025-10-21T07:34:01+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c17d213e", "title": "Introduction to OCaml Extension Points", "url": "https://citizen428.net/blog/introduction-ocaml-extension-points/", "published_at": "2025-10-18T13:01:50+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c1ec3b5b", "title": "Supporting color schemes with modern CSS", "url": "https://citizen428.net/blog/color-schemes-modern-css/", "published_at": "2025-09-04T14:21:17+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c282f124", "title": "We lost something along the way", "url": "https://citizen428.net/blog/we-lost-something/", "published_at": "2025-07-30T04:44:57+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c2a5c306", "title": "Deno + Typescript == Scripting ❤️", "url": "https://citizen428.net/blog/deno-typescript-scripting-love/", "published_at": "2024-10-12T07:40:18+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c2e46fea", "title": "Startups and indie hacking are hard", "url": "https://citizen428.net/blog/startups-are-hard/", "published_at": "2024-09-20T03:49:32+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c3844198", "title": "Exploring Uiua", "url": "https://citizen428.net/blog/exploring-uiua/", "published_at": "2023-11-05T09:32:23+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c3a55827", "title": "Rails quick tips #7: Project-specific .irbrc", "url": "https://citizen428.net/blog/rails-quick-tips-7-project-specific-irbrc/", "published_at": "2023-04-22T04:32:24+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c3f25ed9", "title": "FizzBuzz in GNU make", "url": "https://citizen428.net/blog/fizzbuzz-in-gnu-make/", "published_at": "2022-07-12T16:16:49+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c4ee4974", "title": "Self-hosting a static site with OpenBSD, httpd, and relayd", "url": "https://citizen428.net/blog/self-hosting-static-site-openbsd-httpd-relayd/", "published_at": "2022-07-08T09:17:15+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c5a3b205", "title": "Easy assertion helpers in Go", "url": "https://citizen428.net/blog/easy-assertion-helpers-in-go/", "published_at": "2022-05-26T14:16:36+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c5bcbe42", "title": "Git quick tips #3: Recover deleted uncommitted files", "url": "https://citizen428.net/blog/git-quick-tips-3-recover-deleted-uncommited-files/", "published_at": "2021-09-07T07:49:59+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c6273dc2", "title": "Git quick tips #2: Working with many branches", "url": "https://citizen428.net/blog/git-quick-tips-2-working-with-many-branches/", "published_at": "2021-07-20T02:09:41+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c6d7a786", "title": "Git quick tips #1: git commit --fixup", "url": "https://citizen428.net/blog/git-quick-tips-1-commit-fixup/", "published_at": "2020-08-19T14:19:02+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c758e673", "title": "Installing NixOS on a Raspberry Pi 3", "url": "https://citizen428.net/blog/installing-nixos-raspberry-pi-3/", "published_at": "2020-05-02T05:13:30+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c7afdef8", "title": "Rails quick tips #6: tmux, tmuxinator and Overmind", "url": "https://citizen428.net/blog/rails-quick-tips-6-tmux-tmuxinator-overmind/", "published_at": "2020-03-23T08:36:39+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c7fd0916", "title": "Bash Error Handling with Trap", "url": "https://citizen428.net/blog/bash-error-handling-with-trap/", "published_at": "2020-02-27T07:56:18+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c87ed1d9", "title": "Native CLI Apps in ReasonML: Part 1", "url": "https://citizen428.net/blog/native-cli-apps-in-reasonml-part-1/", "published_at": "2020-02-20T14:00:53+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c8ea4460", "title": "Rails quick tips #5: Create apps from templates", "url": "https://citizen428.net/blog/rails-quick-tips-5-create-apps-from-templates/", "published_at": "2020-02-17T07:58:59+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c9a09edf", "title": "Learning F# — Writing A Ray Tracer", "url": "https://citizen428.net/blog/learning-fsharp-writing-a-raytracer/", "published_at": "2019-12-30T04:42:27+00:00" }, { "id": "01a08760-68cb-7241-a155-c332c9f8b388", "title": "Ruby Literals You May Not Know", "url": "https://citizen428.net/blog/ruby_literals_you_may_not_know/", "published_at": "2019-11-28T16:14:51+00:00" }, { "id": "01a08760-68cb-7241-a155-c332ca9c9fd6", "title": "Learning F# — Web Scraping With F# Data", "url": "https://citizen428.net/blog/learning-fsharp-web-scraping-with-fsharp-data/", "published_at": "2019-07-04T13:59:10+00:00" }, { "id": "01a08760-68cb-7241-a155-c332caa83e69", "title": "Learning F# — A Simple Parser", "url": "https://citizen428.net/blog/learning-fsharp-a-simple-parser/", "published_at": "2019-06-13T14:29:42+00:00" }, { "id": "01a08760-68cb-7241-a155-c332cabe07ce", "title": "Learning F# — Binary Search Tree", "url": "https://citizen428.net/blog/learning-fsharp-binary-search-tree/", "published_at": "2019-05-26T07:50:40+00:00" }, { "id": "01a08760-68cb-7241-a155-c332cb566004", "title": "RelaxedReader — A Firefox Addon to Fight Reading Anxiety", "url": "https://citizen428.net/blog/relaxed-reader-a-firefox-addon-to-fight-reading-anxiety/", "published_at": "2019-02-10T15:27:44+00:00" }, { "id": "01a08760-68cb-7241-a155-c332cc06518f", "title": "Multi-Stage Docker Builds for Crystal", "url": "https://citizen428.net/blog/multi-stage-docker-builds-for-crystal/", "published_at": "2019-02-03T14:17:12+00:00" }, { "id": "01a08760-68cb-7241-a155-c332ccd3987a", "title": "Fighting Boredom With a Hyperapp Experiment", "url": "https://citizen428.net/blog/fighting-boredom-with-a-hyperapp-experiment/", "published_at": "2018-08-18T16:21:34+00:00" }, { "id": "01a08760-68cc-72b0-9529-39707a9e5be0", "title": "Rails quick tips #4: Keep your bundle secure with bundler-audit", "url": "https://citizen428.net/blog/rails-quick-tips-4-keep-your-bundle-secure-with-bundler-audit/", "published_at": "2018-07-13T16:19:34+00:00" }, { "id": "01a08760-68cc-72b0-9529-39707abe02b0", "title": "10 Common Git Problems and How to Fix Them", "url": "https://citizen428.net/blog/10-common-git-problems-and-how-to-fix-them/", "published_at": "2018-07-09T16:16:10+00:00" }, { "id": "01a08760-68cc-72b0-9529-39707b70c66d", "title": "Asynchronous Notifications in Postgres", "url": "https://citizen428.net/blog/asynchronous-notifications-in-postgres/", "published_at": "2018-07-07T16:13:02+00:00" }, { "id": "01a08760-68cc-72b0-9529-39707c1f59ea", "title": "Rails quick tips #3: Adding a Gemfile.dev", "url": "https://citizen428.net/blog/rails-quick-tips-3-adding-a-gemfile-dev/", "published_at": "2018-07-02T16:10:20+00:00" }, { "id": "01a08760-68cc-72b0-9529-39707c5382b0", "title": "Rails quick tips #2: Project-specific .pryrc", "url": "https://citizen428.net/blog/rails-quick-tips-2-project-specific-pryrc/", "published_at": "2018-06-27T16:12:13+00:00" }, { "id": "01a08760-68cc-72b0-9529-39707d388c26", "title": "Rails quick tips #1: Console sandbox", "url": "https://citizen428.net/blog/rails-quick-tips-1-console-sandbox/", "published_at": "2018-06-26T15:45:36+00:00" }, { "id": "01a08760-68cc-72b0-9529-39707e29a3e5", "title": "Extending Nmap With Lua", "url": "https://citizen428.net/blog/extending-nmap-with-lua/", "published_at": "2018-06-25T15:42:38+00:00" }, { "id": "01a08760-68cc-72b0-9529-39707e9f0421", "title": "Exploring foreign data wrappers in Postgres", "url": "https://citizen428.net/blog/exploring-foreign-data-wrappers-in-postgres/", "published_at": "2018-06-03T15:33:39+00:00" }, { "id": "01a08760-68cc-72b0-9529-39707f7d622f", "title": "RubyRef : easy access to Ruby documentation", "url": "https://citizen428.net/blog/rubyref-easy-access-to-ruby-documentation/", "published_at": "2018-05-11T15:30:11+00:00" }, { "id": "01a08760-68cc-72b0-9529-39707fdfb9db", "title": "Ruby Methodfinder Is Still Alive", "url": "https://citizen428.net/blog/ruby-methodfinder-is-still-alive/", "published_at": "2018-05-02T16:22:58+00:00" }, { "id": "01a08760-68cc-72b0-9529-397080bcb71a", "title": "Search GitHub stars with Octokit and fzf", "url": "https://citizen428.net/blog/search-github-stars-with-octokit-and-fzf/", "published_at": "2018-04-22T15:26:26+00:00" }, { "id": "01a08760-68cc-72b0-9529-397080c78c17", "title": "A Rubyist looks at Crystal (Part 2)", "url": "https://citizen428.net/blog/a-rubyist-looks-at-crystal-part-2/", "published_at": "2016-11-20T08:44:23+00:00" }, { "id": "01a08760-68cc-72b0-9529-397081bd8376", "title": "Book review: “The Manga Guide To Regression Analysys”", "url": "https://citizen428.net/blog/book-review-manga-guide-regression-analyses/", "published_at": "2016-11-09T16:16:53+00:00" }, { "id": "01a08760-68cc-72b0-9529-3970820ac113", "title": "A Rubyist looks at Crystal (Part 1)", "url": "https://citizen428.net/blog/a-rubyist-looks-at-crystal-part-1/", "published_at": "2016-10-30T08:17:41+00:00" }, { "id": "01a08760-68cc-72b0-9529-397082cf2a91", "title": "Higher Order Fun", "url": "https://citizen428.net/blog/higher-order-fun/", "published_at": "2016-09-19T15:58:34+00:00" }, { "id": "01a08760-68cc-72b0-9529-397082f42118", "title": "Of Closures and Objects", "url": "https://citizen428.net/blog/of-closures-and-objects/", "published_at": "2016-09-17T15:51:59+00:00" }, { "id": "01a08760-68cc-72b0-9529-397083ef90d3", "title": "Ruby: Going to the C Side", "url": "https://citizen428.net/blog/ruby-going-to-the-c-side/", "published_at": "2011-06-24T07:50:11+00:00" } ] posts Claim your blog
Back to citizen428.net
Blog · corpus.blog/blogs/citizen428.net/posts

citizen428.net

citizen428.net

2026

2025

2024

2023

2022

2021

2020

2019

2018

2016

2011