Happy birthday!

If you’re on Facebook, you can expect your phone to buzz a lot on your birthday, as people wish you a happy birthday. This year, I decided that the data coming in was the best gift of all, so I threw it into a Google Spreadsheet and started analyzing it.

Locations of wishers

Posted in Data Analysis

World Series of Birding App and Dashboard

Each May, birders from across the country gather in Cape May for the World Series of Birding, a competition to identify the most number of birds in 24 hours. Besides bragging rights, the competition is also a major fundraiser for bird conservation.

Through 2015, all record keeping and reporting was done on paper, and the competition culminated at midnight with a mad dash to get the reports in, at which point the organizers would verify records, tally up scores, and figure out the winners.

The solution

I quickly identified 3 major users-

  • Competitors, who needed to quickly find and report a sighting, with proof as needed
  • Organizers, who needed to monitor progress throughout the day, verify questionable sightings, and tally scores quickly
  • General public, who needed live updating stats throughout the day

For competitors, I wanted to provide a way to submit sightings through their smart phones. Due to the quick turnaround, and wanting to make sure it was accessible to all competitors, I opted for an HTML 5 web app. I used the Framework 7 framework, which provided theming as well as some methods that allowed me to quickly build navigation and views.

IMG_4463  IMG_4464

Since competitors would be moving throughout the entire state, I implemented an HTML5 Offline web cache. I used WebSql for local storage.

Since the rest of the website was being built in WordPress, I decided to build the component for organizers on top of WordPress. The data from the web app needed to get to WordPress, so I used an open source library called WebSqlSync to implement a 1-way sync that used a custom API. There was a clear separation of species data that was coming from competitors and the approval data that was added by the organizers.

Through a Wordpress plugin, I built custom post types, added custom permissions, and implemented a custom API. I also added multiple custom tables using DataTables that showed organizers the information they needed. In order to allow them to quickly approve sightings, I added a modal overlay that allowed authorized users to perform actions from the front end.

Screen Shot 2016-05-30 at 8.10.56 AM Screen Shot 2016-05-30 at 8.12.06 AM

For the general public, I created and themed a heads up display with key stats as well as a tag cloud display of the species reported so far.

Screen Shot 2016-05-30 at 8.13.07 AM


Testing was a big concern for me- since this was a 1 day event, there wasn’t an easy way to replicate all the variables. I wrote unit tests to verify calculations, and also used a small group of beta testers to make sure the app worked on a variety of devices. I also provided extensive support on the day of the event to ensure that things ran smoothly.


The event ran smoothly, with only minor glitches that were quickly fixed. Competitors found the app simple to use, and seemed to prefer it over the old method. Organizers were able to more quickly tabulate results, and were grateful to have an earlier night. The general public seemed eager to have live updates.


Posted in Apps

Review of Learning iOS Programming, by Alasdair Allan; O’Reilly Media

I’ve started making iOS apps, and started out using PhoneGap, which allows you to wrap an HTML5 app into an iOS app. This has its limitations, and so I wanted to see about writing Native apps.

As part of O’Reilly Publishing’s Blogger Review program, I received a free e-copy of Learning iOS Programming, 2nd Edition, by Alasdair Allan.

I have been working on and off to learn Objective C for several years, and this book was the tipping point that pushed from frustration to understanding. I’m not sure if that’s due to the book or just that I was actually at a point where I had a strong enough base to understand.

This book assumes that you know a fair level about coding before getting started. Ideally, you would know more about Objective C than I started with, but the book does spend 2 chapters with the basics.

The book was updated for iOS 5, but at times that transition is incomplete and sloppy. Code was good the first time it is shown, but often it reverts in later rewritings. This actually worked well for me though, as I was able to learn quite a bit by fixing the code to make it work.

Overall, this book was very helpful in getting me started with native coding.

Learning iOS Programming

(Disclaimer- this post is part of the  O’Reilly Blogger Review program. My only compensation was a digital copy of the book.)

Posted in Apps

What To Brew – a new iOS App

I have a long commute, and often take the bus. This gives me plenty of time to work on side projects, and one I’ve picked up is developing apps for iPad/iPhone/iPod Touch.

My first apps were Bird Codes and Band Codes, developed with my brother for bird watchers.

Today, Apple (finally) approved my third app which combines two of my hobbies- coding and homebrewing.

What To Brew simply gives suggestions on what to brew when you are out of ideas. It also provides a lot of info homebrewers want, with links to recipes and kits.

