<?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>If you can't answer "Where do you see yourself in 5 years?" — you're not broken"</title>
      <dc:creator>Shinya Saita</dc:creator>
      <pubDate>Tue, 18 Aug 2026 16:23:51 +0000</pubDate>
      <link>https://dev.to/shinya_saita/if-you-cant-answer-where-do-you-see-yourself-in-5-years-youre-not-broken-57f3</link>
      <guid>https://dev.to/shinya_saita/if-you-cant-answer-where-do-you-see-yourself-in-5-years-youre-not-broken-57f3</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you freeze when asked "Where do you see yourself in five years?", it doesn't mean something is missing in you.&lt;/li&gt;
&lt;li&gt;I believe there are three types of people who climb mountains:

&lt;ol&gt;
&lt;li&gt;People who climb because staying below is dangerous&lt;/li&gt;
&lt;li&gt;People who climb because there's something they want at the summit&lt;/li&gt;
&lt;li&gt;People who climb because they love climbing itself&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;All three are valid. There's no ranking — they just &lt;strong&gt;place value in different spots&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Simply knowing this fact can lift two burdens at once: the anxiety of not having a five-year plan, and the urge to "fix" a teammate who doesn't seem to have one.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  I used to dread career development talks
&lt;/h2&gt;

&lt;p&gt;"Where do you see yourself in five years?"&lt;/p&gt;

&lt;p&gt;Whether it comes up in a performance review, a 1:1 with your manager, or a job interview, you know this question. Have you ever just... blanked on it?&lt;/p&gt;

&lt;p&gt;I have. Many times.&lt;/p&gt;

&lt;p&gt;My coworkers seemed to answer effortlessly: "I want to be a tech lead," "I'm aiming for engineering management." Meanwhile I'd search my brain and find no clear picture of a "future me" — or worse, find five blurry pictures and no way to pick one.&lt;/p&gt;

&lt;p&gt;And here's the frustrating part: &lt;strong&gt;I love this job.&lt;/strong&gt; Precisely &lt;em&gt;because&lt;/em&gt; I love being an engineer, not being able to answer made me spiral:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do I lack ambition?&lt;/li&gt;
&lt;li&gt;Am I just not serious about my career?&lt;/li&gt;
&lt;li&gt;Is something wrong with me?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me give you the conclusion up front: you're fine. Nothing is missing. &lt;strong&gt;You and the person asking simply belong to different types.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This article is for two kinds of readers: engineers who carry the same quiet anxiety I did, and the seniors and managers looking at a report and thinking "I need to fix that person."&lt;/p&gt;

&lt;h2&gt;
  
  
  The story of Ging, from Hunter × Hunter
&lt;/h2&gt;

&lt;p&gt;Bear with me — I need to talk about a manga for a minute.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Hunter × Hunter&lt;/em&gt; by Yoshihiro Togashi is one of the most beloved manga in Japan, serialized in Weekly Shōnen Jump (the magazine that gave the world &lt;em&gt;Dragon Ball&lt;/em&gt;, &lt;em&gt;Naruto&lt;/em&gt;, and &lt;em&gt;One Piece&lt;/em&gt;). If you haven't read it, the English edition is published by Viz Media, and the anime is streaming pretty much everywhere. Mild spoilers ahead for volume 32.&lt;/p&gt;

&lt;p&gt;In that volume there's a scene I've reread more times than I can count. At the top of the World Tree — a tree so tall its crown pierces the clouds — the protagonist Gon finally sits down and talks with Ging, the father he has been chasing for the entire series.&lt;/p&gt;

&lt;p&gt;Gon asks him: "What do you want, Ging?" And Ging answers by telling the story of why he became a Hunter.&lt;/p&gt;

&lt;p&gt;Long ago, Ging desperately wanted to enter the royal tomb of a certain dynasty. But it wasn't a place you could just walk into — only a trusted organization would ever be granted access. So at fifteen, Ging founded a nonprofit and spent two years surveying and restoring the site. Friends he'd met online supported the project for free.&lt;/p&gt;

