<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shinya Saita</title>
    <description>The latest articles on DEV Community by Shinya Saita (@shinya_saita).</description>
    <link>https://dev.to/shinya_saita</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4071579%2Ff760ff71-7855-404b-9e78-648561da8f38.jpg</url>
      <title>DEV Community: Shinya Saita</title>
      <link>https://dev.to/shinya_saita</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shinya_saita"/>
    <language>en</language>
    <item>
      <title>How to answer "Why did you pick this language?" so people actually nod</title>
      <dc:creator>Shinya Saita</dc:creator>
      <pubDate>Mon, 10 Aug 2026 16:17:55 +0000</pubDate>
      <link>https://dev.to/shinya_saita/how-to-answer-why-did-you-pick-this-language-so-people-actually-nod-3l8a</link>
      <guid>https://dev.to/shinya_saita/how-to-answer-why-did-you-pick-this-language-so-people-actually-nod-3l8a</guid>
      <description>&lt;h2&gt;
  
  
  You've been in this meeting, right?
&lt;/h2&gt;

&lt;p&gt;Every new project starts with the same ritual: picking the stack. Requirements and architecture get all the attention, but &lt;em&gt;"what do we build this with?"&lt;/em&gt; matters just as much.&lt;/p&gt;

&lt;p&gt;So your team debates it properly. You weigh the options, land on a choice, and everyone agrees: &lt;em&gt;"Yeah, this is the right fit for us."&lt;/em&gt; Then you present it in a review meeting, and someone — a manager, a stakeholder, an architect from another team — asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Why did you choose this language?"&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;"Would another language not have worked?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If reading that made your stomach drop a little, keep scrolling. 😅&lt;/p&gt;

&lt;p&gt;Here's the thing I wish someone had told me earlier: this question is not an attack, and it's not someone doubting your skills. What the asker actually wants to know is much simpler:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Is this decision sound from a business perspective?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let me put one disclaimer up front:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There is no absolute ranking of programming languages.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is not a "language X is better than language Y" post. But every language that survives has &lt;em&gt;reasons it keeps getting chosen&lt;/em&gt; — and whether you can &lt;strong&gt;articulate those reasons out loud&lt;/strong&gt; is the entire game.&lt;/p&gt;

&lt;p&gt;I've been asked this question many times across my career. For years I answered with technical merits, and every time I got the same politely unconvinced face. Eventually it clicked: what's really being tested isn't &lt;em&gt;"is it the most modern?"&lt;/em&gt; or &lt;em&gt;"is it the fastest?"&lt;/em&gt; It's:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Can you explain this choice to a third party, in business terms?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's what this post is about. By the end, I hope you'll feel ready to walk into your next review and defend your stack with confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  What decision-makers are &lt;em&gt;actually&lt;/em&gt; evaluating
&lt;/h2&gt;

&lt;p&gt;When engineers talk tech selection, we gravitate toward performance, modernity, and trends. Those matter. But the people approving your proposal are usually worried about something far more mundane — and far more long-term:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can we &lt;strong&gt;hire and hand over&lt;/strong&gt; this codebase years from now?&lt;/li&gt;
&lt;li&gt;Can we &lt;strong&gt;maintain it without heroics&lt;/strong&gt; in year three?&lt;/li&gt;
&lt;li&gt;Will it &lt;strong&gt;survive spec changes and reorgs&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;Does the &lt;strong&gt;cost actually pay off&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;Does the project &lt;strong&gt;depend on one irreplaceable person&lt;/strong&gt;?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking back at projects I've been on, these are exactly the things nobody worried about at kickoff — and everything that quietly hurt later.&lt;/p&gt;

&lt;p&gt;A language with a steep learning curve slows down every onboarding. A team of three can absorb that; a team of fifteen can't. And a niche technology means one resignation can destabilize an entire project.&lt;/p&gt;

&lt;p&gt;Which leads me to the definition I now use:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech selection isn't picking the best option for this moment. It's making a choice you could re-explain to your future self in three years — and still nod at.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"This language is trending and I want to try it" is a fine reason to start a side project. It's a terrible reason to bet a product on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Languages that keep getting chosen have reasons
&lt;/h2&gt;

&lt;p&gt;Across the languages that survive decades in production, the same traits show up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Easy to learn&lt;/strong&gt; — new members become productive fast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easy to build with&lt;/strong&gt; — you spend time on the actual problem&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easy to operate&lt;/strong&gt; — the thing stays maintainable after launch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(Plus domain-specific strengths: easy to build securely, easy to squeeze hardware performance, and so on.)&lt;/p&gt;

