My “special group”

I think every EFL teacher has a special group. I don’t mean the one that I love, because I can take all of my ideas to them and get good feedback (though I have that group, too). And I don’t mean the groups where I learn a lot (I have a bunch of them). And, I don’t mean my most frustrating group (that’s a rotating honor, to be honest).

The group

I mean the group that I’ve had for literally years without making a lot of progress. The group that makes me wonder if I’m as good at this teaching thing as I like to think I am.

They’re great people: it’s an evening group that gets together as much out of the joy of seeing each other as out of any real desire to learn English. In fact, half of them are retired and will probably only ever need English on the level of “one beer, please” and the other three only might need English.

They know their English isn’t great, but I think they’re satisfied with how things are.

It goes without saying that I am not satisfied.

So, as I wind up the worksheet generating software (weird idea, but it’s basically finished, though I’ll probably never stop poking at it) I think my next big focus will be on growing as a teacher and using this group as the obstacle course on which I train.

Of course, they get the New Spork City stories every week, and they read and translate them faithfully.

The challenge

I remember someone summarizing her teaching style as “give them what they need disguised as what they want.” And it’s a good philosophy. It’s what I’m trying with these guys.

So, here’s what they want: to come in in the evening, have a good time, enjoy the connection that they have to each other, and go home. They wilt when we obviously drill anything for more than five minutes and, to be honest, they’re quick to grasp something like a structure or vocabulary “for now” but will struggle to employ it even thirty minutes later.

Here’s what they need (I think): They do okay with individual words. Voabulary isn’t the problem. The problem is forming sentences reliably. And, what they need is to practice them in a simplified way until they click and to build up from there. However, if it’s too obviously practice, energy leaves the room.

What I’m trying

I intend to write more with time, and I’ll describe some activities in detail, but I’m trying hard to find activities that feel like a game or a conversation, but which emphasize repeating the same structures over and over again.

In addition, I printed out a game board from LinguaHouse (I think, I can’t find it again…) that focused on asking questions and let them discover that that was hard for them. Then, I made up a first worksheet using the characters from New Spork City going through the fundamentals of questions step-by-step. (Eventually, I expect it to be very similar to the “passive voice for processes” series of worksheets already available here.)

My goal is to follow the same recipe that worked so well with the absurd business resources: make some great worksheets that I can reuse (and share here) and mix them up with customized materials just for the class that are fun to do because they’re about the class participants.

With time, I hope to write up some of the activities that I thought of in order to disguise the drilling I do with them (and other groups), but that’s going to have to wait for another time.

I spent years getting into this situation. It’ll take me a while to get out. But I will.

Advertisements

Iterate

I enjoyed this chapter of The Obstacle is the Way more than the last one. It didn’t seem to be as cliché, and it talked about iterating, which is something I’d already believed in.

The first concept introduced is the idea of the “Minimum Viable Product.” It’s something you’ll hear about if you follow startups much, the idea that you make the smallest possible version of your product and see what people say. (Rather than, as I seem to have done, making a full-featured product and then releasing it to the world.)

The idea is that, people will tell you what’s great, what needs to change, and your product can grow into greatness, rather than you needing to brainstorm that greatness locked away in solitude.

Or, on the other hand, if nobody likes what you’ve made, you move on to the next thing having lost as little as possible.

I like the idea.

Ryan Holiday goes on to say this:

In a world where we increasingly work for ourselves, are responsible for ourselves, it makes sense to view ourselves like a start-up — a start-up of one.

And that means changing our relationship with failure.

Maybe it’s because I enlisted back when “an Army of one” was a thing, but I loved that. And, I loved that he went on to say:

Our capacity to try, try, try is inextricably linked to our ability to fail, fail, fail.

It’s true.

The chapter is a good one, but that’s the core of it right there. (The only historical anecdotes are back to Rommel in the desert again.) but there is one more thing I wanted to quote, beginning with a question that the reader is hypothetically asking him or herself:

Well, why would I want to fail? It hurts.

I would never claim it doesn’t. But can we acknowledge that anticipated, temporary failure certainly hurts less than catastrophic, permanent failurE? Like an good school, learning from failure isn’t free. the tuition is paid in discomfort or loss and having to start over.

I think that’s all true and, on that note, I’m off to start paying my tuition.

(As an aside, the Work Life Podcast has a great episode about embracing negative feedback, but I can’t see how to link to individual episodes.)

Forming a running habit

After writing about how surprisingly motivational the Google Fit weekly running goals are for me, I thought it’d be nice to post an update:

Screenshot_20180121-132845

It took quite a bit of work and more than once I caught myself saying “if I don’t get a run in, I’ll have to wait a long time to push an incomplete week out the other side.” (If that phrasing makes any sense.)

The result was me having more back-to-back runs in the week: generally one 5k and a 7k, and a long run on the weekend. Maybe it’s not the structured approach to running I’d been hoping for, but it’s running.