&lt;p&gt;And when he finally set foot inside the tomb he'd dreamed about, Ging realized something. The happiest moment wasn't laying eyes on the tomb's long-hidden "truth" —&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It was when we looked at each other and shook hands, the friends who'd wished for this together."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The thing more important than what he wanted had arrived &lt;em&gt;before&lt;/em&gt; he got what he wanted. The truth inside the tomb, he says, was just a bonus. And then Ging gives Gon the line that fans still quote today:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You should enjoy the little detours. To the fullest.&lt;br&gt;
Because that's where you'll find the things more important than what you want."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Source: Yoshihiro Togashi, Hunter × Hunter Vol. 32, ch. 339 "Silence" (Shueisha; English edition by Viz Media).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When I first read this, it hit me hard — because it put into words something I had vaguely felt my whole life.&lt;/p&gt;

&lt;h3&gt;
  
  
  A side note
&lt;/h3&gt;

&lt;p&gt;I realized later that this scene is a beautifully constructed nesting doll. Gon himself has spent the entire series climbing toward one summit — "meet my father" — and what he actually gathered along the way (Killua and his other friends, his mentor Bisky) became his real treasure. And the conversation itself takes place, literally, at the &lt;em&gt;top&lt;/em&gt; of the World Tree. Gon reaches the summit, and what he finds there is neither glory nor treasure — it's a lovely, rambling chat with his dad.&lt;/p&gt;

&lt;p&gt;Come on. That's just perfect.&lt;/p&gt;

&lt;h2&gt;
  
  
  My own detours
&lt;/h2&gt;

&lt;p&gt;Two examples of why this resonated so much.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. How I travel
&lt;/h3&gt;

&lt;p&gt;When I travel, I pick the main destination — and deliberately plan almost nothing else. Not where to stop along the way, not where to eat.&lt;/p&gt;

&lt;p&gt;Why? Because every trip, without fail, the road throws something interesting at me: a place I didn't know I wanted to see, a conversation I didn't know I wanted to have. I leave blank space in the itinerary precisely so I can grab those. As a wonderful side effect, wandering together has deepened my relationship with my family more than any landmark ever did.&lt;/p&gt;

&lt;p&gt;Honestly, the time we spend later saying "that trip was so good, remember?" might be the part I love most.&lt;/p&gt;

&lt;p&gt;In my travels, the destination ends up being the bonus. Exactly like Ging.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. How I became an engineer
&lt;/h3&gt;

&lt;p&gt;The second example is this job. I originally became an engineer chasing a dream: "I'll become a great engineer who builds great systems." I wanted to be, let's say, a 10x engineer.&lt;/p&gt;

&lt;p&gt;But once I was actually in the field, what became precious was something else entirely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The sheer fun of programming itself&lt;/li&gt;
&lt;li&gt;The joy of watching real people use software I built&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not the systems as such — the countless things that happened &lt;em&gt;on the way&lt;/em&gt; to building them. Those became my treasure.&lt;/p&gt;

&lt;p&gt;These days, what I love most about this profession is that product development lets you genuinely help someone, somewhere in the world. Of course, the goals my job asks of me are far more concrete than that. But the fuel that actually moves me? It's this.&lt;/p&gt;

&lt;h2&gt;
  
  
  The main point: three types of people climb mountains
&lt;/h2&gt;

&lt;p&gt;OK, here's what I actually want to propose. I believe people who climb mountains come in three types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type 1 climbs because staying below is dangerous.&lt;/strong&gt; The sea level is rising; stay put and you drown. So you climb. Survival-driven.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type 2 climbs because the summit holds something they want.&lt;/strong&gt; A legendary sword at the peak. A record to set. The value lives at the top, and the path is simply the cost of getting there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type 3 climbs because they love climbing.&lt;/strong&gt; Of course they aim for the summit — that's what climbing a mountain means. But the main dish is the path itself. Ging is this type. So am I.&lt;/p&gt;

