About Junhua

I'm Junhua, a software engineer who ships small products end to end.

I spent years building iOS apps inside product teams. Now I also design, build, and run my own small products: Mac and mobile apps, web tools, and AI features. SwingCodeLab is where I write down how that work actually goes.

01

Where I come from

Most of my career has been iOS development. I took over the iOS app of one of the world's top three hotel groups from the client's global team and became its main developer, leading large features, performance work, and the team's development plans.

I have also built iOS apps for an automotive accessories store, an online English school for children, and a utility bill payment service, including a community forum, a speaking-practice module, and hybrid web screens. Across those apps, much of my time went into performance, app size, and bugs that were hard to pin down.

02

What I build now

Today I design, build, and support my own products. MarginDeck and FiveUp are published under my own name; ClearBaZi, BigDayKit, and TakaQuiz are run by Fiveupclub Inc, my small software company.

  • MarginDeck: a local-first Mac app for revenue, costs, and estimated contribution profit across software products, with an MCP connection for Claude and Codex.
  • FiveUp: a 60-second mental-math game, built with Flutter, on the App Store and Google Play.
  • ClearBaZi: Chinese astrology calculators built around careful time handling and checked against independent reference code.
  • BigDayKit: free wedding planning tools that work without an account.
  • TakaQuiz: an AI quiz generator that turns notes, PDFs, photos, and web articles into practice quizzes, then brings back the questions you missed.
03

Working with clients

I also take on a small number of freelance projects: AI integrations such as MCP servers, web tools and calculators, Stripe payments, hosting and DNS moves, and Mac, iPhone, and Android apps. Selected work, with live links, is on the Work with me page.

04

How I like to work

I prefer small, legible systems over complicated ones. A useful product should make its assumptions visible, respect the user's data, and solve a specific problem without turning every interaction into a funnel.

  • Build focused products with a clear job to do.
  • Keep private working data local when the product allows it.
  • Separate measured facts from estimates and assumptions.
  • Ask when something is unclear instead of guessing, and raise new questions as soon as they appear.
  • Test against the agreed checks before anything ships.
  • Write down the method so a decision can be revisited later.
05

Why SwingCodeLab exists

A product page can explain what an app does, but it rarely has room for the experiments, trade-offs, and operating lessons behind it. SwingCodeLab is that wider space: field notes for independent developers, plus my older iOS and reverse-engineering notes.

MarginDeck's guides, free calculators, and release notes live on margindeck.app, next to the product they support. The site is personal by design: Junhua is the author, and SwingCodeLab is the name of the workshop.

06

Transparency matters

I aim to separate measured facts from estimates, explain assumptions, and update material details when they change. Recommendations are based on real use, not a product's commission rate.

SwingCodeLab may include affiliate links, and it covers products I make. Those relationships are disclosed wherever they matter.