You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _posts/2025-12-27-relearning-rust-through-play-weekend-building-with-claude-code.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,11 +9,11 @@ tag: workflow
9
9
10
10
Last week I learned a ton using Claude Code to build my [Rust CLI app Emojigen](https://github.com/francisfuzz/emoji_gen).
11
11
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.
13
13
14
14
## Getting Started
15
15
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.
17
17
18
18
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?
19
19
@@ -25,15 +25,15 @@ I looked at setting up a Rust project from scratch, finding appropriate GitHub A
25
25
26
26
## Development Journey
27
27
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.
29
29
30
30
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.
31
31
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!
33
33
34
34
## Testing and Development
35
35
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.
37
37
38
38
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.
39
39
@@ -45,7 +45,7 @@ One incredibly illuminating aspect was token usage. At work I don't think about
45
45
46
46
Codifying my work was really helpful, whether through a skill just for conventional commits or the Git workflow.
47
47
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
49
49
50
50
With regard to optimizing my Claude Code usage, I found a couple of things worked best:
51
51
@@ -77,7 +77,7 @@ Here's the compacted summary:
77
77
**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:
78
78
79
79
-**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)
81
81
-**Reusable patterns** → Codify into skills (conventional commits, workflows)
82
82
83
83
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