&lt;p&gt;In an industry this trend-driven, &lt;strong&gt;anything still standing after 20 years is not standing out of inertia.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I spent the longest stretch of my career in PHP shops, so here's an example from that world: WordPress and MediaWiki (the software behind Wikipedia) are PHP. What they share isn't elegance — it's that they've been &lt;strong&gt;continuously maintained for decades&lt;/strong&gt;. A language's longevity directly becomes the longevity of the products built on it.&lt;/p&gt;

&lt;p&gt;And this isn't a PHP thing. Python's machine-learning ecosystem, TypeScript's grip on frontend, Go's dominance in cloud-native infrastructure — each has clear, articulable reasons it keeps being chosen.&lt;/p&gt;

&lt;p&gt;What matters is whether &lt;strong&gt;you&lt;/strong&gt; can explain, in your own words, why &lt;em&gt;your&lt;/em&gt; language keeps being chosen.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 4 lenses of defensible tech selection
&lt;/h2&gt;

&lt;p&gt;Here are four lenses that work regardless of language. If you can answer "why this language?" along these four axes, you'll convince most rooms.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lens 1: Talent depth — can you avoid a bus factor of one?
&lt;/h3&gt;

&lt;p&gt;The most overlooked question in tech selection: &lt;strong&gt;how many people in the market can write this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A language with a large developer population gives you options — for hiring, for mid-project reinforcements, for handovers. Choose something niche and you've signed up for &lt;em&gt;"if this person leaves, we're stuck."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; — huge population across data science &lt;em&gt;and&lt;/em&gt; web; lots of career-changers learning it, so the hiring funnel is wide&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript&lt;/strong&gt; — effectively the lingua franca of frontend; JavaScript developers convert easily&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go&lt;/strong&gt; — growing fast among infra-leaning engineers, though the pool for business-app web development is still thin in some markets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Choose with &lt;em&gt;"can the team keep shipping?"&lt;/em&gt; in mind, not &lt;em&gt;"do I love this language?"&lt;/em&gt;. It's unglamorous, and it's the foundation everything else stands on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lens 2: Fit for purpose — is this the shortest path?
&lt;/h3&gt;

&lt;p&gt;Every language has home turf. Yes, most modern languages can technically do anything — but whether they get you to &lt;em&gt;your&lt;/em&gt; goal by the shortest path has a huge impact on productivity.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I just want to write business logic, but my week is disappearing into environment setup and plumbing..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sound familiar?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building a &lt;strong&gt;web application&lt;/strong&gt;? Pick a language whose ecosystem naturally speaks HTTP, sessions, and templating&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data processing / analytics&lt;/strong&gt;? Very little competes with Python's ecosystem (pandas, NumPy, ...)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-throughput API servers&lt;/strong&gt;? Go's concurrency model earns its keep&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One type-safe language across frontend and backend&lt;/strong&gt;? That's the realistic case for TypeScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can say &lt;em&gt;"this language is specialized for — or at least strongly aligned with — what we're building"&lt;/em&gt;, your proposal gets dramatically more persuasive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lens 3: Ecosystem maturity — will you reinvent wheels?
&lt;/h3&gt;

&lt;p&gt;Modern development runs on frameworks and libraries. Auth, validation, email, background jobs — whether these come &lt;strong&gt;ready out of the box&lt;/strong&gt; directly determines your velocity.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; — Django, FastAPI. Django's "batteries included" philosophy ships an admin UI, ORM, and more from day one&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript&lt;/strong&gt; — Next.js, NestJS. The full-stack-in-one-language ecosystem has genuinely matured&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go&lt;/strong&gt; — an excellent standard library; you can go far without a framework, but business-app "we also need this and this and this" features often end up hand-rolled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And here's the part people miss: ecosystem maturity isn't just about building &lt;em&gt;fast&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's about surviving change.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With a mature framework, a spec change means a small adjustment, not a rewrite. That's what lets a team keep moving without flinching.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lens 4: Cost and operations — can you keep this running?
&lt;/h3&gt;

