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.

Advertisements

It doesn’t have to be on your phone

After completing the django girls workshop — I still want to do the part with authentication — I’ve been looking for a ‘minor’ project to code as a web app. (That’s in quotes, because I think they all grow.)

I’d thought about a beer calculator — for brewing, how much grain to how much water, that sort of thing — but there are plenty of good ones out there.

And then I realized, in my lifetime (not that long!) we’ve gone from assuming things will be websites (“Ha, you could call it ‘myidea.com’!“) to assuming they’ll be apps (“That’d be a great app!“) But that’s probably because we read more about apps.

I’d had the idea for the Fantasy Pilgrimage for a while. Of course I imagined it as an app — after all, I think like many other people — but there was nothing to say that it would have to be.

Here’s the idea (of course, read the page on Fantasy Pilgrimage). But, it seems like a rough draft of the site would be a success if it could do a few basic things:

  1. Use the Google authentication service
  2. Connect to Google Fit to get fitness data.
  3. Calculate total distance traveled since a given date, towards a total.
  4. Display that as a percentage.

Of course, with time, I’d like to use Google Maps and display the progress. But, hey, first thiings first.

We’re not there yet

There are times when I fantasize about volunteering to help kids learn to make apps. Each time the thought crosses my mind, I’m torn. The shy, insecure part of me says “You need to get more experience, first!” But, another, more idealistic part of me, says “Bah! It would be good for kids to see you learning the same way they are.”

I think that second voice is probably right. But, recently, I’ve been glad that I haven’t volunteered. After all, with the magic of kivy and python, it does seem as though app development is something that you can quickly learn.

Case in point: I was talking to a friend (when the best ideas happen) and had the idea for a different kind of GPS running / biking app. A quick search revealed that Plyer allows access to the device’s GPS hardware. It was literally the work of an hour — including extensive Googling, as I’d fogotten some syntax for individual widgets — to get a first draft done.

With the GPS app, however, I didn’t have any GPS hardware on the notebook I was coding on, so I’d have to do the testing on my phone.

No problem.

Or, so I thought.

First, I was able to compile an APK (that’s apparently what we call the file that you can send to an Android phone to install an app), but it didn’t want to install on my phone. Hmm. That’s the kind of problem enough ‘Google research’ can almost always fix.

Then, it was installing, but not opening. Right. Time to connect my phone to the notebook to run the logcat utility. You’d be amazed at the amount of stuff your phone will output — while it’s just doing nothing — to the logcat. Eventually, though, I found it: Plyer wasn’t included in the APK.

Okey-doke. A bit of searching and an edit to the buildozer.spec file and things were fine.

Fire it up again and. . . it just didn’t compile.

That’s where things were stuck for a while — me looking for terminal commands to update individual pieces of software, installing things, removing and re-installing software, trying again — until today.

Today, I went thermonuclear. I deleted the virtual machine I’d been using to compile APKs and I’m in the (very long) process of installing a new one. If that doesn’t work, I’ll be forced to post a question of stackoverflow (something I’m scared of, because almost every question ever posted seems to be considered a duplicate).

To return to the point of this ramble: sometimes, it feels like we’ve (I mean humanity, not that I had any part of it) made software development so accessible that we must be on the cusp of some sort of revolution. And then, you run up against one of the potholes that hasn’t been filled in yet.

This is not a complaint, by the way. This is all by way of “Gosh, aren’t we lucky that not every step in the process is like this?”

A Forest Scene

image

In working on some placeholder art fit the ‘Papa’s Work‘ app, I worked up a forest scene that I’m more than a little proud of.

I’m not going to pretend that it’s not strongly inspired by the adult coloring book I have (‘Enchanted Forest‘ by Johanna Basford).

Still, when accepting that it’s not as original as I’d like, I’m still impressed that a pen I held in my hand was capable of that.

Writing For An App

So, as I move towards a sort of beta (at what point does software become beta?) of the app, I’m becoming more and more frightfully aware of the fact that I’m going to need content to display my idea.

And isn’t that where so many great ideas die?

The idea for the app is great. And, to be perfectly objective, the very general idea I have for content is great: a child talking about how his father goes to work when the child would rather he stayed home, followed by work described by a child who’s only ever been able to ask his Papa about it. And, at the end, the child asks the Papa “Why do you go to work if it’s so bad?” And the Papa can say, “Well, I don’t really like the work. But, I get money if I go, and there are a lot of things I like to do with you — from simple things like eating, to more fun things like going to the swimming pool — that I can only do with money.”