Glory Days

I think a lot about the song “Glory Days” and of the danger of becoming a person who lives in the past. (‘A lot’ in this context means at least half a dozen times in my life.) The thing is, I used to run pretty regularly and it’s weird for me to struggle to get something done that used to be so fundamental to me.

I can rationalize that my kids are getting bigger, that I’m doing more with them, that I didn’t use to try and code a website in the same off-time that used to be just for reading and running. Nonetheless, it’s important to me that I continue to be the kind of person that I want to be, rather than assuming that having once run a marathon means I get to claim “runner” status forever.

Adding Mailchimp actions to a Django model

As I get ready to try a second time to attract users, I decided to use MailChimp mailing lists to keep in touch with these users, as well as setting up some ‘tutorial’ emails at regular intervals. (I’m imagining something like “You’ve been using dynamic-efl.com for a week now, did you know you can do this to get more out of it?”)

To do this, I’d have to have code in Django that automatically signed members up. That means that this is my first attempt to work with an API, even by way of a library.

I decided to go with the mailchimp3 library and installed it in my virtualenv according to the instructions and set up some variables in my settings.py file.

# Mailchimp stuff
# Authentication
MAILCHIMP_LOGIN = 'login'
MAILCHIMP_KEY = '===>SECRET<==='

# The lists
MAILCHIMP_LISTS = {'welcome': 'listID',
                   'germany': 'listID',
                   'beta-testers': 'listID'}<span 				data-mce-type="bookmark" 				id="mce_SELREST_start" 				data-mce-style="overflow:hidden;line-height:0" 				style="overflow:hidden;line-height:0" 			></span>

The idea here is that I’ll be able to iterate over the keys in the lists, if I ever need to check that the user is in all the lists (for example, removing a user should include removing him from all lists).

To that end, I added a function at the beginning of my models.py file. (This probably isn’t good form).

def mailchimp_get():
    """ Returns a logged-in mailchimp client """
    return MailChimp(settings.MAILCHIMP_LOGIN, settings.MAILCHIMP_KEY)<span 				data-mce-type="bookmark" 				id="mce_SELREST_start" 				data-mce-style="overflow:hidden;line-height:0" 				style="overflow:hidden;line-height:0" 			></span>

It seemed like the easiest way to only write the login once.

