Written in Quill, my own programming language. It really runs.
-- ngwang.ql Β· my profile, compiled.
me = record name = "Ngwang Shalom", role = "CTO // Lead Engineer", city = "Dubai"
shipped = list "Kattegat", "Kopsala", "Quill"
var bugs = 0
fn ship(project: text) -> text
fails WorksOnMyMachine
when
project == "" -> fail WorksOnMyMachine
else -> return "{project} Β· live in production"
fn report(project: text) -> text
var status = ship(project)
on WorksOnMyMachine -> return "{project} Β· never happens"
return status
fn excuse_for(deadline: text) -> maybe text
when
deadline == "never" -> return found "maybe tomorrow"
else -> return missing
say "{me.name} Β· {me.role} Β· {me.city}"
for project in shipped
say " β {report(project)}"
when excuse_for("tonight")
found reason -> say reason
missing -> say " excuses: 0 found"
say " bugs: {bugs}"
check bugs == 0 -- this line is a test. it passes.$ quill run ngwang.ql
Ngwang Shalom Β· CTO // Lead Engineer Β· Dubai
β Kattegat Β· live in production
β Kopsala Β· live in production
β Quill Β· live in production
excuses: 0 found
bugs: 0-- Money is exact. Failures are named. Nothing is null.
fn charge(amount: USD) -> text
fails Declined
when
amount <= 0 USD -> fail Declined
else -> return "paid"
fn fee_for(act: text) -> maybe USD
when
act == "Bamenda Brass" -> return found 150000 USD
else -> return missing
fn book(fee: USD) -> text
var receipt = charge(fee)
on Declined -> return "card declined"
return "{receipt}: {fee}"
when fee_for("Bamenda Brass")
found fee -> say book(fee)
missing -> say "not on the roster"
check 100 USD + 50 USD == 150 USD -- tests live in the code$ quill run booking.ql
paid: 150000 USDflowchart LR
A["π source .ql"] --> B["π€ lexer"] --> C["π³ parser"] --> D["π‘οΈ checker"] --> E["βοΈ bytecode compiler"] --> F["π virtual machine"]
| Ships with | |
|---|---|
π§ͺ quill test |
every check line and doc example runs as a test |
π quill explain |
shows exactly how the compiler read a line |
π©Ί quill lsp |
red underlines in any editor, plus a VS Code / Cursor extension |
π quill update |
pick a version with the arrow keys |
| π The Quill Book | teaches the language from zero, every example tested |
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Ngwangshalom/Quill/releases/latest/download/quill-installer.sh | shMost developers argue about languages. I shipped one.
flowchart LR
A["β¨οΈ git push"] --> B["π GitHub main"]
B --> C["π’ Coolify on my own VPS"]
C --> D["β‘ API Β· Express + Supabase"]
C --> E["π kattegat.app Β· kopsala.app<br/>Next.js"]
A --> F["π± EAS Build"]
F --> G["π App Store Β· π€ Google Play"]
A --> H["π₯ OTA update"]
H --> G
D --> I["π§ Claude AI Β· π³ Stripe Β· RevenueCat Β· πΊοΈ Maps Β· π Push"]
No DevOps team. No agency. No "handover". Code to store to server, owned end to end.
Frameworks don't scare me. I scare frameworks.
| Project | Damage Report | Built With | |
|---|---|---|---|
| Quill | My own programming language. Exact money, no null, declared failures, tests inside the code, errors that teach. Lexer to VM, written from scratch, with an LSP, an editor extension and a book. Released. | ||
| π | Kattegat | Dubai's hospitality and entertainment marketplace. Venues and planners on one side, entertainers and staff on the other. Chat, bookings, payments, an AI concierge. iOS, Android, web and infra, self-deployed end to end. Live. | |
| πΆοΈ | Kopsala | Who's playing tonight in Dubai. Live acts on a map, tonight-only deals, tables in two taps. Second app, same backend, built in silence. You're about to hear about it. | |
| β‘ | PulseStream | Real-time updates so light your polling loop is embarrassed. | |
| π€ | WandaBot | WhatsApp automation. It works while you sleep. I don't sleep either. | |
| πΈ | MTN Mobile Money API | Payments integration. Money moves. Code doesn't flinch. | |
| π§ | MrNgwang AI Robot | Conversational AI. Smarter than your last PR. |
+ Ship first. Debate never.
+ Own everything: UI, API, DB, servers, DNS, the App Store review. No hand-holding.
+ Done twice? Automated forever.
+ Tests pass before the coffee does.
+ Production is the only demo that counts.
- "It's on the roadmap."
- "Let's circle back."
- "Works on my machine."
- "We need another sprint."
- Asking permission to be great.


