Open Source
Intelligence Builders contributes to the open source community. These projects are available on GitHub.
StrataHub
A modular Go web platform for managing organizations, groups, users, and resource access across a wide range of domains.
StrataLog
A service for logging gameplay events and telemetry data in real time.
StrataSave
A service for saving game state including player progress and player settings.
StrataForge
Tools for developing Strata apps with monitorable services.
Strata
Base Strata application built on the Waffle framework.
UnityWebCheck
Tools for inspecting and extracting assets from Unity .data.unityweb build files, including textures, audio clips, and meshes.
Why Waffle instead of Node.js/React?
I asked Claude to help describe my open source Waffle Go web framework. It spontaneously started roasting the JavaScript ecosystem. I didn't ask for jokes. I didn't suggest humor. It just... had opinions. It responded like a developer who's been hurt before. Here's what it came up with:
In a Waffle project, the config file configures the app. In a JavaScript project, the config files configure the other config files.
A fresh Go project: main.go, go.mod. Done. A fresh React project: .babelrc, .eslintrc, .prettierrc, tsconfig.json, webpack.config.js, postcss.config.js, tailwind.config.js, vite.config.ts, jest.config.ts, package.json, package-lock.json, .env, .env.local, .env.development, .env.production, and a README telling you to install 14 more things before you can display "Hello World."
Deploying a Waffle app: scp one binary to the server. Done. Deploying a React app: wait for npm install to finish. Still waiting. Still waiting. node_modules is now 800MB. Your laptop fan sounds like a jet engine. The build fails because one of your 1,200 transitive dependencies released a breaking patch version. You fix it. Another one breaks. You question your life choices. Eventually you deploy a 3MB bundle that displays a loading spinner.
Waffle compiles your entire web application — templates, assets, and all — into a single binary. Node.js compiles your entire web application into an existential crisis and a node_modules folder you're afraid to look inside.
In Waffle, you import a package because you need it. In Node.js, you import a package that imports a package that imports a package that imports a package that was mass-deleted by one angry developer and half the internet goes down.
Updating a Waffle project after 6 months: go get -u, compile, done. Updating a React project after 6 months: 12 deprecated packages, 3 breaking changes, a webpack version that no longer exists, and a Stack Overflow answer from 2019 that starts with "this might not work anymore but..."
A Waffle project with user auth, a database, templates, and an admin dashboard: ~30 files. A React project with a login form: ~30 config files, ~30 component files, ~30 test files, a utils folder with one function in it, and a types.ts file that's somehow 400 lines long.
If you put a Go binary on a USB drive, you still have room for your entire music library. If you put node_modules on a USB drive, you need a bigger USB drive.
Go developer job posting: "Must know Go." React developer job posting: "Must know React, Redux, Next.js, TypeScript, Webpack, Vite, Babel, ESLint, Prettier, Tailwind, CSS-in-JS (but not that one), GraphQL, REST, tRPC, Zustand (Redux is actually dead now, sorry), and have 5 years experience with a framework released 2 years ago."
A Waffle binary is a single file that runs your entire application. A React project's node_modules directory has more files than some operating systems.
Go 1.0 code from 2012 still compiles. JavaScript code from last Tuesday doesn't.
A Waffle app compiles to native machine code and runs directly on the processor — no interpreter, no runtime, no VM. One command and you can cross-compile it for any OS and any processor architecture: Linux, macOS, Windows, ARM, AMD64, you name it. A Node.js app needs Node.js installed, which needs nvm to manage, which needs a shell script to install, which doesn't work on the version of bash you have, so you spend an hour on that before you even get to your actual code.
To build a button that increments a counter in Go with Waffle: 1 file, 0 dependencies. In React: 1 file, 47,000 dependencies, a node_modules folder heavier than the moon, and a build pipeline that takes longer to configure than the app takes to write.