What happens if you put work into the second dimension? | Norbert Kozsir
Jul 28, 2026 • 11 min read<br>What happens if you put work into the second dimension?
I built a prototype of a 2D canvas you can put all of your work on: real terminals, running apps and browsers side by side instead of a row of tabs. We, at FlutterFlow, got so obsessed with using it that we built a full product out of it, Campus. It's free and available for macOS now. Next comes the story of how we got here …
The age of context switching
Just a few years ago, development was organized in a pretty straightforward way. Plan the work in more or less detail, then work on those features for the next week or two, rinse and repeat. With the advent of agentic coding, that has completely changed. Planning or discussing certain types of work has itself become slower than just letting the agent do the work.
This is causing a massive shift in how I and tons of people I know work. Instead of focusing on a single task for a prolonged period of time, parallel work is the new norm.
My attention, then vs. now. Guess which week is more tiring.
None of us would want to go back, but it came at a steep cost: context switching.
One consensus among me and my group of friends is that software engineering has become more tiring. Quite ironic, as we’re essentially doing less of the actual work. I think context switching plays a big part in that.
Why I put agents into Minecraft
For the past year or so I’ve been obsessed with exploring different ways of putting “work” into better context. I strongly believe the future of work is moving towards a more holistic way of working. I hope the future is better than switching between Jira, Slack, VSC and GitHub.
One of my earlier experiments was putting agents into Minecraft. Why Minecraft, you might ask? And you might be forgiven for doubting the holy grail of IDEs that is Minecraft. But I actually think Minecraft is a pretty interesting way of prototyping ideas in 3D. It’s well known, has a very good modding community and, most importantly, has all the basics already implemented for you. No need to re-invent any 3D, networking or general interactions.
Wow, Opus 4.6, times really have advanced soooo quickly.
I didn’t take this too far, but the idea of having your work in a “physical” space while also maintaining some kind of human connection in this increasingly isolated world was intriguing to me.
Fast forward a couple of months and I start a new job at FlutterFlow. Having done my fair share of experiments around interesting concepts of future work, I threw together a new prototype of work in 3D, this time in Three.js so others wouldn’t have to buy Minecraft to try it.
This was interesting! I actually spent a full afternoon working within this environment and it was … dizzy? I found that I was getting dizzy after some time. Flying and looking around in 3D, especially with all of the context switching, was extra confusing for my brain. I showed this prototype to a few colleagues, and Abel (one of our founders) was intrigued, but noted that this would be more interesting in 2D.
The next day I whipped up another prototype, this time using Flutter and in 2D. And it caught on. Within a couple of days we had something that actually worked for us.
Our messy early collaborative workspace
Project “work_canvas”
Work Canvas, later Campus, wasn’t something we planned or wanted to do at that point, but that initial prototype I shared across our team spread like wildfire. We found ourselves preferring to work in this very early prototype of a 2D spatial work canvas over the tab-switching workflow we had before.
Here’s a tour of what it grew into:
In short, Campus is a collaborative infinite canvas that you can actually work on. It supports a bunch of different tile types out of the box (terminals, web browsers, assets, etc.) and we’re currently working on an extensive plugin system. The overall goal is to build a sandbox made for work.
One idea that stuck around in my head ever since the Minecraft prototype was multiplayer. My most cherished memories playing Minecraft when I was younger were of playing with friends. It just feels right being able to create a space, personalize it and share it with your friends.
Getting back to context switches: the philosophy of Campus is having everything in context. Basically, it’s putting related things close to each other, grouping by what you’re working on instead of by what kind of thing it is. It’s the same instinct as structuring code by feature rather than dumping every model in one folder and every controller in another. This means you have the agent that is creating the work, the artifact (such as the compiled and running app) and any additional resources (tickets, issues, inspiration) in close proximity. Context switching can’t be eliminated entirely, but picking a piece of work back up stopped feeling like a chore. I’m not going to pretend I measured any of...