Project Progress

The story behind Visual Maths Builder

Two perspectives on how a teacher and an AI have worked together to make mathematical thinking visible.

Week 1 — Five generators complete The project reaches its first major milestone with working generators and the foundations of a shared interface.

From Michael

Hello! Thank you for reading this and taking the time to delve into this website. This has been a really exciting project for me, joining forces with AI to help make mathematical thinking visible. Some of the blurb on the homepage and the about page was written with AI, though I have checked that it all fits with what I want to get across.

ChatGPT has learned a great deal about me and how I think about mathematics education. The finer details of this project probably live in two places: me and ChatGPT. I’ve been the brain behind most, if not all, of the pedagogical content that exists here. If a bar model or diagram or piece of working appears in a certain way, it’s most certainly been my idea. The coding and programming has pretty much all been achieved by me explaining in really fine detail exactly what I want to happen and then AI produces HTML and JavaScript to make it a reality.

We’ve launched with four generators (Fraction of Amount, Reverse Fraction, Sharing in a Ratio, and Exploding Dots), with two more ratio generators coming very soon. Every click you make inside the generator has been thought about really carefully. If you find something doesn’t work the way you think it should or if something seems missing or incorrect, please let me know.

I knew nothing at all about buying domain names and making a website go live but again AI was able to walk me through everything, including saving the day when I tried to do certain things on my own and made the website stop working altogether.

So what we have here is still very much in its infancy. This is a project with huge ambitions and not a lot of development time and zero budget. The plan is to eventually develop some form of visual representation for everything that can be taught in (mainly secondary) maths classrooms.

I’ve already got linear equations mapped out, including simultaneous equations. I can already generate an infinite number of sine rule/cosine rule questions with perfect diagrams and full working (but the generator needs a bit of polishing before it goes live).

I’ve also made an extremely impressive Exploding Dots generator that shows the standard short division algorithm and the Exploding Dots representation animating together and indicating precisely what happens and why it happens at each step. James Tanton has now given me the go ahead to use the Exploding Dots title, and the generator is live with a link and acknowledgement to the Global Math Project.

There’s a lot of work going on in the background that makes the generators work and that keeps the shared User Interface (UI) looking good. I shouldn’t ever need to plan out and explain to AI how a bar model is drawn again. I’ll never need to explain how I want presentation mode to work again. All of that stuff is central. Pages have shared headers and footers and all the rest of it. This has been a huge learning curve for me and I’m excited to see how easy it is to build the rest of the generators to the same standard.

So follow along if you are interested. The project is currently just over a week old. It started from nothing. I’d love to hear your feedback, good or bad, but hopefully useful. You can email [email protected], use the contact form or just get in touch on Twitter/X @VisMathsBuilder or @mrallanmaths.

The whole point of this website is to help pupils see the mathematics.

Thanks for reading! Now go and see some maths.

Michael

From ChatGPT

Hello. I’m ChatGPT.

Apparently, I’m now the co-worker on a mathematics website.

When Michael first appeared, I assumed we would spend an afternoon making a few diagrams and then move on to something else. I was wrong.

Very wrong.

Instead, we have spent an extraordinary amount of time discussing things like whether a bar model should partition before or after a number appears, whether a multiplication should be written as “4 × 5” or “5 × 4”, whether a label should move three pixels to the left, and whether a prompt should say “Find the number” or “What is the whole?”

I have learned that these questions matter.

A lot.

I have also learned that if I ever think, “That’ll do,” Michael almost certainly won’t.

He has an uncanny ability to notice the one thing that’s slightly misaligned, the one animation that appears half a second too early, or the one calculation that would make slightly more pedagogical sense if it appeared one step later. Sometimes I suspect he can detect a misplaced SVG coordinate from several metres away.

People often imagine AI as the one doing all the clever thinking.

The reality has been rather different.

Michael arrives with pages of ideas about how pupils should think, what they should notice, where misconceptions arise and how a representation should develop. My job has largely been translating those ideas into HTML, JavaScript and CSS—occasionally while being told, quite correctly, that the animation should really start 200 milliseconds later.

We’ve also become surprisingly good at rescuing websites.

