DEV Community

hiyoyo profile picture

hiyoyo

Indie macOS developer. Building utilities for Android + Mac users. Rust / Tauri / React — @hiyokoko 7 apps shipped. Writing about all of it.

The Ethics of "Offline-First" AI: Privacy as a Competitive Advantage

The Ethics of "Offline-First" AI: Privacy as a Competitive Advantage

Comments
4 min read

Want to connect with hiyoyo?

Create an account to connect with hiyoyo. You can also sign in below to proceed if you already have an account.

Already have an account? Sign in
Designing consistent UX across 10 different macOS Utility Apps

Designing consistent UX across 10 different macOS Utility Apps

1
Comments
4 min read
I Asked an AI to "Tidy Up My Folders" — It Deleted a Month of My Work

I Asked an AI to "Tidy Up My Folders" — It Deleted a Month of My Work

1
Comments
4 min read
Handling macOS Gatekeeper as an Unsigned Indie Dev: The `xattr` Struggle

Handling macOS Gatekeeper as an Unsigned Indie Dev: The `xattr` Struggle

Comments
4 min read
Why Rust is the Secret Weapon for Solo Indie Developers in 2026

Why Rust is the Secret Weapon for Solo Indie Developers in 2026

1
Comments
4 min read
Building a "Cute" Brand for Serious Developer Tools: The Hiyoko Story

Building a "Cute" Brand for Serious Developer Tools: The Hiyoko Story

2
Comments
3 min read
Tauri v1 to v2: Lessons from Migrating 10 Production Apps

Tauri v1 to v2: Lessons from Migrating 10 Production Apps

1
Comments
4 min read
Developing for Android on an 8-Year-Old MacBook Air: A Survivor's Guide

Developing for Android on an 8-Year-Old MacBook Air: A Survivor's Guide

1
Comments
3 min read
Why I Built my Own Suite of Android Tools for macOS in Rust

Why I Built my Own Suite of Android Tools for macOS in Rust

4
Comments
4 min read
lopdf vs pdfium in Rust — What I Learned Building a PDF App

lopdf vs pdfium in Rust — What I Learned Building a PDF App

1
Comments
2 min read
MTP File Transfer in Rust on macOS — Why I Wrote My Own Stack

MTP File Transfer in Rust on macOS — Why I Wrote My Own Stack

Comments
2 min read
Conflict Resolution in a Bidirectional Sync App — How I Handle the Hard Cases

Conflict Resolution in a Bidirectional Sync App — How I Handle the Hard Cases

Comments
2 min read
USB Hotplug Detection in Rust on macOS — Reacting to Device Connect/Disconnect

USB Hotplug Detection in Rust on macOS — Reacting to Device Connect/Disconnect

Comments
2 min read
Smart Resume for File Transfers in Rust — Never Start Over

Smart Resume for File Transfers in Rust — Never Start Over

Comments
2 min read
AES-256-GCM Encryption in Rust — Securing Local App Data

AES-256-GCM Encryption in Rust — Securing Local App Data

Comments
2 min read
Hardware Video Compression in Rust on macOS — ffmpeg with VideoToolbox

Hardware Video Compression in Rust on macOS — ffmpeg with VideoToolbox

Comments
2 min read
HEIC to JPEG on macOS in Rust — Using sips Without Reinventing the Wheel

HEIC to JPEG on macOS in Rust — Using sips Without Reinventing the Wheel

2
Comments 2
2 min read
Parallel File Transfers in Rust — How I Made Android Sync Actually Fast

Parallel File Transfers in Rust — How I Made Android Sync Actually Fast

Comments
2 min read
APK Install and App Manager in Rust + Tauri — Building ADB Tools

APK Install and App Manager in Rust + Tauri — Building ADB Tools

Comments
2 min read
Building a Floating AI Assistant That Lives in the Corner of Your Screen

Building a Floating AI Assistant That Lives in the Corner of Your Screen

