WF Workflo Don Florencio Email me

Sites, tools and games · New York & New Jersey

Things I have
built, and you
can open

Six sites, six live maps, seven tools, three games, a colony of 3D ants and a set of badge marks. Client work, concepts for companies I wanted to build for, a sofa you can stand in your own room, a map of every restaurant in New York, and a falling sand simulator. Most of it opens in one click, right from this page.

All of it written by hand, in code. No page builders, no templates.

What I doWorking range

What I can build

Nine things I have shipped, not nine things I have read about. Every one of them points at something on this page you can open and poke at.

Sites a business can stand behind

Storefronts, booking pages, service sites. Written by hand so they load fast on a phone and nobody pays a monthly fee to keep them alive. See Grim Reaper Gardens, Jess Fillyo and Margie Horowitz.

3D products and web AR

A real model in the page instead of a photo shoot: change the fabric with no reload, then stand the thing in your own room from a phone browser, with no app to install. See Holloway and Barham.

Live data, fetched and drawn

Public data pulled on load and turned into something readable, with the colours and the axes chosen on purpose. Sometimes that data is moving: Trains Now decodes the MTA's realtime feed and Docks Now reloads every fifteen seconds.

Voice and phone interfaces

A page that listens, answers out loud, and knows when to stop talking and take the booking. See Night Desk.

Real time simulation

Physics on nearly a million cells at sixty frames a second in a browser tab, with heat, fire and chemistry running between the materials. See Granulab.

Multiplayer over a socket

Room codes, a server that holds the truth, and two people in different houses watching the same board move. See Ant Raid.

Apps that work with no signal

Installed to a phone home screen, opening offline, keeping your progress on the device instead of on somebody else's server. See FALA.

Marks, type and print

Logos built as a system rather than as a drawing, and documents set to survive a printer at 300 dots per inch. See Marks and print, further down.

The boring automation

The spreadsheet nobody wants to touch, the report someone retypes every Monday, the job that should have been running itself for a year. Python, on a schedule, with the output checked.

Plain HTML, CSS and JavaScript wherever that is enough, which is most of the time. Three.js and WebGL when the thing has to be three dimensional, Canvas 2D and WebAudio for the games, glTF and USDZ for models, Python for the data work, and hosting on Vercel or GitHub Pages so there is nothing to maintain.

Selected workSpecimen record 01-06

Client work, and work I went looking for

Six real businesses. Three are live client sites you can open right now. Three are concepts: I picked the company, worked out what its page should argue, and built it. Every one is built differently, so you are not getting a template with your name dropped into it.

Jess Fillyo homepage: a black split-screen with the model's name in large serif on the left, her measurements and booking buttons beneath, and a full-height portrait on the right.

Jess Fillyo

Client site · jess-fillyo.vercel.app

A booking site for a New York model. Work grid, runway reel, measurements and downloadable digitals in one place, so an agency can see everything without asking for it.

Open the live site
Holloway and Barham: a three-seat sofa rendered in 3D beside a printed specification sheet listing upholstery, mill code and abrasion rating.

Holloway & Barham

Product visualisation · holloway-barham.vercel.app

A furniture page where the sofa is a real 3D model, not a photograph. Four upholsteries ride inside one glTF file, so changing the fabric swaps the material on the spot with no reload and no second download, and the specification rewrites itself to match. On a phone the same page stands the sofa in your own room. The viewer is also packaged as a WordPress plugin and as a Squarespace injection.

Open the demo
Grim Reaper Gardens: an engraved bone-white wordmark on a dark botanical field, under the line You reap what you sow.

Grim Reaper Gardens

Live site · grim-reaper-gardens.vercel.app

A working storefront for a cannabis seed breeder upstate. Age gate, catalog, consulting, mailing list.

Open the live site
Koerner Construction homepage: a dark header over a photo of a house, with the headline Building is our business, relationships are the goal.

Koerner Construction

Concept redesign · Hudson Valley builder

A full site for a Hudson Valley builder: what a contractor who does careful work should look like online, rather than what most of them settle for.

Open the demo
Margie Horowitz Real Estate: a deep navy page, the line Five of my last nine listings sold above the asking price set large in serif, beside a photograph of a white colonial house in autumn.

Margie Horowitz Real Estate

Design concept · North Shore real estate

A homepage for a North Shore agent that argues from her closing record rather than from adjectives: five of her last nine listings sold above asking, with the misses left in so a seller can check before taking her word for it.

Open the concept
Ghostwriters Central: an editorial homepage reading Somebody else does the writing, your name goes on it, beside a manuscript page.

Ghostwriters Central