&lt;p&gt;The final piece is &lt;strong&gt;total cost&lt;/strong&gt; — not just infrastructure, but operations, incident response, and salaries. Think ROI, not hosting bill.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does it need a special runtime or environment?&lt;/li&gt;
&lt;li&gt;Does it run on a simple infrastructure setup?&lt;/li&gt;
&lt;li&gt;Can you start small and scale later?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Being able to say &lt;em&gt;"we can start cheap, and it holds up if we grow"&lt;/em&gt; carries enormous weight with business decision-makers. It's not flashy — but for anything meant to run for years, &lt;em&gt;"sustainable without heroics"&lt;/em&gt; is priceless.&lt;/p&gt;

&lt;h2&gt;
  
  
  The inevitable question: "But is it fast enough?"
&lt;/h2&gt;

&lt;p&gt;Whenever languages get compared, this one shows up. And yes — some languages extract more from the CPU than others.&lt;/p&gt;

&lt;p&gt;But look at where most web applications actually spend their time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Database access&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;External API calls&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Network latency&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The raw execution-speed gap between languages is the bottleneck far less often than people assume.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Of course, if you're building real-time systems or handling massive concurrent connections, the calculus changes. But for most business systems and web services, architecture and query optimization move the needle far more than language benchmarks ever will.&lt;/p&gt;

&lt;p&gt;The mature answer isn't "this language is fast" — it's: &lt;strong&gt;"For &lt;em&gt;these&lt;/em&gt; requirements, is language performance actually going to be the bottleneck?"&lt;/strong&gt; Usually, it isn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you're asked to compare — compare like this
&lt;/h2&gt;

&lt;p&gt;"How does it stack up against language X?" is unavoidable. The goal is &lt;strong&gt;not to win a technology debate. It's to explain the lowest-risk business choice.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's my rough mental cheat sheet for commonly compared languages:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Language&lt;/th&gt;
&lt;th&gt;Strength&lt;/th&gt;
&lt;th&gt;Watch out for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Python&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low learning curve, unmatched in AI/data&lt;/td&gt;
&lt;td&gt;Large-scale web apps need deliberate architecture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Go&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High performance, great concurrency&lt;/td&gt;
&lt;td&gt;Business web apps mean hand-rolling things frameworks give you elsewhere&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One language across the stack, type safety&lt;/td&gt;
&lt;td&gt;Fast-moving ecosystem; dependency management needs discipline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rust&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Safety &lt;em&gt;and&lt;/em&gt; performance&lt;/td&gt;
&lt;td&gt;Steep learning curve, harder hiring&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;(Disagreements welcome in the comments 😄 — this is my experience, not a benchmark.)&lt;/p&gt;

&lt;p&gt;No language is perfect. Which is exactly why the winning move is explaining &lt;strong&gt;"given &lt;em&gt;our&lt;/em&gt; constraints, this is the best fit"&lt;/strong&gt; — from the &lt;em&gt;listener's&lt;/em&gt; point of view.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ready-to-use script
&lt;/h2&gt;

&lt;p&gt;"Okay, I get the theory. What do I actually &lt;em&gt;say&lt;/em&gt;?" Here's a template you can deliver calmly in one to two minutes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For this project, we selected the technology based not just on performance or trends, but on &lt;strong&gt;long-term operability and fit with our organization&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[Language]&lt;/strong&gt; has &lt;strong&gt;[track record / market share]&lt;/strong&gt;, including long-running production systems like &lt;strong&gt;[concrete product examples]&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We chose it because the large developer population keeps hiring and handover risk low, and because it specializes in &lt;strong&gt;[the language's home turf]&lt;/strong&gt;, giving us a good balance of learnability, implementation speed, and maintainability.&lt;/p&gt;

&lt;p&gt;We did evaluate alternatives, but for these requirements, &lt;strong&gt;[language]&lt;/strong&gt; was the lowest-risk choice in terms of &lt;strong&gt;speed, cost, and continuity&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Example: making the case for Go
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;For this project, we selected the technology based not just on performance or trends, but on long-term operability and fit with our organization.&lt;/p&gt;

&lt;p&gt;Go is widely adopted across the cloud-native landscape — Kubernetes and Docker are written in it — with a strong track record of long-running production systems.&lt;/p&gt;

&lt;p&gt;We chose it because its simple language design keeps code consistent across engineers, and its concurrency performance matches the requirements of our API platform.&lt;/p&gt;

&lt;p&gt;We also evaluated Python and TypeScript, but for these requirements, Go was the lowest-risk choice in terms of speed, cost, and continuity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Notice the framing: &lt;strong&gt;not "we picked the most impressive option" but "we picked the lowest-risk option."&lt;/strong&gt; Decision-makers relax at the second one, not the first.&lt;/p&gt;