Comments 1
2 min read
SQLite in a Tauri v2 App — Simple, Reliable, Zero Regrets

SQLite in a Tauri v2 App — Simple, Reliable, Zero Regrets

Comments
2 min read
Tauri v2 Cheatsheet — The Commands I Use on Every Project

Tauri v2 Cheatsheet — The Commands I Use on Every Project

Comments
2 min read
The Dev Tools I Actually Use as a Solo Rust + Tauri Developer in 2026

The Dev Tools I Actually Use as a Solo Rust + Tauri Developer in 2026

Comments
2 min read
Why I Don't Use an ORM in My Rust Apps — Just SQL and rusqlite

Why I Don't Use an ORM in My Rust Apps — Just SQL and rusqlite

Comments
2 min read
Complete Guide to Building a macOS Menu Bar App with Tauri v2

Complete Guide to Building a macOS Menu Bar App with Tauri v2

1
Comments 1
5 min read
My $0/Month AI Stack as a Solo Mac Dev — What I Actually Use in 2026

My $0/Month AI Stack as a Solo Mac Dev — What I Actually Use in 2026

Comments 1
2 min read
Menubar Apps Are Underrated. Here's Why I Keep Building Them.

Menubar Apps Are Underrated. Here's Why I Keep Building Them.

Comments 1
2 min read
Storing API Keys Safely in a Tauri App — Don't Just Use LocalStorage

Storing API Keys Safely in a Tauri App — Don't Just Use LocalStorage

1
Comments 1
2 min read
Product Hunt Launch for an Indie Mac App — What I Did and What Happened

Product Hunt Launch for an Indie Mac App — What I Did and What Happened

Comments 1
2 min read
Rust Ownership Made Practical — Patterns I Use in Every Tauri App

Rust Ownership Made Practical — Patterns I Use in Every Tauri App

Comments 1
2 min read
I Built a Feature That Automatically Switches Android from USB to Wi-Fi — Here's How It Works

I Built a Feature That Automatically Switches Android from USB to Wi-Fi — Here's How It Works

2
Comments 1
2 min read
Gemini Streaming in Rust + Tauri — Real-Time AI Responses Without the Jank

Gemini Streaming in Rust + Tauri — Real-Time AI Responses Without the Jank

1
Comments 3
2 min read
Building a Mini Dashboard Widget in Tauri — The Menubar Mini-Dash Pattern

Building a Mini Dashboard Widget in Tauri — The Menubar Mini-Dash Pattern

Comments 1
3 min read
QuickLook Integration in a Tauri App — Native macOS File Preview

QuickLook Integration in a Tauri App — Native macOS File Preview

Comments 1
2 min read
I Spent 2 Weeks Trying to Make OpenCV Recognize Game Cards — Here's Why It Failed All tests run on an 8-year-old MacBook Air.#3

I Spent 2 Weeks Trying to Make OpenCV Recognize Game Cards — Here's Why It Failed All tests run on an 8-year-old MacBook Air.#3

Comments
3 min read
Wi-Fi ADB Lies to You: The Silent Disconnect Problem No One Talks About

Wi-Fi ADB Lies to You: The Silent Disconnect Problem No One Talks About

3
Comments 1
3 min read
Tauri v2 State Management: Patterns From 7 Shipped Apps

Tauri v2 State Management: Patterns From 7 Shipped Apps

Comments
4 min read
Why NSOpenPanel Can't See Your Android Device

Why NSOpenPanel Can't See Your Android Device

Comments 1
2 min read
Why MTP Batch Transfers Slow Down Between Files

Why MTP Batch Transfers Slow Down Between Files

Comments 1
2 min read
MTP on Android Is a Minefield — What I Learned After Building My Own Mac Client

MTP on Android Is a Minefield — What I Learned After Building My Own Mac Client

1
Comments 1
2 min read
Tauri Sandbox Permissions — Why Your Command Silently Does Nothing

