Archive for December, 2009

Updating PJAS.net

// December 8th, 2009 // Comments Off // Blog

So it’s that time of year again when I need to get www.pjas.net set up for the new science fair registration period. Typically, this used to require me to go in, manually archive all of the student and project records in MySQL and essentially reset the site to day 0.

Each year, I try to make some improvements to the site, both for my end users and for myself. For example, last year, I introduced the concept of a “fair,” which allowed me to keep all of the previous years data while still making everything seem to “reset” for the end users. This year, I’m working on expanding on this and using the previous data to allow sponsors to import their students again from last year. My hope is that this saves the teachers a lot of time by not requiring them to enter the same student information in year after year. As a note as to why they’d need this, most students participate for all 3 years of middle school and 4 years of high school under the same teacher/sponsor.

I have all of the front-end coding complete and the student IDs are being sent to my server for the students I need to re-import. I now need to find the most efficient way to copy existing MySQL records while allowing teachers to make updates as necessary (student moved, new email address, etc). From a few minutes of research, it looks like I can just run an Insert query with the Select statement embedded (http://dev.mysql.com/doc/refman/5.0/en/insert-select.html). This should make my life a bit easier. Gotta love learning new SQL tricks.

Arduino Web Interface

// December 4th, 2009 // Comments Off // Portfolio

arduino_temp The Problem: As part of my continuing experimentation with the Arduino platform and working towards my goal of the Brewduino, I wanted a way to have the Arduino publish data to the web.

The Solution: Live (well, so long as I have the arduino dedicated to the purpose) view of the current temperature in my home office.

The Technology: This project got my feet wet in the world of Python scripting. There’s a SerialPy class that monitors the USB port on my desktop. The Arduino passes the current temperature from a sensor into the serial bus. The Python script pushed the temperature and date to a web service running that updated a MySQL database. Finally, a PHP script pulled the most recent update and displayed it to the world.

This was more of a proof of concept into finding a way to store the data from the Arduino. Onboard storage is tight and working with external storage on the Arduino gets messy. I like the idea of using a web-based application to store and hopefully control the Arduino which would allow me to track temperature (brewing and fermentation) over a period of time, store procedures to be loaded on demand, etc. I have some pCharts I started tinkering with to get the temp data plotted.

Site Update

// December 4th, 2009 // Comments Off // Blog

After a long period of what would have seemed like inactivity to anyone watching this site, I’ve decided to finally make the updates to tie all of my projects together. It may not be much, but it’s mine.

To begin with, I have WordPress running the main portion of the site now. This replaced the hand-written PHP code I was using before and should make updating the site much easier. I’ve also integrated my twitter feed and my Twitpic feed, so any mobile shots I take on my phone get posted here right away.

Next steps will be integrating the various other applications I’ve written into the site. As an example, I will be running some homebrew (as in beer) software that I have been experimenting with. The software keeps track of recipes, brew-day procedures, fermentation schedules, and beer status (what’s in the primary, what’s on tap, etc). Once I get that set up so I’m happy with it, I’ll have the current been menu on the home page. I’ll post the details and a review of this software soon.

I also have some Arduino projects that I’ll be posting on here. Long term, I plan to make a “Brewduino” system using the Arduino to automate some (or all) of the brew day. More on this to come.

Finally, I do help run a business in addition to my day job, so I’m sure there will be plenty of updates on the state of Society-Centered Technologies, LLC as time goes on. Big things are in the works, so hopefully there will be some exciting news soon.

That’s all for now. Expect more updates soon.

Inselkampf Online Gaming Portal

// December 3rd, 2009 // Comments Off // Portfolio

Inselkampf PortalThe Problem: A while back, I started playing an online game called Inselkampf (“Island Wars”), a real-time war strategy game. The interface was extremely simple (see below), but the data behind the game was vast. Early on, many players realized that the key to success was to have the most current information quickly available.

The Solution: To begin with, I created a simple set of PHP scripts that imported the game data (player stats, island counts, etc) and parsed them out. This helped each alliance keep track of their own players islands and know when someone was attacking them. As the site grew, I eventually created a portal that provided a variety of functions and information essential to effective game play.

The site featured:

  • Map View – instead of looking at one group of islands at a time, individual islands across a 5×5 grid could be seen. Player stats were overlayed (pic below).
  • Attack Monitor – Using AJAX, a notification could be displayed the moment any island became under attack, making manually checking each island one at a time obsolete.
  • Player Statistics – View players history to quickly determine activity levels and island captures.
  • Daily Reports – after each night’s scrape of the game data, a report was sent to allies detailing the previous days activities.
  • One-Click Attacks – Replacing multiple clicks and windows, the portal allowed players to designate a target and fleet size and send the fleets with one click.
  • Fleet Visualization – Think of the War Games movie where the missiles are being launched. This replaced the game’s text-based lists.
  • Battle Planner – Coordinating attacks with fellow players became a breeze with a tool to track the number of troops sent to a target island and helped coordinate launch times to land them all at the same time.

Original Inselkampf Map Updated Map on My Site

The Technology: Javascript, PHP, MySQL (the database has 0ver 9.9 MILLION records!)

System Configuration Documentation

// December 3rd, 2009 // Comments Off // Portfolio

Reference Data ReportThe problem: While working on client site, it became a daily chore to ensure that all teams had the current system configuration specifications. One line of business would decide to change a product that impacted another line of business all the time. In addition, we found that stakeholders were constantly using outdated reports.

The Solution: To keep all lines of business and technical teams up to date on the current configuration, I created a set of scripts to generate an easy to read report in HTML from the actual system XML configuration files. This allowed business users, as well as technical users, to view product, security, and workflow data models.

The Technology: Created using XSLT and windows batch scripts, the program would fetch the current system configuration files from Rational ClearCase, generate the HTML using Saxon, and then publish the HTML report to a central location. All team members were able to access the current version at all times, saving many hours of wasted communication and time lost correcting conflicts that could have been avoided if everyone was working from the same set of data.

PJAS.net

// December 3rd, 2009 // Comments Off // Portfolio

PJAS.net Screenshot

PJAS.net Screenshot

The Problem: The Pennsylvania Junior Academy of Science (PJAS) is an organization that gets middle school and high school students actively engaged in science research. They host regional and state-wide meetings annually to allow students to present their work. Historically, students had to type (with a typewriter!) their forms and give them to their sponsors. The sponsors then collected the forms, proofread them, and passed them on to the regional director. There was a lot of paperwork and information was slow to be distributed to the key stakeholders.

The Solution: PJAS uses the website I created to collect student research project registration data, distribute current forms, and dynamically determine what forms are required for individual projects.

Sponsors (usually the student’s teacher) can then view the project information, make changes, and approve the project.

Finally, the students project information is sent to the regional directors.

The site also allows judges to register online and receive the necessary information in an automated fashion.

The Technology: Built in PHP using MySQL. Adobe Acrobat was used to create editable PDFs.

Visit www.pjas.net