Ely's Tires and AllOEMRims · 2012 to now

Four generations of
one inventory system

In 2012 I was building the website for a tire shop in South Florida that also sold used factory wheels on eBay. The whole inventory fit in a spreadsheet. The shop was paying a vendor to keep its eBay listings in step with its website, that subscription was canceled on the last day of October 2012, and for three months I kept the inventory by hand while I worked out what a wheel actually is. On 31 January 2013 I wrote the tool in a day. Fourteen years and two rebuilds later the company still runs on it.

This is that run, in date order. Two of the four generations run today and you can open them. One survives as code with no database, so what is shown is a real file it swallowed. The spreadsheet it all started from is shown by its own columns, and the system running the company right now is shown on a copy loaded with invented orders.

One question, asked four times

This is not four products. It is one question asked four times over fourteen years: what is a wheel, in numbers, such that you can find it, price it and sell it. Everything below is that question being answered better.

2012

The shop

A tire shop in South Florida, family owned, in the tire business since the nineteen sixties and selling to the public since 1999. Mounting, balancing, alignments, brakes, suspension. Tires new and used. And, at the bottom of the welcome copy and nowhere else on the page, an enormous selection of rims.

Nothing on this page dates itself. The footer computes its year, so on a live server today it would claim the present, and the exhibit's clock is pinned to the last date anything in this tree was written. The tree runs from 4 January 2010 to 19 August 2012. The two screens below carry timestamps of their own.

Open Ely's Tires, 2012
www.elystires.com/
The 2012 Ely's Tires home page: a dark header with the shop wordmark, a horizontal navigation bar, a welcome paragraph about the family business, and panels for the shop's Facebook feed and gift cards.
1280 × 843 Open the full picture
20 January 2012

Clone this one, change what is different

The catalog admin behind the site. This particular screen takes a product already in the catalog, copies every field, and hands you the copy to edit. That is the whole Templatizer idea, a year before Templatizer, sitting in a product we were selling to other people at the time.

This screen is version 3 of a content management product sold by the firm I worked at, not something written for this shop: five other client sites were running the same build, and the admin's footer still carries the firm's name. The date is the file's own date in the archive. Note what is not here. A scan of this whole tree finds no eBay code anywhere: the catalog kept the website, and an outside vendor kept eBay.

Open the catalog admin
www.elystires.com/E8385738T/addSimilarProduct.asp
A 2012 web admin form headed Add Similar Product, with fields for product name, part number, price, quantity, description and images, all prefilled from an existing product.
1280 × 1194 Open the full picture

The wheels did not fit the catalog

A catalog product is built around a thing you have a lot of. A used factory wheel is one of one: this exact wheel, off this exact car, with this exact scratch on it. So the wheels got their own screen and their own database, four months after the screen above.

25 May 2012

The first time the question gets asked

A wheel inventory, separate from the catalog, with its own database and its own way in. Read the headings across the top of the grid. That row is the question this whole business turns on being asked for the first time: which numbers identify a wheel, and which ones sell it. The second icon at the top right is a barcode, and the screen you log in through says scan or enter the item number. In a tire shop. In 2012.

The table this page reads has its own creation date inside its name. Read as a timestamp it is 25 May 2012. The database file was last written on 4 June 2012 and held 341 rows of real stock, so every row you see here is invented and the headings are the real ones. This screen was very nearly published with none of its own furniture: the application was written to sit at the root of its own address, so mounted here every link it makes for itself, including the ones that pull in its own header, pointed one level too high and quietly resolved to nothing.

Open the inventory
www.elystires.com/inventory/inventory.asp
A 2012 inventory grid with sixteen column headings reading Item Number, Days, Location, Qty, Cost, Price, Shipping, Online, Ebay, Size, Width, Pattern, Finish, Condition, Vehicle and Status, above rows of wheels.
Item NumberDaysLocationQtyCostPriceShippingOnlineEbaySizeWidthPatternFinishConditionVehicleStatus
Sixteen headings, 25 May 2012.
1280 × 1414 Open the full picture