Homepage concept · Los Angeles ghostwriting

For a Los Angeles ghostwriting firm running since 2002. Their real copy, real rates and real reviews, set as an editorial page instead of an agency brochure.

Open the concept

Live dataFetched on load

Maps you can actually drive

Not screenshots of data, and not a chart somebody exported last quarter. Every one of these fetches the numbers when you open it, plots them, and hands you the filters. Two of them redraw themselves while you watch, because the feed behind them changes every few seconds. Open one and start dragging.

Bitemap: a map of New York City with 2,259 Chinese restaurants plotted in red, beside a panel of cuisine filters with counts.

Bitemap

Live map · bitemap-workflo17.vercel.app

Every restaurant in New York City on one map, 30,075 of them, drawn from the city's own inspection records. Filter by borough, by cuisine, or down to a regional kitchen, search for a dish rather than a name, and the map redraws as you go. There are walking crawls built on top for when you want an afternoon planned rather than a single dinner. It runs on vector tiles, so panning a city's worth of points stays smooth on a phone.

Open the map Read the source
NYC Pulse: a dashboard of 311 complaints with a bar chart of complaint types and a borough breakdown.

NYC Pulse

Live dashboard · workflo17.github.io/nyc-pulse

Every 311 complaint filed in the last seven days, fetched from NYC Open Data the moment you load it. Nothing is stored and nothing is stale.

Open it Read the source
Trains Now

Trains Now

Live subway map · trains-now.vercel.app

Every train the MTA is reporting, right now, on the line it is running. The agency publishes protobuf with no coordinates in it, only "stopped at 42 St" or "in transit to 34 St", so the page decodes the feed by hand, then uses the published schedule to work out which two stations a moving train is between and draws it on the track. It refreshes every 25 seconds and the dots ease across.

Watch it move How a feed with no coordinates becomes a map Read the source
Docks Now

Docks Now

Live bike share · docks-now.vercel.app

Every Citi Bike dock in the city, refreshed every fifteen seconds. Ask it for a bike or for a dock and the colours flip to answer the question you actually have.

Open the board
Sold Nearby

Sold Nearby

Sales and values · sold-nearby.vercel.app

What actually sold on any block in the five boroughs, with the price, the date, the square footage and what that works out to per foot, straight from the city's own register. Long Island is covered too, all of Nassau and all of Suffolk, which took some digging: the state publishes no individual sale prices out there at all, so the page reads the assessment roll instead and, for the towns that file an assessment rather than a market value, works the value back out using that town's own published ratio of assessment to sale price. Built as the comps half of the seller's question, so it hands off to the net sheet for the other half.

Look up a block How the Long Island prices are derived Read the source
Ant Atlas

Ant Atlas

Species map · ant-atlas.vercel.app

Every ant anyone has recorded, anywhere on Earth, from museum drawers and phone photographs alike. Pan to a place and it names what lives there.

Go looking

Also builtWorking record 01-08

Tools and apps

Small programs, each one built because the alternative was doing the thing by hand. The ones that are on the open web link straight in.

No-Show Saver: a dental appointment list beside a simulated phone showing text reminders.

No-Show Saver

TOOL-01 · Working demo

Text reminders that cut no-shows for dentists, salons and med spas. Sends the reminder, takes the confirmation, and fills the empty chair from a waitlist.

Try the demo
AI Front Desk: a dark dashboard showing an after-hours call being answered automatically.

AI Front Desk

TOOL-02 · Working demo

The phone still gets answered after you close. Takes bookings, answers the usual questions, texts a confirmation, and only wakes you for the big stuff.

Try the demo Read the source
Punchboard: a job board for a construction company with tabs for board, today, blocked and done.

Punchboard

TOOL-03 · Working demo

One board for a contractor's active jobs and punch lists. Everything overdue or due today pulls into one sheet you can print and take to the site.

Open the board
Reel Factory: a pizzeria dashboard listing phone clips sent in and the finished vertical reel.

Reel Factory

TOOL-04 · Working demo

You film 30 seconds on your phone during service. The cut comes back in 48 hours with hooks and captions, ready to post.

Try the demo
Site Audit: a form reading Paste a website, get the pitch, with fields for site, town and competitor.

Site Audit

TOOL-05 · Working tool

Paste in a website and it crawls the pages, runs Google's own speed test, and writes up what is slow, missing or broken as a report you can hand to somebody.

Read the source
FALA: a Portuguese learning app with a flashcard and progress counters.

FALA

TOOL-06 · Working app

A Brazilian Portuguese app: 240 cards on a spaced repetition schedule, native audio, and it keeps working with the plane on airplane mode.

