Showing posts with label Louisville. Show all posts
Showing posts with label Louisville. Show all posts

Thursday, May 13, 2010

Proud University of Louisville Graduate

Four years after entering college, and actually slightly ahead of schedule for Speed School, I graduated with my Undergraduate degree in Computer Engineering and Computer Science on May 8, 2010 from the University of Louisville Speed School of Engineering.

IMG_0348

Monday, April 26, 2010

Capstone Project: CardSurface

After four months and 15,031 lines of C# code my capstone project is finally complete!

CardSurface is a card game engine designed to work on a a multitouch screen and allow players to play a card game in a somewhat natural way. The engine itself is client-server based and allows multiple table clients to access the same server. Face down cards are viewable on mobile devices trough a web based interface.



Our project took an entire semester worth of work, but it ended up being a huge success! We implemented not only a GUI based table client using the Microsoft Surface SDK, we created a command line client that is also able to connect to the server and play a game.



Our engine is designed to implement any turn based card game. For our demonstration of the engine we implemented Blackjack, however Poker would be a better demonstration of our engine's features.

The biggest accomplishment of our engine is that the client itself has no knowledge about the game that it is playing. It requires the server to provide an updated game state after each move or action that is performed in the game. Additionally we support multiple clients and multiple games running on the same server!



There is a lot of room for improvement with this project and we probably only finished half of what we would have liked to have accomplished. However, it is definitely a project that I am proud of. The entire code base is available open source on card-surface on Google Code.

I also want to thank Aaron and Kyle one last time for being amazing partners on this capstone project. We definitely went above and beyond what was required and created something that will live on past this project.

Monday, April 19, 2010

Thunder over Louisville 2010

Not only do I attend Thunder every year now, I blog about it (Thunder 2008 & Thunder 2009).

Just to get all of the linking out of the way first all of my photos are in my Flickr Thunder over Louisville 2010 set and in three Facebook albums: Facebook Thunder over Louisville Album 1 of 3, Facebook Thunder over Louisville Album 2 of 3, and Facebook Thunder over Louisville Album 3 of 3.

I really wish I had time to compose a more detailed blog post, but being the last week of classes means I am crunched for time. Instead, here are some of my favorite pictures:

IMG_0423

I have a lot of really good pictures from the air show this year. The weather was perfect for taking pictures!

IMG_0528
A historical prospective of our military


IMG_0750
Almost looks like something out of a movie

IMG_0787
We had to stand there for a few minutes to get the picture, but it was worth it.

IMG_0885
I shot fully manual this year for my pictures and remembered my tripod. I think they turned out better than previous years.

IMG_0895
Some more more fireworks...

IMG_0926
And even more fireworks...

Friday, March 26, 2010

Organization Budget and Finance

It was about a year ago when I started working on my Student Council Attendance tool for Speed School Student Council. This tool was designed to solve the problem of accurately tracking member attendance and make my job as DoA easier. After successfully putting this tool into use, I was ready for my next challenge. The next item on my list was creating a way to transparently track our council's budget including how we spend our money. I ended up spending the majority of my spring break this year working on my newest open source PHP tool, Organization Budget and Finance.



This is my first web based application that I designed in such a way that it could very easily be used by other groups or individuals. The design takes into account no special considerations from SSSC and simply attempts to fill a very specific need. This application is not designed to be a complete financial tool or even be used to balance a budget or an account. I am hopeful that someone will come across this tool and find a use for it.

This tool is used for allocating funds and tracking receipts for specific line items. I have implemented almost all of the major features and hope to have our new DoF put this tool into use very soon. The tool is based around the concept of a line item. This is a budgetary item that can have any number of sub line items. This can go as many levels deep as desired or necessary. This essentially creates a tree structure which represents the budget itself. The top level is designed to be used for each years budget. The next level will be used for all of the major events or funded items. The successive levels provide additional details to how funds are allocated. Multiple funding sources can be allocated to each line item. Any number of receipts can also associated with line items and represent money spent. There is not direct connection between the funds and the receipts meaning the allocated funds are treated as essentially one pile of money that receipts deduct from.

The design approach for this tool was to keep it as simple as possible, specifically with respect to the database. However, some interesting features have been built on top of this core set of information. Receipts, sources, and line item's can be made private. The reason for this is that not all information should be made publicly available, at least initially. The obvious use of this feature would be hiding items that are not yet finalized, such as next year's budget, or hiding receipts that have not cleared the account yet or the amount has not been confirmed.

Other features include the ability search the database for specific receipts or line items. This will especially be useful when trying to find out how much was spent on something from a previous year. The budget pages use custom CSS formating which allows for easy printing and avoids all of the fancy styling that is part of the web site. Lastly, the entire database can be easily downloaded in a single click as an XML file for easy backup and data portability.

Why put in all of this work for this tool? In the end it boils down to transparency. I strongly believe that SSSC will benefit from more transparency. It starts with having this tool being open source and ends with our budget being available for anyone to look at. In the end, not many people will care how much we spent on pizza at Fall Festival or how much the E-Expo name tags cost for all of the council members. However, certain council members will care about this information and having an accurate record is priceless.