31 October 2012. The vendor is canceled.

The shop had been paying an outside company to keep its eBay listings in step with its website, and that company was bad at it. The subscription ended on the last day of October. Nothing replaced it for three months.

November 2012 to January 2013

The spreadsheet the whole system grew out of

For three months there was no system at all. The eBay vendor was gone, the catalog did not do eBay, and the inventory lived in a spreadsheet I built by hand and kept by hand. Those three months are where the thinking happened, and eleven of its thirteen columns are still columns in the live table today.

The two saves either side of the tool are the exhibit. On 30 January it has thirteen columns, and one of them is a checkbox called Posted? that somebody had to tick to remember whether a wheel had been listed yet. The tool was written the next day. By 10 April that column is gone, because the job it existed to track had stopped being anybody's job.

Every surviving save carries one creation stamp, 2012-11-07 16:31:28, so they are a single workbook carried forward rather than separate files.

RIMS 1 30 2012.xlsx and RIMS 4 10 2013.xlsx
ColorPicsLBSSizeBolt PatternVehicle Make / ModelYear(s)OffsetHollanderItem NumberPriceNotesPosted?
ColorPicsLBSSizeBoltVehicle Make / ModelYear(s)OffsetHollanderItem NumberPriceNotes
Thirteen columns on 30 January, twelve on 10 April. The one that went is Posted?, and losing it is the clearest measure of what the tool did.

31 January 2013. Written in a day.

Three months of keeping it by hand is what made a day enough. By then I knew what the columns were, so there was nothing left to work out.

28 February 2014 and 6 April 2014

The tool exists, and it is still learning

Templatizer was written on 31 January 2013, in a day. The earliest copy of it that survives cannot be run: there is no database of any kind in that tree, of any format, so every page dies at the first query. What does survive is what it ate. Eight rim sheets are still sitting in its upload folder, and they are dated, and they are not the same shape as each other.

Five weeks apart, the sheet goes from fifteen columns to twenty eight. One Vehicle and one Years become five of each, because a wheel fits more than one car. One column called TPMPVS splits into tpms and vs, because a sensor and a valve stem are two different things. Imper becomes Imperfections plus repair, skim and, by 2015, Quality, because how bad the damage is and what was done about it are two more. That is the same work the spreadsheet was doing, still going, a year into the tool.

The code in that tree cannot be dated closer than its jQuery, which is 1.10.2, released on 3 July 2013. The sheets can: their names carry their own dates, and the eight of them run from 28 February 2014 to 6 August 2015. So this is the 2013 tool as it stood in 2015, and it is not exhibited here because it cannot be run honestly. Its database was a SQL Server store, two backups of it survive, and restoring one is the next job.

interface/upload/rims2282014.csv and rims462014.csv
ColorPicsSizeBoltVehicleYearsOFSTHollFRTPMPVSItemNumberPartNumberImperPriceNotes
ColorPicsSizeBoltv1y1v2y2v3y3v4y4v5y5steelnonsteelsetoftpmsvsOFSTHollItem NumberPart NumberfrskimImperfectionsrepairPriceNotes
Fifteen columns on 28 February, twenty eight on 6 April. Eleven names are on both, and still on the 2015 sheet a year later: Color, Pics, Size, Bolt, OFST, Holl, FR, ItemNumber, PartNumber, Price, Notes.

Then it just ran

There is no frame for 2016, 2017 or 2018, because nothing changed in those years that a screenshot would show. The tool was finished and the shop was busy. What did change is what it was pointed at: by the end it was running AllOEMRims.com rather than a page on a tire shop's website.

2019 to 2020

Six years of being used every day

The same tool, grown up. The home page is a board of wheels that have been described but not listed anywhere yet, with a counter for how far behind the shop is, and one button that pushes all of them at once. Down the left is every other thing the job turned out to need: a second product family, a third, an importer, a template library, an archive, an item number generator.

