diff --git a/public/blog/open-for-business/bean.png b/public/blog/open-for-business/bean.png new file mode 100644 index 0000000..829c17f Binary files /dev/null and b/public/blog/open-for-business/bean.png differ diff --git a/public/blog/open-for-business/ena.png b/public/blog/open-for-business/ena.png new file mode 100644 index 0000000..f835065 Binary files /dev/null and b/public/blog/open-for-business/ena.png differ diff --git a/public/blog/open-for-business/favicon.svg b/public/blog/open-for-business/favicon.svg new file mode 100644 index 0000000..f3680ab --- /dev/null +++ b/public/blog/open-for-business/favicon.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + diff --git a/public/blog/open-for-business/hell.png b/public/blog/open-for-business/hell.png new file mode 100644 index 0000000..ba07a34 Binary files /dev/null and b/public/blog/open-for-business/hell.png differ diff --git a/public/blog/open-for-business/imadethis.png b/public/blog/open-for-business/imadethis.png new file mode 100644 index 0000000..c6612ee Binary files /dev/null and b/public/blog/open-for-business/imadethis.png differ diff --git a/public/blog/open-for-business/logo-full-dark.png b/public/blog/open-for-business/logo-full-dark.png new file mode 100644 index 0000000..f41315f Binary files /dev/null and b/public/blog/open-for-business/logo-full-dark.png differ diff --git a/public/blog/open-for-business/reality.png b/public/blog/open-for-business/reality.png new file mode 100644 index 0000000..a99bc3e Binary files /dev/null and b/public/blog/open-for-business/reality.png differ diff --git a/public/blog/open-for-business/splash.png b/public/blog/open-for-business/splash.png new file mode 100644 index 0000000..10a3314 Binary files /dev/null and b/public/blog/open-for-business/splash.png differ diff --git a/public/blog/open-for-business/viewers-1.svg b/public/blog/open-for-business/viewers-1.svg new file mode 100644 index 0000000..7dc66f7 --- /dev/null +++ b/public/blog/open-for-business/viewers-1.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/blog/open-for-business/viewers-10.svg b/public/blog/open-for-business/viewers-10.svg new file mode 100644 index 0000000..c7b31f4 --- /dev/null +++ b/public/blog/open-for-business/viewers-10.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/blog/open-for-business/viewers-100.svg b/public/blog/open-for-business/viewers-100.svg new file mode 100644 index 0000000..7ce5f97 --- /dev/null +++ b/public/blog/open-for-business/viewers-100.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/blog/open-for-business/viewers-1000.svg b/public/blog/open-for-business/viewers-1000.svg new file mode 100644 index 0000000..bd77e3d --- /dev/null +++ b/public/blog/open-for-business/viewers-1000.svg @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/pages/blog/open-for-business.mdx b/src/pages/blog/open-for-business.mdx new file mode 100644 index 0000000..a27b057 --- /dev/null +++ b/src/pages/blog/open-for-business.mdx @@ -0,0 +1,217 @@ +--- +layout: "@/layouts/global.astro" +title: "Open For Business" +author: kixelated +description: I have officially achieved the rank of "Capitalist Scum". +cover: "/blog/open-for-business/viewers-1000.svg" +date: 2026-08-17 +--- + +# Open For Business +I'm starting a company: [Kixel, Corp.](https://kixel.us/) +We can now exchange goods and services. + +The first good is [moq.pro](https://moq.pro), a managed MoQ CDN. + +
+ ![moq.pro](/blog/open-for-business/logo-full-dark.png) +
+ +## Why? +To make deplorable amounts of money. + +I'm kidding. +The real reason is even more deplorable: +**I want you to use MoQ.** + +I've been contracting with a few robotics companies already. +MoQ is being used in production to [pilot boats](https://www.wsj.com/tech/what-to-know-about-drone-boat-maker-behind-iran-helicopter-crew-rescue-aa55d445), drones, trucks, and to fold t-shirts. +Even over degraded Starlink connections, it just works™. + +In my humble (and handsome) experience, the most frequent adoption blocker is **infrastructure**. +It's easy to ~vibe~ code using the [moq.dev](https://moq.dev) libraries, but horizontally scaling across the planet is hard. +A lot of companies settle for a single `moq-relay` instance and leave a `# TODO SCALE` comment. + +**HEY GUESS WHAT?** +I've designed and operated a baremetal CDN (Twitch). +I've also done it for real-time (Discord). +I kind of know how to do this thing. + +So here's a business proposition for you: **pay me and I'll host the infrastructure**. + +## SCALING +
+ ![scaling](/blog/open-for-business/viewers-1.svg) +
+ Clients connect to their closest edge server for the **best** latency and quality. +
+
+ +
+ ![scaling](/blog/open-for-business/viewers-10.svg) +
+ Clients can publish any number of broadcasts, **discoverable** by other clients. +
+
+ +
+ ![scaling](/blog/open-for-business/viewers-100.svg) +
+ Clients subscribe to tracks within a broadcast. **Duplicate** subscriptions are merged within the CDN and routed to the broadcaster. +
+
+ +
+ ![scaling](/blog/open-for-business/viewers-1000.svg) +
+ Every additional subscriber has a diminishing cost! We **SCALE SCALE SCALE**. +
+
+ + +## FEATURES +Every blog post I write about MoQ I rave about the potential. +There are **SO MANY COOL THINGS YOU COULD DO WITH MOQ**. + +But first there's a lot of *mundane* shit to implement. +Backwards compatibility, authorization, metrics, etc. +The type of stuff that makes you want to stay in bed. +The unfortunate reality is that scale is not the problem until everything else just works™. + +My goal with [moq.pro](https://moq.pro) is to make it easy to start using MoQ **now**. +I'll do the boring stuff so you can focus on the cool stuff. + +With this first release we have: +- **RTMP / WebRTC / SRT support**: So you don't need to migrate everything over night. +- **HLS recordings**: Dump prior broadcasts so you can watch them later. +- **Real-time stats**: Literally updated every second; never hit F5. +- **Scoped Authorization**: Use keys/tokens to control access to your broadcasts. + +All of this functionality is open source via [moq.dev](https://github.com/moq-dev/moq). +[moq.pro](https://moq.pro) is the hosted glue that makes stuff easier to use. + + +## Cost +I'll be honest, I don't like charging money for things. +I am a bad business person. +There's a reason why I quit my job to work on open source. +A normal human bean has a job and a salary. + +[moq.pro](https://moq.pro) is **$0.04/GB** for all outbound network traffic. +Inbound is free so if nobody is watching your broadcast, you pay nothing. +We charge based on usage and not vibes. + +Meanwhile, most WebRTC providers charge based on time. +Want to stream a low-resolution security camera on Agora/Daily (public pricing)? +That'll be $5.75 *per day* for the broadcaster **and** each viewer. +**wtf** + +
+ ![scaling](/blog/open-for-business/hell.png) +
+ Dante got it wrong, there's an extra level. +
+
+ + +**Use MoQ instead**. +Your security camera costs $0 when nobody is watching, nor will it transmit anything. +If you're using a cloud WebRTC provider, convince your CFO to let you prototype MoQ for that sweet capex savings. +The only upfront cost is a few Claude sessions. + +**You will always be able to self-host.** +Lock-in is the antithesis of a standard. +Compatible competition drives prices down. +Blah blah blah. +**My goal is to get you to use MoQ**. +And I think the best way to do that is by making it cheap **AND** easy. + +But before you self-host, just remember that AWS charges $0.09/GB (public pricing) for EC2 outbound network traffic. +Plus you have to pay for those EC2 instances. +Bandwidth is expensive yo. +**IMO you should pay me instead.** + + +## The Standard +Speaking of standards, [moq-transport](https://datatracker.ietf.org/doc/draft-ietf-moq-transport/) will be an RFC one day. +There's quite a few companies working on their own CDN offering: [Cloudflare](https://moq.dev/blog/first-cdn/), Akamai, Fastly, AWS, etc. +But progress is *so slow*; it's embarrassing. + +Hopefully this gives the group a kick in the butt. +Stop arguing about how to encode an integer. +We don't need more tech demos. +Start charging customers for your services. + +All of the [moq.dev](https://moq.dev) clients are fully compatible with the standard, supporting drafts 14-19+. +You can switch out the `https://cdn.moq.pro` URL with a different CDN provider and *should* just work™. + +The *should* is there because the `moq-transport` standard is bloated and even worse: **optional**. +There's a lot of cruft that I don't implement in the [moq.dev](https://moq.dev) libraries, and to be fair, zero implementations fully implement the standard. + +Anyway, even if you only use [moq.pro](https://moq.pro) to prototype before switching to a big boye CDN, it's still a win for MoQ. +The entire point of a **standard** is that you can switch out cloud providers without eating dirt. +And the entire point of **open-source** is so cloud providers don't have to write any code themselves. + +
+ ![i made this](/blog/open-for-business/imadethis.png) +
+ also me when I trace memes +
+
+ + +## The Roadmap +If you need something, [let me know](mailto:hi@moq.pro). +Or post on the Discord. + +Next I'm working on: +- **DVR**: Seek backwards during a live stream +- **HLS export**: Use MoQ for ingest, HLS for distribution +- **Transcoding**: On-demand renditions (ex. 240p, 360p, 720p). +- **Voice AI**: Generate captions, talk to agents, etc. +- **CDN Sync**: Use moq.pro and/or Cloudflare and/or self-host. +- **Performance**: Sans IO core + iouring runtime. + +kewl. + +
+ ![i wrote this reality](/blog/open-for-business/reality.png) +
+ Reality is a bubble. +
+
+ +## Try it! +**Fun fact:** here's a *few* of the ways to watch MoQ broadcasts via [moq.pro](https://moq.pro): + +- [Web](https://doc.moq.dev/lib/js/@moq/watch.html): https://moq.watch/demo/bbb.hang +- [ffmpeg](https://doc.moq.dev/bin/cli.html): `moq --client-connect "https://cdn.moq.pro/demo/bbb.hang" export ts | ffplay -` +- [RTMP](https://github.com/moq-dev/moq/tree/main/rs/moq-rtmp): `rtmps://cdn.moq.pro:1935/demo/bbb.hang` +- [SRT](https://github.com/moq-dev/moq/tree/main/rs/moq-srt): `srt://cdn.moq.pro:877?latency=500&streamid=#!::r=demo/bbb.hang,m=request` +- [WebRTC](https://github.com/moq-dev/moq/tree/main/rs/moq-rtc): `https://cdn.moq.pro/whep/demo/bbb.hang` +- [Gstreamer](https://doc.moq.dev/bin/gstreamer.html#gstreamer-plugin): `gst-launch-1.0 -v -e moqsrc name=s url=https://cdn.moq.pro/demo broadcast=bbb.hang` +- [OBS](https://doc.moq.dev/bin/obs.html#obs-plugin): Create a MoQ source for `https://cdn.moq.pro/demo/bbb.hang` + +And of course there are libraries for [Rust](https://doc.moq.dev/lib/rs/) (native) and [Typescript](https://doc.moq.dev/lib/js/) (web). +There are Rust-based bindings for [C](https://doc.moq.dev/lib/c/), [Python](https://doc.moq.dev/lib/py/), [Go](https://doc.moq.dev/lib/go/), [Swift](https://doc.moq.dev/lib/swift/), and [Kotlin](https://doc.moq.dev/lib/kt/). + +## The Company +Hit me up if you want to throw money at this endeavor. +Or you (or someone you know) wants to leave your cushy job. +Especially if you speak the language of business. + +
+ ![bless you for your business](/blog/open-for-business/ena.png) +
+ [\> Me when MoQ](https://www.youtube.com/watch?v=U8Gle8WzB3o) \ + [\> Me when WebRTC](https://www.youtube.com/watch?v=ZfWLo2zeuy0) \ + Go play [ENA Dream BBQ](https://store.steampowered.com/app/2134320/ENA_Dream_BBQ/) +
+
+ + +- Email me: `hillo@moq.pro` +- Meet me: [https://meet.kixel.me](https://meet.kixel.me) + +Written by [@kixelated](https://github.com/kixelated). +![@kixelated](/blog/avatar.png)