Our historical records with respect to finances have mostly been lost to time. The real judge of my success will be time. What will the state of these records be 10 years from now? Hopefully I remember to look back and see if I was successful.

Monday, January 25, 2010

Seeker: Reinventing Assassins

In the past, Speed School Student Council hosted a game called Assassins that was played at Speed School. The concept was fairly simple and it was an easy, social, game that allowed players to have fun during the semester. The rules were fairly simple: You were given a target and a secret. The targets were assigned in a circle such that when you found your target, you then were to find their target. The system kept everyone honest by requiring you to enter your targets secret to confirm the "kill." In the end there would be only two people that would need to find each other. Despite the violent name, Assassins is harmless and is more like a big game of hide and seek.

The concept of the game is brilliant, but there are some major shortcomings. The main problem is that the game was designed to be played with pencil and paper. If every player was given an index card with their target, when they found their target they got their index card, in the end the player with the most cards won. However, Assassins in practice was played on the web, requiring players to memorize or carry their password with them and go back to a computer to tell the system they found their target.

Less than two weeks ago I was talking to Mike and Alex about the game and it turned out if we slightly changed the rules some interesting things happened. We played out what would happen and it seemed to work. The first problem is the circle of targets, in the end two people have each other. Additionally, the targets are not secret because the person you eliminated has no reason to keep quiet. Another problem is that once you are found you are out of the game, no more fun for you. Lastly, requiring players to use a website to progress in the game takes you out of the experience. I believe I managed to fix all of these shortcomings with Seeker.

The first change is to issue contract targets at random. The first side effect is that multiple people can have the same target. No problem, first one to reach the target gets credit. When issuing a contract there are some limitations: you can't have someone that has your, you won't be issued your previous target, and you won't be issued someone who is not in the game. This still provides a large degree of randomness in the game. When you are eliminated you fail your contract and if someone reaches your target before you do you fail your contract as well. Since contracts continue to be issued, this is not a problem. When you are eliminated or found you are only out of the game for a short period. In this case 24 hours. This respawn time is taken straight out of the way video games offer. To keep the game moving contracts will expire after 72 hours.

The last problem is how to play when you are not around a computer. While some players would have smart phones, it is not a guarantee. However, a large fraction of college students have text messaging plans. ZeepMobile provides a free web based text messaging API that was used to allow players to play the game. By allowing players to get their current secret and target along with completing contracts via text messages it makes the game more transparent to the player. Additionally, players will get text messages when they get a new contract, are eliminated, or fail a contract.


I managed to code the entire game in a single weekend and we started playing the next week. It is still somewhat a work in progress and I am still working a few of the bugs out, but it seems to be working. The game is open source and you can see the code at seeker-game on Google Code. The best part about Seeker is how simple the concept is. At the core, there is only a table of users and a table of contracts. The most complicated part is keeping the game state updated. Once that is ironed out the rest is up to the players.

Tuesday, January 19, 2010

UofL Ekstrom Library's August 2009 Flood Collection

In August 2009 there was a major flood in Louisville. With my trusty camera I hiked to UofL's campus with some friends and took a lot of pictures along the way. I posted them to my blog (Old Louisville Flood Flood Damage) shortly after the flood. I posted all of the photos to Flickr under a creative commons license and submitted them to the library for their digital archive.

The library posted the August 2009 Flood collection recently and it is worth taking a look at. However, if you only want to look at a few photos, look at the photos I submitted to the collection.

Saturday, December 12, 2009

Preserving the History of Engineers' Days

