Preparing for Clowns, or what I learned from a Twitter-fight

The CodeNewbie chat last night was about dealing with bullies, and, since that dovetailed so well with what I’m working on right now, I thought I’d try to be a bit more active in blogging about what I’m doing.

You see, I think my app is 90% finished, but I’m taking a break from features to get ready for the public. Which, really, means, to get ready for the jerks. You see, the worksheet generation app isn’t a social app. The user’s interaction with it is basically all centered on the user and their own groups and classroom resources for their groups.

But, contributions are shared. That is to say, if you need a translation for the word ‘web app’ for one of your groups and there isn’t one in the system, the system just asks you for one. But then, the next guy profits by the translation you added. And you’re profiting from the resources added by others.

The Twitter Fight

But then, I got in a bit of a fight on Twitter. I’ll post sometime on the idea of ‘defending the ancestors,’ and why I don’t like the term ‘the ancestors’ being used as a dog-whistle for racism (racist dogs!) but that was what it was about. And it wasn’t nice.

While I’m a middle-child and can handle Internet strangers being mean to me, I realized that the guy I was fighting with had the advantage: his Twitter handle was only for his trolling. My Twitter handle connected to all my life, and he could see that, use it in a fight. And, because I tend to fear the worst, he could start being a jerk in other parts of my life.

I realized that, when I start posting about the worksheet generation app by name, with links, anybody who felt like they didn’t like me (and there have been a lot of those people in my life) could create a free account, and just throw a wrench in the works by adding terrible resources.

Imagine if a legitimate user — maybe even one paying for the service — wanted that aforementioned translation of ‘web app’ and got something like ‘where we see the naked photos of your mom.’ Even worse, what if that person — like I often do — didn’t proofread that worksheet before handing it out to students. (At some point, worksheets will be emailed with a mouse-click.) What a nightmare.

Worse than paranoia

I talked myself back down from “Twitter people will be mean.” After all, the solution could easily be ‘just charge everyone.’ Who’d pay me money for the privilege of trolling me?

Then I realized I shouldn’t worry about Twitter trolls making accounts and being jerks. I should worry about people just like me thinking that they’re being funny. Or, even worse, thinking that the resource they’re making is appropriate for their students. After all, we teach adults, whose to say that we can’t include “your mom” jokes?

My real  nightmare is someone either testing out the system, playing around, and putting random crap in… Just to see if it really appears in a worksheet.

Of course there’s a solution

I can deal with it. Of course I can. There’s not a problem without a solution.

My interim solution is, for now, giving users the opportunity to explicitly say “this is part of an inside joke with this group.” You can easily add resources that will only be used for a single group. Easy.

The other thing is pretty simple: all resources are immediately available to the person who creates it. Everything else has to be approved, first. As users are added, it will be possible to say “the resources added by user_x will be automatically available,” but, until then, it means that I’ve invested a lot of time already (all morning today was spent creating the interface and the backend that will enable this level of moderation) into the project of investing a lot of extra time in this project.

And that kinda stinks. It makes me like people, as a group, just a little bit less.

Advertisements

Fear and Frustration

I was going to only title this post “Fear,” and write about how hard it has been to finish up my worksheet generator project, because I knew I was close to having something finished that I could show to my friends and colleagues and get them to beta test it.

I had a timeline — I’d have the website up by the end of the week, show it to a close friend and fellow teacher next week — and be using it by the weekend, while soliciting other beta users. By Christmas, I wanted to be running Google ads.

Fear

The basic premise of this post was planned in a few parts:

  • Pointing out that I often talked about just wanting to have something finished
  • Talking about how it feels to tell people, as an unqualified EFL teacher, that you’re working on a coding project
  • A brief summary of the challenges of converting a project that had been working in Tkinter into a Django application
  • And, last but not least, the surprising feeling of having to force myself to do the things that needed to be done to get the project ‘ready for deployment.’

It was strange to not want to work on the project. But I’d set myself a deadline and my classes will be starting back up. I want to use the website version.

With a bit of time and reflection, I realized that I was afraid of the next steps. Soon, I’d be exposing myself to the possibility of learning that other people don’t think my app is amazing. How strange.

Knowing that, it was easier to push through it. Which brings us to part two of today’s post.

Frustration

I don’t know why I think of Django development as ‘simple,’ what with the heartache and frustration I’ve experienced. Partly, I suppose, it’s because each of the problems I’ve had has been solvable though Stackoverflow and patience. And, probably, because they mostly amounted to me making a silly mistake.

And then I tried to deploy my app.

It was working fine, using the development server on my notebook and, even though it would be a long time before I ran out of tweaks to add, it was time.

So, I did the following:

  1. Paid for an account at Github
  2. Bought the domain I wanted on hover.com
  3. Paid for an account at Linode
  4. Spent hours in telnet and with various tutorials
  5. Paid for an account at djangoeurope.com
  6. Went back to experimenting with Linode, because there are more tutorials specifically for them
  7. Opened some red wine
  8. Seriously considered no longer coding
  9. Googled ‘django deployment’ just once more
  10. Realized I probably ought to be blogging rather than doing this

The power of words

Now that I’m on my second glass of wine and have been thinking about it for a while, I realize that I’m confronted with two problems:

  1. I don’t know anything about servers, of what I have to do to get them working
  2. I don’t know what I don’t know about servers, in order to google it.

