Redowan's Reflections

Hi, I’m Redowan.

A roving amateur fumbling through software, systems, and sundry.

Recent writing

Pesky little scripts

Organize custom scripts with comma-prefixed naming. Improve tab completion and eliminate clutter by prefixing script names with special characters.

Footnotes for the win

Why footnote-style reference links create cleaner Markdown documents and improve the writing experience over inline links.

Self-hosted Google Fonts in Hugo

Host Google Fonts locally in Hugo without CDN dependency. Download woff2 files, configure CSS, and improve performance while maintaining GDPR compliance.

Configuring options in Go

Compare three Go option patterns: exposed structs, option constructors, and functional options. Learn when to use each for clean APIs.

Writing a TOTP client in Go

Build a TOTP-based 2FA client in Go using the standard library. Generate time-based one-time passwords like Google Authenticator.

Interface guards in Go

Use compile-time interface guards to verify type conformity in Go without runtime overhead. Learn the var _ Interface = (*Type)(nil) pattern.

Writing on well-trodden topics

Why writing about common topics matters for personal growth, even when countless others have covered the same ground before you.

Go structured logging with slog

Master Go 1.21's log/slog package for structured logging with levels, JSON output, and attribute grouping. No third-party libraries needed.

Notes on exit interviews

Practical advice for navigating exit interviews from an employee's perspective, minimizing risk while maintaining professionalism.

Using DNS record to share text data

Share data via DNS TXT records using dig and base64 encoding. Learn limitations, security concerns, and practical use cases for DNS tunneling.