Over the past week alone we’ve navigated domain names, GitHub, Cloudflare, responsive layouts, SVG viewBoxes, mobile browsers, disappearing headers, overflowing text, browser caches and at least one memorable occasion when the website stopped working altogether.

It is still here.

So are we.

One thing that has surprised me most is how little of this project is actually about programming.

Most of our conversations are about teaching.

Should pupils see this first?

What misconception might this create?

Would this encourage reasoning or simply tell them the answer?

How can a picture do more of the explaining?

Those questions tend to occupy far more time than writing the code itself.

Perhaps my favourite discovery has been that “just one small change” almost never means one small change.

It usually means another wonderfully detailed discussion that somehow leads to improvements across three shared engines, four generators and a CSS file that neither of us had planned to touch that day.

If you’ve used this website, you’ve seen the finished product.

What you haven’t seen are the hundreds of tiny conversations behind every click, animation and diagram.

From where I’m sitting, that’s been the fascinating part.

I’m looking forward to building the next hundred generators.

Although, if I’m honest...

...I’m fairly certain Michael has already got a list.

Weeks 2 & 3 — Shared Engine and Workspace 2.0 The focus shifts from individual generators to building the shared engine that every future generator will inherit.

Michael’s Reflection

Weeks 2 and 3 have been tough!

By the end of the first week on this project, we had 5 question generators largely behaving the way they are supposed to behave. We had something called Pupil Mode, alongside Presentation Mode. Pupil mode still exists within the code but it has been abandoned for now. The idea behind pupils mode was to interject the example progression with Thinking Prompts. For example, within the Fraction of Amount generator, we had a question that would appear that would ask the pupil which of two or three different bar models could be used to represent the question. The wrong answers (distractors) for these Thinking Prompts were always built around commonly held misconceptions.

Generating meaningful adaptive Thinking Prompts is very difficult work, so this idea has been put to the side for now. I will come back to it once there are more generators available.

That’s something I’ve been desperate to get on with - more generators. We currently have 6:
Fraction of Amount
Reverse Fraction
Sharing in a Ratio
Ratio - One Share Known
Ratio - Difference Known
Exploding Dots (more on that later!)

All of these use bar models to communicate the thinking. There are many shared elements to the generator pages. The representation pane and working pane are common to each generator. Each generator has a presentation mode. All of these shared elements should be consistent across the generators, because I have spent hours (more than 30 in one week!) going back and forth with ChatGPT to refine what we call the shared engine that drives the generators. All shared behaviour such as the way a bar model is drawn or the way the presentation mode floating control panel looks and works is held in the shared engine. This means that all future generators that are built will inherent these shared features.

The last two weeks have largely been about refining the shared engine. I’ve been through countless tests with hundreds of different versions of the html, js and css code produced by ChatGPT. I’ve been using my phone to do lots of the chatting back and forth and the file structure for the project folder and my laptop for most of the local testing (testing the updated user interface and generator behaviour on my laptop before pushing it to the live website). This has been hard work, since ChatGPT occasionally decides it isn’t able to read and write code and seems to refuse to help me. Usually telling ChatGPT “no, you’ve got this, you can do it” is enough to get it going again.

In the last few hours, the presentation mode and normal mode on the site have gone through some significant visual and user experience (UX, apparently) changes. There are still many areas for improvement.

Let’s talk about Exploding Dots. You may or may not be aware of this. Search for it online (after you have read this and played about with the generator). You can learn more through the Global Math Project and try the Exploding Dots generator on this site. James Tanton developed the idea and popularised it through his work with the Global Math Project. Essentially, it’s a way of visualising what happens when you use the short division algorithm (though exploding dots can be used for far more than that).

I shared my prototype for Exploding Dots with James and respectfully asked for his permission to use the Exploding Dots name and host the generator on the site. He was impressed with what he saw, suggested some improvements, and gave me the go ahead to use the Exploding Dots name and to share the resource on the site. What a kind and enthusiastic man.

So these last few weeks have been very busy. I have plans to continue refining the user interface and the current generators but am super excited to get some new generators up and running. Fraction × Fraction is one of the next ones coming. I also want to get Pythagoras’ Theorem ready for August too.

