News for hackers. Stuff that matters.

catatsuy

Thanks! I already emailed [email protected].

My message is in the public archive here: https://yhbt.net/unicorn-public/20251227071714.D9328160070@m...

Ask HN: Ruby 4 and unicorn segfault (kgio) how to get a gem release?

Hi, I hit a segmentation fault when using unicorn on Ruby 4. It looks related to kgio.In unicorn master (git), it seems kgio was removed (or unicorn no longer depends on it), so Ruby 4 may work there. But there is no RubyGems release that includes this change.I can run unicorn from git, but it needs extra “release-time” build steps (generate lib/unicorn/version.rb, build/install...

( Read More... | 2 comments | on HN )
That’s a great real-world story. Exactly the kind of unexpected modification FIM can help surface—not only security incidents, but also operational surprises.
Compliance is definitely one use case, but not the only one. It’s also useful for catching unexpected local changes in real-world operations. The goal is to provide a lightweight FIM that can be added to existing apps without too much friction.
Conceptually it’s the same as sha256sum, but Kekkai automates the workflow:

hashes recorded automatically at deploy,

stored in S3 with write/read separation,

verification runs regularly. It saves you from scripting all of that by hand.

By fast I mean two things:

Files are hashed in parallel, so large sets can be processed quickly.

On repeated runs, unchanged files skip hashing with a default 90% probability using a cache. This keeps checks lightweight even at scale

You’re right that this doesn’t prevent compromise—it’s a detection control, not prevention. Things like read-only mounts or immutable bits are great, but in practice issues like command injection or misconfigured deployments still happen. FIM helps you know when files were changed and provides evidence for investigation or compliance.
AIDE is a solid and mature tool. Kekkai focuses on being lightweight:

content-only hashing to avoid false positives,

S3 integration with strict write/read separation,

a single Go binary with minimal dependencies. It’s designed to be easy to deploy and run in production.

Show HN: Kekkai – a simple, fast file integrity monitoring tool in Go

https://github.com/catatsuy/kekkai

I built a tool called *Kekkai* for file integrity monitoring in production environments. It records file hashes during deployment and later verifies them to detect unauthorized modifications (e.g. from OS command injection or tampering).Why it matters:* Many web apps (PHP, Ruby, Python, etc.) on AWS EC2 need a lightweight way to confirm their code hasn’t been changed. * Traditional approaches...

( Read More... | 16 comments | 21 points | on HN )
Thank you for your reply.

I was thinking about whether to return an error. If we can’t find a UTF-8 start byte in the nearby 4 bytes, it’s unclear what to return. I thought maybe we could ignore this problem.

I don’t return the string itself because I don’t know if users want the start or the end of the string. Also, I want to avoid copying large strings. It’s up to the users how they use this function.

Since no one is using this package yet, we might consider changing the interface.

Show HN: u8p – A Go Utility for Precise UTF-8 String Truncation

https://github.com/catatsuy/u8p

I'm excited to share a new Go package that I've been working on, called `u8p`. It's designed to help developers handle UTF-8 encoded strings safely and efficiently, especially when you need to truncate these strings without causing data corruption.The core of `u8p` is the `Find` function, which identifies the index of the leading UTF-8 byte in a string. This can be incredibly useful when...

( Read More... | 3 comments | on HN )
Re:Purl: A Simple Tool for Text Processing on Monday April 15, 2024 @12:06AM (#40036979)
Thank you for your feedback. The current implementation of purl uses Go's regexp package for regex operations, which ensures consistent behavior across platforms. I acknowledge the README does not specify this yet, and I plan to update it to clarify the regex implementation used.
Re:Purl: A Simple Tool for Text Processing on Sunday April 14, 2024 @10:19PM (#40036478)
Thank you for trying out purl! Currently, the file name needs to be placed at the end of the command like this: purl -filter func main.go. This format helps purl understand which part of the command specifies the options and which part specifies the file.

I appreciate your feedback and understand that a more flexible command structure might be easier for users. We will consider making this change in future versions to accommodate different usage preferences.

Re:Purl: A Simple Tool for Text Processing on Sunday April 14, 2024 @09:00PM (#40036004)
Thank you for the congratulations! Currently, purl does not include features similar to AWK. We appreciate your suggestion and will consider it for future development.
Re:Purl: A Simple Tool for Text Processing on Saturday April 13, 2024 @01:39AM (#40020780)
Hello HN community,

I'm excited to share a new command-line tool I developed called purl, inspired by the simplicity of Perl one-liners for efficient text processing. Purl features include Perl-like regex that simplifies text manipulation, it's cross-platform so works equally well on macOS, Linux, etc., and it's quick and easy to install. The tool also supports simple commands such as -replace, -filter, and -exclude, and offers optional color output to enhance readability.

Purl is a practical alternative to traditional tools like sed and grep, designed to address some of their common limitations.

For more information and to try purl yourself, visit: https://github.com/catatsuy/purl

I appreciate any feedback!