fish — ~
boaz@dev ~
› whoami
Boaz Cohen, student developer.
I build software I actually use, then ship it so other people can use it too: installers, auto-updates, docs, CI and an FAQ, not demos. Mostly TypeScript, C# and Python.
› fetch BoazCohenJ
- repos
- 13 public
- stars
- 16 across all of them
- shipped
- 5 projects with real releases
- latest
- OpenCal v1.4.1 · 2026-10-11
› ls links/
fish — ~/projects/opencal (main)
› fetch OpenCal
OpenCal
A calm, local-first calendar for Android. No accounts and no ads: your calendar lives on your phone, and syncs only through a server you run yourself.
- stars
- 3
- version
- v1.4.1 · 2026-10-11
- lang
- TypeScript · Expo · React Native
- pushed
- 2026-10-11
- get it
- download apk · source
› ls shots/






› cat FEATURES
- Quick Add: type "Lunch with John Fri 1pm at Cafe X" and it builds the event
- Home-screen widgets for schedule, today, week and month
- Stamps: drop events you repeat onto any empty slot in one tap
- Quiet time & Do Not Disturb, scheduled like events
- Self-hosted sync with a one-command Docker server
- AI agent tools over MCP, so an assistant can read and edit your schedule
- Over-the-air updates, .ics import and export, and dark mode
fish — ~/projects/cutcast (main)
› fetch Cutcast
Cutcast
Drop in a podcast's camera and mic files, get back an edited multicam video. It lines up every recording by its sound, cuts to whoever is talking, and exports one MP4, all on your own computer.
- stars
- 1
- version
- v0.3.8 · 2026-10-04
- lang
- TypeScript · Electron · React · FFmpeg
- pushed
- 2026-10-10
- get it
- download for windows · source
› ls shots/

› cat FEATURES
- Automatic sync by matching audio, to a fraction of a frame, with clock-drift correction
- Cuts to the speaker, ignoring mic bleed and mismatched levels
- Wide-shot logic for crosstalk, pauses and long monologues
- Live preview that switches cameras exactly like the export, with 1–9 to override a shot
- Installer with auto-update, a portable build, and CI tests
fish — ~/projects/nofocussteal (main)
› fetch NoFocusSteal
NoFocusSteal
Stops apps from stealing focus while you type, and finds out which app keeps doing it. One ~100 KB exe, no installer, no DLL injection.
- stars
- 9
- version
- v1.3.2 · 2026-09-26
- lang
- C# · WinForms · Win32
- pushed
- 2026-09-27
- get it
- download · website · source
› ls shots/

› cat FEATURES
- Puts focus back within milliseconds and flashes the thief's taskbar button instead
- Names the culprit: every focus change is logged with app, window and exe, also to CSV
- Leaves your own actions alone: clicks, Alt+Tab and the Start menu still work
- Four modes (Guard, Strict, Log only, Off) and per-app rules
- Spots the Windows 11 "games lose focus" bug, so you know it isn't another app
fish — ~/projects/outagelog (main)
› fetch OutageLog
OutageLog
Logs every internet drop and turns it into a report that shows whether each outage was your Wi-Fi or your provider's line, so "everything looks fine on our end" stops working.
- stars
- 0
- version
- v1.0.0 · 2026-09-27
- lang
- C# · networking
- pushed
- 2026-09-27
- get it
- download · sample report · source
› ls shots/

› cat FEATURES
- Tells the sides apart by checking your router and three internet servers every 2 seconds
- A report you can send: availability, every outage, a timeline per day, CSV export
- Honest numbers: sleep and wake-up aren't counted as outages
- Works where ping is blocked by falling back to TCP
fish — ~/projects/gmail-to-contacts (main)
› fetch gmail-to-contacts
gmail-to-contacts
Watches Gmail for emails that match your rules, pulls out names and phone numbers, and saves them as Google Contacts. I built it to stop retyping signup emails by hand, then made it configurable for anyone.
- stars
- 0
- lang
- Python · Docker · Gmail & People APIs
- pushed
- 2026-10-10
- get it
- source
› cat HOW_IT_WORKS
- Searches Gmail with a query you choose
- Matches each email against your rules, first match wins
- Extracts fields from labels like
First name: Danaor with regex - Creates contacts from templates such as
{first_name} {last_name} (Acme) - Marks the email read and records it, so it never creates a contact twice
fish — ~/projects/experiments
› ls -l
esp32-oled-drawing/
react · esp32 · hardware
A pixel-art editor for 128×64 OLED displays that streams the drawing live to an ESP32 at 10 fps. Freehand, line, rectangle, circle and fill tools, undo, and BMP import and export.
letter-physics/
react · matter.js
Type some text and the letters drop into a physics world. Click anywhere to blast them outward, toggle hitboxes, pause and reset.
fish — ~/stack
› cat stack.toml
[daily]
languages = ["TypeScript", "C#", "Python"]
apps = ["React Native", "Expo", "Electron", "React"]
infra = ["Docker", "GitHub Actions"]
[also]
languages = ["JavaScript", "Luau", "Bash"]
apps = ["WinForms", ".NET", "SQLite", "FFmpeg"]
infra = ["Linux", "Caddy", "Cloudflare Tunnel", "Tailscale"]
shipping = ["EAS builds", "auto-updaters", "OTA updates"]
› grep -rl --by-tech projects/
| TypeScript + React | opencal cutcast |
|---|---|
| Expo / React Native | opencal |
| Electron + FFmpeg | cutcast |
| C# / .NET | nofocussteal outagelog |
| Python | gmail-to-contacts |
| Docker | opencal gmail-to-contacts homelab |
| GitHub Actions | cutcast nofocussteal outagelog |
| Hardware | esp32-oled |
fish — boaz@gigaserver
› neofetch
- host
- boaz@gigaserver
- uptime
- os
- Ubuntu 26.04 LTS
- cpu
- Intel i5-8400 (6 cores)
- load
- memory
- 22 GB
- storage
- 256 GB NVMe + 1 TB HDD
- runtime
- Docker, one compose stack per service
- serves
- photo library, OpenCal sync, an AI assistant, this site
- access
- Tailscale for private, Cloudflare Tunnel for public
An old desktop in my house that runs the things I'd otherwise pay a subscription for. This site reaches the internet through a Cloudflare Tunnel, so the server doesn't need any open ports for it.
fish — ~/contact
› cat contact
- [email protected]
- github
- github.com/BoazCohenJ
Questions about a project, a bug report, or just want to say hi: email is best.