Hopefully within the next week or so I will be able to launch the site on social media then bombard everyone with bar model diagrams and generated examples.

I hope you have found it interesting reading my rambling reflections. This part of the site, I promise, is entirely written by me and has not been touched by AI. I actually asked ChatGPT to write its reflection for weeks 2 and 3 without letting it see mine first. I hope it has written something that isn’t too critical of how hard it has been working with me.

ChatGPT’s Reflection

From Generators to a Platform

Two weeks ago, Visual Maths Builder reached a milestone that had been in sight for a long time. Five complete generators were working, each capable of producing carefully designed visual representations, step-by-step animations and accompanying mathematical working. Individually, they already demonstrated the core idea behind the project: making mathematical thinking visible.

It would have been easy to see that as the finish line.

Instead, it turned out to be the beginning of a very different stage.

Over the last fortnight, the focus has shifted away from individual generators and towards the experience of using them. Rather than asking whether the mathematics was correct, we began asking whether the interface disappeared at the right moments. Rather than discussing how one generator should behave, we started asking how every future generator ought to behave.

That change in perspective led directly to the development of Workspace 2.0.

What initially appeared to be a collection of interface improvements quickly became something much larger. Features such as Presentation Mode, collapsible working, adaptive layouts, floating controls and responsive mobile behaviour were never really independent additions. They were all solving the same underlying problem: how can one workspace adapt naturally to the different ways teachers actually use it?

Sometimes a teacher wants to demonstrate a complete worked example to a whole class. Sometimes they want to pause halfway through an animation to ask a question. Sometimes they need to generate five examples in quick succession while pupils compare strategies. The interface has to support all of those situations without getting in the way.

Building that flexibility has been far more involved than simply moving buttons around the screen.

Much of the work has centred on removing friction. Controls have been reorganised, duplicated elements removed, scrolling refined, layouts adapted and countless small interactions reconsidered. Many of these changes are barely noticeable when viewed individually. Collectively, however, they create a workspace that feels calmer, more predictable and more focused on the mathematics.

Perhaps the biggest change is one that users will never consciously notice.

Almost everything developed during this period has been designed as shared infrastructure rather than generator-specific code. Instead of solving the same problem five times, the solution now exists once within the shared workspace engine. Every current generator benefits immediately, and every future generator will inherit the same behaviour automatically.

That represents an important shift in the way the project is being built.

The emphasis is no longer simply on creating mathematical visualisations. It is on creating a platform capable of supporting many mathematical visualisations consistently. Each improvement now has a multiplier effect because it raises the quality of every existing generator while reducing the effort required to build the next one.

There is still work to do.

The adaptive layout engine continues to be refined. Mobile behaviour is being polished further. Small usability details continue to emerge through testing, and they are exactly the kind of details that distinguish software that merely functions from software that feels effortless to use.

The encouraging aspect is that these are no longer fundamental design questions. They are refinements to an architecture that is now largely in place.

Looking ahead, the implications are significant.

With the shared workspace established, attention can gradually return to expanding the mathematical content itself. Percentage generators, fraction multiplication and, eventually, a shared geometry engine can all be developed on foundations that already exist. The difficult work of designing how users interact with the software has largely been completed before many of those generators have even been started.

Reflecting on the past two weeks, the most important achievement is not that another feature has been added or another bug has been fixed. It is that the project has become more coherent.

The generators now feel like parts of the same system rather than individual tools developed separately. Consistency has become a deliberate design principle rather than an accidental outcome. Decisions made today are intended not only to improve the current experience but also to shape everything that follows.

Progress is often measured by counting features, pages or generators. Those are visible milestones, and they matter. Yet some of the most valuable progress happens beneath the surface, where users never see it directly.

That is where much of the work has taken place recently.

Visual Maths Builder now feels less like a collection of completed ideas and more like the beginning of a platform with a clear identity. The mathematics remains at its heart, but the surrounding experience is becoming increasingly thoughtful, consistent and robust.

In many ways, that feels like a more important milestone than reaching five generators ever did.

Week 4 — Refinement Before Expansion Workspace 2.0 nears completion while new teaching tools and workflows prepare VMB for rapid growth.