And, yeah, that long last sentence is currently how it goes. I’m not crazy about it (translation: I know it’s bad).

That’s what I’m talking about. As I write, I try my hardest to not think about the need to illustrate everything, but it’s not working. I write three sentences and think “I don’t know what should be happening on the screen during this time.” And the story suffers, because I seem to feel a need to work in as many things that I can get a doodle for as possible.

It’s not good writing. And it’s not going to make it into the app. What I’m wondering is whether it’s an inevitable step in the development process.

Why I Program

As I begin moving towards app development — and, believe me, the thought that that might really happen is pretty shocking to me — the thing I find myself explaining to other people more than anything else is why I started programming.

There are a number of possible answers: I was a peripheral member of the techie-clique in high school, and, in a sense, it’s a matter of getting back to my roots. Every day I teach English to people who think very technically and having a few technical pursuits of my own gives me an insight into how they think.

More than anything else, though, it’s the same reason I like to try my hand at writing: the more I ‘consume’ software, the more ideas I have for new software. It’s like reading a great novel and then thinking, “I’d like to write a story with characters like that, but as students.” To my way of thinking, the logical next step is to fire up the word processor and start writing. Or, in the case of software, to try my hand at a little code.

And, that brings me to the greatest benefit of trying to program: I like to think it’s strengthened my theory of mind for computers. It’s clearly anthropomorphism to think of computers as ‘thinking,’ but I feel like it’s a pretty natural reaction to have to them. For a long time, I’ve annoyed (or thought I was annoying) my techie friends with questions like “Why can’t a computer automatically tag the people in my photos?” or “How hard is it to make a computer understand that open can be both an adjective and a verb?” And, while I haven’t found answers to those questions, my introduction to programming has given me a sense of what a computer can do easily (translation: I can do the code for it) and what is more difficult (everything else.)

This experience is what made me think that my idea for a story-telling app was pretty feasible. It’s what made me realize that making an app somehow understand (read: react to) the outraged outbursts of my kids when it made ‘mistakes’ in telling the story was way out of my league. But, seriously, why couldn’t I create something that would tell one of the many wacky stories that I tell my kids, but with simple animations (look, I just added something to the picture!) and touch response? It seemed reasonable!

I don’t know that I’ll ever make a dime off programming. And I’ve spent enough time teasing my father about his hobbies to know that children are seldom impressed by the ‘skills’ of their parents (unless you can kill a bear with your bare hands, that’s always impressive), so this seems to be something I’m doing for me. Nonetheless, it’s something I’ve definitely benefited by.

The To-Do List

This seems like a pretty big project to me. So big, in fact, that I’m ready to bring in outside help: I’ve already contacted an illustrator and asked if she would be willing to do the illustrations, should I send her a proof-of-concept that she finds convincing. The answer was a “yes,” but a tentative one.

So, outside of the ‘simple’ act of coding, I see several things for me to be working on:

  • Defining what a ‘success’ will be in this project. It has to be more than just a working app, as I don’t think I can afford to pay an illustrator just to prove that I can make the app. And I certainly can’t expect her to work without some sort of reward. What are we working towards?
  • Deciding if this thing is going to cost money? That’s obviously a subset of whether or not I want it to make me money, or if I’m doing all this just to prove that I’m cooler than the next guy. (Still a worthwhile goal, but is it enough?)
  • Researching how to get my app in front of a few eyeballs. I get that it can get lost in the Play Store, but how do I get the people who would be interested in it to see it?

I genuinely love the idea of seeing an idea that I had realized. Sure, it’s not something physical in the traditional sense, that I can frame and put up on the wall. But, nonetheless, it would be something I could point to and say “See that? I had that idea and I made it happen.”

On the other hand, I sense that success is going to require more than just a finished project. And the idea of marketing my idea, of being forced to try and convince people to look at what I made, well, that’s the part of this project that I’m looking forward to the least. Forget the tedium of trying to figure out why my code isn’t doing what I think it should be doing, this will be the hardest part of the project for me.

And that means it’s the part that I need to work the hardest on.