My 9-track mind
"Penguin" / Tamara Schneider (2024)

My 9-track mind

In the mid-1990s, I took my first full-time job working as a programmer for an advertising tracking service called Competitrack, which had a roomful of people fast-forwarding through videotaped television programs just to watch the commercials. We kept track of every single ad in banking and telecom, first in NYC, then in LA and SF, and then in over 70 US cities. The customers were ad agencies who wanted to know what their competitors were doing.

The Nielsen Company offered a similar service, but for the industries we tracked, our reports were the best. We could list every appearance of a specific ad, down to the minute. We’d tell you which channel it was on, the program that was airing, and even whether the ad appeared on national television or just on a local station. Nobody else had that.

But what the agencies really wanted to know was how much money their competitors were spending. We hired a consultant to tell us what the national ads cost. Those were relatively easy to calculate.

More difficult was the pricing for local ads, which was based on a formula:

Estimated Cost = Daypart Factor x Nielsen Rating        

For example, if an ad appears on the early evening local news and it gets a 2.0 rating, we might estimate $75 (weekday early evening for a NYC station) x 2.0 (the Nielsen rating) = $150.

The problem was that we only had a database of airings, but not the ratings.

Nielsen had the ratings, but not the airings.

The agencies wanted both.

Nielsen was instructed by the agencies to share their numbers with us. My understanding is that they weren’t thrilled about it. And they certainly didn’t make it easy.

They shipped us our first weekly dataset. The package contained a large reel of 9-track magnetic tape of the kind that you’d find in a mid-1960s data processing center. No notes, no documentation, no help at all.

Meanwhile, our shop ran entirely on Apple Macintosh computers, mostly Mac SE/30 for personal workstations. Racks of Centris computers running long reports. Iomega Zip drives for storage. No magnetic tape drives. No Internet, no explainers, no YouTube step-by-step videos, nothing like that.

My job was to figure out the tape. I called around and found a computer technician in the city who said he could do it. I went over to his office to talk it over. Sure, he could do it. And then he quoted me an annual price that was larger than my salary.

When he told me this, I became pale and lightheaded and had to sit down. I felt that this was my job on the line, that maybe I had gone out on a limb saying that I could figure it out. This was a big deal for the company. If we could plug Nielsen data into our database, we’d keep our big customers happy. If not, who knows?

I went back to the office with the magnetic tape. I told the boss we needed to buy a tape drive. We found one used. It arrived in a box with no manual, no instructions. I plugged it in. I somehow accessed the drive and managed to get a stream of data moving from tape to the Mac. The data was in EBCDIC format, whatever that is. I opened the file in a binary editor to locate the end-of-record markers and the end-of-field markers. With that, I wrote a parser to convert EBCDIC to CSV that I could import into a database.

And it worked! Every week, we received a new tape containing the Nielsen ratings for every half-hour for every television station in the country. With that, we estimated the cost of every single ad in our growing database. We could tell you what a company was spending for a campaign, or for a product category, or as a company.

Our sales team would tell prospective clients: “This is what you spent last year.”

“How did you know?”

QR Codes by the thousands

I was reminded of the 9-track tapes when trying to figure out how to create QR codes using Power Automate.

In theory, it’s simple. Within the Power Automate low-code maker interface, you search for the action you want to perform, fill in the blanks, and that’s it.

The problem is that for anything you may want to do, there’s an entire list of candidate actions, each with different terms, conditions, rate limits, and prices.

For example, Encodian is the standard option, putting QR Codes into a metered bundle which starts at $499 per year, for 500 credits per month, for a unit cost of about $83 for 1000 QR Codes (or kQR for “kiloQR”). The cost comes down to $38/kQR with sufficient volume (12k codes/mo.).

That seems high.

You’ll also find premium connectors ($15/mo. subscription to Power Automate Premium required) from independent publishers including OpenQR ($43 for 500 QR Codes, or $86/kQR), GoQR (free API), and QuickChart (free API and bulk QR Code Generator).

Free API is good, right?

Even without premium connectors, with the standard Http action within Power Automate, you can connect to any API that offers a free QR generator. That’s exactly how I built the demo for my Convention City app. But I won’t bother mentioning the service that I selected, because the flow suddenly stopped working. One day the host website simply disappeared. Fortunately, that was after I had given a big demo.

It’s time to build my own QR Code generator.

The import/export business

If you know Python or any other major programming language, you’ll find libraries and packages to do just about anything, including QR Codes. That’s the huge advantage of pro code over low code –the sheer weight of history. You can build powerful solutions using massive libraries of mature, tested open-source code with no meters, no annual plans, no limits.

Let’s say I have a 10,000-row database and I want a custom QR code that deep-links to the page for each row. I could simply batch-export the global unique IDs, run them through a Python program on my local computer to create the images, and batch-import the results back into the database. That costs nothing. (Other than the time it takes to figure out batch imports of images.)

But seriously, batch processing in 2024? What am I, a bank?

That’s why I’m using Azure Functions.

I found one tutorial that runs Node.JS (node-qrcode) from Power Automate, and another that runs a Python package (qrcode) from Power Apps. The Quickstarts are also quite helpful, for whatever language you prefer.

I’m mashing them up to create an Azure Function, written in Python and called from Power Automate, that uses the segno package to generate colorful, graphics-laden QR codes. I’ll start with just the basics, and then extend the API to cover more possibilities, at what I expect to be an extremely low $/kQR, fractions of a cent per run.

With that in place, I’ll be able to build out the Convention City app exactly the way I envision it, without worrying about external dependencies.

---

Low-code tools allow you to build production-quality database apps very quickly. But there’s no substitute for the breadth and scope of what you can do in a modern code library.

It’s possible to connect the two, but it does take some expertise. Either you pay for premium connectors, rely on freemium services, or invest in building your own services.

With low-code, you’re essentially living on a lush but isolated island – with all the positives and negatives that go along with it. If you want something that doesn’t grow natively, you’ll need to import it, and you’re obliged to go through customs and pay taxes. That makes everything more expensive.

And, to continue the analogy, if you can get your own ship and fill your own containers with low-cost products and supplies from the mainland, you can run a very profitable import-export business.

 


A selection of QR Code connectors in Power Automate

 


Michael Bundschuh

Sr. Tech Program Manager at Comcast Technology Solutions

4w

Hey Ivan. Good article on the trials and tribulations of creating a software solution using 3rd-party code. I like reading about your problems and solutions.

To view or add a comment, sign in

Insights from the community

Others also viewed

Explore topics