&lt;p&gt;And there's a bonus effect: even if the answer is still "no," a structured explanation like this makes it &lt;em&gt;obvious&lt;/em&gt; which specific concern is blocking approval — so your second attempt becomes a targeted fix instead of another shot in the dark.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech selection is accountability to your future self
&lt;/h2&gt;

&lt;p&gt;If I had to compress this whole post into one line:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech selection isn't choosing what's most impressive today. It's making a decision you can still explain — and stand behind — years later.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You've probably heard (or been the subject of) the line: &lt;em&gt;"They can build things, sure, but they never think about operations."&lt;/em&gt; I've been on the receiving end of that one. It stings because it's fair: being right &lt;em&gt;today&lt;/em&gt; isn't enough.&lt;/p&gt;

&lt;p&gt;And if you're drawn to a language because it's trending or because you want to learn it — protect that curiosity, it's what keeps this job fun — but on its own, it won't get a proposal approved. Pair it with a business case built on the four lenses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Deep talent pool — low bus-factor risk&lt;/li&gt;
&lt;li&gt;✅ Fit for purpose — shortest path to the goal&lt;/li&gt;
&lt;li&gt;✅ Mature ecosystem — no wheel reinvention&lt;/li&gt;
&lt;li&gt;✅ Realistic cost and operations — sustainable for years&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cover those four, and you can propose &lt;em&gt;any&lt;/em&gt; language with your head held high.&lt;/p&gt;

&lt;p&gt;Now go pitch your stack.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article is an English adaptation of a piece I originally wrote for the pamphlet of &lt;a href="https://phperkaigi.jp/2026/" rel="noopener noreferrer"&gt;PHPerKaigi 2026&lt;/a&gt;, a Japanese PHP conference, later reworked for &lt;a href="https://qiita.com/ssaita/items/6dda0b4e6d018cc6aa14" rel="noopener noreferrer"&gt;Qiita&lt;/a&gt; (Japanese).&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>discuss</category>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I got tired of heavyweight Markdown editors, so I built one in Rust + Tauri that doesn't ship a browser</title>
      <dc:creator>Shinya Saita</dc:creator>
      <pubDate>Mon, 10 Aug 2026 16:06:49 +0000</pubDate>
      <link>https://dev.to/shinya_saita/i-got-tired-of-heavyweight-markdown-editors-so-i-built-one-in-rust-tauri-that-doesnt-ship-a-4jf6</link>
      <guid>https://dev.to/shinya_saita/i-got-tired-of-heavyweight-markdown-editors-so-i-built-one-in-rust-tauri-that-doesnt-ship-a-4jf6</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;TL;DR: I wanted a Markdown editor that just opens instantly and gets out of the way. Nothing quite fit, so I built &lt;strong&gt;&lt;a href="https://bokuchi.com/" rel="noopener noreferrer"&gt;Bokuchi&lt;/a&gt;&lt;/strong&gt; with Tauri v2 + Rust + React. Instead of bundling a whole Chromium instance, it renders through the OS's native WebView — so it's light enough to leave open all day and opens before you finish reaching for your coffee. It's open source: &lt;strong&gt;&lt;a href="https://github.com/Bokuchi-Editor/bokuchi" rel="noopener noreferrer"&gt;github.com/Bokuchi-Editor/bokuchi&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The itch
&lt;/h2&gt;

&lt;p&gt;Here's a situation you probably know too well.&lt;/p&gt;

&lt;p&gt;You want to jot down a quick note. Maybe a release checklist, maybe a snippet of Markdown for a PR description. So you open your editor of choice — and your laptop fan spins up like it's about to take off. A "note-taking" app just claimed a serious chunk of your RAM before you typed a single character.&lt;/p&gt;

&lt;p&gt;I love VS Code. I've used Atom (RIP). I respect Obsidian. But for the specific job of &lt;em&gt;"open a window, write some Markdown, close it"&lt;/em&gt;, they all felt like renting a moving truck to carry a sandwich.&lt;/p&gt;

&lt;p&gt;I had three requirements, and only three:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity&lt;/strong&gt; — Markdown editing. That's it. No plugin marketplace, no account, no sync daemon.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A design I won't get tired of&lt;/strong&gt; — minimal, calm, something I'd happily stare at all day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed above all else&lt;/strong&gt; — this was non-negotiable. It has to feel instant.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I looked around. I couldn't find the thing that hit all three. So I did what every engineer eventually does when they should probably know better:&lt;/p&gt;