Finally, I had to create a few methods in the Model in question (in my case, this is my teacher model, as my users are called ‘Teachers’ in this bit.

def mailchimp_add_teacher_to_list(self, listname):
    """ Takes a listname, checks that the teacher is not a member of the list, then adds it. """
    client = mailchimp_get()
    listid = settings.MAILCHIMP_LISTS[listname]
    if not self.mailchimp_teacher_in_list(listname):
        data = {
            'email_address': self.user.email,
            'status': 'subscribed',
            'merge_fields': {
                'FNAME': self.user.first_name
            }
        }
        client.lists.members.create(listid, data)

def mailchimp_lists_get(self):
    """ TEMPORARY - Returns a list of all mailchimp lists """
    client = mailchimp_get()
    return client.lists.all(get_all=True, fields="lists.name,lists.id")

def mailchimp_teacher_in_list(self, listname):
    """ Returns a bool indicating if this teacher's email address is in the list """
    email = self.user.email
    client = mailchimp_get()
    results = client.lists.members.all(settings.MAILCHIMP_LISTS[listname], get_all=True, fields="members.email_address")
    members = results['members']
    addresses = []
    for m in members:
        addresses.append(m['email_address'])

    return email in addresses

I think the names should be pretty self-explanatory. The mailchimp_lists_get() method was just an experiment based on following the instructions in the documents.

Lastly, I created a view and a URL just to test these functions by printing to the console and looking at the (currently empty) lists in mailchimp.

Summary

It was my first time sitting down and thinking critically about what I wanted and how to do it and I have to say that mailchimp and the library basically made it painless. I have other project ideas that will require more API integration, and it’s made me hopeful.

Live in the present moment

There is not a lot to explain about this chapter title in The Obstacle is the Way. So, I’ll jump to the first quote that jumped out at me further on in the chapter:

For all species other than us humans, things just are what they are. Our problem is that we’re always trying to figure out what things mean–why things are the way they are.

It’s true, and it’s something I think about often. I mean, I tell myself that a deer in the forest isn’t thinking about the looming Monday and returning to work… it’s just feeling safe or unsafe. (To be fair, the deer doesn’t have to go to work on Monday.  But also, its chances of dying of old age are worse than mine.)

The basic idea, the way I read this chapter, is to say that we shouldn’t have a programmed future, as that gives us something to measure ourselves against. Are we progressing towards that future? Is this moment the way we told ourselves it would be?

The book doesn’t say this, but I assume that there’s no indication that we shouldn’t make plans, only that we shouldn’t let those plans overwhelm us.

Something I like about this book is that the author, Ryan Holiday, makes some concrete suggestions:

You’ll find the method that works best for you, but there are many thigns that can pul you into the present moment: Strenuous exercise. Unplugging. A walk in the park. Meditation. Getting a dog–they’re a constant reminder of how pleasant the present is.

And, he goes on to provide one more great piece of advice:

On thing is certain. It’s not simply a matter of saying: Oh, I’ll live in the present. You have to work at it. Catch your mind when it wanders. Don’t let it get away from you.

When it’s not easy for me, it’s good to know that it’s not easy for anyone.

The Road Ahead

As I look at my coding journey, I realize I’ve stagnated a bit. I mean, I’m super proud of the Dynamic Worksheets program, but, to be honest, I’ve moved away from coding.

Lately, the coding work that I do is realizing that something is broken, and then spending an afternoon mostly realizing that my code really does make no sense. And then, eventually, finding the problem and fixing it. It is not as rewarding as actually building the thing was.

And, it’s not for lack of ideas. Or, really, for lack of time (though discipline is a thing that needs to be trained and maintained). I’ve kinda reached a place where I’ve lost track of my next steps.

So, it might help to write through this.

Logical next steps for the worksheet site

I had really hoped that I’d have users for the site before the end of 2017. And, though I shared it with a few people, only one of them actually went through the steps of making worksheets.

So, if I set “making dynamic-efl.com a community of teachers who actually use it (in Germany, at least) to make their classes better,” what are the logical next steps?

Here are the things it makes sense to work on in 2018:

  • Establish a list of exactly which “behind the scenes” tools I want before I advertise, and make them.
  • Draft the series of “welcome emails” as well as “explainer videos” that users will be sent/invited to view with time.
  • Write out a plan for how I’ll approach the market, planning on times to ‘force’ written reflection on lessons learned.
  • Implement the plan.

I’m not going to lie. Most of those things feel more like work to me, than like the play that creating the site was. I look forward to having people use something that I made, and think it’s fair to say that it’s not fully finished until people use it and value it.

So, what are the things I’m excited about doing?

Logical coding goals for the near future

I have ideas for other projects. They meet the standards of “things I would like to use” and “things I think would make the world better.” The thing is, starting a new project seems so daunting now that I see how hard it is to get a project truly finished.

Nonetheless, there are things that I think I can do to get ready for the next project. More than one Code Newbie podcast has included a guest saying something like “there is tons of Javascript in the world that wouldn’t need to exist if people would only learn CSS.” So, as an ongoing project, it seems to make sense that I find a good course and learn CSS before I get around to learning Javascript.

There’s something I’ve meant to get done that isn’t especially sexy. I’d like to create a bunch of reusable Django boilerplate that I could use for basic user management with projects in the future. This is based on the fact that I think I did users badly in the dynamic-efl project.

Django includes a basic User model, but I found myself wanting a lot of other things (some of which I haven’t implemented, yet) like email verification links, something to automatically delete accounts that haven’t been verified or logged into in the last year. There’s more, and I should write it down.

So, put all that together, and it seems that it seems as though it would make sense for me to set the following coding goals in the near future:

  • Pick a CSS course and learn it. (Possibly, also Javascript)
  • Practice writing a Django app that can be re-used
  • Write out what I want the Eternal Customer Model (working title) to be and do
  • Code the Eternal Customer Model and, finally, use it in a project such as
  • The Latin drill program.

That gives me stuff to work on. Look for updates.

The November Fitness Review

So, November was the first month I really wanted to stick to a written training plan. Ultimately, that training plan, while not very ambitious, was something of a stretch goal. I didn’t get it done but did do more than I would have without it.

Successes

I’m counting the fact that I still try to get my plank workout in each day as a success. It doesn’t always happen (happened early today, I’ve learned that I’m more disciplined in the morning) but it happens more often than not. And, as an extra plus, my back, shoulder and arm pain is much improved, if not yet eliminated.

My foot hurts less severely and less often. I’m chalking that up to the foot exercises and will continue them.

The realization that running form matters. While out on what should have been a hard run, I decided to focus more on form than intensity, because my food had been acting up. I was surprised that it was just as effective — as measured by speed — as focusing on intensity would have been, but not quite as mentally draining. (Focusing on actually doing something seems easier than just trying to push myself.)

Failures

For a variety of lame reasons, I only hit my three-times-a-week goal twice in November. And, that was evident in the fact that I slowed down for the first time ever in my monthly 5k for time. It was 28:38 this month, as opposed to 24:37 in October.

Summary

It’s ridiculous to think I’ll get a lot of exercise in in December. December is the month that I spend the rest of the year trying to work off. Still, the experiment was good enough that my next step will be making a plan for December. At least, for the time up to the holidays.