One-Person Studio · Willoughby, Ohio

Android apps.
Linux software.
Shipped.

I design, build and deploy software for Android and Linux. One developer from the first conversation to the finished build, with the work below to show for it.

Kotlin Android Apps
C++ Linux Desktop
C Console Hardware

Things I've Built

Real software, running on real devices. Demo builds are available on request.

CyanConnect showing an SSH session above its terminal keyboard with Esc, Tab, function and arrow keys
Android · Signed release build

CyanConnect

An SSH client made for doing real work from a phone. The keyboard is the point: six pages built for a terminal, so the commands you run all day are one tap each and never three menus deep.

  • Claude Code pad. /compact, /model, /agents, claude --resume and the rest as single keys.
  • Editor and shell pads. nano's whole bottom bar and the everyday shell chords (^C, ^R, ^W, ^Z) one tap each, and both pads are editable.
  • A real terminal page. Esc, Tab, sticky Ctrl and Alt, F1 to F12 and arrows, which is everything vim and tmux expect.
  • Your existing setup. Reads ssh_config and OpenSSH keys (ed25519, ECDSA, RSA) as they are.
  • SFTP built in. Browse, upload, download, and install an APK straight from the build machine.
  • Sessions that persist. Shells survive backgrounding and a dropped connection, then reattach.
  • Kotlin
  • Jetpack Compose
  • SSH / SFTP
  • Custom keyboard
Keyboard page listing Claude Code commands such as /compact, /model and claude --resume as one-tap keys
Claude Code pad
Keyboard page with nano shortcuts: write out, where is, cut, paste, exit, undo and redo
nano pad
Keyboard page with shell shortcuts: interrupt, end of file, suspend, clear, delete word and history search
Shell pad
CyanKB in use: the letters c-o-n-n typed into a search box, with connect offered in the suggestion strip above the keys
Android · Signed release build

CyanKB

A phone keyboard for people who type commands. It replaces the stock keyboard in every app, so a terminal, an SSH session or a code editor finally has the keys it expects, and it still texts like a normal keyboard.

  • Real terminal keys. Esc, Tab, sticky Ctrl and Alt, arrows and F1 to F12 as actual keys, with no long-press hunting.
  • Programmable pads. Two pages of one-tap chords you define. They ship loaded with nano's shortcut bar and the everyday shell set (^C, ^D, ^Z, ^R).
  • No autocorrect, ever. Suggestions wait above the keys and only a tap applies one, so a command goes out exactly as you typed it.
  • Nothing leaves the phone. The app has no internet permission. Suggestions come from a built-in word list and the words you type.
  • Kotlin
  • Android IME
  • Programmable
  • Fully offline
CyanBeat playing a Japanese city pop mix with a live spectrum display, beside its eight-band equalizer
Android · In progress

CyanBeat

A music player for a local library, with a live spectrum display, an eight-band equalizer with genre presets, a vaporwave mode that slows, pitches and adds reverb as you listen, reverse playback, and a skin system.

  • Kotlin
  • Jetpack Compose
  • Media3 / ExoPlayer
clod reading a comic archive: a 1906 Little Nemo in Slumberland page (public domain) in a tabbed window
Linux desktop · Finished · GPLv3

clod

A fast, minimal comic and PDF reader for Linux. It opens multi-gigabyte, thousand-page archives without stalling by decoding pages on demand, and has manga mode, tabs, bookmarks and cover thumbnails in your file manager. Packaged for Gentoo.

  • C
  • GTK4
  • libarchive
  • SQLite
Hydrogen 2026 map overview of a generated 16384-block world with biomes, rivers, a dense city grid and 27,636 buildings
Desktop · Linux & Windows

Hydrogen 2026

A world generator for the survival game 7 Days to Die. It builds a complete, loadable world: terrain, biomes, rivers and lakes, roads, and towns that are planned before they are filled. One seed rebuilds one world, and one engine drives both a GTK4 app and a Qt wizard.

  • Python
  • NumPy
  • GTK4
  • Qt
Cyan Memories desktop window with memory card, save list and save details panels
Linux desktop · Working build

Cyan Memories

A PS1 and PS2 memory card manager for Linux. Browse, import, export and delete saves across raw, DexDrive, PSU and CodeBreaker formats in one window, in place of a handful of command-line tools.

  • C++23
  • GTK4
  • CMake
Stardust Fighters: title screen, 27-fighter select grid, versus screen and a match in a neon city
Sega Mega Drive · Playable ROM

Stardust Fighters

A fighting game for 16-bit Sega hardware, written in C. Twenty-seven fighters, eight stages, CPU opponents at three difficulty levels and battery saves, all inside the memory and timing limits of a 1988 console. Character art is placeholder; the engine is the point.

  • C
  • SGDK
  • Motorola 68000

Cyan Radar

Battleship for Android with a hunt-and-target AI opponent and unit-tested game rules.

Kotlin · Compose

32X Co-op Brawler

A four-player beat 'em up for the Sega 32X, split across two SH-2 CPUs and a 68000. In progress.

C · SH-2 · 68000

Software, Built and Delivered

Four things, done properly, by the same person from start to finish.

Linux Software & Tooling

Command-line tools, services and automation that replace a manual process or a pile of scripts. Built for the distribution you actually use and packaged so it installs cleanly.

Discuss a tool →

Desktop Apps for Windows & Linux

Graphical applications built from one codebase for both systems, so your staff get the same tool whichever machine they sit at. Delivered as a normal installer or a single file, with nothing else to set up.

Scope a desktop app →

Web Apps & Deployment

Hand-coded sites and web applications, deployed on Linux servers I set up and look after. Most developers stop at the code; I also put it into production and keep it running.

Plan a build →

How I Work

No account managers and no outsourcing. You talk to the person writing the code.

One Person, Start to Finish

The same developer scopes it, builds it, deploys it and answers the phone afterwards. Nothing gets lost between teams, because there aren't any.

Linux All the Way Down

Gentoo on the desktop, Debian on the servers. I deploy and host what I build, so the software and the machine it runs on are understood by the same person.

Private by Default

No tracking libraries, and no network access unless the app needs it. CyanKB ships without the internet permission at all.

Written Down

Every project keeps a development log that explains why decisions were made, so the work can be picked up later by me or by anyone else.

5 Android Apps
3 Linux Desktop Apps
2 Sega Console Games

From Idea to Running Software

Four steps, and you see it working before you sign off.

Scope

We talk through what you need and what it has to do. You get a written scope and a price before any work begins.

Build

I build it in the open, with updates at each milestone and working builds along the way.

Demo

You try it yourself: a test build on your own phone, or a private staging address for web work.

Ship

Release, handover of the source, and support afterwards for fixes and new features.

Let's Build Something.

Tell me what you need and I'll reply with questions or a quote, usually within one business day.

Phone
Location
Willoughby, Ohio
Developer
JohnnyGentoo
1000 characters remaining