Every one is free to use — and never a subscription.
Every app runs on your own machine and stays yours once you have it. One has a one-time Pro unlock. Nothing to cancel, ever.
Never look up from work and realise you missed Asr.
Prayer times in your Mac's menu bar — a quiet countdown in the corner of your eye, alerting you gently or with the adhan you grew up hearing.
Free$4.99 PromacOS 14+
Apps
VocalDrop lifts the vocal clean out of any track
studio-grade acapella, on your own hardware
AI background remover in your browser
instant cutouts, right in the tab
Developer tools
JetBrains Toolbox at full line speed
16 parallel streams, byte-exact
Mac and Windows keyboard layouts switched for you
the instant a KVM hands the keyboard over
Authenticate sudo with Touch ID
including inside tmux
One screen for IDM's folders and categories
reviewed as a set, one Apply
Notes on Android, Kotlin and shipping.
Building My Own Static Site Generator: A 9-Year Journey Home
After 9 years of framework hopping—from Jekyll to Hugo to Nuxt to Next.js—I finally built exactly what I needed. This is the story of how a Kotlin developer with just enough JavaScript built a static site generator with Claude's help.
Making SDKMAN Java Work with macOS: A One-Line Fix
How to make /usr/libexec/java_home find JDK installed using SDKMAN on macOS. Fix Xcode build failures and tool integration with a single command.
Injecting JavaScript code into Android Webviews Two Ways
Two ways to talk to an Android WebView from Kotlin — evaluateJavascript for one-way calls into the page, and a JavascriptInterface for the page to call back — wired into a working app.
Free to use — kept going by you.
The apps stay free and the tools stay open. If one has earned a place in your day, a coffee or a sponsorship funds the next release.
Scope, ownership, licensing — answered before you email.
What kind of work do you take on?
Kotlin Multiplatform apps that ship on both iOS and Android, Compose Multiplatform for the shared UI, SDK and library development, and the CI, signing and release plumbing underneath. We do not take on web front-ends, brand and marketing design, or staff augmentation by the seat.
How does a project start?
Send a short description of what you are building and roughly when you need it. You get a reply from the person who would do the work, not a sales desk, then a call to pin the scope down, then a written plan with milestones before anything is committed.
Fixed scope or ongoing?
Both. A defined deliverable — an SDK, a KMP module, a release pipeline — is quoted as a fixed scope with milestones. Longer product work runs as a rolling monthly engagement you can end at the close of any month. Cost depends on scope, so it is quoted after the scoping call rather than off a day-rate card.
Who owns the code, and when?
You do, and from the first commit rather than at the end. Work lands in your repository as it is written, on your CI, with signing keys and store accounts in your name — so there is no handover event, no escrow, and nothing the studio keeps a key to. Copyright in everything written for the project transfers to you on payment for that milestone; if we walk away mid-project you still hold every line already paid for.
What licences will we inherit with it?
Only ones you can live with, and you see the list before you own it. Dependencies are permissive by default — MIT, Apache-2.0, BSD — and anything copyleft that would reach a shipped binary is raised for your decision before it goes in, not discovered at review. Every build emits an attribution file listing each dependency, version and licence, generated from the lockfile on CI so it cannot drift from what actually ships. Where the studio reuses one of its own internal libraries, it comes to you under MIT: no component you licence back, and no dependency on us staying in business.
Can you work inside our existing codebase and team?
Yes. Kotlin Multiplatform and Compose Multiplatform land alongside your existing native code — shared modules first, CMP screens where you want them — so the app ships throughout rather than waiting on a rewrite. We work to your review and testing standards and hand over code your own team can maintain.
Why should we believe any of this?
Because you can check it before you email. Every product on this page is a download away and the developer tools are MIT on GitHub, so how we structure a project, handle failure and treat someone else’s data is readable in public — which is not true of a case study PDF.
Client work, in Kotlin.
Kotlin Multiplatform apps for iOS and Android, Compose Multiplatform for the UI, and the SDK and release work underneath.
KMP apps — iOS & Android
One Kotlin codebase, two native apps — shared logic, native where it counts.
Compose Multiplatform
A single UI codebase shipped across iOS, Android and desktop.
SDK development
Public Kotlin APIs, integration docs and DX for the teams embedding you.
Release engineering
GitHub Actions, signing and staged rollouts — the checks that stop bad builds shipping.
Have something to build? Let’s talk.
Tell us what you are building and roughly when you need it. No pricing pages and no discovery deck — a reply from the person who would do the work: a senior Android engineer with 7+ years shipping production apps.
That did not look complete — give the brief a sentence or two, at least 20 characters, and check the email address.
That email address looks disposable, and the confirmation link would not reach it. Please use a permanent address.
That is a few messages in quick succession. Give it a minute and try once more.
The form is under unusual load right now. Please try again shortly.
That submission did not come from this page. Please fill the form in again here.
That submission was malformed. Please fill the form in again here.
That message was too large to accept. Please shorten it and try again.
That submission could not be read. Please fill the form in again here.
The anti-spam check did not pass. Reload the page and try once more — or reach out on LinkedIn below.
Something broke on our side and the message was not saved. Please try again, or reach out on LinkedIn below.
The message could not be sent — the connection dropped. Everything you typed is still here; check you are online and press Send once more.
That confirmation link did not work — it may have expired. Please send the message again from the form.