pykSecurity Researcherhttps://pyk.sh/en-usDream (2014)https://pyk.sh/posts/2014-01-13-dream-2014/https://pyk.sh/posts/2014-01-13-dream-2014/if you want people know about who you are, at least you must have a blog and tell the world what you have done, what you have archived and what you have invented. social network is your best engine to share your blog post.Mon, 13 Jan 2014 00:00:00 GMTTarget on my first long holidayhttps://pyk.sh/posts/2014-01-15-target-on-my-first-long-holiday/https://pyk.sh/posts/2014-01-15-target-on-my-first-long-holiday/in this 2 month, free time, what's mission i must accomplish? what's stuff should i create? whats's project should i finish before epic moment gone? Wed, 15 Jan 2014 00:00:00 GMTWeekend wrap-uphttps://pyk.sh/posts/2014-01-18-weekend-wrap-up/https://pyk.sh/posts/2014-01-18-weekend-wrap-up/Lesson learned from stuff that i read or watch in this weekend Sat, 18 Jan 2014 00:00:00 GMTMy first angular apphttps://pyk.sh/posts/2014-01-26-my-first-angular-app/https://pyk.sh/posts/2014-01-26-my-first-angular-app/I built an age-in-weeks calculator for my first AngularJS project. This is the story of how shipping a messy version led to community feedback and new features.Sun, 26 Jan 2014 00:00:00 GMTWeekend wrap-uphttps://pyk.sh/posts/2014-01-25-weekend-wrap-up/https://pyk.sh/posts/2014-01-25-weekend-wrap-up/Lesson learned from stuff that i read or watch in this weekend Sat, 25 Jan 2014 00:00:00 GMTdecoding old softwarehttps://pyk.sh/posts/2014-01-31-decoding-old-software/https://pyk.sh/posts/2014-01-31-decoding-old-software/I'm digging into 'Rametook', an old Ruby project from 2007. My goal is to decode its source to learn how it sends SMS messages over a serial port.Fri, 31 Jan 2014 00:00:00 GMTWeekend wrap-uphttps://pyk.sh/posts/2014-02-01-weekend-wrap-up/https://pyk.sh/posts/2014-02-01-weekend-wrap-up/Lesson learned from stuff that i read or watch in this weekendSat, 01 Feb 2014 00:00:00 GMTValidation Helperhttps://pyk.sh/posts/2014-02-11-validation-helper/https://pyk.sh/posts/2014-02-11-validation-helper/Kept getting a "must be accepted" error in Rails. Here's my quick fix for using the acceptance validator when you have an actual boolean DB column.Tue, 11 Feb 2014 00:00:00 GMTByten Gohttps://pyk.sh/posts/2014-08-30-byten-go/https://pyk.sh/posts/2014-08-30-byten-go/Sat, 30 Aug 2014 00:00:00 GMTMaster Procrastinationhttps://pyk.sh/posts/2014-08-31-master-procrastination/https://pyk.sh/posts/2014-08-31-master-procrastination/A post from when my procrastination was at its worst. I was even writing a new Go package just to avoid a more important project. This was my decision to fix it.Sun, 31 Aug 2014 00:00:00 GMTWacanesiahttps://pyk.sh/posts/2014-09-14-wacanesia/https://pyk.sh/posts/2014-09-14-wacanesia/Sun, 14 Sep 2014 00:00:00 GMTPola Berpikirhttps://pyk.sh/posts/2014-10-12-pola-berpikir/https://pyk.sh/posts/2014-10-12-pola-berpikir/Sun, 12 Oct 2014 00:00:00 GMTMengenal CoreOShttps://pyk.sh/posts/2014-10-11-mengenal-core-os/https://pyk.sh/posts/2014-10-11-mengenal-core-os/Sat, 11 Oct 2014 00:00:00 GMTGak Bisa Bangun Startuphttps://pyk.sh/posts/2014-11-05-gak-bisa-bangun-startup/https://pyk.sh/posts/2014-11-05-gak-bisa-bangun-startup/Wed, 05 Nov 2014 00:00:00 GMTDocker Adalah Solusihttps://pyk.sh/posts/2014-11-22-docker-adalah-solusi/https://pyk.sh/posts/2014-11-22-docker-adalah-solusi/Sat, 22 Nov 2014 00:00:00 GMTAutomatahttps://pyk.sh/posts/2014-11-23-automata/https://pyk.sh/posts/2014-11-23-automata/Sun, 23 Nov 2014 00:00:00 GMTKita Bisa Memilihhttps://pyk.sh/posts/2015-01-19-kita-bisa-memilih/https://pyk.sh/posts/2015-01-19-kita-bisa-memilih/Mon, 19 Jan 2015 00:00:00 GMTAn AI-powered curatorhttps://pyk.sh/posts/2015-04-24-an-ai-powered-curator/https://pyk.sh/posts/2015-04-24-an-ai-powered-curator/My initial notes on an AI-powered curator to automate newsletters. It's a look at the early concept, the planned phases, and the first technical challenge.Fri, 24 Apr 2015 00:00:00 GMTA definitions of Machine Learninghttps://pyk.sh/posts/2015-04-26-a-definitions-of-machine-learning/https://pyk.sh/posts/2015-04-26-a-definitions-of-machine-learning/I was trying to get a clear definition of Machine Learning. This post covers the two that stuck with me, Arthur Samuel's and Tom Mitchell's model.Sun, 26 Apr 2015 00:00:00 GMTThe Rules of Buffer In Chttps://pyk.sh/posts/2015-12-14-the-rules-of-buffer-in-c/https://pyk.sh/posts/2015-12-14-the-rules-of-buffer-in-c/C's strcpy and strcat are risky. Here's my cheat sheet for using their 'n' versions safely to prevent buffer overflows and corrupting memory.Mon, 14 Dec 2015 00:00:00 GMTMy indent(1) Profilehttps://pyk.sh/posts/2015-12-15-my-indent-1-profile/https://pyk.sh/posts/2015-12-15-my-indent-1-profile/To keep my C code style consistent, I rely on indent(1). This post just contains a link to my personal configuration profile for the tool.Tue, 15 Dec 2015 00:00:00 GMTCasting Allocation In Chttps://pyk.sh/posts/2015-12-18-casting-allocation-in-c/https://pyk.sh/posts/2015-12-18-casting-allocation-in-c/I always used to cast the result of malloc in C. After digging in, I realized it's not just unneeded, but it can hide serious bugs. Now I do it differently.Fri, 18 Dec 2015 00:00:00 GMTThis year, I should be better at Xhttps://pyk.sh/posts/2016-01-01-this-year-i-should-be-better-at-x/https://pyk.sh/posts/2016-01-01-this-year-i-should-be-better-at-x/Fri, 01 Jan 2016 00:00:00 GMTExit Status In POSIX-compliant Systemshttps://pyk.sh/posts/2016-01-14-exit-status-in-posix-compliant-systems/https://pyk.sh/posts/2016-01-14-exit-status-in-posix-compliant-systems/Thinking about how I handle exit statuses in C. On POSIX systems, 0 is success and 1 is failure, so I just use the numbers directly.Thu, 14 Jan 2016 00:00:00 GMTMultiple lines string in Chttps://pyk.sh/posts/2016-01-15-multiple-lines-string-in-c/https://pyk.sh/posts/2016-01-15-multiple-lines-string-in-c/A quick C tip I learned for cleaner code. Adjacent string literals are automatically joined by the compiler, which is great for multi-line text.Fri, 15 Jan 2016 00:00:00 GMTConsistent Build in Chttps://pyk.sh/posts/2016-01-19-consistent-build-in-c/https://pyk.sh/posts/2016-01-19-consistent-build-in-c/I wanted a consistent C build, but `-std=c99` was hiding POSIX functions. Here's a quick look at using `_POSIX_C_SOURCE` to solve that.Tue, 19 Jan 2016 00:00:00 GMTSupreme Chttps://pyk.sh/posts/2016-01-22-supreme-c/https://pyk.sh/posts/2016-01-22-supreme-c/I've been thinking about what C would be like with a Go-style API. This is my early concept for "Supreme C", a library for high-level, safe I/O.Fri, 22 Jan 2016 00:00:00 GMTJr. Data Scientisthttps://pyk.sh/posts/2016-01-26-jr-data-scientist/https://pyk.sh/posts/2016-01-26-jr-data-scientist/Tue, 26 Jan 2016 00:00:00 GMTDebug Trait in Rusthttps://pyk.sh/posts/2016-02-08-debug-trait-in-rust/https://pyk.sh/posts/2016-02-08-debug-trait-in-rust/A quick reference for making structs printable in Rust. It shows how to use the Debug trait with the derive macro and how to implement it manually.Mon, 08 Feb 2016 00:00:00 GMTScala on Debianhttps://pyk.sh/posts/2016-04-09-scala-on-debian/https://pyk.sh/posts/2016-04-09-scala-on-debian/I started digging into Scala and needed to set up my environment. This is my quick cheat sheet for downloading and installing Scala 2.12 on Debian via the command line.Sat, 09 Apr 2016 00:00:00 GMTWork School Life Balancehttps://pyk.sh/posts/2016-04-12-work-school-life-balance/https://pyk.sh/posts/2016-04-12-work-school-life-balance/My experiment with a simple time management strategy. Just logging my thoughts on how planning and breaking down tasks is helping me find some balance.Tue, 12 Apr 2016 00:00:00 GMTAnonymous Function in Scalahttps://pyk.sh/posts/2016-05-06-anonymous-function-in-scala/https://pyk.sh/posts/2016-05-06-anonymous-function-in-scala/A note on a Scala concept that confused me at first. This is my quick breakdown of anonymous functions and how they're used in Apache Spark.Fri, 06 May 2016 00:00:00 GMTprintf in Chttps://pyk.sh/posts/2016-06-05-printf-in-c/https://pyk.sh/posts/2016-06-05-printf-in-c/My personal log on a classic C vulnerability. This post is a quick cheat sheet on using printf safely to avoid format string exploits.Sun, 05 Jun 2016 00:00:00 GMTHand Signals Recognition using Convolutional Neural Networkhttps://pyk.sh/posts/2017-01-08-hand-signals-recognition-using-convolutional-neural-network/https://pyk.sh/posts/2017-01-08-hand-signals-recognition-using-convolutional-neural-network/My experiment with building a hand signal recognizer using a CNN. This is my log on collecting data with a webcam and implementing a LeNet-5-style model in TensorFlow.Sun, 08 Jan 2017 00:00:00 GMTWhitespace Tokenizer in Rusthttps://pyk.sh/posts/2016-12-26-whitespace-tokenizer-in-rust/https://pyk.sh/posts/2016-12-26-whitespace-tokenizer-in-rust/My note-to-self for writing a UTF-8 tokenizer in Rust. The trick is reading byte-by-byte and only checking for whitespace on single-byte chars.Mon, 26 Dec 2016 00:00:00 GMTInstrument Sanic Applicationhttps://pyk.sh/posts/2018-04-02-instrument-sanic-application/https://pyk.sh/posts/2018-04-02-instrument-sanic-application/Setting up a monitoring stack for Sanic. This is my quick reference for hooking up a Prometheus Counter via middleware to track all incoming requests.Mon, 02 Apr 2018 00:00:00 GMT6 months working at kumparanhttps://pyk.sh/posts/2018-07-26-6-months-working-at-kumparan/https://pyk.sh/posts/2018-07-26-6-months-working-at-kumparan/Thu, 26 Jul 2018 00:00:00 GMTAsynchronous Python at Kumparanhttps://pyk.sh/posts/2018-11-05-asynchronous-python-at-kumparan/https://pyk.sh/posts/2018-11-05-asynchronous-python-at-kumparan/Mon, 05 Nov 2018 00:00:00 GMTHot Reload in AWS Lambdahttps://pyk.sh/posts/2020-04-26-hot-reload-in-aws-lambda/https://pyk.sh/posts/2020-04-26-hot-reload-in-aws-lambda/My sam local `start-api` wasn't hot reloading. This is my quick note on using `-t template.yaml` to fix it and `--skip-pull-image` to make it faster.Sun, 26 Apr 2020 00:00:00 GMTEvaluasi Team Leadhttps://pyk.sh/posts/2021-01-14-evaluasi-team-lead/https://pyk.sh/posts/2021-01-14-evaluasi-team-lead/Thu, 14 Jan 2021 00:00:00 GMTdapptools on macOS M1https://pyk.sh/posts/2022-03-19-dapptools-on-mac-os-m1/https://pyk.sh/posts/2022-03-19-dapptools-on-mac-os-m1/My notes on installing the dapptools on M1 Mac. The process involved running under Rosetta and using a specific version of Nix.Sat, 19 Mar 2022 00:00:00 GMTVanity address on macOS M1https://pyk.sh/posts/2022-04-12-vanity-address-on-mac-os-m1/https://pyk.sh/posts/2022-04-12-vanity-address-on-mac-os-m1/My personal reference for building the profanity tool from source on an M1 Mac. A security note, it's broken, so please don't use it for wallets.Tue, 12 Apr 2022 00:00:00 GMTSame address deployments with Foundryhttps://pyk.sh/posts/2022-04-13-same-address-deployments-with-foundry/https://pyk.sh/posts/2022-04-13-same-address-deployments-with-foundry/My notes on how to deploy a contract to the same address on multiple chains. The trick is just to use a fresh wallet with the same nonce (0) everywhere.Wed, 13 Apr 2022 00:00:00 GMTFix Cannot Redefine Property 'x' TypeError in Jesthttps://pyk.sh/posts/2022-06-22-fix-cannot-redefine-property-x-type-error-in-jest/https://pyk.sh/posts/2022-06-22-fix-cannot-redefine-property-x-type-error-in-jest/Ran into the "Cannot redefine property" `TypeError` in Jest. This is my log on fixing it with `jest.mock` or a local barrel file for `spyOn`.Wed, 22 Jun 2022 00:00:00 GMTCoverage Reporthttps://pyk.sh/posts/2022-09-17-coverage-report/https://pyk.sh/posts/2022-09-17-coverage-report/Codecov felt slow for my monorepo, so I built my own coverage report site. This is my log on using a simple Node script to collect Jest's HTML reports.Sat, 17 Sep 2022 00:00:00 GMTShareable Prettier Configurationhttps://pyk.sh/posts/2022-09-26-shareable-prettier-configuration/https://pyk.sh/posts/2022-09-26-shareable-prettier-configuration/A quick reference for creating a shareable Prettier config. Just a simple NPM package with an index.js that exports all my formatting options.Mon, 26 Sep 2022 00:00:00 GMTArticle Schema Markup for Eleventyhttps://pyk.sh/posts/2022-09-28-article-schema-markup-for-eleventy/https://pyk.sh/posts/2022-09-28-article-schema-markup-for-eleventy/This is how I added the JSON-LD Article Schema to my Eleventy blog. My notes on installing and configuring the eleventy-plugin-schema.Wed, 28 Sep 2022 00:00:00 GMTECMAScript and CommonJS Librarieshttps://pyk.sh/posts/2022-10-02-ecma-script-and-common-js-libraries/https://pyk.sh/posts/2022-10-02-ecma-script-and-common-js-libraries/A quick reference for building a single TypeScript library for both ESM and CJS. Here's the `package.json` exports and tsconfig setup I use.Sun, 02 Oct 2022 00:00:00 GMTShareable TypeScript Configurationhttps://pyk.sh/posts/2022-10-03-shareable-type-script-configuration/https://pyk.sh/posts/2022-10-03-shareable-type-script-configuration/My personal notes on creating a reusable tsconfig for my TypeScript projects. The trick is to publish the base config files as a simple NPM package.Mon, 03 Oct 2022 00:00:00 GMTGet ETH Balance using Ethers.jshttps://pyk.sh/posts/2022-10-18-get-eth-balance-using-ethers-js/https://pyk.sh/posts/2022-10-18-get-eth-balance-using-ethers-js/My quick reference for fetching an ETH balance using Ethers.js. It's way easier than calling the `eth_getBalance` RPC and converting the hex value.Tue, 18 Oct 2022 00:00:00 GMTMultichain Testing with Foundryhttps://pyk.sh/posts/2023-09-14-multichain-testing-with-foundry/https://pyk.sh/posts/2023-09-14-multichain-testing-with-foundry/Figuring out how to test on multiple chains with Foundry. My notes on using vm.createFork to set up different network forks inside my test files.Thu, 14 Sep 2023 00:00:00 GMTTransparent vs UUPS Proxieshttps://pyk.sh/posts/2023-09-23-transparent-vs-uups-proxies/https://pyk.sh/posts/2023-09-23-transparent-vs-uups-proxies/A quick reference for Solidity proxy patterns. This is my breakdown of Transparent vs. UUPS, comparing gas overhead and the location of the upgrade logic.Sat, 23 Sep 2023 00:00:00 GMTSize of Solidity Variableshttps://pyk.sh/posts/2023-09-28-size-of-solidity-variables/https://pyk.sh/posts/2023-09-28-size-of-solidity-variables/Just a simple note to myself on the size of common Solidity types. A quick reference table for when I'm writing or auditing smart contracts.Thu, 28 Sep 2023 00:00:00 GMTRust SeaORM Tableshttps://pyk.sh/posts/2024-01-04-rust-sea-orm-tables/https://pyk.sh/posts/2024-01-04-rust-sea-orm-tables/I needed a way to manage database tables in Rust. These are my notes on using sea-orm-cli to set up and run my first migration with SeaORM.Thu, 04 Jan 2024 00:00:00 GMT“?” Operator in Rusthttps://pyk.sh/posts/2024-01-03-operator-in-rust/https://pyk.sh/posts/2024-01-03-operator-in-rust/A quick note to myself on Rust's `?` operator. It's a cleaner way to handle Result types by propagating errors instead of using a match block.Wed, 03 Jan 2024 00:00:00 GMTRust SeaORM Actionshttps://pyk.sh/posts/2024-01-05-rust-sea-orm-actions/https://pyk.sh/posts/2024-01-05-rust-sea-orm-actions/My personal cheat sheet for basic SeaORM operations. It's my reference for how to insert, select, update, and delete a simple row in Rust.Fri, 05 Jan 2024 00:00:00 GMTFix Deserialize in Rusthttps://pyk.sh/posts/2024-01-06-fix-deserialize-in-rust/https://pyk.sh/posts/2024-01-06-fix-deserialize-in-rust/Fixing the "cannot find derive macro Deserialize" error with serde in Rust. A quick note that the derive feature needs to be enabled in Cargo.toml.Sat, 06 Jan 2024 00:00:00 GMTLoad .env in Rusthttps://pyk.sh/posts/2024-01-07-load-env-in-rust/https://pyk.sh/posts/2024-01-07-load-env-in-rust/My personal log on loading .env files in Rust. I use the envy crate to parse variables into a struct, which makes handling config much easier.Sun, 07 Jan 2024 00:00:00 GMTVSCode for Foundryhttps://pyk.sh/posts/2024-01-08-vs-code-for-foundry/https://pyk.sh/posts/2024-01-08-vs-code-for-foundry/Setting up VSCode for a new Foundry project. This is my quick reference for getting remappings, the forge formatter, and the solc compiler version right.Mon, 08 Jan 2024 00:00:00 GMTFix "driver: bad connection" in golang-migrate ClickHousehttps://pyk.sh/posts/2024-02-15-fix-driver-bad-connection-in-golang-migrate-click-house/https://pyk.sh/posts/2024-02-15-fix-driver-bad-connection-in-golang-migrate-click-house/Spent a bit debugging a `bad connection` error with golang-migrate and ClickHouse. This is my note to self, always check for `secure=true` with cloud DBs.Thu, 15 Feb 2024 00:00:00 GMTFix "inflate failed" in ClickHouse JShttps://pyk.sh/posts/2024-02-19-fix-inflate-failed-in-click-house-js/https://pyk.sh/posts/2024-02-19-fix-inflate-failed-in-click-house-js/I ran into a "inflate failed buffer error" with ClickHouse.js. The fix was easy, check if my data arrays have items before trying to insert them.Mon, 19 Feb 2024 00:00:00 GMTRemix SWRhttps://pyk.sh/posts/2024-05-03-remix-swr/https://pyk.sh/posts/2024-05-03-remix-swr/Figuring out caching mechanism for my Remix app. This post is my personal cheat sheet for setting SWR headers for real-time, daily, and static data.Fri, 03 May 2024 00:00:00 GMTAmmalgam Fuzzing Campaignhttps://pyk.sh/posts/2025-07-10-ammalgam-fuzzing-campaign/https://pyk.sh/posts/2025-07-10-ammalgam-fuzzing-campaign/Thu, 10 Jul 2025 00:00:00 GMTSolidity Parserhttps://pyk.sh/posts/2025-07-11-solidity-parser/https://pyk.sh/posts/2025-07-11-solidity-parser/My notes on solidity parserFri, 11 Jul 2025 00:00:00 GMTCap Fuzzing Campaignhttps://pyk.sh/posts/2025-07-12-cap-fuzzing-campaign/https://pyk.sh/posts/2025-07-12-cap-fuzzing-campaign/My notes when fuzzing the Cap protocolSat, 12 Jul 2025 00:00:00 GMTxdgdir v0.8.0https://pyk.sh/posts/2025-09-15-xdgdir-v0-8-0/https://pyk.sh/posts/2025-09-15-xdgdir-v0-8-0/I got sidetracked building a tool and ended up writing a tiny Rust crate to find XDG paths. These are my notes on how I built xdgdir.Mon, 15 Sep 2025 00:00:00 GMTenvfmt v0.1.0https://pyk.sh/posts/2025-09-14-envfmt-v0-1-0/https://pyk.sh/posts/2025-09-14-envfmt-v0-1-0/I needed to expand environment variables for another project, so I built my first Rust crate. This is my log on envfmt and using traits for testing.Sun, 14 Sep 2025 00:00:00 GMTgit-gen Dev Log #1https://pyk.sh/posts/2025-09-22-git-gen-dev-log-1/https://pyk.sh/posts/2025-09-22-git-gen-dev-log-1/I'm building a CLI to write better git commits. This is my dev log on getting the first messy, working version up and running with Gemini.Mon, 22 Sep 2025 09:15:45 GMTSite Cleanuphttps://pyk.sh/posts/2025-09-22-site-cleanup/https://pyk.sh/posts/2025-09-22-site-cleanup/Decided to get back to basics with this site. I removed a bunch of old sections and code, and now it's just plain HTML/CSS with system fonts.Mon, 22 Sep 2025 00:00:00 GMTMy Custom Code Block Setup in Astrohttps://pyk.sh/posts/2025-09-30-my-custom-code-block-setup-in-astro/https://pyk.sh/posts/2025-09-30-my-custom-code-block-setup-in-astro/My notes on extending Astro's code blocks. I wrote a Shiki transformer to read metadata from the code fence and a rehype plugin to add the UI.Tue, 30 Sep 2025 13:46:00 GMTWhy Fonts Look Crispier on iOShttps://pyk.sh/posts/2025-09-30-why-fonts-look-crispier-on-i-os/https://pyk.sh/posts/2025-09-30-why-fonts-look-crispier-on-i-os/I was annoyed that my site's font looked different on my iPhone and Mac. The fix was one simple Tailwind class antialiased. Here's why it works.Tue, 30 Sep 2025 03:00:00 GMTIntersection Observer over Scroll Listenerhttps://pyk.sh/posts/2025-10-01-intersection-observer-over-scroll-listener/https://pyk.sh/posts/2025-10-01-intersection-observer-over-scroll-listener/My site's navbar felt janky with a scroll listener. I fixed it with the Intersection Observer API. Here's how I used it for a smoother scroll effect.Wed, 01 Oct 2025 05:04:14 GMTenvfmt v1.0.0https://pyk.sh/posts/2025-10-08-envfmt-v1-0-0/https://pyk.sh/posts/2025-10-08-envfmt-v1-0-0/I just released envfmt v1.0.0. The big change was removing all dependencies to make it a tiny, stable lib. Here are my notes on the update.Wed, 08 Oct 2025 00:00:00 GMTTracking Pagefind Search with Umamihttps://pyk.sh/posts/2025-10-15-tracking-pagefind-search-with-umami/https://pyk.sh/posts/2025-10-15-tracking-pagefind-search-with-umami/I wanted to see what people search for on my site. Here's how I connected Pagefind to Umami with a simple `MutationObserver` trick.Wed, 15 Oct 2025 09:17:20 GMTA Plan Is Not a Strategyhttps://pyk.sh/posts/2025-10-16-a-plan-is-not-a-strategy/https://pyk.sh/posts/2025-10-16-a-plan-is-not-a-strategy/My takeaways from a Roger Martin HBR video on plan vs. strategy. It showed me I was making to-do lists instead of figuring out how to win.Thu, 16 Oct 2025 01:56:37 GMTMy Strategy for Winninghttps://pyk.sh/posts/2025-10-20-my-strategy-for-winning/https://pyk.sh/posts/2025-10-20-my-strategy-for-winning/I'm building a custom security research env in VS Code to find more bugs, integrating Foundry and Medusa to make my workflow faster.Mon, 20 Oct 2025 03:15:08 GMTFixing Astro's 'Import Declaration Conflicts' Errorhttps://pyk.sh/posts/2025-10-21-astro-import-conflict/https://pyk.sh/posts/2025-10-21-astro-import-conflict/I hit an 'Import declaration conflicts' error in Astro. My page and a component had the same name. Here's how I fixed it with an import alias.Mon, 20 Oct 2025 21:44:12 GMTFixing the Unresolved Dynamic Import in Astrohttps://pyk.sh/posts/2025-10-21-vite-dynamic-import-trick/https://pyk.sh/posts/2025-10-21-vite-dynamic-import-trick/Vite's bundler was too smart for its own good and kept failing my dynamic import in Astro. This is the one-line trick I used to outsmart it.Mon, 20 Oct 2025 23:44:12 GMTBuilding VS Code Extensions with Bun and Misehttps://pyk.sh/posts/2025-10-23-building-vscode-extension-with-bun-and-mise/https://pyk.sh/posts/2025-10-23-building-vscode-extension-with-bun-and-mise/My notes on building a VS Code extension using Bun and Mise. Covers build scripts, tasks, and a macOS fix for zsh `PATH` issues.Thu, 23 Oct 2025 09:08:57 GMTcmdtest v0.2.0https://pyk.sh/posts/2025-11-07-cmdtest-v0-2-0/https://pyk.sh/posts/2025-11-07-cmdtest-v0-2-0/I'm sharing my experience building `cmdtest`, a Zig package for testing CLI apps. This post covers Zig I/O, comptime vs runtime, and `build.zig` import quirks.Fri, 07 Nov 2025 05:18:23 GMTBrainstorming "Zig Object Validator" APIhttps://pyk.sh/posts/2025-11-08-brainstorming-zov-api/https://pyk.sh/posts/2025-11-08-brainstorming-zov-api/My journey designing a Zod-like validation library in Zig. A dive into `comptime`, type generation, and the trade-offs for good tooling support.Sat, 08 Nov 2025 09:18:24 GMTMemory Allocation in Zig: Reading `stdout`https://pyk.sh/posts/2025-11-17-memory-allocation-zig-reading-stdout/https://pyk.sh/posts/2025-11-17-memory-allocation-zig-reading-stdout/Working on `cmdtest`, my Zig CLI testing tool, I ran into the problem of reading `stdio` from long-lived processes. This is my dive into why memory allocation is key for handling program output.Mon, 17 Nov 2025 02:53:54 GMTI Accidentally Kept a Pointer to the Stack in Zighttps://pyk.sh/posts/2025-11-18-story-time-i-accidentally-kept-a-pointer-to-the-stack-in-zig/https://pyk.sh/posts/2025-11-18-story-time-i-accidentally-kept-a-pointer-to-the-stack-in-zig/A classic stack-use-after-return bug I ran into with Zig. I was trying to be clever and pass a reader by reference, but ended up with a dangling pointer.Tue, 18 Nov 2025 05:25:21 GMTFixing Zig Microbenchmark Accuracyhttps://pyk.sh/posts/2025-12-07-bench-fixing-microbenchmark-accuracy-in-zig/https://pyk.sh/posts/2025-12-07-bench-fixing-microbenchmark-accuracy-in-zig/Measuring execution time under `1ns` is hard. This post covers how I fixed accuracy issues in my Zig tool by running the function in batches.Sun, 07 Dec 2025 22:10:54 GMTFixing Zig benchmark where `std.mem.doNotOptimizeAway` was ignoredhttps://pyk.sh/posts/2025-12-08-bench-fixing-constant-folding/https://pyk.sh/posts/2025-12-08-bench-fixing-constant-folding/I spent a while debugging a benchmark that was impossibly fast. Turns out LLVM is too smart. I fixed it by forcing runtime reads with volatile.Mon, 08 Dec 2025 10:17:36 GMTWriting a Type-Safe Linux Perf Interface in Zighttps://pyk.sh/posts/2025-12-11-type-safe-linux-perf-event-open-in-zig/https://pyk.sh/posts/2025-12-11-type-safe-linux-perf-event-open-in-zig/I'm building a benchmarking tool for Zig and needed CPU counters. This is how I wrapped Linux's `perf_event_open` to be type-safe with comptime.Thu, 11 Dec 2025 02:51:44 GMTTrying Out SIMD & SWAR in Zighttps://pyk.sh/posts/2025-12-14-trying-out-simd-swar-in-zig/https://pyk.sh/posts/2025-12-14-trying-out-simd-swar-in-zig/Experimenting with low-level optimizations in Zig. I wrote a benchmark to race SIMD vectors against bit-twiddling hacks for skipping JSON whitespace.Sun, 14 Dec 2025 10:19:25 GMTWriting a mockable Filesystem trait in Rust without RefCellhttps://pyk.sh/posts/2025-12-15-writing-mockable-fs-in-rust-without-refcell/https://pyk.sh/posts/2025-12-15-writing-mockable-fs-in-rust-without-refcell/I needed to test my CLI tool without writing to disk. I started with a messy `RefCell` setup but refactored it to use proper Rust borrowing instead.Mon, 15 Dec 2025 10:40:56 GMTSecurity Audit Review: A Reward Accounting Bug in Stakehousehttps://pyk.sh/posts/2026-03-04-reward-accounting-bug-in-stakehouse/https://pyk.sh/posts/2026-03-04-reward-accounting-bug-in-stakehouse/I'm reviewing past audit findings to build a personal checklist for future audits. This post analyzes a reward accounting bug in Stakehouse where old stakers could steal new deposits.Wed, 04 Mar 2026 06:14:07 GMTAbouthttps://pyk.sh/posts/about/https://pyk.sh/posts/about/Security ResearcherWed, 09 Jul 2025 00:00:00 GMTWelcome to my websitehttps://pyk.sh/posts/home/https://pyk.sh/posts/home/Security ResearcherWed, 09 Jul 2025 00:00:00 GMTProjectshttps://pyk.sh/posts/projects/https://pyk.sh/posts/projects/Security ResearcherWed, 09 Jul 2025 00:00:00 GMT