<?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>Forem: Bùi Ngọc Lâm</title>
    <description>The latest articles on Forem by Bùi Ngọc Lâm (@buingoclam147).</description>
    <link>https://forem.com/buingoclam147</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3684179%2F32bdae3d-691d-4db7-be40-e8d54d52a11f.jpeg</url>
      <title>Forem: Bùi Ngọc Lâm</title>
      <link>https://forem.com/buingoclam147</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/buingoclam147"/>
    <language>en</language>
    <item>
      <title>I Built My First macOS App: TSnap – Instant OCR &amp; Text Translation Anywhere</title>
      <dc:creator>Bùi Ngọc Lâm</dc:creator>
      <pubDate>Wed, 31 Dec 2025 04:20:46 +0000</pubDate>
      <link>https://forem.com/buingoclam147/i-built-my-first-macos-app-tsnap-instant-ocr-text-translation-anywhere-b8</link>
      <guid>https://forem.com/buingoclam147/i-built-my-first-macos-app-tsnap-instant-ocr-text-translation-anywhere-b8</guid>
      <description>&lt;p&gt;Hi everyone 👋&lt;br&gt;
I want to share my first macOS application called TSnap, a small menu bar tool I built to solve a problem I personally run into every day: translating text quickly without breaking focus.&lt;/p&gt;

&lt;p&gt;The problem&lt;/p&gt;

&lt;p&gt;When working or reading on macOS, I often need to translate:&lt;/p&gt;

&lt;p&gt;A piece of text inside an app&lt;/p&gt;

&lt;p&gt;Text inside screenshots, images, or PDFs&lt;/p&gt;

&lt;p&gt;The usual workflow was:&lt;/p&gt;

&lt;p&gt;Select text or take a screenshot&lt;/p&gt;

&lt;p&gt;Open a translation app or website&lt;/p&gt;

&lt;p&gt;Paste the content&lt;/p&gt;

&lt;p&gt;Switch back to what I was doing&lt;/p&gt;

&lt;p&gt;It’s a small friction, but it happens many times a day.&lt;/p&gt;

&lt;p&gt;So I decided to build a tool that works directly from anywhere on macOS.&lt;/p&gt;

&lt;p&gt;Introducing TSnap&lt;/p&gt;

&lt;p&gt;TSnap is a lightweight macOS menu bar app that lets you translate text instantly using keyboard shortcuts.&lt;/p&gt;

&lt;p&gt;It supports:&lt;/p&gt;

&lt;p&gt;Translating selected text in any app&lt;/p&gt;

&lt;p&gt;Performing OCR on screenshots and translating the extracted text&lt;/p&gt;

&lt;p&gt;Working system-wide without switching applications&lt;/p&gt;

&lt;p&gt;The goal is to keep everything fast, simple, and unobtrusive.&lt;/p&gt;

&lt;p&gt;🌐 Website: &lt;a href="https://www.tsnap.tech/" rel="noopener noreferrer"&gt;https://www.tsnap.tech/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 Source code: &lt;a href="https://github.com/buingoclam147/snap-translate" rel="noopener noreferrer"&gt;https://github.com/buingoclam147/snap-translate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Key features&lt;/p&gt;

&lt;p&gt;Instant translation via shortcut&lt;br&gt;
Select text in any app and translate it immediately.&lt;/p&gt;

&lt;p&gt;OCR from screenshots&lt;br&gt;
Capture text from images or PDFs and translate it directly.&lt;/p&gt;

&lt;p&gt;System-wide support&lt;br&gt;
Works across apps, not limited to browsers.&lt;/p&gt;

&lt;p&gt;Menu bar design&lt;br&gt;
Always available, minimal UI, low resource usage.&lt;/p&gt;

&lt;p&gt;Privacy-focused&lt;br&gt;
No accounts, no tracking. Data stays on your machine whenever possible.&lt;/p&gt;

&lt;p&gt;Open source&lt;br&gt;
The entire project is public, and anyone can inspect, fork, or customize it.&lt;/p&gt;

&lt;p&gt;Why it’s not on the Mac App Store (yet)&lt;/p&gt;

&lt;p&gt;This is a small but honest reason 😅&lt;br&gt;
I haven’t enrolled in the Apple Developer Program, so TSnap is currently distributed outside the App Store.&lt;/p&gt;