&lt;p&gt;I decided to build it myself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "build your own" is the developer's disease
&lt;/h2&gt;

&lt;p&gt;Building your own tool is a trap and a joy at the same time.&lt;/p&gt;

&lt;p&gt;It's a trap because "how hard can a text box be?" is one of the great lies we tell ourselves. It's a joy because the moment your own tool does &lt;em&gt;exactly&lt;/em&gt; the thing you wanted, in &lt;em&gt;exactly&lt;/em&gt; the way you wanted, there's nothing else like it.&lt;/p&gt;

&lt;p&gt;The real question wasn't &lt;em&gt;"should I build it"&lt;/em&gt; (my ego had already decided). It was &lt;em&gt;"what do I build it with?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If I reached for Electron, I'd be right back where I started: shipping a whole Chromium instance to render a text area. That defeats requirement #3 before I write a line of code.&lt;/p&gt;

&lt;p&gt;Enter Tauri.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Tauri, for the uninitiated?
&lt;/h2&gt;

&lt;p&gt;If you haven't touched it yet:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://tauri.app/" rel="noopener noreferrer"&gt;Tauri&lt;/a&gt; lets you build desktop apps with a web frontend and a Rust backend.&lt;/strong&gt; The key difference from Electron is that Tauri &lt;strong&gt;doesn't bundle a browser&lt;/strong&gt;. Instead it uses the operating system's &lt;em&gt;native&lt;/em&gt; WebView (WebView2 on Windows, WKWebView on macOS, WebKitGTK on Linux).&lt;/p&gt;

&lt;p&gt;That one design choice cascades into everything I cared about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tiny footprint&lt;/strong&gt; — no bundled Chromium means dramatically smaller binaries and lower memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rust backend&lt;/strong&gt; — safe, fast, and genuinely pleasant for file I/O and heavier logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security by default&lt;/strong&gt; — the app can only touch the OS capabilities you explicitly grant it (more on this below).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform&lt;/strong&gt; — one codebase for Windows, macOS, and Linux.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a "must feel instant" Markdown editor, this was the right foundation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet Bokuchi
&lt;/h2&gt;

&lt;p&gt;So I built &lt;strong&gt;&lt;a href="https://bokuchi.com/" rel="noopener noreferrer"&gt;Bokuchi&lt;/a&gt;&lt;/strong&gt; — a lightweight, cross-platform Markdown editor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Choice&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Framework&lt;/td&gt;
&lt;td&gt;Tauri v2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Rust&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;React + TypeScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build&lt;/td&gt;
&lt;td&gt;Vite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Platforms&lt;/td&gt;
&lt;td&gt;Windows / macOS / Linux&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Light enough to forget it's running
&lt;/h3&gt;

&lt;p&gt;I originally wanted to open this section with a big, satisfying RAM number. I'm not going to — because honestly measuring memory for a WebView-based app is murkier than it looks. Do you count the OS's WebView helper processes? Shared frameworks already resident because the system uses them anyway? Depending on where you draw the line, you can make the number look heroic or ordinary, and I'd rather skip the benchmark theater.&lt;/p&gt;

&lt;p&gt;So here's the claim I can stand behind: Bokuchi doesn't bundle a browser. There's no Chromium instance spinning up just to render a text area — the UI runs in the WebView your OS already ships. In practice that means it opens instantly, idles quietly, and never gives you a reason to close it.&lt;/p&gt;

&lt;p&gt;That's not a spec-sheet flex — it's the entire reason the app exists. When opening the editor costs you nothing, you actually use it for the two-line notes instead of reaching for a sticky note.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's actually in it
&lt;/h3&gt;