Click here for more info or go to iTunes to purchase What To Brew.

Posted in Apps

An Update

Life’s been fairly busy recently, but I thought I’d give you a bit of an update on my life.

I’ve been working at People Productions quite a bit. It’s been a great mix of growing my skill set and refining what I already know. I’ve been able to do production work for the first time since college, which I have really enjoyed. I’ve also had some great projects to edit, including e-learning materials and promotional videos. I get some motion graphics work as well, including some of the sections in the 2012 Boulder International Film Fest Intro video.

People Productions also has a rapidly growing iPad/Web app that does mobile presentations called UpSync, so I have been able to learn some of the tricks for getting video assets to work well across many platforms.

I’ve also had the opportunity to do quite a bit of work for the East Cheyenne Gas Storage Project, including a project overview video. I’ve enjoyed learning the corporate side of video editing both with East Cheyenne as well as many of the clients I’ve worked with at People Productions.

I have a nice long bus ride some days to work, so I’ve been using that time to get some other things done. I recently collaborated with my birdwatching brother to develop 2 iOS apps for birders. I’m also working on some other apps that may be released in the near future.

What’s next? Check back and see.

Posted in Video

Splitting subtitles automatically

I’ve been doing a lot of subtitle work recently, and have really enjoyed using Annotation Edit, which does pretty much everything for subtitles. Except for one thing I ended up doing way too much- splitting subtitles into 2 lines.

So, I wrote a script that would take an STL, and split each line of text into 2 lines, as close to the middle as possible. To get started, download subtitleSplit.py and unzip.

To use subtitleSplit.py, open up Terminal on a Mac, and run the following command-

python /path/to/subtitleSplit.py -f /path/to/original.stl

This will split each line and spit it out into Terminal. To save this, you can either use the “>” trick, or specify an output file.

python /path/to/subtitleSplit.py -f /path/to/original.stl -o /path/to/new.stl

The default maximum characters per line is 35, but you may need to change that, depending on your text size and font. You can set that with the -m flag.

python /path/to/subtitleSplit.py -f /path/to/original.stl -o /path/to/new.stl -m 45

For coders, this file contains a class called SubtitleSplit, which contains more options than are available through the command line.

Let me know if you run into any problems.

Posted in Editing Tagged with: , ,

NLE Feature Request: Sequence and Project Variables

In my second installment of crazy things I want in my NLE- Project and Sequence Variables.

A new window would be available in the NLE, called Variables. There, you would create a new variable with the following attributes:

  • Type (number, text, file, boolean)
  • Scope (Project, Sequence)
  • Default value (This would be where you set the values of project variables, and set what sequence variables would display before they are set on the sequence.)

Then, if you want to use a variable, you simply drag that variable from the Variable Window to where ever you want to use them. Variables would need to be built in to the NLE at a very root level, so that variables would be accessible by default from anywhere, including third party plugins.

Sequence variables would be set from within Sequence Settings. A pane would display all the variables in the sequence, and you could set them easily.

Example 1: you need to take the same commercial and make 4 different versions, each with a different phone number that comes up in 2 places.

  1. Make a sequence that is completely ready to go, except the phone number.
  2. Make a new text sequence variable called PhoneNumber, with the default to (555) 555-5555.
  3. Add a text generator to your sequence, and drag the PhoneNumber variable to it. Format the phone number how you want it.
  4. Repeat for the second place the phone number comes up.
  5. Duplicate the master sequence 4 times.
  6. In each one, change the PhoneNumber variable to the correct phone number.
  7. Output.

Example 2: You need to output 2 versions of your show- one with titles, one without.

  1. Make a new number sequence variable called TitlesVisible with a default of 100.
  2. Add the TitlesVisible variable to the Opacity of each of the titles in the sequence.
  3. When everything is done, duplicate the sequence, and set the TitlesVisible variable for that sequence to 0.
  4. Output each.

Using variables would take a bit of planning and foresight, but could save a lot of time in the long run. It would have to be integrated very well to be useful.

I see this as being very easy to use, yet very flexible. It should allow for variables in variables (so, a text variable could be used inside of a file path).

Would you find this useful? How would you use it?

Posted in Editing Tagged with: , ,


ChinStr.apps is a niche hobbyist app development company, specializing in apps for birders and homebrewers and in making Big Data relevant. Read more about ChinStr.apps.