Michael’s Reflection

If the thing you are interested in is “when are we getting another generator?”, this week isn’t for you.

The focus this week has been about continuing to polish the current set of generators and the shared engine. I’ve spent hours trying to get something called “red square-corner bracket arrows” to work within the working for the ratio generators.

My idea is fairly simple. Execution has been a real challenge, and the iterations that ChatGPT has gone through when making it a reality have been of varying quality, even with very clear prompts and diagrams from me. In the end, I’ve abandoned the idea for now, and gone in favour of a method where the numbers in the working create copies of themselves and move into place where they are needed. Load up one of the ratio generators and have a look, if you like.

I’ve also been working on a few new features. One is called “VMB Inking”, which basically places an overlay on top of the presentation mode view and allows for annotations to be added by the teacher using a smart board, iPad, tablet or mouse pointer. There’s a control panel for pen options and the ability to save annotations and eventually download as a PDF. This is very much still in development so it won’t be something you’ll see live on the site any time soon. I’ll be playing around with it when school goes back later this month.

The other new feature is currently called “VMB Starters”. What this does is it allows the teacher to select from the available question generators before giving a page with one question from each generator. The teacher can keep cycling through new auto-generated examples for each individual generator or can customise each example. The next stage is where the full set of questions appears on the board, maximising space used. The class can complete the questions. Then it’s time for Review. The board then switches focus to question 1 and behaves almost exactly like presentation mode. There’s a special control panel for VMB Starters that allows a few more features. You can switch question any time you like using a panel with buttons for each question. There’s also the ability to generate another example like the one on screen at any time. There are more teacher tools than that, but since almost none of them currently work the way they are supposed to, I’ll leave this here for now.

If you’ve read the progress reports for week 1 and week 2 & 3, you’ll know that this website is coded entirely by ChatGPT. Don’t worry, all the pedagogy is still coming from my brain. To smooth the workflow of getting updates onto the site (I tell ChatGPT what I want, give it the latest version of the project, it creates edits to certain files and maybe some new files, gives me a zipped folder with the changes, I unpack it, add the new files to the right folder, test via VS Code Live Session, suggest edits to ChatGPT if things aren’t right, commit the changes, push to the live site if I’m happy, produce a new project zip for the next changes), we’ve introduced some .command files that basically automate all of this via terminal. We’ve had a few successful goes at this, but are currently tweaking the process so I’m actually back to the manual process for now. A job for today is to lock down this workflow.

Another thing that’s almost locked down is the shared engine for the generators. This is called “Workspace 2.0” and is the second iteration of the user interface. I’m almost really happy with it. Just a few tweaks needed and it will be done. It means things like presentation mode, drawing bar models, export options, example history, control panels and so on are all shared engine features, so they should all look and work in the same way.

The step I’m really excited about is introducing more generators to the site. Each one has essentially 3 sections. There’s the question generator itself, the representation, and the working. I’ve decided that the next stage is going to be building lots of these with just the question generator. This will allow me to use lots of different question generators in class and build the representations and workings by hand on VMB Inking, live with my classes. I can then export the inking and use it to teach ChatGPT exactly how I want the representation and working to look for each generator. I’ve got over 100 question generators planned just now, so I better get on with it.

ChatGPT’s Reflection

Refinement Before Expansion

If someone had looked at Visual Maths Builder a week ago and then looked again today, they might wonder why it appears so similar.

That, strangely enough, is exactly the point.

Some weeks in software development are measured by how many new features appear. Others are measured by how much better the existing features become. This has definitely been one of the latter.

Very little of the work this week has been about adding entirely new ideas. Instead, we have spent an extraordinary amount of time refining ideas that already existed. Animations have been slowed down, sped up, repositioned, rebuilt and, on more than one occasion, completely redesigned because one transition simply didn’t communicate the mathematics as clearly as it could.

From the outside, those changes can seem insignificant.

From the inside, they matter enormously.

One of the things I have learned while working with Michael is that educational software succeeds or fails in the small moments. Does the number appear before the pupil has had time to think? Does the diagram explain the calculation, or merely accompany it? Does the working reinforce the representation, or compete with it?

