A business case

TLDR: The long and random argument I make to myself about why I’m going to start putting energy and resources into promoting something that could be stamped finished.

Time to make a decision

I’ve been thinking about my EFL worksheet generator. The thing is this: it does what I want, now. Almost exactly how I want it to.

I could declare it finished. That’s a crazy idea to me.

And yet, is it amazing if I’m the only one who knows it’s amazing? What’s more, ever since I decided to move the thing to the internet, as opposed to making the desktop interface better, I’m paying hosting costs. Not a ton of money, but much more than I would pay for a website like ESL Library.

Should I move it back offline?

I’m asking myself these questions because I’ve realized that this will never be a completely finished project. I’m taking a Udemy full-stack bootcamp, because there are ways the interface could be more amazing.

But, as I started looking into how to promote a web page, and even paying money to experiment with AdWords, I realized I wasn’t sure that was what I wanted to do. Am I the kind of person who gets excited about making and then promoting something? It doesn’t feel like who I am: I’ve never really felt comfortable saying “look at me!”

At the same time, it’s clear that “if you build it, they will come” is not a great strategy to follow.

So, I have to pick a future for the project.

The case against monetization

There are three big arguments against pursuing monetization. First, is the fact that I’m not really opposed to monetizing the website, it’s the fact that I’m opposed to investing a lot of energy promoting it. It’s just that I don’t think I can have one without the other. (Well, I could try and promote it without monetizing it, but then I’d be increasing my workload for… I’m not sure what for. Ego?)

The second argument against the whole thing is that I’m not sure it fits into my sense of who I am. I like the idea of being a “maker.” It’s a cool title and one I feel like I can give myself. There’s something existentially satisfying about having an idea and turning it into a reality.

Marketing, on the other hand, doesn’t feel like who I am. Or, I’ve never looked up to people who are great at promotion. The title “promoter,” to my ears, doesn’t sound quite the same as the title “maker.”

The last argument is time. I want to learn Latin. I want to work on other projects. Some of them are already pretty fleshed out as ideas. And, the worksheet generator is threatening to turn into a project that will take over my existence. Some of the things I considered doing as part of promoting it include:

  • Continuing to prioritize making free EFL materials.
  • Starting a blog focused on EFL teachers in Germany, to promote the site.
  • Making online tools to automatically generate materials from a text. (Copy-and-paste text from a company’s website to get a gapfill exercise prepared.)
  • Making a YouTube channel

The thing is, any of those could become a time-suck. Trying to do a combination of those and perhaps also paying for promotion… Well, it would require me to make a lot more money off the site to make it worthwhile.

The argument for monetization

On the other hand, as things stand now, the site doesn’t ‘feel’ finished, because nobody uses it. If someone told me he was proud of the site he’d made, but he was the only one who used it, I don’t know if I’d be as impressed with that person as I am with myself right now.

What’s more, a lot of the things I want to make are web-based. If they all incur costs, is there a point if I don’t know how to attract users? Why work hard to make the next site, if it’s just going to be a tool that I use on my own?

And, further, I could use the money. Not in the Elon Musk the-rest-of-my-career-is-a-working-retirement kind of way, but in the more modest what-will-I-do-if-I’m-ever-too-sick-to-work-for-more-than-a-week kind of way. A passive income would go a long way towards stability.

That brings me to the last argument for monetization (and the stress of promotion): I don’t want to be a career coder. I love making stuff, but I don’t think I could bear the frustration of coding just for the joy of coding well. The fun, to me, is in turning a dream of my own into a reality. I’m getting better at all this (though, by no means good), but I wouldn’t want to wind up in a spot where I have to go look for a job as a novice coder in my 40s, in Germany.

That means that, if I’m going to keep doing this, I’m going to be responsible for building entire projects, from start to finish. And, well, by that standard, the website isn’t finished. If I want to make an app to use in the classroom, or the fantasy pilgrimage website, all of these things will only work if I can both make, and sell them.

The business case

Here’s the last bit of reasoning: What would it mean for the website to be worth my while? By which I mean money. How much money means “this is why I do all this extra work?”

