Hi. We’re [High school name censored for privacy], and this is our second year here at the Media Championships. I’m blue linden, web manager and tech lead at The Verdict ([HS]’s newspaper) and the [HS] Lit Mag, and I’m here today with Ms. [Teacher], the adviser to The Verdict. Today’s lesson is about technology.
Look. The lesson you are about to be taught is no ordinary “learning how to use Google Sites” and “use interactive lessons more often” type of thing. We’re here to teach you how to get started with building the tools you’ve always wanted but could never afford. And we made one of our own, which I’ll talk about later.
Imagine you’re running a newspaper. You have a list of tasks that need to get done and a bunch of people who have to do them. How are you going to get the people to do the things in a way that respects their time, but also actually get the job done when it’s important?
Back at my middle school’s newspaper, The Panther Post, we had an editorial chain of command. A writer would put their article in a spreadsheet. They would fill out a form saying that they did what they were supposed to do, like a checklist. Then, the article’s section supervisor would check the article for obvious spelling mistakes and make sure that best practices were followed. So far, so good, right? Next up, it went to our copy editor. Her job was to… do the exact same thing. Next, it goes to the two editors-in-chief, who have to format the article, make sure it’s following best practices, make sure it’s relevant, fact-check it, and balance it. Finally, it goes to the Web Editor, who formats it, checks for plagiarism, adds images and publishes it.
If you’re building a tool to help manage your operations, it fundamentally has three responsibilities:
- Remove the choke points. Make sure that your production doesn’t rely on any specific person being available to continue humming along.
- Remove the bloat. Get rid of any processes or customs that don’t serve a purpose. Cut through the noise and get people to only do what they have to.
- Meet people where they are at. Make it easier for them to do their job.
The Panther post effectively did… drum roll please… None of these! I don’t blame them, really, but we had both ends of the spectrum in terms of our inefficiencies. Often only one person could do a job, so articles would be delayed by days if a person had a test or something. And we also had a bunch of stuff that everyone had to do that served no use. That best practices checklist I mentioned earlier? No one ever actually looked at it. People would just copy the document and paste it into the sheet, and no one cared. It was a waste of time, because it was unenforced and therefore pointless. Nothing held us accountable to it.
So our lead time on already finished articles was erratic. It wasn’t predictable - it could range anywhere from five hours to three weeks. People had to light fires under other people’s butts to get anything done, because it was so inefficient. It overloaded people, and at the same time didn’t get much done. If we could have afforded and justified it, we would have bought the off-the-shelf solution: SNO FLOW.
FLOW is a product by the wonderful people over at Student Newspapers Online. They make high-quality products for student journalists, mainly tools to make websites using WordPress, an open-source content management system. Our website runs on it, and I’m sure most of the programs in this class run on it. But it’s expensive. And for good reason! They provide support as part of their subscription, and they make enough profit off of it to sustain their business!
But that’s the thing. They are fundamentally a business. If they can’t sustain profitability for all of their products and services, they have to stop operating them. So if you want to avoid paying out the nose, what are your options? What if SNO goes belly-up? I doubt they’ll publish the code for their software, so where do you as a program go after that?
Well, you could give up and resort to a simple spreadsheet. But I’m sure many of us have had that (or currently do!) and hate it. Too much time doing basic tasks and making sure things still look nice. You could become a spreadsheet wizard, putting custom formulas everywhere and forging your own path, becoming one with ChatGPT as you try desperately to memorize every single keyboard shortcut known to humanity. “It’s the only way to true efficiency!” you say, as you start writing in an ancient language unintelligible to most. Your eyes glow red. Your skin cracks. It’s too late.
So, between creating arbitrary spreadsheets that have no meaning and creating an interconnected nightmare web of various tools that only one person can maintain, what do you pick?
Neither is good, I’m glad that I can say that. So what brought us here, picking between two horrible options that’ll both just make us hate ourselves? I’m not gonna dive into the history of spreadsheets, but I can explain why things are the way they are.
Since… a very long time ago, people have used spreadsheets and databases to organize things. But they’re both flawed for a number of reasons. Databases aren’t user-friendly, but they’re great at storing things in a defined way. Spreadsheets are mostly user-friendly, but they fall over when you try to add structure. To your spreadsheet, there is no such thing as an issue, or an article. It’s just rows, columns and cells.
Well, FLOW solves this problem, right? It gives you a neat interface to look at all of your content through, it simplifies things, what’s not to like about it?
Have you ever heard of a walled garden? It’s a concept of a service that’s really nice. It’s awesome, in fact. Miles ahead of the competition. But what if the service… gets worse? What if it outright dies? What if they raise prices…? Are you gonna just take it? Are you gonna move somewhere else? Well maybe you do want to move somewhere else. You’ve just about had it with these people… How do you bring your stuff with you?
Think about it this way: You’ve rented an apartment, and you’ve moved in. You decide you want to move out, but the owner tells you that all of the things you bought while you lived there have to stay with them. Sure, they say, “you can keep your old stuff. But that nice lamp you bought a year after moving in? It’s not like I’ll keep it, but I’m waving it in your face because I want you to keep paying me rent.”
While you can pass off the risks of living in a walled garden as the risks of living the best life you can, what if the walled garden actually catches fire? SNO, the company behind FLOW, is doing good. But what if they aren’t in three years? What if they get acquired? You’re outta luck, eh?
There aren’t really any good options - everyone wants you in their walled garden.
That is, unless someone new shakes things up.
I’ve been doing tech in student journalism for about two years now. The first thing I learned how to do was style websites using code, known as CSS. Then I started to try and make small parts of them in a language called PHP, but I wasn’t ready yet. That was at the end of eighth grade. In ninth grade, I wanted to create a system that managed interviews and interview requests through a dashboard of sorts, so I used some open-source code from someone else and adapted it to work for my school. Unfortunately I never ended up using it, so it sat unfinished. But I realized that I now had the power to make things in one of the most popular coding languages, JavaScript.
In February of this year, I created a little tool that extracts images from Google Docs. We all have that scenario where someone puts an image into a document, and it isn’t anywhere else. No one wants to do the whole thing to get it back out, so they give up and just find a stock image. Well, that ticked me off, so I spent a few days creating a website where a Docs image can be pasted in, and it would spit out a link to the image file. Super useful. projects.bluelinden.art/glean.
In March, I realized I had a problem. As web manager, I had to oversee the publication of around a dozen and a half articles. (yes, our output is pretty small) More importantly, I had to assign people to manually transfer them over to the website from our shared drive. It would take me four or five hours to do that. So, naturally, I spent thirty hours designing an algorithm that would automatically assign work to people based on their current workloads, and based on how good of a match they were for the work. Art-heavy article? It would likely assign it to someone who’s good at art. All of the information about this stuff was manually input, though, so it didn’t save much time in the end. But the concept was absolutely cool. github.com/bluelinden/autassign.
Then, in April, I decided to start rewriting that algorithm in a more robust language, TypeScript. I started working on it, I finished it, and then I realized that this tool had so much more potential than just an algorithm. So I started building it into a full-fledged app. At first, it was just a more flexible version of the earlier algorithm. See, something you should try not to do with your code is have the code only run if your systems are organized in a very specific way. For example, if I moved one column to the left or deleted it, the whole algorithm from earlier would break. This version would be resistant to that.
I ended up rewriting parts of the app about three times, most recently two weeks ago. And it’s not even finished yet. But I would like to tell you about the largest project I have ever taken on in my life. I’d like to introduce you to Articleman.
First and foremost, it’s a big work in progress as of now. I expect to be releasing the first stable version sometime later this year. I think it may be the best alternative to FLOW that exists, if it’s not even better. The whole idea is to take all of the choke points, all of the bloat that inevitably piles up through no fault of any one person in your program - and yeet it out the window. It finds ways to optimize your processes, not through any sort of AI crap, but through knowing how these sorts of things should work.
If it notices that someone in your program is really struggling to keep up with the assignments they’re given, it can assign less to them next time around. It creates a unified to-do list for every single person in your program, whether they’re an editor or a writer or whatever. And it can automate so many things. It can automatically create drafts on your website for edited articles, so all you have to do is click ‘publish.’ It will let people know when they have new work, when they may have forgotten a step in a process, when something on their list is left undone - Articleman is a love letter to the editors who make everything tick in their classrooms. It can be the training wheels for a new writer who doesn’t know the processes, making sure that nothing goes wrong if the wrong button is pressed. It can manage layout tasks and assignments for newspapers, yearbooks and literary magazines. It can do a lot of things really well.
If FLOW is for the advisors who want to grade things, then Articleman is for people who want to get a lot of stuff done without hating the tools they’re given.
And it’s designed from the ground up to be accessible to everyone. It follows web accessibility standards, and it can be translated to just about any language imaginable by any volunteer. Student journalism should not be an exclusive field. I want to do my part to make sure every person succeeds.
The cost of this must naturally be high, then, right? I mean, considering it has more features than FLOW and requires no “migration process” to start using, I’d hazard on the higher end…
I guess, before I tell you how much it costs, I just want to tell you that my friends were shocked when I told them my rates. One of them was like “You’re charging that much for something like this?”
“Yeah,” I said, “It’s what I think is reasonable.”
…
Articleman is completely free, and the entirety of the code is available online.
This has been a monumental task, and I really need help. I work for three to four hours a day on it, often more, and I need support somehow. Whether it’s a donation or help creating the actual app, anything would help. Know a high schooler good with JavaScript who would be interested in developing this with me? Let me know.
Sign up for upcoming beta tests at articleman.org/beta.