As the Director of Administration for Speed School Student Council one of my main responsibilities is to "keep all Speed Student Council records other than financial." In this modern age of technology, this is coming up with a system to use modern technology in such a way that it will not be lost to history. This has primarily materialized in how I manage the Student Council website (http://speedcouncil.org). Specifically, the main records that SSSC produces are meeting minutes. At the moment, I am using Google Docs to manage these documents and it is working out nicely for the generation of new content.

While I still want to tackle the issue of all of the old meeting minutes, I have been actively uncovering historical records in another area. Engineers' Days, now known as Engineering Exposition, is a long standing tradition at Speed School. My new mission has been digitizing the past programs from the events and posting them on http://engineering-expo.com.

I have been scanning in the collection of old programs that have survived the years in the council office. The oldest program that survived was from 1975. However, even older programs dating back to the 1930's have survived in the University Archives.

What I have been doing is scanning in the programs and creating PDF versions of the paper programs. This is a good first step, but how is it possible to preserve these records online without trusting that some service is around years from now. The approach I have taken is somewhat complicated, but it seems to be working.

The new E-Expo website is hosted using an install of MediaWiki that allows for very simple editing. The PDF files can be easily uploaded to the wiki and made available on the internet. However, the level of accessibility is somewhat limited. Google has made available Google docs Viewer which translates any PDF or PowerPoint into an HTML iFrame. This way the actual PDF is hosted by SSSC, but an easy way of viewing the document is provided by Google.

Here is the 1975 Program for Engineers' Days:



All of the programs and information about each of the past events is available under Past Events on the E-Expo website.

Moving forward I still need to find a way to get digital copies of the programs that are located in the University Archives. Because the library charges to scan in these documents there is no means for getting digital copies of these materials at the moment.

Additionally, even with the programs hosted on council's website, they may not survive the test of time and technology. One method of preserving these records may be to release them under a Creative Commons license and publish them to the Internet Archive.

This task has taken up quite a bit of my time, but I feel that preserving this history is well worth all of the work that it takes.

Friday, September 11, 2009

An Open Source Semester

This semester I have already expressed that I am swamped with school/work, but so far have been having fun. As a small distraction I have a few interesting facts to share. I have determined that on a weekly basis I will be coding in five programming languages. They are:

  1. PHP for Student Council's Website and any other web code I decide I "need" to write
  2. C# for my CECS 550 project and the DPX software I am developing
  3. Java for my CES 220 class
  4. Assembly language for my ECE 412 class
  5. Objective C for my work on the iPhone
Since I've been having so much fun writing all of this code, source code management has become very important to me this semester. While I haven't set up a private system that I really like for code that I do not want to make publically available, I have started using Google Code for a few of my projects.

At this moment, I have three projects that I am working on that are hosted on Google Code. They are:
  1. DyKnow Panel Extractor
  2. Student Council Attendance
  3. Student Educational Arrangement Tool
There are a few other large pieces of software that I have written that I am thinking about releasing open source. The one that it at the top of my list is my Alien Defense game that I wrote for my object oriented class last fall. While it isn't a very fun game, it is almost complete. At the very least it is playable, just not fun. With a lot of re-factoring and some time dedicated to balancing the game difficulty is needed, it would be a fun game if it was finished.

As for SCM, I have a dedicated computer that I have off site and always running that I have set up CVSNT on. However, I do not know if that is the SCM software I will end up using. SVN is probably a better choice. I have tried using GIT, but the lack of integration into some IDEs have kept me away from it. Since my biggest projects are already in an SVN hosted by Google, I will not be rushing to find a solution for myself.

Even though I have a lot of work to do, I am excited to be contributing to open source projects. While these projects are ones that I have started, in the future I will probably try to find some other projects to contribute to.

Sunday, August 16, 2009

UofL Cardinal PixelBlock

PixelBlocks are small interlocking blocks, similar to Legos in shape, but very different in function. These small colored blocks interlock on their edges and using different colors you can make pictures. While it is really common to make video game characters out of them, think 8 bit Mario, I decided to make a University of Louisville Cardinal head. I used something of a template, a blown up image where the pixels were easily visible, but much of the design was freehanded so some artistic liberty was taken in the final product.

Louisville Cardinal Bird PixelBlock

I managed to frame my PixelBlock creation in an adjustable depth shadow box so it is now hanging proudly on the wall in my living room.

Thursday, August 6, 2009

Old Louisville Flood Flood Damage

Louisville Kentucky received 6 inches of rain in under 75 minutes on August 4, 2009. I managed to stay safe and dry at work during the storms and my apartment and car made it through with no damage. To make up for that fact I ended up walking all the way from my apartment to UofL and back taking pictures of some of the damage along the way. This was with Cassie, Steven, & Alex.



Here are the top 5 highlights of the adventure:

5) Car tied to tree with garden hose


Not sure what this person was trying to accomplish, but it must have worked because their car didn't float away.

4) Rows of water damaged cars


On 3rd street the most impressive part was the the cars that had their trunks float and forced their back wheels up onto the curb.


The waterline was also visible half way up the doors of many cars.

3) Water being pumped out of UofL basements




There were 9 buildings that were reportedly having water pumped out of them. We didn't see that many but there were pumps running in quite a few buildings when we were there.

2) The mud outside of the Houchens building and in the underpass




It was the smell that really was the worst part. This area was under several feet of water with most of it making it into the basement. This was a really impressive sight on the news.

1) The massive flood at the underpass next to Speed School


We spent most of our time looking at the lake that had formed next to Speed School.


I feel sorry for the person who managed to get their car stuck in the massive amount of water. If I knew how it ended up getting stuck there I might not feel sorry for the person.


This view really give prospective on how much water there actually was left remaining even hours after the water has receded everywhere else.


The traffic lights in the intersection were acting rather crazy. This picture really does't convey what was really happening. All of the lights were on flickering really quickly. They would occasionally change behavior, but it was hard to track what it was actually doing.


Luckily there is a pumping station at this corner!


While the MSD and city said all of their pumps were operational, I'm not sure what their explanation is for this corner.


Luckily they have the sense to warn people that this intersection might flood. At least the car that was stuck was not driving in the direction where they could see this sign. That would make an even more awesome picture.


For all of the pictures I took during our trek to look at the flood damage can be found in my Flickr set on Louisville Flood 8-4-09.

Powered By Blogger