&lt;p&gt;I kept the core minimal, but "minimal" doesn't mean "bare":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-time preview&lt;/strong&gt; with synchronized scrolling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tab management&lt;/strong&gt; + auto-save + state persistence (close it, reopen it, everything's where you left it)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown toolbar&lt;/strong&gt; — headings, bold, italic, lists, links, tables&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search &amp;amp; replace&lt;/strong&gt; with match highlighting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KaTeX&lt;/strong&gt; for math (&lt;code&gt;$...$&lt;/code&gt; and &lt;code&gt;$$...$$&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mermaid&lt;/strong&gt; diagrams from fenced code blocks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Marp&lt;/strong&gt; slide presentations with custom themes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CJK-aware word count&lt;/strong&gt; (yes, it counts Japanese/Chinese/Korean characters correctly)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;9 themes&lt;/strong&gt; and a &lt;strong&gt;14-language UI&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML export&lt;/strong&gt;, plus HTML/TSV/CSV table → Markdown conversion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The feature I'm quietly proud of: a variable system
&lt;/h2&gt;

&lt;p&gt;Here's the part that started as "a small convenience" and turned into my favorite feature.&lt;/p&gt;

&lt;p&gt;I write a lot of repetitive documents — release procedures, runbooks — where the &lt;em&gt;structure&lt;/em&gt; is identical every time but a few values (a date, a version, a command) change. Copy-pasting last week's doc and hunting for the three things to update is exactly the kind of small, dumb friction that adds up.&lt;/p&gt;

&lt;p&gt;So Bokuchi lets you embed &lt;strong&gt;variables directly in your Markdown&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nv"&gt;&amp;lt;!-- @var version: 2.3.0 --&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!-- @var deploy_date: 2026-07-01 --&amp;gt;&lt;/span&gt;

&lt;span class="gh"&gt;# Release Procedure {{version}}&lt;/span&gt;

Scheduled for &lt;span class="gs"&gt;**{{deploy_date}}**&lt;/span&gt;.

Run:&lt;span class="sb"&gt;

    git checkout v{{version}}
    ./deploy.sh --version {{version}}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Define once at the top, reference with &lt;code&gt;{{...}}&lt;/code&gt; anywhere, and the preview renders the resolved document. Variables can be &lt;strong&gt;file-local&lt;/strong&gt; (like above) or &lt;strong&gt;global&lt;/strong&gt; (set once in Settings, reused across every file). No spreadsheet, no find-and-replace ritual — the template &lt;em&gt;is&lt;/em&gt; the document.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security: you grant, or it can't
&lt;/h2&gt;

&lt;p&gt;One thing I genuinely appreciate about Tauri v2 is that access to the host machine is &lt;strong&gt;opt-in&lt;/strong&gt;. Your app declares a set of &lt;em&gt;capabilities&lt;/em&gt;, and anything not on the list simply cannot be called from the frontend.&lt;/p&gt;

&lt;p&gt;A capabilities file looks roughly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"identifier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"default"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"windows"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"permissions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"core:default"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"dialog:default"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"fs:allow-read-file"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"fs:allow-write-file"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"clipboard-manager:allow-read-text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"clipboard-manager:allow-write-text"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend can open a file dialog, read and write files, and touch the clipboard — because I said so, explicitly. It can't spawn a shell or hit the network unless I add those permissions. For a tool people run on their own machines, that "least privilege by construction" model is exactly the guarantee I want to be able to make.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tauri v2 developer experience
&lt;/h2&gt;

&lt;p&gt;A few honest takeaways after shipping with it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The web frontend is &lt;em&gt;just&lt;/em&gt; the web.&lt;/strong&gt; React, Vite, hot reload — all the muscle memory transfers. No weird framework-specific rendering layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rust is where the calm lives.&lt;/strong&gt; File I/O, external-change detection, the variable resolver — pushing that into a typed, compiled backend meant a whole class of "undefined is not a function at 2am" bugs never happened.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The capability model makes you think about your surface area early&lt;/strong&gt;, which sounds like a chore and is actually a gift.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The lightness is real.&lt;/strong&gt; Not bundling Chromium shows up exactly where you'd hope: smaller installers, faster startup, and an app you can leave open all day without thinking about it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Is it all frictionless? No — you'll spend time learning the permission system, and WebView differences across platforms are a real thing you have to test. But for the class of app where "lightweight" is a feature and not an afterthought, Tauri v2 is the most fun I've had building desktop software in years.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it / break it / star it
&lt;/h2&gt;

&lt;p&gt;Bokuchi is &lt;strong&gt;free and open source&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Download&lt;/strong&gt; (auto-detects your OS): &lt;a href="https://bokuchi.com/" rel="noopener noreferrer"&gt;bokuchi.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source &amp;amp; releases&lt;/strong&gt;: &lt;a href="https://github.com/Bokuchi-Editor/bokuchi" rel="noopener noreferrer"&gt;github.com/Bokuchi-Editor/bokuchi&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've ever grumbled at a note-taking app for hogging your RAM, I'd love for you to give it a spin. Issues, feedback, and PRs are all genuinely welcome — and if it saves you a little friction, a ⭐ on the repo helps more people find it.&lt;/p&gt;

&lt;p&gt;Thanks for reading. Now go write something. Quickly.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>tauri</category>
      <category>showdev</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
