Thursday, May 14, 2015

The Hackathon


Song of the Day: https://www.youtube.com/watch?v=MBHP8XmNMds

One of the one things I could not wait to do when I got out of my bootcamp was go to hackathons. For those of you not familiar with hackathons they are awesome, they are normally mulit-day events where a bunch of "Nerds" churn out projects for the chance to win money and prizes, and of course recognition and status. In the software and coding sphere hackathons are normally for the people who love a good amount of competition and quite frankly, love to code. You dont waste two-three days of your life coding away basically unpaid and stressed if you dont love to code. Which is also why people looking to hire programmers sometimes hang out at hackathons, because hackathoners might not be senior devs with years of experience, but they are serious coders with serious skills. So its time to break down hackathons into three categories, what and where, who and why, and how you win.


The Where. So basically a hackathon can be anywhere from one-three days, and it is normally hosted inside a hotel, conference hall, or software company. Some of these are what we call 24 hour hackathons, were basically its all you can drink red bull, basically you show up at 9am to start, and then present your project at 9am the next morning, and then go home and crash. Others are overnighters where you come in the morning, but you have the opportunity to stay the night at the hosting place and then normally you present your project the next day right before dinner time, so you might get like 4 hours of sleep at these ones. But many of the smaller and run of the mill hackathons are ones where you come during the first day, leave around 10pm and then go home and finish the next day. And for the most part hackathons have all you can drink redbull and do actually feed you, so you really dont leave the event space for any reason. Obviously the kind of event you have is mainly based on the organizers and how much money and time people have to dedicate to this.

The What. Hackathons first of all have themes, anything from cars, healthcare, space travel,google cardboard, to brain science. In order to win the big prizes you normally have to have the best idea that solves a problem related to the theme. So who pays for all the fun times? Sometimes its a company, especially if its a big one, looking at you google. But normally its a number of smaller companies and sponsors, who contribute money,food, staff, time, or prizes to the hackathon. The sponsers are normally then broken into two groups, those who actually participate, and those who just want their names on the hackathon website. The ones who just want their names out there, normally contribute food and prize money, and even sometimes contribute the actual event space. But many sponsors contribute, hardware, data, APIs, SDKs, and software that you use to actually win the main prizes and normally smaller prizes. Did I mention there is multiple prizes? The companies normally get to pitch to you in the morning about how you use (insert some kind of software related device) to win their prizes and then they normally have a small staff stay at the hackathon to help you if needed.


The Who. Now it might seem like hackathons are only for the coders and mega nerds, but thats not entirely accurate. If you are related software engineering in any way normally hackathons are for you, and now a days there are even no-code hackathons. And if you are related to the theme then the hackathon is also normally for you, for example I went to a neurogaming hackathon, and there were physicians and neural scientist there to help design brain specific health solutions. Some people go to hackathons just to get their great ideas and solutions built and then when the hackathon is over sometimes go on to create business our of the projects. But the majority of hackathon attendants are programmers all of different skill levels and languages, the only thing they all have in common is that they love to code and normally love to win.

The Why. So why go to a hackathon? Well normally people go to hackathons for three major reasons, they want to solve problems and have great ideas on how to do this, they want an excuse to learn a new technology and want to hang out with cool people while doing it, and of course because they want to win. All of these reasons are perfectly valid and the main reason that hackathons are so fun is because they attract all different kinds of people.




How to Win. Now this might seem pretty self explanatory for a lot of people, go in with a great idea and code it out and your good to go. But normally the people who win hackathons either have real strategies or are really lucky. The best strategies is to have already built a full team and have an idea ready to go, assuming the idea is good and the team works well together you have a pretty good chance of winning something. This is my main strategy is to go in with friends who I know will work hard and then go from there, were horrible with ideas but we will get better eventually. But for now we have won first place at the wavemaker apps world hackathon, and second place for the nsquare hackathon. For some people thought the best strategy they can come up with is to cheat by bringing pre-made code, its not cool and we hate you assholes who do this, you are not smart and awesome when you win, you suck and ruin it for everyone else. Nowadays judges have started to do code reviews to keep this from happening, especially at the larger hackathons with bigger prizes.


So remember go to hackathons if you want to and have fun with it!

Friday, May 1, 2015

AI, the computer that learns

Song of the day: https://www.youtube.com/watch?v=RKlJXpjeYC8


I am currently in the process of playing with an extremely interesting AI system called Josh, and it got me thinking about machine learning and what its really about. Right now Josh is just a version of Siri from what I understand. When I ask Josh from the weather he responds like Siri, they both go to an internet source for Josh its Wunderground and they determine my current location and give the weather for San Francisco. Its a simple request, but it also feels mechanic, theres no way of hiding that Siri and Josh are unintelligent, but behind them is a group of highly intelligent humans who have written hundreds of lines of code to make these machines respond to human request. Right now I am giving Josh a rule that if I request a song lyric he will get it for me from a website, and soon I will make it so he could return me a place from Foursquare. So maybe if I ask for Chinese food he can find some for me.



But yet to the average users these AI systems seem strange and cold, they are still not quite human enough for our taste. They are not quite smart enough. Our current AI systems can only take requests, and return to us data from a database or the internet. If you ask an AI system like Siri "what is love?", she would probably return a definition that she has in her database or one that she finds online. If you ask her "why does Fred not like me? I have called him eight times today", she might come up blank or just search that sentences in google and bring up a yahoo answers about clinginess. Siri lacks the ability to have an emotional response or even a critical thinking response, and to program her ability to be able to talk to you about why Fred does not love you because your clingy would take years, and thats just one question.


I think right now we are doing brute force AI's, we are hard coding everything they do. But the real question is it possible to hard code feelings and emotional responses? Maybe. Maybe Siri could start to recognize voice patterns and see when you are sad, and know how to mimic those patterns so she can seem sad as well. Can we trick ourselves is the real question. As we begin to understand the brain we have in our skulls, that sends signals to process data, very similar to our machine counterparts, I believe we will eventually be able to create a true machine that can learn and adapt.



But what is our end game for Josh and Siri? Do we want mechanical slaves or do we want something we can be friends with? Can Siri ever be my friend in the way a human being can be my friend. In theory I could have a Siri that has all my data, all my online profiles, my physical health, she could recognize my voice and speech patterns, and with all this data could she be able to "understand me" and be my "friend". She could probably give me advice, console me, fake love, but is this what we want? Are humans only a series of predictable algorithms made complicated by a brain? Creating machine slaves is easy, thats only the first step. But creating machines that can react to our feelings, feelings they will never have, thats the next step into dangerous territory. Will we have AI systems like in the movie "Her" that are able to "love" us and only want to learn from us, or will we have the terminator, or are the movies all wrong and we will go down a completely different path.