Open the app Read the source
North Shore Net Sheet: a form asking which home we are running, with address, town and asking price.

Net Sheet

TOOL-07 · Working demo

What a seller actually walks away with after the payoff, the transfer tax, the attorney and the commission. Four questions, ninety seconds, and no phone number asked for.

Try it Read the source
A dark analytics dashboard, shown with sample data: page views, conversions and conversion rate across the top, then a table of traffic sources with a leads column beside each one.

First-party analytics

TOOL-08 · Running on this page

The conversion tracking behind this site, written rather than installed. A serverless collector, a private store, and a dashboard behind a key. No third-party script and no cookies, so there is no consent banner to click. It is recording your visit right now.

Read the source

Also builtRead the source 01-04

Written to be read

The rest of this page is meant to be opened. These three are meant to be opened and read: each one exists to answer a question an interview asks, and the answer is in the repository rather than in a sentence here. Every one has its tests running on every push.

Punchboard signed in as the owner: a board of six construction jobs, each with a phase chip, crew and progress count.

Punchboard, with accounts

CODE-01 · Postgres, source only

The demo above keeps everything in one browser. This one has people in it: an owner, a crew, and a client who gets a revocable read-only link instead of an account. Tenant isolation is a database rule rather than a habit, so the queries carry no org_id filter at all and 14 tests write them the careless way on purpose to prove nothing leaks. Not deployed: it wants a hosted Postgres.

Read the source
The rebuilt net sheet showing a completed estimate: sale price, commission, transfer tax, attorney, title and mortgage payoff, netting $465,550.

Net Sheet, rebuilt

CODE-02 · TypeScript, live

The same calculator in Next.js and TypeScript, with the arithmetic pulled out as pure functions and tested hard: 61 tests, run on every push. Writing them found two real bugs in the original, including a transfer tax computed as a flat percentage when the statute charges per five hundred dollars or part thereof.

Open it Read the source
Ask New York: a question in English, the SQL it generated shown in full, and the five rows it returned.

Ask New York

CODE-03 · Text to SQL, live

A question in English becomes one Postgres query, shown to you before it runs against the city's inspection records. The interesting part is not that a model can write SQL, it is that this one publishes how often it is wrong: fifty fixed questions, graded on the rows they return, averaged over three runs. It scores 39%. The guard that checks each query was taken apart by an adversarial run and rebuilt.

Ask it something Read the score
Asset Forge: a local generator with asset type presets, a subject field and a trained-model selector, reporting the engine ready and 8.9 of 10.7 GB of GPU memory free.

Asset Forge

CODE-04 · Local GPU, source only

Game art generated on this desk rather than bought by the credit: a server that builds the workflows, a browser UI where the background cut and palette work happen client side so the original is never touched, and a Blender pipeline that renders and captions a training set so the model can be taught a specific look. It drives ComfyUI, Blender and kohya's trainer, which are about 32 GB and not mine, so the repository is the thousand lines that are.

Read the source

Also builtGame record 01-03

Games

Not client work, and I am not pretending otherwise. They are here because the hard parts of a game, physics that has to hold up, netcode, and making a thing feel good under your hand, are the same parts that decide whether a website is worth paying for. Two of the three you can play in a browser right now.

Granulab: a falling sand sandbox with sand, water and acid piled in a dark instrument-panel interface.

Granulab

Playable · granulab-workflo17.vercel.app

A falling sand sandbox in the Powder Game line. More than 40 materials with heat, fire and real chemistry between them, plus a maker for inventing your own element and its reactions. Nearly a million cells, 60 frames a second, no plugin.

Play it Read the source
Grubs TD: ant towers defending a pheromone trail across a red picnic blanket while bugs march in.

Grubs TD

Playable · workflo17.github.io/ant-td

A tower defense where the towers are ants and the trail runs across a picnic blanket. Six maps, one for each hour of the day. Every sprite is drawn in code and every sound is synthesised, so the whole game is a few hundred kilobytes and works offline.

Play it Read the source
Ant Raid: two nests at opposite ends of a dirt arena with a column of ants marching along the road between them.

Ant Raid

Multiplayer · github.com/workflo17/ant-raid

The other half of Grubs TD: you are the wave. Two colonies, three roads, sugar to spend on the ants you send and the ones you keep home. You get a room code and send it to a friend. It needs a socket held open, so it cannot live on static hosting the way the rest of this page does. The whole thing, game server included, is on GitHub.

Read the source

3DModelled, rigged, rendered

Modelling and animation