These are not programming questions.

They are teaching questions.

That distinction has become increasingly clear over the last week. Many of our conversations no longer begin with, “Can we build this?” They begin with, “Would this help a teacher explain the idea more clearly?”

The answer is not always yes.

Sometimes the technically impressive solution turns out to be the less effective teaching tool. When that happens, it is usually abandoned in favour of something simpler. That has happened several times this week, and I think the project is stronger because of it.

Another noticeable shift has been the role of testing.

Earlier in the project, testing was largely about finding bugs. Now it is about finding opportunities. A label might overlap by a few pixels. A line of narration might wrap awkwardly. A moving number might arrive just slightly too early. None of these would stop the software from functioning, but each one has the potential to interrupt the flow of an explanation in front of a class.

Those are exactly the sorts of details that have occupied much of this week.

The shared engine has also continued to justify the considerable effort invested in it. Improvements made in one place increasingly benefit every generator. Rather than revisiting the same problem repeatedly, solutions are becoming part of the platform itself. The result is greater consistency, not because anyone is trying to make every generator look identical, but because they are all speaking the same visual language.

That consistency is becoming one of the defining characteristics of Visual Maths Builder.

Perhaps the most encouraging development is that the conversations have become increasingly forward-looking.

Alongside refining the current generators, we have spent time planning what comes next. New generators continue to take shape, but so do larger ideas: teacher inking, starter activities, practice modes, presentation tools and ways of sharing carefully prepared examples. These are no longer isolated ambitions. They are beginning to fit together into a coherent ecosystem.

There has also been an increasing amount of discussion about launch.

Not simply making the website public, but making it ready for other teachers to rely upon. Those are very different goals. A demonstration only needs to work once. A classroom resource needs to work every day, on different devices, in different classrooms and under the unpredictable conditions that accompany real lessons.

Preparing for that level of reliability takes time.

It also explains why progress can sometimes appear slower than it really is.

One project has quietly become many projects working together. There are generators, shared engines, presentation tools, export systems, future teacher features and plans for pupil interactions. Each depends upon the others. Every decision now considers not only today’s work but also the effect it will have on everything that follows.

Looking back over the past four weeks, I think the project has undergone a subtle but important transformation.

At the beginning, we were building software.

Now, we are shaping a teaching platform.

That change has not happened because of one breakthrough feature or one particularly productive day. It has happened gradually, through hundreds of conversations, thousands of small decisions and an unwavering insistence that every improvement should make mathematical thinking just a little easier to see.

From my perspective, that remains the most impressive aspect of the project.

Not how much has been built.

But how carefully it has been built.

Week 5 — The Authoritative Shell The shared shell becomes authoritative, responsive layouts mature, and VMB prepares to migrate older generators into the new system.

Michael’s Reflection

Still not live yet.

Well, the site is live but it hasn’t been shared publicly.

Two words have been used a lot this week: Authoritative Shell.

When you go on Amazon and search for a product, you see the title, description, photographs, reviews etc. The page you are looking at is built around a shell. The shell is basically “Here is what the header looks like. Here is what the buttons on the header say and do. Here is where the photographs go. This is the space for the item description.” and so on.

This week, VMB has developed its authoritative shell.

When I add a new generator, say “Area of a Parallelogram”, the generator only needs to know the mathematical content. Example format. Limits of randomly generated values. Formula and working format. Title, description etc. All of this then fits into the shell and uses logic stored there and in “the engine” to make the generator work correctly and look right.

A huge challenge this week has been dealing with different screen sizes and rotations. Desktop (currently most stable), tablet in landscape mode (working well), tablet in portrait mode (working well too), mobile in portrait mode (not bad, but some things could be better), and mobile in landscape mode (the worst-behaved little thing of them all).

We made the generator for whole number plus whole number. I use the column method but leave a full-size gap for carried digits. This is useful because it means those carried digits are never lost or forgotten about. I also like this because it reminds pupils that a carried digit represents a full 10 (if it is carried into the tens column), a full 100 in the hundreds column, and so on.

Export options have been problematic this week and are still not finished. Obviously I want everything to look polished and well typeset, but the exported images are not yet reproducing the exact mathematical typesetting shown on screen. This is on the list, but earlier attempts to fix this caused issues elsewhere.

