Are These "Vibe Coders" Serious? Lets Do A Test! (1 of 4)
Some of my friends think vibe coding is a fad and mostly useless. The code is not good enough and the AI does some silly things. On the other hand, the youtubers are doing some crazy cool things with it. It has really lowered the bar for being able to write software (for good and for bad!)
For context, I’ve shipped production software across a bunch of products and lived through more methodologies, architectures, design patterns, languages, and QA stacks than I care to list. I’ve probably forgotten half of them. I enjoy this stuff. Weekends rotate between math, coding, and 3D printing projects so vibe coding something in between should be fun.
So what is vibe coding? The term from another weekend (code) warrior, Andrej Karpathy
I don’t do this with my production applications (yet?) but the weekend is fair game. My rule is to not write any code at all. Just give the coding AI instructions.
A few weeks ago, I wanted a 2 sided gyroid to 3D print. Rather than finding one on line or using CAD software to create one, I had the software use mathematics, offset the surfaces, and create an STL. There were some challenges but it worked. Could I have done better? Yes, but not as quickly.
One of the memes from the Machine Learning group that really strikes home is this.
It is definitely accurate and why the memes about vibe coding are flying. Anyone can code now.
Enter the 2Top Application
Recently, I become more ambitious and really wanted to push it some more. I’ve been joking for a few years that I was going to create a 2D implicit modeler. I have no idea what you would do with it. 3D is where the money is (well, at least more than 2D). I like the pretty fields my friend Blake is always showing. We'll call this an art project. Open source sounds good too. Here is the repo. Maybe someone wants to make this into an AI benchmark.
I was going to be smart about the project this time. I “did my research” , set up development sprints, as well as some proper QA. Many years ago when I was working at SDRC, we were asked to take classes on “test first programming”. Basically, you write your test cases first, with the rest of your time focused on making the test case pass. I liked this as I could put the AI’s in a situation where one is validating test coverage and another is writing the code that needs to pass test cases.
Step 1 is to do some research. I had OpenAI do some deep research on implicits. If you don’t know what they are or need a review, click the link below.
You can see the prompts I used and resulting documentation. https://chatgpt.com/share/6890106d-3f00-8001-8542-52a098b9ddc4
Now I already know a bit about implicits but not everything, plus we need to get the AI focused on the right things. It can’t go researching with every prompt. Here is an excerpt from the “literature search”. Normally, this is where you check other academic papers for supporting or related research. OpenAI seems to prefer Wikipedia and Redit by default.
Lines and Linear Curves
General line: Implicit form: ax+by+c=0a x + b y + c = 0ax+by+c=0 – defines any straight line in the plane HEC+12Wikipedia+12Reddit+12Reddit.
2. Conic Sections (degree‑2 algebraic curves)
All can be expressed as implicit quadratic equations:
Circle: x2+y2−r2=0x^2 + y^2 - r^2 = 0x2+y2−r2=0
Ellipse: x2a2+y2b2−1=0\frac{x^2}{a^2} + \frac{y^2}{b^2} - 1 = 0a2x2+b2y2−1=0
Parabola: y−x2=0y - x^2 = 0y−x2=0 (or in rotated forms)
Hyperbola: x2a2−y2b2−1=0\frac{x^2}{a^2} - \frac{y^2}{b^2} - 1 = 0a2x2−b2y2−1=0 RedditWikipedia.
3. Higher‑Degree Algebraic Curves
Cubic / quartic curves, e.g. semicubical parabola: x3−y2=0x^3 - y^2 = 0x3−y2=0
Cassini ovals, lemniscates, Trott curves, etc.: complex polynomials like (x2+y2)2−2c2(x2−y2)−(a4−c4)=0(x^2+y^2)^2 - 2c^2(x^2 - y^2) - (a^4 - c^4)=0(x2+y2)2−2c2(x2−y2)−(a4−c4)=0 Wikipedia+2Wikipedia+2Reddit+2.
4. Non‑Algebraic (Transcendental) Implicit Curves
Equations mixing trigonometric and exponential terms like: sin(x+y)−cos(xy)+1=0\sin(x+y) - \cos(xy) + 1 = 0sin(x+y)−cos(xy)+1=0 or xcosy+ycosx=0x\cos y + y\cos x = 0xcosy+ycosx=0 Wikipedia.
5. Offset / Parallel Curves
Defined as sets of points at a fixed distance from a base curve—constructed via differential geometry (normal and tangent frames). These are sometimes called offset or parallel curves Wikipedia+9Mathematics Stack Exchange+9GeeksforGeeks+9.
6. Blending and Smooth Approximation Curves (for CAD)
Techniques that use product or weighted combinations of base implicit functions to smoothly approximate polygons or produce blending transitions between curves. Example: F(x,y)=g1(x,y) g2(x,y)⋯gn(x,y)−c=0 F(x,y) = g_1(x,y)\,g_2(x,y)\cdots g_n(x,y) - c = 0F(x,y)=g1(x,y)g2(x,y)⋯gn(x,y)−c=0 gives a smoothed polygon approximation; or F(x,y)=(1−μ)f1f2−μ(g1g2)3=0 F(x,y) = (1-\mu)f_1 f_2 - \mu (g_1 g_2)^3 = 0F(x,y)=(1−μ)f1f2−μ(g1g2)3=0 blends between two circles with tangent‑continuity control Wikipedia.
7. Equipotential Curves / Field-Based Curves
Level sets of potential fields, e.g. two point charges producing Cassini‑like curves: 1(x−1)2+y2+1(x+1)2+y2−c=0 \frac{1}{\sqrt{(x-1)^2+y^2}} + \frac{1}{\sqrt{(x+1)^2+y^2}} - c = 0(x−1)2+y21+(x+1)2+y21−c=0 Useful for field‑based geometry and smooth transitions via level‑set manipulation WikipediaWikipedia.
Next Steps
At this point we have at vibed some foundational documentation for our project to help AI understand the underlying form of the equation. It took about an hour, which is shorter than writing this article.
For the code, you can watch the progress below. Updates happen on Sunday. Most of design and planning has been completed and the first four sprints are done. That is an interesting story that I will save for a later post. In the mean time take a close look banner image for this project. Do you see anything interesting?
https://github.com/burhop/2Top/tree/main
You can read part 2 here: Naruto Coding - Because I don't want to be a Vibe Coder (Part 2 of 4).
Oh man, this is awesome. In 2D you usually render bitmaps, so like with voxels, you are free to use whatever kinds of functions you want. 2D classifiers are common, so I expect that ML will have lots of tricks to get good shapes. On the other hand, the fields might be hard to edit, do wacky things when offset, etc... Looking forward to the rest of the series!