Developments in Development
About about the most recent exploits fo a young CS major. As usual the blog is in 2 parts.
Part 1: Motor City Mayhem
This weekend I had the pleasure of attending Mhacks III, a 36 hour hackathon in Detroit. Although this is our "home" hackathon at U of M, our campus is 45 minutes away from Detroit, so the event started for me and my friends with a bus ride on Friday afternoon into the center of Detroit. While the city is relatively close to the campus (a bus runs there on the weekends), none of us had really ever been there before, so it was pretty interesting to see the modern core of the city. The city had a really strange feel to it as one had to reconcile beautiful new glass high-rise offices with storefronts next door that are ALL for lease.
We entered one of the new glass buildings to find a really awesome office where we everyone was set up to get hacking. I don't know if any of you have attended a hackathon before, but the feeling of excitement that comes with sitting in a gigantic room filled with your fellow nerds is hard to beat. After a few opening ceremonies the event kicked off at nine and the hubbub of planning, diagramming, talking, downloading, and, above all, coding began.
I was working with a couple of my friends hoping to build a website to rank professional DotA 2 teams based on information that we would pull from liquipedia. I had experience parsing wikicode before so I took point on turning our massive dump of LP pages into usable data. We had a math major on the team who begrudgingly agreed to work on implementing the Elo ranking system in Lisp, and another friend of mine who had been working on web server frameworks (I don't really know what to call it tbh) for Common Lisp. So we split off and began our various tasks with
Hackathons are some of the most fun places to do work because although you're surrounded by your friends, and can turn to them fora tip or a joke at any time, its pretty easy to stay focused on the task at hand since everyone else is doing the same. Hours tend to roll by and you might not realize that you just spent 4 hours uninterrupted writing awful awful perl. Anyway, about 20 hours in we had all completed our initial tasks. A web server was up and running. Data was getting put into a massive .csv file. The Elo algorithm was chugging along. The remaining challenge was for us to combine all of our parts and get the whole thing working.
This proved to be quite the challenge indeed. For starters a few retools of my parsing algorithm were necessary for my data to be usable by the Elo ranking system that our math guy had implemented. Because the neither the data nor my coding skills are perfect, a few workarounds were required on both sides to really get things going. After that things seemed to be going well, our webpage was starting to take form, but we kept getting errors as we tried to populate the database. At this point my usefulness was dwindling as my knowledge of Lisp is approximately 0, but as the errors persisted I started brainstorming what might be causing them.
Eventually the seemingly small issue because the sole focus of our work. With only a few hours to go, every other part of the project was at least presentable, but we our Elo algorithm would still get stuck just a little way through. Finally our resident Common Lisp guru decided to run the code on his own computer instead of on the server, and realized that we were allocating all the available memory, or in the words of the SBCL terminal, game over.
We had decided to store our database as a list within the program itself, but didn't realize that our data wold actually take up all the available RAM because of how much we wanted to store. We tried a couple of workarounds, but at 7AM on sunday, with 2 hours until the deadline we determined that it wasn't going to get done. We closed up shop, and everyone on the team took a brief nap.
Going to the hackathon was an amazing experience anyway. I got to meet people from all kinds of different companies and schools and even got input from some of them on our project. The demo of the completed projects was also pretty great, as we got to witness some really cutting edge technology getting implemented. Lastly it was great to spend time with my friends in what became essentially a 36 hour hangout session. All of those benefits notwithstanding, it still left a bitter taste in my mouth to be so close to getting our project up and running, but not quite being able to accomplish our goal. I'm hoping to work with my teammates to be able to put out something (maybe even by this weekend) so that the project can have some sort of conclusion. We'll see.
Part 2: Meanwhile, Back at the Ranch...
For most of this year I have been trying to find some ways to start building a career for myself. I'm hoping to get a job in Computer Science of some sort when I graduate, and in order to do that it would be really helpful to start accumulating experience now. However until now I had had relatively little success in this field. I was beginning to feel a bit down on myself until recently because of how little I had been able to achieve in this theater.
Personally I think the internship system for Computer Science is a little weird. It seems to be really hard to get an internship without some kind of experience in a particular field, yet the fields they are looking for aren't really the academic sort of stuff. In our classes so far we basically just do a bunch of C/C++ to roughly simulate some real life processes. This is really educational stuff since its been built to teach you important general concepts in programming, but there aren't really any companies looking to program a command line euchre game, so it doesn't mean a whole lot to them until you hit a critical mass of classes after which they've deemed you "ready".
A way that I've been trying to get around this is through stuff like hackathons and side projects that I can show off to companies at career fairs. Unfortunately for me, I'm not the best at teaching my stuff, and its hard to build large in depth projects in one's free time because of the classes I'm taking. I managed to get an interview at the fall career fair, but it led to nothing, so armed with a smile, my latest project, and a fresh stack of resumes, I headed off to the startup career fair the day before MHacks.
I handed out 24 resumes. When you add to that number the amount of companies that I talked to and got shot down before the "do you have a resume?" stage, I talked to a shit ton of recruiters. I've got my spiel down to a pretty good pattern by now, so I can basically only hope that something I did manages to catch their eye and hopefully engage them in a conversation. I ended up having 4 or 5 good people I'm hoping to contact for some kind of work or something over the summer, but the height of the fair was that I was asked to come for an interview with a local startup about an internship starting this semester.
I had also been looking for some kind of respectable work with which I could make a few bucks while here. I'm glad to have the financial backing of my parents, but I feel like I ought to try and contribute in some way to my financial independence. So I applied for the job of a grader for a lower level programming class when I saw that some positions were available.
Yesterday I interviewed with the startup. Today I interviewed with the CS department. Later on today I learned that I got both jobs. Its a start.