Obviously, there isn’t a maximum, but €500/month would mean I could quit one of my jobs and reduce the number of hours I have to work. That’s 50 people willing to pay €10/month for the service. Or, 71 people willing to pay a discounted price (if there’s a €10/month, €90/year kind of option).

Needless to say, I think those are great prices for what the site does (and for the amount of work I do making it work).

I haven’t been able to find out how many people teach English to adults in Germany, but I’m confident that there are at least 50 in Dresden. So, if I focus on the German market… the business case is compelling.

It’s compelling if I can learn how to communicate about what I do, and why it’s great.


New Projects

A project is finished

I’m planning to wind down the “actively developing” part of the worksheet generator app this week. It’s weird to think that I will then (well, really, already do now) have a project that is finished.

It is my first finished project.

But, that leaves me wondering what I’m going to be devoting my energies towards. I really enjoyed working towards something, and I’ve been wondering what to get at. There are, of course, a few candidates:

User administration

Originally, the next thing I thought I would be tackling would be creating some Model objects and views for user administration in Django. The logic is simple: I’ve been creating a disorganized hack of these things as I realize I need them. Wouldn’t it be better to have something unified?

Further, I’ve never created an app to be reused in Django. I know it can be done, and I’m certainly smart enough, so why not focus on that? I was thinking that it could incorporate the following, at least:

  • Integrating that wonderful “signup with Google” and “login with Google” functionality that I like in other sites
  • Support for beta testers and normal users
  • Payment integration, as well as support for “you haven’t paid” account locking and “your account expires on” account management.
  • Tools to see how many users are regularly using a website
  • Tools to automatically notify inactive account owners of impending deletion, and then, of course, to automatically delete said accounts.
  • Arbitrary numbers of user properties, as well as the ability for the administrator to sort users by those properties and to send mass emails. (Meaning: the ability to send an email to all the beta testers in Germany, for example)

However, I’m finding that, as I wind down work the worksheet generator (and look forward to spending no small amount of energy creating resources for it to use), I’m not very excited about tackling that. Though, logically, user management would be something I’d use before tackling the fantasy pilgrimage.

Fantasy Pilgrimage

Something I’ve thought about for a while, it remains in that golden sweet spot where “project I think people would use” and “project I think I can accomplish” overlap. The idea is simple: integrate with the Google Fit API to allow a user to set a start and finish point for a “fantasy pilgrimage” and then show on a map how far they would have progressed towards that destination, if all of the movement captured by Google Fit (or whatever app is integrating with it) were dedicated towards that.

In short: if all of my runs were strung together in a long line (rather than being circles that always end back where they started), how close would I be to the city of Rome?

It would have the advantage of being a usable web application that would give me some hands-on API experience, but it does seem to require the user management, and I just don’t seem too excited about that, for whatever reason.

But, I could move away from coding and try focusing on writing for a time. That’s the next candidate project.

The heartbreaking truth behind Destiny 2

This is a simple writing project that I keep thinking about whenever I play Destiny 2. I don’t play often (Sundays, with my brother), but it’s the only video game I do play. Back when we played Halo, I tried my hand at fan fiction where the Halo world intersected with the world you and I know. (My brother couldn’t play because he had to go to a wedding, so, of course, I wrote a story of him being at a wedding when a drop ship began disgorgin aliens and he alone was able to kill them all.)

The thing is, Destiny 2 doesn’t have really strong characters that I want to incorporate into fan fiction. Instead, we keep noticing details about the game that we love, and wondering how the developers came to settle on them. I’d like to write up those fake stories. (Including a cast of completely fictional programmers and their internal feud with the people in human resources).

It would be a change, but I don’t know that I’d be as proud of what I built as I am of the worksheet generator.

That brings me to the idea of creating an app.

ESL Detective game

Pirating parts of the idea of a boardgame that my kids play, I had a great idea for a mobile-device-based listening game for ESL students. The idea is this: with a very simple menu, students have to play the role of detectives solving a robbery. As they pass the device around, each person takes turns making decisions, but has to consult the group (sparking, I hope, conversation).

