Skip to content

Commit 87d527a

Browse files
committed
enhance: add refs
1 parent 5e2a9c5 commit 87d527a

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

_posts/2025-12-27-relearning-rust-through-play-weekend-building-with-claude-code.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ tag: workflow
99

1010
Last week I learned a ton using Claude Code to build my [Rust CLI app Emojigen](https://github.com/francisfuzz/emoji_gen).
1111

12-
Inspired by Oxide Computer Company's "Why Does Oxide Use Rust?" blog post, I created this project to pick up Rust again. I planned the build with Claude and chose Rust as the base programming language for this command-line interface.
12+
Inspired by Oxide Computer Company's ["Why Does Oxide Use Rust?"](https://oxide.computer/blog/why-rust) blog post, I created this project to pick up Rust again. I planned the build with Claude and chose Rust as the base programming language for this command-line interface.
1313

1414
## Getting Started
1515

16-
I had some free hours last weekend and checked in throughout the week. I learned how to use Claude more effectively and optimize my token usage. I learned about Cargo as a build system, setting up GitHub Actions workflows for CI/CD with Rust projects, and using the emojis package for random emoji selection.
16+
I had some free hours last weekend and checked in throughout the week. I learned how to use Claude more effectively and optimize my token usage. I learned about [Cargo](https://doc.rust-lang.org/cargo/) as a build system, setting up [GitHub Actions workflows](https://github.com/francisfuzz/emoji_gen/blob/main/.github/workflows/rust.yml) for CI/CD with Rust projects, and using the [emojis package](https://crates.io/crates/emojis) for random emoji selection.
1717

1818
The last time I touched Rust was a few years ago during a two-day O'Reilly course presented by my co-worker Nathan Stocks. I hadn't picked it up since, but with the momentum in AI agentic workflows, I thought: why not build something with a language that has speed and tailwind advantage?
1919

@@ -25,15 +25,15 @@ I looked at setting up a Rust project from scratch, finding appropriate GitHub A
2525

2626
## Development Journey
2727

28-
After finding the emoji package and Clap for argument parsing, I wanted to run this project not just locally on macOS but also in a Docker container. I remembered that at work, many of our Docker containers were already configured for GitHub Codespaces, but thinking through the setup myself was really valuable. I relearned Docker images, local installation, and how to minimize dependencies and cache them for future builds.
28+
After finding the emoji package and [Clap](https://crates.io/crates/clap) for argument parsing, I wanted to run this project not just locally on macOS but also in a Docker container. I remembered that at work, many of our Docker containers were already configured for GitHub Codespaces, but thinking through the setup myself was really valuable. I relearned Docker images, local installation, and how to minimize dependencies and cache them for future builds.
2929

3030
When I pivoted to GitHub Actions, I was pleased to discover pre-built workflows for building, formatting, linting, and testing Rust code. I also learned that unlike Go, TypeScript, and Ruby—where tests are written separately from implementation files—Rust allows writing unit tests right underneath the implementation code. This was interesting and saved me one cognitive cycle from finding where tests should go.
3131

32-
I eventually decided to implement releases and security checks, which I found really interesting. More on that later!
32+
I eventually decided to implement [releases](https://github.com/francisfuzz/emoji_gen/releases) and [security checks](https://github.com/francisfuzz/emoji_gen/blob/main/.github/workflows/audit.yml), which I found really interesting. More on that later!
3333

3434
## Testing and Development
3535

36-
Writing unit tests in Rust taught me about the different annotations available. I thought about what I wanted to test and how, and having Claude as a thinking partner to bounce ideas off was great.
36+
Writing [unit tests in Rust](https://github.com/francisfuzz/emoji_gen/blob/main/src/main.rs#L46-L72) taught me about the different annotations available. I thought about what I wanted to test and how, and having Claude as a thinking partner to bounce ideas off was great.
3737

3838
One thing that impressed me was how Claude wasn't just my thinking partner during ideation but throughout the entire project. It helped me inside issues, pull requests, and commits as I reviewed my own work. Claude wasn't plugged into just one part of the process but throughout the whole workflow.
3939

@@ -45,7 +45,7 @@ One incredibly illuminating aspect was token usage. At work I don't think about
4545

4646
Codifying my work was really helpful, whether through a skill just for conventional commits or the Git workflow.
4747

48-
I found the skill creator that Brady provided at Anthropic's Skills Repository particularly neat, along with the release process of pushing a tag and triggering a release build. You can check out all the skills I created here: https://github.com/francisfuzz/emoji_gen/tree/main/.claude/skills
48+
I found the [skill creator](https://github.com/anthropics/anthropic-skills/tree/main/examples/skill-creator) that Brady provided at Anthropic's Skills Repository particularly neat, along with the release process of pushing a tag and triggering a release build. You can check out all the skills I created here: https://github.com/francisfuzz/emoji_gen/tree/main/.claude/skills
4949

5050
With regard to optimizing my Claude Code usage, I found a couple of things worked best:
5151

@@ -77,7 +77,7 @@ Here's the compacted summary:
7777
**Managing collaboration bandwidth, not just token budgets.** Through building Emojigen, I developed a practical framework for human-AI collaboration by tiering work across three levels:
7878

7979
- **High-value tasks** → Let Claude think (debugging, test design, architecture)
80-
- **Repetitive tasks** → Use bang operator for direct execution (git ops, status checks)
80+
- **Repetitive tasks** → Use bang operator for direct execution (git ops, status checks)
8181
- **Reusable patterns** → Codify into skills (conventional commits, workflows)
8282

8383
Token constraints became a forcing function to think critically about where AI adds the most value. This delegation triage—deciding what's worth the "conversation cost"—is transferable beyond Claude Code. As AI tools proliferate across workflows, the real skill isn't just using them, but developing intuition about which tool, at which stage, and at what level of autonomy.

0 commit comments

Comments
 (0)