Saturday, November 5, 2016

Hackathon 2017

This month has been so much fun! Between projects at work and going to a hackathon in Denver I've been growing in so many ways. I've been learning things about Python, QT, JSON, jQuery and the REST API. It has been a huge learning experience--a wonderful month of learning new programming skills and improving on old ones.

First of all, the hackathon was amazing! I joined on a team led by Josh Kruger, who I knew from the year before. We had a lot of fun working on a program that was originally his idea this year. Essentially, it's competitive giving: you give a set amount of money to a charity of your choice, and you challenge a friend to do the same. Then the two of you play a game (in our example we used Rock, Paper and Scissors). Whoever wins gets the combined money donated to their charity of choice! Win or lose you're still giving but it gives you a reason to want to win the game.

It was really hectic all weekend long: the first night we spent a lot of time just setting up the get repository getting everybody on the same page. When that was done, I worked on the front end and started learning how to use Bootstrap. This was new to me, but nothing all that crazy--I learned to appreciate it as lots and lots of CSS helpers that look really nice! The others had come up with a schedule and started working on game logic/server side code. I also designed the icon theme which was a lot of fun because the let me do what I wanted with it. I love material design, so I made some cool-looking buttons and icons that (I think) worked really well with the material theme. Of course, I was using inkscape for that. I love inkscape and I really impressed some of my teammates with what it could do while I was there. Josh introduced me to the atom text editor, and while I love the KDE text editor, Kate, I found some pretty cool features (usually installable packages) that made Atom an editor I can't ignore.

Once we had the interface working the biggest challenge was to get the animations done for the little game just to show who was winning and who was losing. We didn't get as far as we'd have liked, but we did at least have an interface and some basic pages that showed people the core ideas. It must have been enough because our team actually won! Best project started before the Hackathon. It's kind of funny, that's exactly what we won last year, too, with the Library Box project! Crazy how that happens sometimes.

There were some other seriously awesome some projects at the hackathon. One of those was an Amazon Echo artificial intelligence that would read you recent news articles from the internet, then it would read you a Bible verse that actually had something to do with the incident! It felt like science fiction listening to it at the demo. Another thing was an app to help people grow their relationship with God by helping to make daily habits. It would show you your history and things you'd learned recently. Looked pretty awesome! If they release that app I would love to use it Some day.

On my way back I was able to visit friends and family in Pueblo. It was a blast meeting people that I hadn't seen in months, especially my sister and Mom.

At work I have been having lots of fun working on linking up our mail server, spam filter and customer management software to automatically sync with each other. This means finding an API for each, learning how to use it, getting data from them all then intelligently acting on it. The first goal is to figure out where our duplicate accounts are, and which ones are broken or left over from old customers. Eventually, we'd like to automate account creation, too, and this is all possible so far with the tools I've seen that are available.

Our spam filter program has a REST API, which made things real easy. They even had a python wrapper for it, to boot! It was a little old, used Python 2, so I updated it to 3 and have been able to do everything I need. Our mail server uses perl scripts, and they already have put several on the website. Those pretty much do what I need. We keep a lot of the information in a MySQL database, and I've been able to log in and pull data from that, too. All these different parts are finally coming together. Automation, here we come!