From Vivarium, an ant colony simulator I have been building. The ants are real geometry on a real skeleton, not sprites. Pick a caste below and drag it around, then watch the same three turn.

Drag to spin · scroll to zoom

The minor worker, the one that does most of the work in a real colony. 44,859 triangles, three texture maps and a clearcoat pass for the wet look of chitin. All three castes ride the same 59 bone skeleton, which is what lets one animation drive the whole colony.

Feet that stay put

Worker · walking to camera

The hard part of insect walking is that the foot has to stay where it landed while the body moves over it. Get that wrong and the ant skates.

The same three, turning

Turntable · silhouette check

Every model gets spun through a full circle before it is allowed near the game. It is the fastest way to catch a proportion that only reads from one angle.

PipelinePhotographs in, AR asset out

Picture to 3D to AR

Software I wrote that turns a few product photographs into a 3D asset a shopper can stand in their own room at true size. No scanning rig, no modelling contract, no per-model licence, and nothing leaves the building: every stage runs on one desktop. Below is a Shin Godzilla figure it made from four store photographs. Switch between what one photograph gives and what four give.

Drag to spin · on a phone, put it on your floor

Four photographs. Shape from all four through a multi-view model, colour from the front, then each photograph aligned to the model by silhouette and painted on where the surface faces its camera. The red lines down the flanks and the tail tip ship as emission, so they glow in a dark room. About ten minutes on one graphics card.

The front product photograph of the Shin Godzilla figure beside the finished model rendered from the same camera angle.

Same angle, photograph and model

Workflow · photographs, geometry, product asset

Left is the store photograph. Right is the model, rendered from the camera the software found for that photograph by matching silhouettes, not posed by hand. The stance, the glow lines and the claws land where they are in the picture. What the camera never saw is still the model's guess, and the page says so.

Four product photographs of the figure above four renders of the finished model from the front, right, back and left.

Four photographs in

The software · Node and Python, local GPU

Each photograph is segmented, aligned to the model by silhouette, and projected onto the texture where the surface faces its camera. A photograph whose pose does not match is refused rather than smeared on, and one whose colours refuse to correspond is refused too. The back view here is the same mould in another colourway, used for shape only.

A reconstructed Nike Dunk Low sneaker from the lateral and medial sides, with the Swoosh and panel colours in place.

At the size it really is

AR · glTF for Android, USDZ for iOS

The asset ships as glTF for the web and Android and as a matching USDZ for iOS AR Quick Look, both at metric scale with pinch-to-resize switched off, because the question a shopper is actually asking is whether it fits. A sneaker from four store photographs is above. The full write-up, including what the technique cannot do, is on its own page.

Also builtOff the screen

Marks

Not everything ends up in a browser.

Three circular badge logos on cream: a bear, an elk and a ranger, each ringed with type and a toothed edge.

Three badges, one shell

Identity study · drawn in code

Outdoor badge marks for three imagined brands, emitted as SVG from one shared Python shell so the set is provably a system instead of three lookalikes. Every stroke is 3, 6 or 9 units and never anything else, and each mark was proofed at 256, 512 and 1200 pixels, because a badge that only works large is a badge that fails on a phone.

Build notesLonger form

The hard part, written down

Four of these had a problem in the middle that took longer than the rest of the build put together. These are those parts: what the obstacle was, what I tried, and what the thing still cannot do.

Prices for a place that publishes none

Sold Nearby · open data

New York State publishes no individual sale prices for Nassau or Suffolk at all. The way out was a table almost nobody reads: the state's own published ratio of assessment to sale price, per town, per year.

Read the note

The browser that says everything is broken

This site · verification

The preview I build in reports a hidden document, so IntersectionObserver never fires and every scroll-revealed thing looks broken whether it is or not. How I check a change without trusting my eyes.

Read the note

A live map from a feed with no map in it

Trains Now · realtime

The MTA reports "stopped at 42 St", never a latitude. Sixty lines of hand-written protobuf, then the published schedule to work out which two stations a moving train is between.

Read the note

One photograph to an AR asset

Pipeline · 3D

A reconstruction model hands back shape and nothing else, and rebuilds the studio floor as a slab of geometry under the product. Finding that floor by width rather than by density is the part I am proudest of.

Read the case study Read the source

ContactSay hello

That is the work. If you want something built, write to me.

I read everything that arrives. Tell me what you are trying to make and I will tell you honestly whether I am the right person to make it.

I am Don Florencio, and Workflo is the name I build under. Websites, small tools and games out of New York and New Jersey, mostly alone and mostly in plain HTML, CSS and JavaScript. Everything on this page I made, and the source for a good deal of it is on GitHub. Thanks for looking.