&lt;p&gt;Translated into engineering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type 1&lt;/strong&gt;: "If I stop learning, my market value drops and I can't pay rent." So they study.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type 2&lt;/strong&gt;: "I want to be a CTO. I want the salary. I want to be a committer on that project." So they push.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type 3&lt;/strong&gt;: "Writing code is fun, and the things that happen while building are the best part." The summit just happens to be up ahead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Same mountain — "learning technology" — but &lt;strong&gt;where each person places the value is completely different.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  This is not a ranking
&lt;/h2&gt;

&lt;p&gt;Let me be very clear, because I don't want to be misread: I am &lt;strong&gt;not&lt;/strong&gt; here to evangelize "enjoy the journey."&lt;/p&gt;

&lt;p&gt;Type 1's strength is reliability. Necessity is arguably the strongest fuel there is, and someone studying hard to feed their family deserves nothing but respect.&lt;/p&gt;

&lt;p&gt;Type 2's strength is clarity. A clear summit lets you plan the shortest route backwards from it — and the people who leave dents in the world or set great records are, more often than not, this type. Answering "where will you be in five years?" without blinking is a genuine skill this type has.&lt;/p&gt;

&lt;p&gt;And Type 3: they'll wander off the optimal route without a second thought, and from the outside it can look like "does this person even &lt;em&gt;want&lt;/em&gt; to get to the top?" But the things they pick up on their detours have a way of compounding into assets later — that's their particular magic.&lt;/p&gt;

&lt;p&gt;All three are correct ways to climb. The only fact here is that &lt;strong&gt;the value sits in a different place for each.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens when nobody knows this fact
&lt;/h2&gt;

&lt;p&gt;The problem was never the ranking. The problem is &lt;strong&gt;not knowing the difference exists.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Type 3 engineer faces a question designed for Type 2 people — "Where do you see yourself in five years?" is &lt;em&gt;exactly&lt;/em&gt; that — fails to answer it, and concludes they're defective. That was me at the start of this article.&lt;/p&gt;

&lt;p&gt;Meanwhile, a Type 2 senior looks at a Type 3 junior and sees "someone with no ambition who needs to be fixed." And the reverse happens too: a Type 3 senior tells a Type 2 junior "you should enjoy the process more!" and receives a blank stare. Both are acts of goodwill. Both are also impositions.&lt;/p&gt;

&lt;p&gt;So, to those carrying the anxiety I used to carry: &lt;strong&gt;you are not weird, and you are not broken. There's nothing to feel down about.&lt;/strong&gt; You've simply been grading yourself against a different type's scorecard. Freezing at that interview question isn't a lack of career awareness — it's that your values live somewhere the question doesn't look.&lt;/p&gt;

&lt;p&gt;And to the seniors and managers thinking "my report has no goals, I have to change them": &lt;strong&gt;you probably don't.&lt;/strong&gt; That person isn't refusing to climb. They're climbing the same mountain with their value placed somewhere different from yours. Try watching them once through the lens of "which type is this person?" — and things that looked like flaws may resolve into nothing more than a difference in type.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;One caveat.&lt;/strong&gt; If your company or organization implicitly endorses a single type, people of the other types will slowly start to feel like they don't belong. If that's you, it's worth genuinely considering your options: keep up the dialogue, try a different team — or make the jump to somewhere that fits.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Ging's "enjoy the detours" is, to me, an all-time great line. But if I recommend it to you as-is, I'm just committing the Type 3 version of the same imposition. So let me rephrase it as a question instead:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why do you climb the mountain?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Whatever your answer is, own it with confidence. Just remember that the person climbing next to you may answer differently — and knowing that single fact can change how reviews, teams, and your own career anxiety look.&lt;/p&gt;

&lt;p&gt;I wrote this for the past me who needed to hear it. If it reaches someone else carrying the same weight, even better.&lt;/p&gt;

&lt;p&gt;So — which type are you? I'd love to hear in the comments.&lt;/p&gt;

</description>
      <category>career</category>
      <category>motivation</category>
      <category>watercooler</category>
      <category>discuss</category>
    </item>
    <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>
