Week 1.5: When Your 2-Year-Old Refuses to Nap (And Why That's Actually Good)

👨‍💻 Matthew Hendricks
📅
⏱️ 4 min read
#dev-update #real-talk #testing #metrics

v0.0.2 got delayed by real life. Instead of rushing it, we used the time to fix all our tests and build a custom metrics system traders actually asked for.

v0.0.2 was supposed to launch this week.

It didn’t.

Why? My 2-year-old decided naps are for babies (her words, probably). As a solo founder working between bedtime and naptime, when naptime disappears, roadmaps get… flexible.

But here’s the thing: delays can be gifts if you use them right.

What Was Supposed to Ship

v0.0.2 was going to be our “public repo launch” - open-sourcing the CLI and TUI, making the GitHub repos public, getting our first external contributors.

Classic developer move: build cool stuff, ship it, iterate based on feedback.

What Actually Happened

🐛 All Tests Passing (Finally)

Before this week:

  • Some things worked, some things didn’t
  • The test suite was “mostly fine,” but not truly reliable

After naptime chaos:

  • Everything works as intended
  • No more lurking issues
  • The foundation feels solid

What changed? We took the time to dig into the details and fix the root causes behind the bugs that had been quietly piling up. Order tracking is now accurate, performance stats are trustworthy, and risk checks actually catch what they’re supposed to.

It wasn’t glamorous, but it was necessary—and now the whole project is much healthier for it.

My motto revovles around “Done not perfect”. But it’s not about being lazy. It’s about being practical.

This wasn’t planned for this week. But having uninterrupted 2am coding sessions (thanks, toddler sleep regression) meant we could dive deep into test fixes without context switching.

I’m not sure how long it will take for naptime to return, but I’m glad we took the time to fix the tests.

✨ Custom Metrics System (Customer-Driven)

A trader reached out asking: “Can we write our own performance metrics? We have specific fitness functions we want to optimize for.”

Great question. So instead of releasing half-baked, we built it properly:

What we shipped:

// Extensible trait-based system
pub trait CustomMetric {
    fn name(&self) -> &str;
    fn calculate(&self, metrics: &StrategyMetrics, positions: &[Position]) -> f64;
}

Now traders can define custom metrics (Profit Factor, Calmar Ratio, Kelly Criterion, etc.) and persist them to PostgreSQL’s JSONB columns for flexible querying.

The system comes with built-in examples: Profit Factor (gross wins versus gross losses), Calmar Ratio (return over max drawdown), Kelly Criterion (optimal position sizing), Expected Value per trade, and Max consecutive losses tracking.

This also wasn’t planned for this week. But a direct customer request is always worth the detour.

🔧 CI/CD That Doesn’t Suck

We set up automated checks so every update gets tested and reviewed before it goes live. No more “it works on my machine” moments—everything is built and checked across Windows, Mac, and Linux.

Formatting and code quality are enforced automatically, so the codebase stays clean as it grows.

These behind-the-scenes improvements might not be flashy, but they make the whole project more reliable and easier to maintain over time.

The Bigger Lesson

Moving quickly is great. But getting it right matters more.

If we’d rushed out the new release just to hit a deadline, we would have made a poor first impression on early users, skipped a feature someone actually asked for, and set ourselves up for headaches down the road.

Taking a few extra days let us build on a stronger, more reliable foundation, deliver something people actually wanted, and set up better systems for the future.

Sometimes, slowing down is the fastest way to get where you want to go.

What’s Actually Shipping (Very Soon)

v0.0.2 is landing this week. No more delays.

What to expect: The demo is open for everyone to try and explore. It works as it should with no more rough edges. Clear guides show you how to use and customize metrics. Simple instructions help anyone who wants to contribute.

What’s different from before: We focused on building a stronger, more reliable base. The experience is smoother for both users and developers. We listened to feedback and included features people actually asked for.

The Real Talk

Solo founder life means:

  • I don’t know if I have 30 minutes or 3 hours to focus
  • Your 2-year-old’s nap schedule IS your deployment schedule
  • “Scope creep” sometimes means listening to customers
  • Delays suck, but shipping broken code sucks more

v0.0.2 sounds like it might be 3 days late. It’s also significantly better than it would’ve been if we rushed it.

Worth it? Ask me after the toddler learns to nap again.

Follow the Journey

  • Next week: v0.0.2 launches (naptime permitting)
  • Want custom metrics access? Join the waitlist for early CLI beta
  • Questions or feedback? Reach out at hello@matchstick.trading

Building in public means showing the real stuff - bugs, delays, toddlers, and all. Thanks for following along.

🔥 Get Dev Updates

Breaking changes, new features, and critical updates delivered instantly

Real-time notifications when we ship. No fluff, just the code.

Share this post