Almost a year ago, I decided to learn to code.
I like computers, I like the internet; I wanted to know more about what makes them tick. I’m not sure what made me think I’d be successful, but I jumped in head first. My goal was to create the online fishing log I wanted to use but didn’t seem to exist.
Since then I’ve tinkered with my fishing log off and on for many months; amazingly, I was able to build a semi-functional site in a few weeks. I have been logging each fishing trip in my web app since last fall.
It hasn’t been easy; this code stuff is tough. It doesn’t come naturally to me either; I don’t think logically, and I’m terrible at math… but somehow I’ve managed to cobble together bits of borrowed code and my own creations to create something usable.
It’s not ready for prime time yet, but I’m building it to support multiple users. I’m pretty happy with how it’s turning out– it is actually turning into the web-based fishing log I want to use.
It’s got a real live login screen, just like all those “real” web sites.
The purpose of this site is to log fishing trips, and most of the functionality revolves around logging trips and viewing trips.
The “log a trip” screen allows you to enter in all the information about your fishing trip, including pin-pointing the exact location on a map. The map grabs the latitude and longitude, and using that information it gets the weather for that date and time of day, as well as the USGS streamflow of the body of water (if it’s moving water).
I’m especially proud of some of the fancier features, like a popup date picker and auto-complete.
I recently added a points system to the log, which calculates a “score” for your trip based on number of fish caught, whether you fished a new body of water, and some other sillier things like “ninja score.” The number of fish caught doesn’t always tell the whole story: if you snuck onto a golf course avoiding security patrols to catch a single small bass, that sounds like a good trip to me.
Once you log your trip, of course you can view your past trips. The other day I added a feature that will disguise the locations if anybody else is looking at your trips. This way you can log a trip and share it with the world and keep your secret fishing holes a secret.
The system records the GPS location of each trip, and you can view all your trips on a big map. This might be my favorite part. If you want to, you can also download those locations as a KML file and view them in Google Earth. In fact, by using Google Earth’s “network link” feature, you can link to your KML file and your Google Earth will auto-update as you add more trips to your log.
I think that’s pretty cool.
Each user has a kind of “profile page” where you can see their “stats.” Right now it’s fairly spartan, but I’ll be adding more numbers and charts– things like “fish per week” and a “species checklist” will probably appear in the next few weeks. I’m thinking about implementing some kind of “badge” system (like Foursquare) where you get special bonuses for catching a new species or fishing when the air temperature is below 32°F.
Does anybody else want to track their fishing with this much detail? Probably not, but I’m really building this for myself. At some point I’ll probably open it up to beta testers on an invite-only basis, if there is any interest. There are plenty of other fishing log sites out there, but none of them are quite what I’m looking for.
Does this sound like something you’d like to try? Let me know in the comments!
Stop reading here if you don’t want to hear about the nitty-gritty technical details!
I didn’t realize how many different tools I’d need to make a site like this work. I figured I could do everything I needed in PHP, but I was wrong!
The site is built in PHP (which dynamically produces HTML), at least my hacked version of it. All of the data is stored in MySQL databases; everything is backed up once an hour in two locations. I have some maintenance scripts written in Python as well (a much prettier language than PHP).
When a user logs a trip, I use the Geonames API to figure out the zipcode, city, state, and even county. Then the code compares the name of the waterbody with USGS streamflow gauge stations in that city on that waterbody to grab the historical streamflow information from the USGS API. The zipcode and date are used to get weather information from the Wunderground API.
I use the Google Maps API extensively; to show the full map of past trips, and also to show the location of each trip on its “trip page.”
I do my best to use JSON and XML when dealing with these APIs; I use PHP to parse them and get the info that I need. It’s been tough figuring out how the heck to read JSON, but I’m getting better.
I recently added a database of every species of fish in the U.S. I borrowed the list from fishbase.org, which doesn’t seem to have a usable API. I had to manually copy and paste a list of all the fish into Excel, then I used a Visual Basic snippet to extract the fishbase.org URL of each fish. That database will help to autocomplete the names of fish you catch, as well as provide additional information like latin name (and a link to the fishbase.org page).
As a part of my testing I built a little fishbase.org search- you can check it out here.
I’ve got a long list of features I’d like to add, not the least of which is social media integration. It would be cool if logging a trip creates an event in Facebook or a tweet on Twitter like “Chris just logged a trip on CB’s Fishing Log: he caught 14 smallmouth bass!”
I sure would like to catch 14 smallmouth bass in one outing.. That would definitely be worth a badge.
What’s the future of this site? For now it’s my side project; I tinker with it off and on, slowly adding features while logging all my fishing trips. Maybe, if there is anybody else in the world who wants to track their fishing to this level, I’ll open it up to anglers other than me.