&lt;p&gt;For now, I’m sharing builds directly and making the project open source so people can use it freely or customize it for their own needs.&lt;/p&gt;

&lt;p&gt;Build in public&lt;/p&gt;

&lt;p&gt;This is my first macOS app, and it’s still rough around the edges.&lt;br&gt;
I decided to share it early to:&lt;/p&gt;

&lt;p&gt;Get real-world feedback&lt;/p&gt;

&lt;p&gt;Learn from the community&lt;/p&gt;

&lt;p&gt;Improve both the product and my macOS development skills&lt;/p&gt;

&lt;p&gt;What I’d love feedback on&lt;/p&gt;

&lt;p&gt;UX and keyboard shortcut flow&lt;/p&gt;

&lt;p&gt;OCR accuracy and performance&lt;/p&gt;

&lt;p&gt;Any features you think would improve daily workflows&lt;/p&gt;

&lt;p&gt;macOS best practices I might be missing&lt;/p&gt;

&lt;p&gt;If you’re interested, feel free to try it out, review the code, or suggest improvements.&lt;/p&gt;

&lt;p&gt;Thanks for reading 🙏&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>indiedev</category>
    </item>
    <item>
      <title>I Built My First macOS App: Translate Text Instantly from Screenshots</title>
      <dc:creator>Bùi Ngọc Lâm</dc:creator>
      <pubDate>Mon, 29 Dec 2025 11:31:31 +0000</pubDate>
      <link>https://forem.com/buingoclam147/i-built-my-first-macos-app-translate-text-instantly-from-screenshots-3gj7</link>
      <guid>https://forem.com/buingoclam147/i-built-my-first-macos-app-translate-text-instantly-from-screenshots-3gj7</guid>
      <description>&lt;p&gt;Hi everyone 👋&lt;br&gt;
I want to share a small project I’ve been working on recently — my first macOS app, built completely in public.&lt;/p&gt;

&lt;p&gt;The app is called TSnap, and it solves a problem I personally hit almost every day.&lt;/p&gt;

&lt;p&gt;The Problem&lt;/p&gt;

&lt;p&gt;As developers, we often deal with text that cannot be selected:&lt;/p&gt;

&lt;p&gt;UI text inside apps&lt;/p&gt;

&lt;p&gt;Screenshots&lt;/p&gt;

&lt;p&gt;Images&lt;/p&gt;

&lt;p&gt;PDFs&lt;/p&gt;

&lt;p&gt;When I want to translate that text, the usual flow is:&lt;/p&gt;

&lt;p&gt;Take a screenshot&lt;/p&gt;

&lt;p&gt;Open a browser&lt;/p&gt;

&lt;p&gt;Upload the image&lt;/p&gt;

&lt;p&gt;Copy the text&lt;/p&gt;

&lt;p&gt;Translate&lt;/p&gt;

&lt;p&gt;It breaks focus and feels way too slow for something so common.&lt;/p&gt;

&lt;p&gt;The Idea&lt;/p&gt;

&lt;p&gt;What if translation worked directly on macOS, everywhere?&lt;/p&gt;

&lt;p&gt;Select text → translate instantly&lt;/p&gt;

&lt;p&gt;Screenshot → OCR → translate&lt;/p&gt;

&lt;p&gt;No browser&lt;/p&gt;

&lt;p&gt;No account&lt;/p&gt;

&lt;p&gt;No extra steps&lt;/p&gt;

&lt;p&gt;That idea became TSnap.&lt;/p&gt;

&lt;p&gt;What TSnap Can Do&lt;/p&gt;

&lt;p&gt;TSnap is a free macOS menu bar app that lets you:&lt;/p&gt;

&lt;p&gt;🔤 Translate selected text instantly using a keyboard shortcut&lt;/p&gt;

&lt;p&gt;📸 OCR &amp;amp; translate text from screenshots&lt;/p&gt;

&lt;p&gt;⚡ Works in any app, anywhere on macOS&lt;/p&gt;

&lt;p&gt;🆓 Completely free to use&lt;/p&gt;

&lt;p&gt;It’s designed to stay lightweight and out of your way.&lt;/p&gt;

