What I’ve Already Done with VoteMate

VoteMate, which is now my new IDS, is something that I had been working on for quite awhile before school started this year. Primarily, I’d set up the basic system that it would run off of, a re-purposed infrastructure and collection of code files I’d created for FindALostPet (actually, a lot of this code dates back to VoteVancouver, and even before that, to RWTweb). By now, I’ve gotten tired of copying this code and taking out the bits that make it FindALostPet, whenever I want to set up a new website, so I created something I nicknamed Foundations; It’s just a folder that I copy and rename to whatever I want my next project to be called.

I’d created a lot of the look and feel as well, and added a few features on top, though nothing that special. Here’s what it looked like at about the time I started time-tracking for the IDS:

screen-shot-2016-08-24-at-08-58-07

The homepage hasn’t changed much since, and pretty much all that has changed has been below the fold-line.

I’d also gotten a source for some of the data I would need: Ridings. Interestingly enough, it’s difficult to come across a good list of all the ridings in British Columbia, at least an up-to-date one with all the proper formatting and nicely organised so that a computer can get at the data quickly. Fortunately, I already knew about OpenNorth’s Represent API from earlier work, so this was made incredibly easy.

The great thing about Represent is that I can give it a postal code and it can return the riding that postal code is in for the next BC election (the ridings have changed since the last election). This makes the sign up process really really easy for users: All they have to do is enter their postal code and it tells them their riding, instead of having to ask them for their riding straight off the bat as I would have had to do otherwise. (I get excited about little things.)

Oh, and that’s what powers this, as seen on mobile:

screen-shot-2016-10-08-at-20-31-19

Once you’ve signed up and confirmed your riding, you’re given your first look at the home stream.

screen-shot-2016-10-10-at-11-21-22

I’m not sure if I created this before or after IDS start, but I suppose it doesn’t really matter. It’s gotten a lot better since then:

screen-shot-2016-11-05-at-18-14-05

Notice the super-fancy list of candidates in my riding. That’s thanks to a nice CBC page someone on Jelly found me: This one. It’s a constantly updated table of candidates as they’re announced, and is really useful for filling in my own data set.

(By the way, for those of you who are also obsessed with small things, I’ve found a really nice piece of software for entering data into my MySQL database quickly: It’s called HeidiSQL. I know, really exciting isn’t it.)

And, for the last couple of weeks, I’ve been working on creating a sign up process for candidates, so that a candidate or authorised campaign agent can sign up and modify their candidate profile. This is quite tricky, because I have to find some way to be 100% sure that the user is actually authorised to modify the profile and represent the candidate. I’ll have a post on that shortly.

Good Intentions

In a totally predictable outcome, my interest in politics and programming have won out: The focus of my first IDS will be informing the British Columbian electorate, and assisting them in the 2017 general election. This will encompass various categories, from government, to computers (for my solution, as typical, is a website and an app), to promotion. To the extent that this project fits within the planners and documents I’ve been given, I’ll try to outline it; otherwise, I’ll throw in random details that I think contribute to building a better idea of what I’m working on.

The project is called VoteMate. The smaller goals are to build a website and app that:

  • Connects users with the candidates in their various constituencies, so that they can ask them questions.
  • Lists candidate and party policies, and comparisons between such, so that users can make a more informed decision while voting.
  • Provides more information about each candidate, such as biographical information.

What resources can help me towards my goal? When it comes to programming, the answer is easy: most APIs, all programming languages, and hopefully a large amount of the bizarre and confusing concepts created by people with code minifiers, have documentation.

Sources for the data used by VoteMate will come from various APIs, such as OpenNorth’s Represent API, which lists constituencies (as well as MPs, MLAs and councilors) for a given location; CBC; ElectionsBC (although no of their data is in an easily-usable format); party websites; Wikipedia and various other Wikimedia projects; and the candidates and their campaigns themselves.

Oooh, and then there are the anticipated problems. Well, most people I know who run startups say that you should never thing about problems, because if you do, you’ll get depressed and won’t do anything amazing. I don’t buy that, so…

  1. Bizarre programming problems. Really, you can never predict these, and instead you just pray to the various gods of programming, computers and Ramen, and hope for the best.
  2. Inability to attract a user-base. This is incredibly likely.
  3. Inability to attract candidates. This is somewhat likely, but somehow, I’ve done it before with VoteVancouver. Considering that I had even less experience then, I am now armed by overconfidence.
  4. Legal issues. Interestingly, talking about political issues during a BC election is illegal, and can result in up to a year in prison. I will of course be contacting ElectionsBC, which does much of the interpretation for this law, to confirm that what I’d be doing is legal.
  5. Security. Lots of websites end in being hacked. In the end, all websites are vulnerable, but there is a fair amount that I can do to lower the likelihood.
  6. Way, way more. Really scary stuff.

How I’ll gauge my progress and when I’ll be done are coming in a later post. For now, I’m just going to keep on programming (I’ve already got the foundations of the website and some of the data ready to go).

Narrowing Down

This is the first time I’ve done an Independent Directed Study, but it’s not the first time I’ve had to narrow down the list of things I want to do. As someone who always has a lot of (probably stupid) ideas, time management is always a problem, and when offered the chance to do an inquiry or IDS, it gets even worse: I have to pick one item that I would get the chance to pass off as school work.

Yes, narrowing down the options is difficult. Fortunately, I’ve managed to go from four possibilities to six possibilities, then down to two. These two:

  • VoteMate
  • Longer piece of fiction

First off, an explanation: VoteMate is my project to connect voters with the information they need and the candidates they would choose between in British Columbia’s next general election on May 9th, 2017. I’m already working on this project and I’d be doing it anyway, even if it weren’t my IDS, but I worry that if I have an IDS, plus VoteMate, plus a whole bunch of other stuff to do, some school, some not, I won’t have enough time to do all of them to the extent I want to.

And the longer piece of fiction is sort of my way of saying “I want do write a novel, but I don’t want to say novel, because then I have to make it longer.” In the end, I want it to be longer than a short story, but still short enough that it’s manageable and doesn’t balloon out of proportion.

For some reason, I’m really torn between these two, mostly because I’ve always wanted to do the longer piece of fiction, but know that I won’t unless I force myself (eg. by making it my IDS) to do so. Yet VoteMate is a project that really needs to be done and has an obvious due date; it’s not something I can do “next year.”

But then, neither really is the longer piece of fiction. I know that every year, something like VoteMate will come up, and I’ll again push the fiction back. Before I was a programmer, I was a writer, but as I learned to make websites and get computers to do nifty things, I stopped writing to the extent that I would like to. I still do stuff, but mostly essays or just imaginary TV episodes that never see the light of the written word.

And no matter what, I know that once I’ve chosen one, I’ll keep looking back and wondering if I made the wrong choice.