41554 blogs · [ { "id": "01a087d1-4110-7023-86b7-de5ca796e5ad", "title": "How we afford to merge N PRs per month", "url": "https://reaper.is/writing/20260815-nPRs-per-month.html", "published_at": "2026-08-17T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca6c30ae0", "title": "How I keep hosting cheap", "url": "https://reaper.is/writing/20260519-how-i-keep-hosting-cheap.html", "published_at": "2026-05-25T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca6902e38", "title": "The Relaunch of TillWhen", "url": "https://reaper.is/writing/20260210-the-re-launch-of-tillwhen.html", "published_at": "2026-02-16T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca61b1600", "title": "The Fear", "url": "https://reaper.is/writing/20260131-the-fear.html", "published_at": "2026-02-02T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca52eb8a7", "title": "Self hosting might not be for you", "url": "https://reaper.is/writing/20250911-self-hosting-might-not-be-for-you.html", "published_at": "2025-09-15T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca594aaae", "title": "Don't forget the layers", "url": "https://reaper.is/writing/20250912-dont-forget-the-layers.html", "published_at": "2025-09-15T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca4fb34cf", "title": "Another one about build setups Part - II", "url": "https://reaper.is/writing/20250713-another-one-about-build-setups-part-ii.html", "published_at": "2025-07-21T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca4a14487", "title": "Another one about build setups Part - I", "url": "https://reaper.is/writing/20250710-another-one-about-build-setups-part-i.html", "published_at": "2025-07-14T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca49b82c5", "title": "Store", "url": "https://reaper.is/writing/20250630-introducing-store.html", "published_at": "2025-06-30T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca3ad2817", "title": "Migrating from Cloud storage solutions", "url": "https://reaper.is/writing/20250507-migrating-from-cloud-photos.html", "published_at": "2025-05-12T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca2f0959d", "title": "Thinkpad", "url": "https://reaper.is/writing/20250416-thinkpad.html", "published_at": "2025-04-21T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca235ecb8", "title": "State of Preact 2025 (Q1) by reaper", "url": "https://reaper.is/writing/20250304-state-of-preact.html", "published_at": "2025-03-10T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca162cbd7", "title": "Low traction products", "url": "https://reaper.is/writing/20250204-low-traction-products.html", "published_at": "2025-02-10T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca11b39cd", "title": "2024 Analysed", "url": "https://reaper.is/writing/20250101-2024-analysed.html", "published_at": "2025-01-06T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca06ee5b0", "title": "Reminisce", "url": "https://reaper.is/writing/20241015-reminisce.html", "published_at": "2024-10-21T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca059e902", "title": "Thing's I've tried", "url": "https://reaper.is/writing/20240925-things-i-have-tried.html", "published_at": "2024-09-30T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5ca0292224", "title": "Announcing Ping", "url": "https://reaper.is/writing/20240918-announcing-ping.html", "published_at": "2024-09-23T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cbc596f57", "title": "remember", "url": "https://reaper.is/writing/remember.html", "published_at": "2024-09-16T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9f471334", "title": "Managing Site Uptime and dealing with the state of urgency", "url": "https://reaper.is/writing/20240908-managing-uptime.html", "published_at": "2024-09-09T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9ec1177e", "title": "One a Month", "url": "https://reaper.is/writing/20240827-one-a-month.html", "published_at": "2024-09-02T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9d361626", "title": "Faux Javascript", "url": "https://reaper.is/writing/20240816-faux-js.html", "published_at": "2024-08-19T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9dd0373a", "title": "Re: On hobbies, side projects, and money", "url": "https://reaper.is/writing/20240818-re-on-hobbies-side-projects-and-money.html", "published_at": "2024-08-19T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cada52643", "title": "Asahi Linux Fedora Checklist", "url": "https://reaper.is/writing/asahi.html", "published_at": "2024-08-19T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9ca7a7a1", "title": "The Pixel 3a", "url": "https://reaper.is/writing/20240804-the-pixel-3a.html", "published_at": "2024-08-05T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9bdfb056", "title": "Making something", "url": "https://reaper.is/writing/20240713-making-something-july-2024.html", "published_at": "2024-07-15T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9bdbd3ae", "title": "A Failure", "url": "https://reaper.is/writing/20240626-failure.html", "published_at": "2024-07-01T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9b179874", "title": "The barelyhuman.xyz crash", "url": "https://reaper.is/writing/20240620-barelyhuman.xyz.html", "published_at": "2024-06-24T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9ab054e4", "title": "Updates (May 2024)", "url": "https://reaper.is/writing/20240530-may-updates-2024.html", "published_at": "2024-06-03T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9a7a2f48", "title": "I rewrote Alvu", "url": "https://reaper.is/writing/20240501-i-rewrote-alvu.html", "published_at": "2024-05-06T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c99bd74a6", "title": "FossFox and it's shutdown", "url": "https://reaper.is/writing/20240426-fossfox-shutdown.html", "published_at": "2024-04-29T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c997176d2", "title": "Poor man's fuzzy search", "url": "https://reaper.is/writing/20240417-poor-mans-fuzzy-search.html", "published_at": "2024-04-22T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c99501f63", "title": "Updates April 2024", "url": "https://reaper.is/writing/20240406-updates.html", "published_at": "2024-04-08T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c98b86379", "title": "I circled back to Preact", "url": "https://reaper.is/writing/20240213-i-circled-back-to-preact.html", "published_at": "2024-02-19T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9816e696", "title": "My Framework Space 2023 - 2024", "url": "https://reaper.is/writing/20240116-my-framework-space-2023.html", "published_at": "2024-01-22T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c97c10316", "title": "Personality In a Webpage", "url": "https://reaper.is/writing/20231216-personality-in-a-webpage.html", "published_at": "2023-12-18T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c96f239a1", "title": "The Decent Developer", "url": "https://reaper.is/writing/20231127-the-decent-developer.html", "published_at": "2023-11-27T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c962e165b", "title": "Announcing arrow-render-to-string", "url": "https://reaper.is/writing/20231024-arrow-render-to-string.html", "published_at": "2023-10-30T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c95649c27", "title": "Programming Languages I like", "url": "https://reaper.is/writing/20231013-programming-languages-i-like.html", "published_at": "2023-10-16T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c952e7800", "title": "Multiple XCode version on Fastlane", "url": "https://reaper.is/writing/20230929-versioned-xcode-fastlane.html", "published_at": "2023-10-02T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c947fbce4", "title": "Hate and Responsibility", "url": "https://reaper.is/writing/20230925-hate-and-responsibility.html", "published_at": "2023-09-25T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c947c4d21", "title": "Moving from PM2 and Nginx to Traefik", "url": "https://reaper.is/writing/20230916-pm2-traefik.html", "published_at": "2023-09-18T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c93681b04", "title": "Typing routine", "url": "https://reaper.is/writing/20230901-typing-routine.html", "published_at": "2023-09-04T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9447f97e", "title": "Me and Numbers", "url": "https://reaper.is/writing/20230903-me-and-numbers.html", "published_at": "2023-09-04T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5caaa6d6e7", "title": "Announcing rawjs.xyz", "url": "https://reaper.is/writing/27082023-announcing-rawjs-xyz.html", "published_at": "2023-08-28T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c9296206f", "title": "Docker", "url": "https://reaper.is/writing/20230811-docker.html", "published_at": "2023-08-14T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c919994fb", "title": "An Imposter", "url": "https://reaper.is/writing/20230807-an-imposter.html", "published_at": "2023-08-07T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c916f3f78", "title": "My Craft", "url": "https://reaper.is/writing/20230716-my-craft.html", "published_at": "2023-07-17T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c90f8ce08", "title": "The Change", "url": "https://reaper.is/writing/20230710-the-change.html", "published_at": "2023-07-10T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cbc817511", "title": "Shutting down TillWhen", "url": "https://reaper.is/writing/shutting-down-tillwhen.html", "published_at": "2023-07-03T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8c028cc0", "title": "commitlog - A recap", "url": "https://reaper.is/writing/20230124-commitlog-a-recap.html", "published_at": "2023-06-19T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c901c5cb8", "title": "Ignoring Backend Productivity in JS", "url": "https://reaper.is/writing/20230516-ignoring-backend-productivity.html", "published_at": "2023-06-19T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8f5992c3", "title": "Linux and Installation Disks", "url": "https://reaper.is/writing/20230506-linux-and-install-disks.html", "published_at": "2023-05-08T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8e9908d4", "title": "Turn the Bass up", "url": "https://reaper.is/writing/20230414-turn-the-bass-up.html", "published_at": "2023-04-17T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8e39055d", "title": "Minimalism in workouts", "url": "https://reaper.is/writing/20230401-minimalism-in-workouts.html", "published_at": "2023-04-03T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8e31a32a", "title": "The Web Libraries", "url": "https://reaper.is/writing/20230324-the-web-libraries.html", "published_at": "2023-03-27T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8dad63e0", "title": "Going bonkers over island architechture", "url": "https://reaper.is/writing/20230220-going-bonkers-over-islands.html", "published_at": "2023-02-20T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8cb1da75", "title": "Updates and Decisions January - 2023", "url": "https://reaper.is/writing/20230207-decisions-and-updates-january-2023.html", "published_at": "2023-02-13T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8bfa8757", "title": "On Node JS and REST API Frameworks", "url": "https://reaper.is/writing/20230116-on-javascript-rest-apis.html", "published_at": "2023-01-16T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8b4a6acf", "title": "Decisions and Updates December 2022", "url": "https://reaper.is/writing/20230101-update-december-2022.html", "published_at": "2023-01-02T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8b33c986", "title": "Playing around with Crystal Lang", "url": "https://reaper.is/writing/20221218-crystal-lang.html", "published_at": "2022-12-19T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8b3d925a", "title": "Re: On the current decentralisation movement", "url": "https://reaper.is/writing/20221218-decentralisation-movement.html", "published_at": "2022-12-19T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8a837e7a", "title": "Decisions and Updates November 2022", "url": "https://reaper.is/writing/20221204-decisions-and-updates-november-2022.html", "published_at": "2022-12-05T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8a82d9e2", "title": "NeoVIM Configuration", "url": "https://reaper.is/writing/20221108-neovim-configuration.html", "published_at": "2022-11-14T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8a6f4fdf", "title": "Lower Level Projects", "url": "https://reaper.is/writing/20221011-lower-level-projects.html", "published_at": "2022-10-17T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5c8979d0d2", "title": "Don't use UI libraries/frameworks for everything!", "url": "https://reaper.is/writing/20220912-do-we-need-js-frameworks.html", "published_at": "2022-09-12T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d48f10cbc", "title": "Modern React, is a mess.", "url": "https://reaper.is/writing/20220817-modern-react-a-mess.html", "published_at": "2022-08-22T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d49d3d5ff", "title": "My Open Source", "url": "https://reaper.is/writing/20220822-open-source.html", "published_at": "2022-08-22T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d4891f1bf", "title": "Projects for Self", "url": "https://reaper.is/writing/20220812-projects-for-self.html", "published_at": "2022-08-15T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d48465511", "title": "Plugins, Lua, Alvu", "url": "https://reaper.is/writing/20220807-plugins-lua-alvu.html", "published_at": "2022-08-08T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d47a487f6", "title": "The lab folder", "url": "https://reaper.is/writing/20220726-the-lab-folder.html", "published_at": "2022-08-01T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d47a41ac5", "title": "Docker Compose, Prisma and the M1", "url": "https://reaper.is/writing/20220719-docker-compose-prisma.html", "published_at": "2022-07-25T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d467c2014", "title": "Creating a blog", "url": "https://reaper.is/writing/20220708-creating-a-blog.html", "published_at": "2022-07-11T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d4750d276", "title": "Atomic Forms in React", "url": "https://reaper.is/writing/20220709-atomic-forms.html", "published_at": "2022-07-11T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d46139e70", "title": "Iterative GraphQL", "url": "https://reaper.is/writing/20220701-iterative-graphql.html", "published_at": "2022-07-04T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d44966427", "title": "Notes on fixing react native 0.61.5 on a M1 mac", "url": "https://reaper.is/writing/20220613-react-0.61.5.html", "published_at": "2022-06-20T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d4499f065", "title": "An attempt to reduce the monorepo complexity", "url": "https://reaper.is/writing/20220614-the-monorepo-experiment.html", "published_at": "2022-06-20T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d4550d1e6", "title": "Writing fastlane scripts in Javascript", "url": "https://reaper.is/writing/20220616-fastlane-in-javascript.html", "published_at": "2022-06-20T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d43a2e575", "title": "We're polishing TillWhen, finally.", "url": "https://reaper.is/writing/20220606-tillwhen-incremental-updates-and-additions.html", "published_at": "2022-06-06T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d41f06523", "title": "GraphQL isn't that amazing", "url": "https://reaper.is/writing/20220525-graphql-isnt-that-amazing.html", "published_at": "2022-05-30T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d42a60c51", "title": "Contextual Helpers are easier to write but ...", "url": "https://reaper.is/writing/20220530-contextual-helpers-generic-helpers.html", "published_at": "2022-05-30T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d404bdfbd", "title": "Multithreading in Nim - Notes", "url": "https://reaper.is/writing/20220503-multithread-in-nim.html", "published_at": "2022-05-09T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d40f631e2", "title": "Full Stack Development with GraphQL in a Digital Studio", "url": "https://reaper.is/writing/20220509-graphql-in-digital-studios.html", "published_at": "2022-05-09T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d3fb051d3", "title": "Setting up a remote Mac machine for Gitlab CI", "url": "https://reaper.is/writing/20220426-mac-ci.html", "published_at": "2022-05-02T00:00:00+00:00" }, { "id": "01a087d1-410f-73f5-8053-049d3fa352b4", "title": "The ESM and CJS Problem", "url": "https://reaper.is/writing/20220418-the-esm-cjs-problem.html", "published_at": "2022-04-18T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cc060c712", "title": "Working with Twilio Coversations", "url": "https://reaper.is/writing/twilio-coversations.html", "published_at": "2021-12-27T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cbee31c65", "title": "Testing - Tools, Methods, Mentality", "url": "https://reaper.is/writing/testing-tools-method-mentality.html", "published_at": "2021-12-06T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cbfdb3061", "title": "Be Unproductive?", "url": "https://reaper.is/writing/the-unproductive-weekend.html", "published_at": "2021-11-29T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cc2b9e17d", "title": "Working with Async Code in React", "url": "https://reaper.is/writing/working-with-async-code-in-react.html", "published_at": "2021-11-29T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cc075961a", "title": "Typescript, VSCode, JSDoc - An overview on managing coding style and restricting developers", "url": "https://reaper.is/writing/typescript-jsdoc-managing-code-style.html", "published_at": "2021-09-27T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cc25424e1", "title": "Workation", "url": "https://reaper.is/writing/workation-oct-2021.html", "published_at": "2021-09-27T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cb3a4826e", "title": "Writing cleaner state in React and React Native", "url": "https://reaper.is/writing/hello-world.html", "published_at": "2021-08-30T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cc2d3f2a4", "title": "Writing cleaner state in React and React Native", "url": "https://reaper.is/writing/writing-cleaner-state-in-react.html", "published_at": "2021-08-30T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cb1301657", "title": "Custom Roms and the need for a custom rom index", "url": "https://reaper.is/writing/custom-roms-and-index.html", "published_at": "2021-08-23T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cbc5f7595", "title": "Should you use Hasura?", "url": "https://reaper.is/writing/should-you-use-hasura.html", "published_at": "2021-08-23T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cb1fd4cca", "title": "Fixing .mjs imports with ESM libraries in Webpack 4", "url": "https://reaper.is/writing/fixing-mjs-imports-webpack-4.html", "published_at": "2021-08-02T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cb1cbc163", "title": "Embedding Files in your Go Lang binary", "url": "https://reaper.is/writing/embedding-files-go-lang.html", "published_at": "2021-07-26T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cba9b866c", "title": "Product Development and a Developer's Role - Part 2", "url": "https://reaper.is/writing/product-development-and-a-developers-role-2.html", "published_at": "2021-07-05T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cbe5ebedd", "title": "Status, Vercel and How I built it.", "url": "https://reaper.is/writing/status-vercel-and-how-did-it.html", "published_at": "2021-07-05T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cbb7a4120", "title": "Product Development and a Developer's Role - Part 1", "url": "https://reaper.is/writing/product-development-and-a-developers-role.html", "published_at": "2021-06-21T00:00:00+00:00" }, { "id": "01a087d1-4110-7023-86b7-de5cac90d0b2", "title": "Side projects that've proven their worth", "url": "https://reaper.is/writing/31052021-Side-projects-thatve-proven-their-worth.html", "published_at": "2021-05-31T00:00:00+00:00" } ] posts Claim your blog
Back to reaper | Minimalist • Open Source Enthusiast • Programmer
Blog · corpus.blog/blogs/reaper.is/posts

reaper | Minimalist • Open Source Enthusiast • Programmer

reaper.is

2026

2025

2024

2023

2022

2021