&lt;p&gt;Why It’s Open Source&lt;/p&gt;

&lt;p&gt;This is my first macOS product, so it’s definitely not perfect yet.&lt;/p&gt;

&lt;p&gt;That’s why I decided to:&lt;/p&gt;

&lt;p&gt;Make it open source&lt;/p&gt;

&lt;p&gt;Let anyone inspect the code&lt;/p&gt;

&lt;p&gt;Allow people to fork &amp;amp; customize it freely&lt;/p&gt;

&lt;p&gt;Security and privacy matter, especially for apps that deal with screenshots and text.&lt;br&gt;
You can always verify everything in the source code.&lt;/p&gt;

&lt;p&gt;👉 GitHub repository:&lt;br&gt;
&lt;a href="https://github.com/buingoclam147/snap-translate" rel="noopener noreferrer"&gt;https://github.com/buingoclam147/snap-translate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;About Distribution (and the $99 problem 😅)&lt;/p&gt;

&lt;p&gt;Right now, TSnap is not on the Mac App Store.&lt;/p&gt;

&lt;p&gt;The honest reason:&lt;br&gt;
I haven’t paid the $99 Apple Developer Program fee yet.&lt;/p&gt;

&lt;p&gt;So instead:&lt;/p&gt;

&lt;p&gt;I provide a direct build (.app / .dmg)&lt;/p&gt;

&lt;p&gt;Anyone can download and use it freely&lt;/p&gt;

&lt;p&gt;👉 Website &amp;amp; download:&lt;br&gt;
&lt;a href="https://www.tsnap.tech/" rel="noopener noreferrer"&gt;https://www.tsnap.tech/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built in Public&lt;/p&gt;

&lt;p&gt;TSnap is very much a build in public project.&lt;/p&gt;

&lt;p&gt;I’m sharing:&lt;/p&gt;

&lt;p&gt;The product&lt;/p&gt;

&lt;p&gt;The source code&lt;/p&gt;

&lt;p&gt;The limitations&lt;/p&gt;

&lt;p&gt;And the learning process&lt;/p&gt;

&lt;p&gt;Feedback, suggestions, and contributions are more than welcome.&lt;/p&gt;

&lt;p&gt;What’s Next&lt;/p&gt;

&lt;p&gt;Some things I want to improve:&lt;/p&gt;

&lt;p&gt;OCR accuracy&lt;/p&gt;

&lt;p&gt;Better shortcut customization&lt;/p&gt;

&lt;p&gt;UI polish&lt;/p&gt;

&lt;p&gt;More language support&lt;/p&gt;

&lt;p&gt;And hopefully, one day:&lt;/p&gt;

&lt;p&gt;A proper App Store release 🤞&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;TSnap won’t change the world —&lt;br&gt;
but if it saves you a few seconds dozens of times a day, it has done its job.&lt;/p&gt;

&lt;p&gt;If you’re on macOS and often need to translate text from screenshots or UI elements, feel free to try it out.&lt;/p&gt;

&lt;p&gt;Thanks for reading, and happy building 🚀&lt;/p&gt;

&lt;p&gt;🔗 Links&lt;/p&gt;

&lt;p&gt;🌐 Website: &lt;a href="https://www.tsnap.tech/" rel="noopener noreferrer"&gt;https://www.tsnap.tech/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 GitHub: &lt;a href="https://github.com/buingoclam147/snap-translate" rel="noopener noreferrer"&gt;https://github.com/buingoclam147/snap-translate&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  macos
&lt;/h1&gt;

&lt;h1&gt;
  
  
  opensource
&lt;/h1&gt;

&lt;h1&gt;
  
  
  buildinpublic
&lt;/h1&gt;

&lt;h1&gt;
  
  
  productivity
&lt;/h1&gt;

&lt;h1&gt;
  
  
  indiedev
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvi5iahnzbt3i0iuzxlcc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvi5iahnzbt3i0iuzxlcc.png" alt=" " width="800" height="440"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkj8my4j90p40agnqih9s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkj8my4j90p40agnqih9s.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkrz7nuzd2s0tlo5fvz32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkrz7nuzd2s0tlo5fvz32.png" alt=" " width="721" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tooling</category>
      <category>showdev</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
