Quite simply, HoosierCast is a program that goes out to the National Weather Service's servers, downloads data, processes it, and places it into a MYSQL database. This data is then retrieved to display on this website. This is the same data that most other sites retrieve to display on their websites as well. From the very beginnings of this site, this is something that I have wanted to do. I started by looking for an existing solution that would accomplish this, but I could not find one that did what I wanted and was free. Like everything else in life, when all else fails......build your own!
When I started this project, my background in coding did not go much deeper than Visual Basic. I started out by selecting the language and the platform that I would be using. The platform was easy, it was going to be Linux. I use it a lot here at home and this gave me the chance to work with it from a development perspective. I decided on C++ for the language, and it was something that I would have to learn from the beginning. This has been, and still is a lot of fun, but there is no reason I shouldn't learn something too.
How Does it Work?
Early iterations of the program really had no interactive interface. There was a config file that got loaded up that told it how to connect to the database, gave it location information, and told it where to FTP the information it processed. After that was read in, the program just ran. In the newest version, I've given HoosierCast an ncurses based interface that allows you to set location information, pull intervals, database configuration and authentication information, and the ability to pull in county listings directly from the Weather Service's servers. As with anything, there are still several outstanding issues that I need to deal with as well as interface polishing and the addition of more features. For example, I had really wanted to be able to display advisory/watch/warning information by version 0.2.0, but ran into too many problems. It was holding me back on getting the new site design up, so I decided to put it off until 0.2.1. With that being said, I am sure any developer worth his salt could have whipped something like this out in a mere fraction of the time it has taken me to get this far, but coding is not my profession. I'm having fun, learning something new, and that is all that matters to me.
For both my testing and production environments I use Gentoo Linux. I've created an Ebuild script so by using a portage overlay I am able to use Gentoo's package management system to install the program. I'd also like to get it running on Ubuntu, but the first time I tried it I came up with several compile errors. This kind of took me by surprise since it compiles fine on Gentoo, but it's not a priority for me, so I'll get back to this particular problem when I can.
The Devil is in the Details - An Approximate Changelog
0.2.0 - Released on May 7, 2011
- Really, a total redesign
- New ncurses interface
- The database schema has been greatly expanded.
- New Graphics
- Took out FTP ability. Since the site is php based now there is no need to upload the images and forecasts
- Took out the ability to generate weather images. Again, since the site is php based, the images displayed are dependant on the data that is stored in the database.
- Consolidated many functions which results in a much smaller code base
- Improved download and upload efficiency by consolidating various curl functions
- Version 0.1.4 proved to be buggy in the way that it processed the zone forecast. The logic was greatly improved in this release.
- I did lots of code clean-up here. Overall the codebase is much cleaner and easier to follow.
- I removed the "headline" functionality for now. This included information such as Advisories and some Watches/Warnings. This will be added back in later along with the capability to handle Watches and Warnings. There is still some clean up I want to do before adding this back.
- The appearance of the seven day forecast was dramatically cleaned up and graphics were added. I don't think they look bad, but I am not much of an artist. :)
It's hard to remember what was changed up to this point. I first released HoosierCast at version 0.1.0. The releases from then up to 0.1.4 have mostly been bug fixes and overall performance improvements.
0.2.1 - A work in progress
- Since I am using a remote database now, there is a lot of lag in talking to it. I did not notice this when the test database I was using was on my local network. Database calls need to be reworked and optimized for database communication over the internet.
- Work on re-enabling the Advisory/Watch/Warning components. This is something that is a priority for me. Since the new site is up and the initial 0.2.x version of HoosierCast is running, I should be able to get to it now.
ScreenShots
Main Window
|
|
Configuration Window
|
Data Pull Window
|
