Creating thoughtfully-engineered, finely-crafted, and well-tested software.

A software engineer with over a decade of experience - this website is for sharing technical articles, and my own side-projects related to software engineering. I hope you enjoy it!

What to expect:

  • Weekly devlog updates
  • Monthly technical articles
  • Occasional software releases
Support Me on Ko-Fi!

FEATURED PROJECTS

view all projects →

typed-ident

Type-safe identifier validation, inspection, and mutation.

LATEST ARTICLES

view all articles →
A picnic scene featuring Osaka, Sakaki, and Chiyo toys, sitting out in a grassy area someplace, with various fruits.

Declarative Macros in Rust: A Simple and Practical Introduction

Macros are commonly presented as simple “text substitution” language features. But the way they’re implemented can change your experience using with them. The simplicity of a text-replacement-style implementation (sometimes referred to as C-style macros) can often lead to surprising and counter-intuitive results. As such, those feel simple to learn, but difficult to master and use safely. In Rust, however, macros work in a way that may be unfamiliar to many. They are recognized and processed during the compiler’s parsing phase. That can make them do some powerful things, but it also can make them a little hard to learn and understand initially. Since macros are a huge topic, there’s no way I’m going to be able to cover all of it in one article. So we’re only going to focus on a brief introduction to macros, as well as defining and using declarative macros. Updates: - 2026/10/08 - added an introduction covering what macros are, based on feedback from the Rust Users Forums.
Read More...
A Sakaki toy from Azumanga Daioh sitting on a chair with a cat on her head, and a cat-like creature standing next to her

typed-ident: A Retrospective on a Type-Safe Unicode Identifier Crate

This week, I released my first official open source crate - `typed-ident`! This crate is actually a small part of a few other projects that I’m working on. I’m not quite ready to share those other projects yet, but I figured instead of taking months to release a few big projects, I could break out this functionality, polish it up, and release that. After all, it eventually needed to be factored out, and it seemed like it wouldn’t be too difficult. That was the idea at least, but as I’m sure you can tell just looking at the crate (and reading this article), it didn’t quite go to plan. This article should be a fun ride - I learned a lot working on this crate, and maybe even if you don’t plan on using it you will too!
Read More...
An Osaka toy from Azumanga Daioh sitting under a kotatsu with a strange cat at a desk next to her.

10 Things to Check on Your Static Website Before Launch

Though it’s taken me longer than expected, sigseis.dev is mostly done - with only a few remaining missing features and polish work. With this site being mostly finished, I thought it would be fun to write up a little article about some things you should check on your static sites! At least while it’s still fresh in my own mind. UPDATE: - 2026/08/04 - Added a section about “Optimizing Content Delivery”, dropped the “Sticky Headings” to be bonus content, and a small bit of text on `tabindex` in the accessibility section.
Read More...

LATEST DEVLOGS

view all devlogs →

LOG 019

2026/10/09

★ Typed Identifiers

  • Released a new article on the basics of Rust declarative macros.

  • Added the ability to iterate over Words and WordIndices for Fragment types.

  • Cleaned up and simplified the module hierarchy in typed-ident.

  • Did analysis on weird characters that don't change case in Unicode (see KNOWN_ODDITIES).

  • Cleaned up constants, and fixed a bug where documentation wasn't tagging feature-specific items.

This week I spent a bit of time editing and releasing my latest article - I think it went well!

It’s still not perfect, but I hope it’s helpful to some, and it seems to be well-received. I appreciate everyone who read and gave feedback, and I’ll try to make future articles even better!

Other than that, just a lot of clean-up work in typed-ident. Looking at what’s left to do, it’s not as much as I had feared. I think it may be possible that I am able to release v0.0.3 later next week.

No promises though, it’ll realistically be released when ready.

LOG 018

2026/10/02

★ Static Site Generator

  • Completely rewrote the Markdown parser so that I could reuse it in various places.

  • All articles now have an auto-generated table of contents after the brief.

  • Articles now use proper annotation styles for notes, warnings, tips, etc.

  • sigseis.dev now supports displaying project pages and updates.

  • A bug with the relative date pillboxes was fixed for devlogs (sometimes they would not appear).

  • Wrote an article for Rust declarative macros which will release early next week.

This took almost my entire week, there was a lot to change just to get a table of contents to be able to generate on the site.

Truth be told, I didn’t want to spend forever perfecting my static site generator, so I just do what I need. Because of that, some parts of it are a tiny bit hacky. So when I decide I want a feature like this, I sometimes have to look at the implementation and come to terms with the fact that it needs written properly before I can get what I want.

I have more I would like to do with this website. But I think I’m going to get v0.0.3 of typed-ident released first, then maybe I’ll come back to this and clean it up a bit more.

Of note, the CSS is pretty bad, it needs some attention. But I don’t want to spend time on the CSS until I fix other usability issues on the site. So I’m going to ask for feedback from various webdev communities and see if there’s anything I should improve or change first.

Anyhow, next week please look forward to a new article serving as an introduction to Rust declarative macros! I plan to continue the articles, specifically focusing on macros, until I’ve said all I want to say about them. Next week, I’ll get back to work on typed-ident as well. I’m looking forward to it!

LOG 017

2026/09/25

★ Static Site Generator

  • Working on a refactor to improve the Markdown parsing.

  • Working on updating the code to use the new Markdown parser.

  • Adding functionality so that I can list projects on my website.

  • Adding functionality to improve the navigability of long articles.

I was hoping this would only take a week, but it turns out that rewriting the markdown parser is a little harder than I originally anticipated.

The new Markdown parser works now, but I haven’t switched the code to using it just yet. It’s a little too soon, and I’d like to spend some more time testing it.

I’ll continue working on it into next week. After I’m done updating this website, I’ll get back to work on typed-ident.