Jeremy Thompson


Native Austinite who likes to code

Born and raised in Austin and currently attending the University of Texas at Austin.
I started as a physics major and quickly switched over to computer science.
I find coding to be interesting and am using this site as a place to collect my projects.

My Skills


Python

I am fairly fluent in python. While there is a lot more I want to learn with python, I quite enjoy it.

C

I used C on all my systems projects.

C++

I've learned quite a bit about C++, especially the STL.

Java

Java is the first language I learned and it was the one used for my data structures class.

HTML, CSS, & JS

I've learned quite a bit about HTML and CSS this past summer. While I understand JavaScript, to a degree, I don't like it and don't know anyone who does.

SQL

I know a little bit of mySQL and am taking a Data Management class this semester to learn SQL.

My Work


MTG Guru
We used Python Anywhere to host a website as part of a 6 person group project for my Software Development class. The point of this project was to use a database to serve a website that could be about pretty much whatever and to learn and use different technologies. We decided to use it as a Magic: the Gathering information source. The site can be seen here. We built and used a mySQL database as the backend to serve the site and contain the information on cards, sets, and types. We did the project in 3 iterations, each one building upon the last one.

The first iteration was the basics:
  • data collection
  • static pages using twitter bootstrap for the pages
  • making the API and DB models that would be used
  • write a 10 page technical paper about our site and everything we had done.


  • The second iteration was a bit more involved:
  • we had to turn all the static pages into dynamic ones, which required using python and the models to pull information from the DB and parse it out such that it could then be passed to the HTML page and be rendered at the time of loading
  • we had to implement the database, create the schema and upload all the information to it. While the base requirements for the project required about 10 pages per category with at least 3 categories. We have 3 categories, but over 2000 cards, 12 sets, and 21 types. So our database has quite a lot of information.
  • we had to flesh out our API so that it would return the correct results in json format.
  • lastly we had to flesh out the technical report a bit. Make it at least 15 pages


  • The third iteration was a little bit simpler, but still challenging:
  • implement a search functionality for the site. Where you can search for anything in the 3 categories, and it will return options for that keyword; cards, types, sets.
  • Use one of the other group's API and make a page on our site that uses that information.
  • finish up the unit tests for the models, and finish up the technical report, 20 pages total for this last version.


  • All in all, I learned a lot while doing this, and now have in interest in web design. Though there's still a lot I don't know and can learn.

    I was in charge of both finding the raw information and for the Front-End Development of the site. The first iteration we were tasked with getting the website up using only static pages. I built all of these using twitter bootstrap as a base. For the second iteration, we were tasked with using the database to serve the webpages and I templated the pages necessary using Django tags in the HTML to display all the information I got via python using the DB models. The third iteration was implementing a search functionality for the site and using another group's API and make a page on our site.
    Australian Voting
    This was a pair programming project done in Generic Programming where the point was to solve the Australian Voting coding challenge. Part of the project was to generate these elections which would test various aspects of the voting requirements. To do this we wrote a python program which would take inputs such as the number of elections and for each election the number of candidates and then a weight which would be the number of ballots per candidate. These ballots are randomly generated between the indexes of each of the candidates. And the candidates are randomly chosen from a list of 50 candidates which you can browse here (we're pretty proud of these). Here's the source code for the election generator 1000lines.py.

    The actual project was sadly much less fun. File input in C++ isn't that great, but we eventually got it. The hardest part was the evaluate function which should probably be broken up, but due to time constraints that is the way the code ended up. But it works and it works fairly well and that's the point.

    My role in this project was co-author and chief debugger. We wrote a lot of the code together, but I also took on the responsibility of debugging when the evaluate function wouldn't work quite right. In addition to this I wrote almost all of the 1000lines.py program. We knew we wanted to generate elections via a program so that was the first thing we did. With input from my partner I wrote up the program. I'll admit, I also just wanted to do some python programming. To me, it is more fun and interesting than C++, though C++ is infinitely better than C.
    5Bit Project
    This program was thought up over a weekend by my Systems and Architecture professor to be one of our assignments. In short the idea is to take a byte, grab the first 5 bits, add 3 filler bits and make that a new byte to be written out to the new file. Then you take the remaining non-filler bits and put them as the first three bits of a new byte, grab another byte and get two of its bits to make up to 5 of the new byte, add filler and push it on. The program is designed to take entire files no matter the type, strip them down and convert them to this new format. It basically turned out to be a mild encription program. And of course there was a flag that you could add when running it that would allow you to "decode" the 5bit file back to the original.

    This was a fun and interesting project that was originaly done in C. In the version linked, it is a c++ file. In my spare time I am working on turning it into a c++ program for windows, built in visual studio (which I am trying to learn) that can take files and encrypt each of them based on the process described here and a user passkey. That's the idea at least, though I don't seem to have a lot of free time these days though.
    Collatz Conjecture
    This is probably my favorite of the different python projects that I've worked on so far. It was also my first semi-major python project. In case you're not aware, the Collatz Conjecture is the idea that any integer can be reduced to 1 in a certain number of steps provided it follows one of two steps: if it's even then divide by 2, if odd then multiply by 3 and add 1. To this day the conjecture still hasn't been mathemetically proven, but from a coding perspective it holds up nicely.

    So I wrote this program in python, with a cache system and a metacache system. If I have some free time I want to go back and use a decorator and refactor a bit of the code to make it both as efficient and clean as possible.

    My Hobbies


    I like to sit back and play good video games. With an xbox 360, a PS3, and a desktop made for gaming I have a wide array of platforms on which to play. Currently I am enjoying Destiny, Titalfall, and Skyrim.
    Description of this thing that you worked on. Description of this thing that you worked on. Description of this thing that you worked on. Description of this thing that you worked on.