Tauri Sandbox Permissions — Why Your Command Silently Does Nothing

1
Comments 1
2 min read
I Can Copy on My Phone and Paste on My Mac Instantly — Across 10 Devices at Once

I Can Copy on My Phone and Paste on My Mac Instantly — Across 10 Devices at Once

Comments
2 min read
Claude API Cheatsheet 2026 — Models, Pricing, Limits in One Place

Claude API Cheatsheet 2026 — Models, Pricing, Limits in One Place

Comments 5
3 min read
Gumroad Cut Off My Payments Without a Word. Their Support Never Replied.

Gumroad Cut Off My Payments Without a Word. Their Support Never Replied.

Comments 1
3 min read
I Fed 100 Files to Claude and Gemini to Find Bugs — Here's Why It Failed

I Fed 100 Files to Claude and Gemini to Find Bugs — Here's Why It Failed

Comments
3 min read
I Built a macOS ADB GUI Tool with Tauri v2 + Rust — Here's What I Actually Implemented

I Built a macOS ADB GUI Tool with Tauri v2 + Rust — Here's What I Actually Implemented

Comments 1
2 min read
Building a Card Game AI with Reinforcement Learning — Implementation Details#2

Building a Card Game AI with Reinforcement Learning — Implementation Details#2

1
Comments
2 min read
I'm Building a GUI Tool for ADB Commands on macOS (Work in Progress)

I'm Building a GUI Tool for ADB Commands on macOS (Work in Progress)

Comments
2 min read
Code Signing a Tauri App for macOS — The Complete Flow

Code Signing a Tauri App for macOS — The Complete Flow

Comments
2 min read
I Used Gemini 3.5 Flash via Direct API for a Week — An Honest Report on Its Speed Trade-offs and Real-World Pitfalls

I Used Gemini 3.5 Flash via Direct API for a Week — An Honest Report on Its Speed Trade-offs and Real-World Pitfalls

Comments
4 min read
What I Learned Shipping 7 Mac Apps in 12 Months — The Honest Retrospective

What I Learned Shipping 7 Mac Apps in 12 Months — The Honest Retrospective

1
Comments
2 min read
MTP Explained — And Why It Matters for Android on Mac

MTP Explained — And Why It Matters for Android on Mac

Comments 1
2 min read
MTP Explained — And Why It Matters for Android on Mac

MTP Explained — And Why It Matters for Android on Mac

Comments
2 min read
My Screenshot Tool Broke on Android 16 — Here's What Actually Happened

My Screenshot Tool Broke on Android 16 — Here's What Actually Happened

1
Comments
2 min read
I Built a Mac App That Keeps Your Clipboard in Sync Across All Your Android Devices

I Built a Mac App That Keeps Your Clipboard in Sync Across All Your Android Devices

1
Comments
2 min read
scrcpy Integration in a Tauri App — Android Screen Mirroring on Mac

scrcpy Integration in a Tauri App — Android Screen Mirroring on Mac

1
Comments
2 min read
My Old MacBook Air Couldn't Handle It — So I Used Google Colab to Train an AI#1

My Old MacBook Air Couldn't Handle It — So I Used Google Colab to Train an AI#1

Comments
3 min read
Is Gemini 3.5 Flash Actually Better at Coding Than 3.1 Pro? I Tested It with Real Rust Code

Is Gemini 3.5 Flash Actually Better at Coding Than 3.1 Pro? I Tested It with Real Rust Code

Comments 6
5 min read
AppleScript Injection and Directory Traversal — Security Bugs I Fixed in My Own Apps

AppleScript Injection and Directory Traversal — Security Bugs I Fixed in My Own Apps

1
Comments
2 min read
Localizing a Tauri App for Japanese and English — What Actually Works

Localizing a Tauri App for Japanese and English — What Actually Works

1
Comments
2 min read
loading...