That’s the thing about coding, half the battle is just knowing what the coding community calls the thing you’re trying to do. Once you know that, you can use some patience and elbow grease to get it going.

But now? Now I’m stuck. And I’m frustrated.

What my App does

I had an inspiration last night. I realized — after working on it for the better part of two years, including several reboots — what it is that my app does. I’m talking about the worksheet generator, which seems closer to becoming something now than it ever has before.

First, I think I have to mention what it isn’t.

What the worksheet generator isn’t

It isn’t just another application or website that promises to relieve you of the burden of preparing for your classes. I pay for such websites, and I think they have their place, but I’m not going to be able to compete with them, even by doing the job marginally better.

The worksheet generator will not be just one more place that you can go because you didn’t prepare a lesson and you want to print something out for that class that is starting soon.

Working just as much – or more – for more results

I realized that, if I had to tell another ESL/EFL teacher what it was that my app did, it would be to say that it does a lot of the ‘stupid work,’ so that the energy I invest in prep goes farther. There are a couple of ways that this manifests itself.

  • Organization: Never my strong point, this is what the project originally was supposed to help me with. The idea is to have a virtual record of what you’ve done with each group, in terms of grammar and vocabulary. The strength of this organization will be in helping to review regularly. And that brings me to the second thing:
  • Permanence: Maybe this is just one aspect of organization, but it’s something I’ve known that I’m bad at. I’m great at creating a single, excellent, engaging lesson. I’m not so great at tying them together into a series that makes sense in a meaningful way. The extent of my understanding of ‘permanence’ has been to say that, if we’re working on the simple past, I can do a series of lessons about the past.

    What I’d like to do in the future is to have a more clear sense of repetition, by which vocabulary that came up once is reviewed again and again in the exercises of the following week. Even more, I want to say “hey, we practiced this structure three weeks ago, let’s do it again with the vocabulary from last week.” And that brings me to the last main point:

  • Modularity: I don’t know if it’s just me, or if every teacher is lazy, but I suspect it’s the latter. If you’ve ever had a teacher, you probably know what I’m talking about. I’m talking about teachers who create one set of PowerPoint slides and then teach them forever. Or,  in my case, who prepare an exercise for one class and then modify it only slightly for another (generally to realize that I overlooked an inside joke meant for the first class and completely without meaning for the second).

    The thing is this: Most of the worksheets I create in OpenOffice are great for the class they’re created for, and only the top half of page two is really great for the next class. So, I could just copy and paste but, inevitably, searching through everything I’ve made to get enough material feels like more work than creating a wholly new worksheet.

    When I talk about modularity, I’m talking about defining — in XML or in code — the basic structure of some exercises and stringing them together (simple past is comprised of these 10 or so modules, some are text explaining regular, irregular and the ‘be’ verbs in the past, others are exercises practicing them…) and then just saying to my app “hey, we’re starting this block on the simple past” and it adding one module to each worksheet until the block has run its course.

    It’s important to note here that this is going to be in addition to the other ‘modules’ in each lesson’s worksheet — whether they’re vocabulary review or a reading text to take home as homework. And, further, that a module is going to define how the exercise is created, but I’ll still be prompted to generate new content for it (“Enter a sentence in the simple past using word ‘ginormous’.”) (Fun fact: I’ve never taught that word in my lesson.)

Looking at what I’ve written, I’m beginning to think that maybe the unordered list might not have been the best way to get that done. Still, I think that summarizes what will eventually make the worksheet generator different from the “we do the work so you don’t have to” websites.

Teaching a computer grammar

It seems reasonable to say that the best way to develop a killer product might be to make one that you yourself would pay for. One of my recent business ideas (not the one I shared, obviously) was to make a sort of ‘worksheet engine’ that would automatically generate ESL worksheets from a corpus of text.

Naturally, I’ve since had other great ideas (it should manage lists of vocabulary to review, so that those words come up more often in activities, it should make it as easy as possible to re-use work done once already…) I’m focused on implementing the intial idea.

And, while I’ve had very little difficulty with any one aspect of the project (lets hear it for Python!), there is one thing that’s difficult: I’m finding it hard to concieve of a system for categorizing grammar activities.

The idea is that there would be a ‘recipe’ for how they’re made that the program will later be able to follow with a new set of text, generating a worksheet tailor-made to fit the needs of an individual or group.

It’s easy to write something that will remove all articles in a sentence and replace them with a blank space. Or to write something else that will find all the verbs in a sentence and change them to a space followed by the infinitive in parenthesis.

What I haven’t been able to do is to find a scheme to describe these things in such a way that I’m confident that I’ll be able to describe my next worksheet project using it.

Naturally, that means that things are growing as-needed now, and I suppose that’s a perfectly reasonable way to go about doing things. But, I’m a bit frustrated to think that I’ll never be able to be confident that the finished system will be able to quickly realize a new idea.

That is, I think, what the goal of the project is: to know that there’s a syntax by which I can say “this is the kind of worksheet I want to make, focusing on these particular constructions, and with this vocabulary showing up as often as possible” and have it quickly guide me through the steps of turning out a well-designed worksheet.

I guess I’ll just have to call this the beta-version.