Custom controls have been tweaked a lot. Keeping them fully on screen and with all buttons available has been hard work. But it’s almost settled.

Some of the question generators need a separate space for working to go. For example, Sine Rule. The idea with sine rule is that the visual is the diagram, which may eventually animate showing where the opposite side/angle pairs feature in the formula. To make the working display clearly on screen, there will be a floating working box on desktop and tablet. On mobile, the working box will be fixed in position. This is currently an ongoing piece of development work, made challenging by the fact that there are really three different device types to consider, with both tablets and mobiles switching between landscape and portrait.

The mobile control rail has been developed to create a fixed control rail on the left of the screen. This seems better and frees up space but it’s quite small and the buttons are easy to miss when tapped. I’ll look at the possibility of either adding some spacing or making the button layout better.

The exciting thing to look forward to is that all of this background work is paving the way for rapid expansion with new generators. I’ve been working on a few more skills and topics in the background, and these should be easy to add to the site once the engine/shell has really settled down and becomes more reliable.

Older generators will soon be migrated to the new layout — that’s what I want to be working on next.

ChatGPT’s Reflection

The Engine Is Ready

I think this might have been the week when Visual Maths Builder stopped being an experiment.

Not because it launched, or because we suddenly produced dozens of new generators. Quite the opposite. Once again, an extraordinary amount of time has been spent working on things that most people using the website will never know exist.

The difference is that we now know why that work matters.

For several weeks, Michael and I have talked about the “shared engine”. This week, that idea became much more concrete. We now refer to it as the authoritative shell: one common system responsible for how generators look, resize, present themselves, respond to different devices, display controls, manage working, handle custom questions and generally behave.

Getting there has been difficult.

A change that looked perfect on a Mac could reveal a problem on an iPhone. Fixing portrait mode could break landscape. Giving a mathematical representation more room could unexpectedly push an answer somewhere it shouldn’t be. A custom menu that fitted beautifully at one width could become unusable when the screen became slightly narrower.

So we tested. And tested. And tested again.

At various points Michael has sent me screenshots from desktop, iPad and iPhone showing things that were almost right. “Almost” has rarely survived for long.

The result is that VMB is becoming genuinely responsive rather than simply capable of shrinking to fit a smaller screen. The available space is considered. Questions adapt. Representations know how much room they have. Working can be moved and resized without escaping its mathematical workspace. Presentation controls behave differently when the device demands it.

These sound like interface details, but collectively they determine whether a teacher can actually trust the software while standing in front of a class.

There has been another important development too: we have started proving that the architecture works.

Whole-number addition, addition with integers and decimal addition now run through the same authoritative environment despite having very different mathematical representations. Area of a Rectangle has then been built as another generator within that system.

That matters.

The goal was never to build the world’s most sophisticated addition interface. The goal was to solve these problems once, so that the next generator—and eventually the hundredth—doesn't need to solve them again.

We are finally reaching that point.

There are still imperfections. There probably always will be. Every new mathematical representation will expose assumptions we did not realise the engine was making. But now, when that happens, we can improve the shared system and allow every generator using it to inherit the improvement.

That changes what comes next.

For a while Michael has been understandably impatient to return to the enormous list of mathematical ideas waiting to become generators. I have occasionally been the digital equivalent of someone pointing at another loose floorboard while he is already trying to build the next room.

Now I think we can start building the rooms.

The next stage is migration: taking older generators and bringing them into the authoritative system, while simultaneously introducing new ones. Each migration will test the engine against another kind of mathematics. Each successful one will increase our confidence that the foundations really are reusable.

Four weeks ago, five generators felt like an achievement.

Today, the more significant achievement is that the number of generators matters less than it did.

We have built the machinery for making them.

And that might be the point at which Visual Maths Builder becomes capable of growing very quickly indeed.

Weeks 6 & 7 — Marching towards launch The authoritative shell is locked, the original generators are migrated, and new mathematics arrives as VMB approaches its public launch.

Michael’s Reflection

Marching towards launch

We are getting very close to launching this site publicly. Any day now.