This copy is dated by its own working files. Thirty seven item number exports sit in it with dates in their names running from 28 May 2019 to 11 August 2020, and the upload folder carries sheets from 2019 and 2020. Its own notes say it ran on a web server in the shop until it was rebuilt as a WordPress plugin in early 2026.

Open Templatizer, the classic build
templatizer.elysstuff.com/
The Templatizer dashboard: a wordmark, a left navigation column listing product families and tools, and a table of listings in progress with title, item number, used price, refurbished price and date columns.
1280 × 1814 Open the full picture
2019 to 2020

What it was actually for

This is the screen the whole thing exists to produce. One wheel goes in, and out comes the listing: the title built to the character limit, the item specifics, and a block of description markup ready to paste into a marketplace listing. Describe the wheel once, in one place, then let the machine write it out however each channel wants it.

This page nearly did not make it into the exhibit. It builds its description by pulling in a separate file of template code from inside a block of script, which is legal in the original and was not something the converter handled, so the most important screen in the tool was coming out as an apology. That is fixed, and the fix is in the converter rather than in this copy.

Open the listing generator
templatizer.elysstuff.com/get-template/rims/
A Templatizer screen headed Get Codes, showing a generated listing title, a table of item specifics for a wheel, and a text area holding the description markup for the listing.
1280 × 1503 Open the full picture
2019 to 2020

And then it was not only wheels

A center cap is the small cover that snaps into the middle of a wheel. Look at what this screen does not ask for: no bolt pattern, no offset. It asks how many clips, and which part number is stamped on the back, because that is what identifies a cap. Same machinery, completely different questions. Bike tires, car tires, hubcaps, bumpers and emblems followed. The box across the top takes a part number and fills the rest of the form in for you, which is the first ancestor of the intake that runs today.

The database this ran on held 2,750 wheels, 4,091 bike tires, 104 center caps, 19 car tires and one emblem. Every row in the exhibit is invented, the row counts are the real ones, and there was never a customer table in it: this tool described things, it did not sell them. One file in this module is the only damaged file in the whole tree, and there is a page at its address saying so.

Open the center caps
templatizer.elysstuff.com/add/caps/
The Templatizer add a center cap form, with fields for part number, number of clips, finish, fitment years and vehicles, and no wheel measurements at all.
1280 × 1108 Open the full picture

Early 2026. The whole thing is rebuilt.

Thirteen years of classic ASP on a web server in the shop, replaced by a WordPress plugin. Second rebuild, same question.

Live right now

Templatizer 3. The one running the company.

The fourth generation, and the one actually running the company while you read this. It's a WordPress plugin now, and it isn't a listing tool any more: it's the ledger the books are kept in, the pull list the warehouse opens in the morning, the label printer, the pricing engine, the storefront, the support desk and, last of all, the thing that answers the phone.

This is the ledger, one business week per page. Every order from every channel lands in the same table, with its profit worked out per order, and a banner at the top flags any wheel that has sold twice.

I photographed this on a copy of the plugin running on my own machine, loaded with invented orders, because every screen of the live one carries a real customer's name, address and order history. The wheels, buyers, order numbers, prices and tracking numbers are all made up. The layout, the labels and the colors are the real ones.

alloemrims.com/ledger/
The Templatizer ledger on the week of Saturday 10/3 to Friday 10/9: cards for orders, revenue, profit and margin, a banner reading 1 SKU has sold more than once, and twelve order rows, each with its source, category, sale, profit, status and tracking number.
1440 × 1006 Open the full picture

And it is still selling while you read this

Fourteen years in production, and the business is winding down: the assets are being sold. Production is still live. I built and ran the platform, I have never owned any part of the company, and the last thing I shipped to it answers the telephone.

About these screens

Every screenshot here is the software itself running, not a mockup, and the last one is today's system on a copy built for it. The labels, the layout and the way it works are real, and the wheels and orders in them are invented.