Triple Zero (B)Labs
We build things and write about it.
-
Part 2: How to Deploy the Ephany Framework on a Live Webserver (Beginner-Friendly Guide)
In Part 1 of this tutorial, we deployed the Ephany Framework onto an $8 DigitalOcean Droplet, configured our settings files, created a virtual environment, and verified the app worked using Django’s development server. Now it’s time to take the next step: Turning your Ephany Framework instance into a real server-side service using Gunicorn and Nginx.…
-
Part 1: How to Deploy the Ephany Framework on a Live Webserver (Beginner-Friendly Guide)
This guide walks you step-by-step through deploying the Ephany Framework, using an inexpensive $8 DigitalOcean Droplet. We’re keeping everything as clear and simple as possible so you can follow along…
-
Connect Claude to Revit Using PyRevit’s MCP Server
Model Context Protocol (MCP) is a standard way to give an AI assistant access to applications. In the context of Revit, I can have an LLM talk to Revit directly rather than building a Revit addin or macro. In this post, I’ll show you how to create a pipeline with three pieces: Claude → MCP…
-
The 100kb Parameter: An Extensible Way To Store BIM Data?
Story time: I was working on developing a Revit addin for a client which required a JSON blob as an input (generated from another application). Of course the BIM manager in me immediately thought, “I’m going to need a ton of shared parameters for this data.” Then my developer brain questioned, “but wait, is there…
-
Revit Macro First, Revit Addin Later
Add-ins are undeniably the gold standard for deploying scalable tools in Revit (yes, even better than Dynamo Player in most cases). But if your goal is rapid automation and getting things done ASAP, going straight to Add-in development can slow you down. Here’s how to start with a macro.
-
PSA: You Can’t move the origin of a generic annotation symbol.
Did you know that you can’t actually change the origin point of a Generic Annotation family? For example, if you wanted to change the origin reference plane of a Generic Annotation nested into a parent family so that you can constrain it at the end instead of the center of the symbol.
-
Dynamo vs Revit Macros
I have an unpopular opinion, and if you are a BIM Manager, Computational Designer, or Revit power user, it might ruffle a few feathers: Revit macros are now significantly more powerful than Dynamo.
-
How to Push to Multiple Git Repositories Simultaneously
Keeping two distinct Git repositories in sync—like a public GitHub repository and a private internal Git server—can be a tedious chore if you are manually pushing to them one by one. If one push succeeds and the other is forgotten, your codebases immediately drift out of sync. The most elegant solution is configuring a “dual-push”…
-
Give Your Windows Apps a Facelift With Our AI-Friendly WPF Theme
Let’s paint a familiar picture: you spin up a new WPF project, drop a basic Button onto your MainWindow, hit F5, and are instantly transported back to 2008. The default controls are, to put it mildly, visually offensive. Those harsh gray gradients, cramped borders, and rigid shapes make it painfully obvious you are building on…
-
How I Develop Apps On My Phone While Sitting in Manila Traffic
Dev tools have officially gotten to the point where a mobile phone is now a legitimate place to ship code from. Not “read the code.” Not “approve a PR.” Actually implement a feature and have it live on your server two minutes later.