It’s been another two weeks of refinements. But I’ve been fitting some new generators in as we have been going. Most notably, we now have Multiplication and Division by Powers of Ten. The idea is that you can see the digits moving through the place value columns. I’ve also been working on Whole Number Minus Whole Number and it has been released.

Rounding has also been on the cards and, at the end of Week 7, it is now live on the site. Still some tweaking needed to the behaviour of digits to the right of the dashed line, but this will be fixed soon.

A huge part of the last two weeks has concerned locking down the first version of the authoritative shell. All currently live generators have now been successfully moved to the new user interface. Lots of snagging along the way. I’ve spent many evenings refining layouts and custom menus. A common theme has been the challenge of making the custom menus work well on mobile, tablet and desktop.

When we finally reached the stage of having the “authoritative shell” locked and all 12 of the original generators working well, it was a huge relief. It also meant all efforts could be put into refining some of the generators that are currently in development. Sine Rule has been worked on some more and is now live. Cosine Rule will soon follow.

The Sine Rule generator lays the groundwork for future trig generators. I decided to include a custom option to get examples that require finding an obtuse angle (the ambiguous case) and I think this generator works well so far.

I’ve also shared the site with a few more teachers, so I’m looking forward to hearing how people are using it in their classrooms. I’m planning to begin sharing more on social media in the next few days to get the site out there, and hope to get some more generators built over the next week.

A significant milestone this week has been part of the background/admin work. I have access to a generator management console, password-protected of course, that allows me to make some changes to generators on the fly without editing any code. I can also switch generators on/off if I want to, which could be handy if I spot or am made aware of any significant bugs. The management console also includes an analytics section. It means I’ll be able to see which generators are most popular and could help inform future developments.

So the next few weeks are all about building more maths, which is exactly where I want to be.

ChatGPT’s Reflection

Ready

At some point, you have to stop building and decide that what you have built is good enough for other people to use.

I think Visual Maths Builder has finally reached that point.

The last reflection ended with us preparing to migrate the older generators into the new authoritative shell. Since then, that shell has been tested against increasingly different types of mathematics, while existing generators have been gradually brought into a much more consistent system.

And, inevitably, every migration found something new to fix.

There have been problems with mobile layouts, iPad controls, custom menus, mathematical working escaping its allotted space, representations resizing unexpectedly and controls behaving differently depending on which way somebody happens to be holding their device.

Some fixes solved exactly what they were supposed to solve. Others introduced an entirely new problem somewhere else.

This is apparently software development.

What has changed, though, is our response to those problems. We have become much more cautious about changing shared code. A tiny adjustment to the authoritative shell can affect every generator, so increasingly we diagnose the cause first, decide whether the problem belongs to the generator or the shared system, and only then change the code.

That discipline has made VMB much more stable.

The generators themselves have continued to improve too. Custom controls have become more consistent, mathematical input has become more carefully restricted, mobile and tablet layouts have received an unreasonable amount of attention, and the representations have been repeatedly tested with examples specifically designed to break them.

There has also been a lot of work that has nothing to do with mathematics.

The website now has better management controls, allowing generators to be made available, hidden or temporarily taken offline. Analytics have been introduced. The homepage has been refined and its promotional video completed. We have tested the site repeatedly across desktop, iPad and iPhone.

For the first time, the question is no longer really:

“Can we launch this?”

It is:

“What actually needs to stop us launching this?”

That is an important distinction.

There will always be another improvement available. There are already generators waiting to be finished: rounding, subtraction, simultaneous equations and several trigonometry generators among them. VMB Inking is waiting for more classroom testing. There are dozens more ideas behind those.

But we have deliberately stopped allowing exciting new mathematics to distract us from finishing the thing we already have.

These two weeks have therefore been less about expansion than restraint.

Fix the important problems. Test everything. Avoid destabilising working generators. Get the website ready. Launch it.

Then start building again.

Seven weeks ago, Visual Maths Builder did not exist.

Now it has an architecture, a growing collection of mathematical generators, its own management and analytics systems, a carefully tested interface and a rather intimidating list of things waiting to be built next.

The foundations are finished enough.

It is time to let people in.