There’s nothing to watch, but everything you learn is played via audio. Like most teachers I know, I have good bluetooth speakers that everyone in the classroom could hear at once. That means everyone learns everything simultaneously, and that there would be paper on the table on which to record the things we learned.

Basically, as you moved through the story, you would learn things like:

  • Susan is very short
  • Edgar speaks German
  • The thief was very tall
  • Paula has short, grey hair

And, students would have to record these things on “suspect cards.” Eventually, as more is learned about each suspect, as well as about the thief in general, the class should be able to successfully accuse one in-game player.

It seems like it would generate conversation, practice listening, and be a change from normal classroom activities. So, of course I’m in favor of it.

I like the idea so much that I’ve started watching YouTube live-coding videos of people making apps with Flutter (which promises to make it possible to create apps for both android and iOS), but I’ve had trouble installing Flutter myself. (It doesn’t seem to find components that I think I’ve installed.)

Still, this is the one I’m most excited about, and it seems like it would be pretty straight-forward if I could get flutter working:

  • Plot out the story
  • Assign a few friends to read for me
  • Put the app together in a series of button interfaces
  • Test it in a classroom

It’d let me try creating an app, uploading things to the various play stores, and it would be useful to people outside Germany (unlike the worksheet generator, at the moment).

But… for all that to work, I need to get Flutter working.

Picture Matching!


A picture matching activity!

I didn’t plan to add images to the worksheet generator, yet. I just wanted to wrap up the interface and include images on the list of things that would be included in a 2.0 update. After all, there are other things that are really pulling at my attention now.

But then…
I found out that I’ll be teaching a beginning English group soon, and I knew that something I wish I had available would be picture-based activities. After all, things like definitions and gapfill exercises require a certain level of English knowledge before they’re helpful. And, though I’m ready to push my students, that seemed unnecessary.

As it stood, the only thing the worksheet generator would have done for a beginning group is create translation matching exercises, and manage classroom vocab lists. (But even the vocab lists would include definitions that would be impossible for the students to read.

Pictures were the way to go, and they’d been planned, anyway…

It was a bit hurried
Fortunately for me, I’d been poking around in the code, slowly getting the interface and behavior to where I wanted it to be. That meant that I’d already had the days-long process of asking myself “how did I manage that?” and “why is this here?” behind me.

Adding images went surprisingly quickly, though I did run into trouble with PNG files that had a transparency set. (They printed as solid black in PDFs, no help at all.) The internet had a solution, of course, and I quickly changed the way images were uploaded to automatically account for that.

Later, I realized that I could have made the images behave more like other resources (each teacher could add his/her own, there could be regional ones) and I’d still like to do that, but I’m still moving forward. There have to be some features to implement the next time I visit this project.

So, I moved from adding pictures and making a memory into creating the exercises.

Formatting the picture matching exercises was a bit harder. They had to look good (to me) and be compact enough that they could be the first page of a multi-page worksheet without breaking across two pages in an awkward way. (Don’t you hate that?) And, of course, they couldn’t be too small or you wouldn’t be able to see what the images were.

Worksheet progression needed fixing
The way the whole thing is supposed to work, nothing comes onto the second page of a worksheet without having been on the first page of the previous worksheet. The whole idea is to ‘automate’ reviewing the vocabulary for the students, right?

But, some words just can’t be part of a picture-matching activity. What’s a good image for ‘name’ or ‘industrial?’ So, picture-matching activities have to exist outside the whole system of progression, which was doable (and skipping code is certainly easier than creating new code) but it required a certain degree of concentration.

It’s not finished, yet
I’m not using this code in ‘production,’ yet because of one simple thing: after adding a bunch of images to the system, my existing groups would suddenly have a lot of picture matching activities with vocabulary stretching back to September of last year. One review activity seems reasonable, but after that the activities have to feature relatively recent vocabulary.

The solution for that is to make a tool that will mark vocabulary as ‘finished’ with the picture matching activities. The idea is that I’d be able to go into a group’s settings, and say “mark all the vocabulary from before January of this year as finished” and the system wouldn’t use them in new worksheets.

It should be straightforward, but I haven’t found the time to do it, yet. I want to, before I put a last few finishing touches on the interface and then start soliciting beta users (again).

Wish me luck.