This is no ordinary fish tale. And, it is more than a tale. It is both a tale and contest to see who can spot the highest number of bad fish puns I present in this article. This is a tale of the old man and the C# program. And, if you like this article please let me know. If you do not like it, please do not respond because I’m just fishing for compliments. So, Just sit right back and you will hear a tale.
This was no ordinary custom programming job for me. Although it seems to be typical of what life as a programmer has been like in the past half dozen years or so. But, I can’t complain because business has been good as of late. It was not so good a few years ago as I would imagine a lot of you have experienced. As a result, I have returned to my youth in which I find myself saying “Yes” to any job that comes my way. A couple of weeks ago, I get a call from the organizers of the Pompano Beach Fishing Rodeo. Apparently, one of their major sponsors had pulled out this year and the future of the annual fishing tournament was in doubt. But, as I found out yesterday, these fearless crew members swam upstream to gather new spawnsers and were able to salvage the event. One problem. This year, they didn’t have the luxury of a 3rd day to announce the winners. They were going to announce the results of the weigh-ins within a couple of hours after the event on both days (Friday and Saturday). In the past, they used to spend the evening and the next morning tallying the results and announcing them the next day. So, a couple of weeks ago, John Good, the organizer of the Pompano Beach Fishing Rodeo, call his computer guy, Bill Deleuze of eCoast Networks, to see if he “knows a guy”. Bill, whom I met 18 years ago at a local FoxPro user group when I first moved to Florida, calls me. Bill and I have collaborated on a variety of computer projects together. I’ve stayed the course with programming while Bill is more of a LAN Lover as well as fishing and boating enthusiast. I, on the other hand, enjoy boating and fishing but I am more of a LANd Lover. We also have a reseller account with AppliedI.net for hosting our web sites.
The job called for registering boats, registering anglers for the boats, indicating various tournament categories that each boat and angler belong to, entering the weigh-in results when the boats return to the inlet, and tallying up the weigh-in results. Ok, I’ve been a programmer for 30 years. No problem. Here’s the “catch”. I only have 2 weeks to do this. And, like I mentioned earlier, my business has really picked up this year. So, I am thinking, on one hand I can’t guarantee I can get this done in time. On the other hand, it’s a job, it’s an S.O.S. call for help from an associate, and it is an opportunity for future business. It’s like I had a Devil Fish whispering in my ear on one shoulder and an Angel Fish on the other. Which fish head convinced me is up to you to decide. The word, “Yes” was uttered from my baited breath.
Now the question is, “what do I write this program in?” The Pompano Beach Fishing Rodeo has an old Microsoft Access program that they were hoping I could modify. It’s not normalized so you can only have a limited number of anglers per boat and a limited number of catches per angler. I haven’t programmed in Access in years and I am not sure who I can call anymore to help me if I have a problem, so I scratch the idea of using Microsoft Access. Bill suggests doing this in FoxPro. FoxPro was and still is one of the best development tools that I ever used for programming applications. It used to be my bread and butter. Unfortunately, from a business person’s perspective, one should not create applications that they are the only ones who can maintain. This limits your ability for growth. I opt for nopCommerce. I’ve been creating shopping cart websites using nopCommerce for the past couple of years and I’m “hooked”. It has everything I need. The nopCommerce default database is SQL Server. I have a Cloud server account with Appliedi.net that I use for all my SQL Server databases. NopCommerce has a registration section and various libraries of source code that I can customize for doing things such as creating custom web pages and creating Excel Spreadsheets. And, thinking about the future, I could make the application generic enough so that next event, anglers can register on-line. The application can also be used for a multitude of events.
Coincidentally, nopCommerce just came out with their 3.0 version. It’s not that different from the 2.7 or 2.8 version, so, I took a chance on using the latest and greatest. A wiser man usually waits a few months before depending upon a new version of an application. But, that’s not how I roll. Starting with their 2.7 version, nopCommerce now requires Microsoft .Net framework 4.5 which is resident on Appliedi.net’s IIS 7 servers. One little glitch that I discovered is that you have to make sure the IIS Pool Mode is Integrated (NOT Classic). If the IIS Pool Mode is set to Classic, you will not have access to the dropdown menus in the Administrative section of nopCommerce. You will hover over the menus and nothing will happen. Also, make sure you set up the Machine Key in the web.config.
A week on goes by. I’ve set up the base of the application. I use the nopCommerce Customer table to store the Angler information. I use the nopCommerce ProductVariant table for each boat. I create 2 addition tables that I add to the SQL Server database. The Boat_Angler_Mapping table establishes a relationship between which Anglers are associated with which Boat. The 2nd table I create is for the weigh-ins. In this table, I have the tournament day (Friday or Saturday), the Angler, the fish (Dolphin, King, Wahoo, Tuna, and Cobia), and the weight of the fish. I am supposed to meet with Bill last Saturday (event registration is now 4 days away starting Wednesday 05/15/2013) to set up the application on his computer and test to see if we can do this as an Intranet as opposed to an Internet Application. This is where the Perfect Storm started. Bill gets tied up on Saturday. So, we switch to Sunday (Mother’s day) to set everything up. Bill and I are both involved in Mother’s day events until about 3:00PM. Bill has to go to a client in Orlando. So, he will stop by my place on the way to heading up North that evening. We ran into a multitude of issues and decide we will make this an Internet Website instead of opting for an intranet. I’m a little concerned because our bandwidth is limited at the inlet.
Monday morning 05/13/2013, 2 days before the registration process: I create a temporary website at Appliedi.net for the nopCommerce application. I use AppliedI.net’s temporary domain extension (websites ending in .MyTempWeb.com) so that I don’t have to deal with any registrar. I run into the issue I mention a couple of paragraphs ago that I can’t access much of the nopCommerce administrative control panel on the website. I do a search at the nopCommerce forums and find the answer to the problem.
Tuesday 05/14/2013, 1 day before the registration process: I frantically work as quickly as I can to finish up the registration process. Customer is getting very nervous.
Wednesday 05/15/2013, the first day Anglers come to register for the event: Almost done with the registration process. Customer is more nervous than a guppy that sees a cat finally reach the shelf where his fish bowl sits. Customer starts to lose confidence and starts entering registrants in their old Microsoft Access system. I inform them that I will come by tomorrow to make sure they are OK and restore their confidence.
Thursday 05/16/2013, 2nd day of Angler registration for the event: I come by the pier and program on site so that the customer feels less nervous and so I can make sure they have everything they need. Everything is working much smoother. They are able to enter in Boat and Angler registrations. As they are entering Angler registrations, I am writing the code for the weigh-in process. 10 PM: Four people are entering in registration information and I am almost finished with the weigh-in process. The local wireless router gets so overheated that we no longer have internet access. It’s OK. They only had a few more registrants to enter and, since it is now a nopCommerce internet site, the entries can be done anywhere.
Firday 05/17/2013, First day of fishing tournament: I’m so wired from yesterday that I didn’t get to sleep until 12:30PM. My natural body clock that usually wakes me up at 6:00AM wakes me up at 5:15AM and I am basically up for the day. I start pouring coffee in me like Rodney Dangerfield in “Back to School” when he is studying for his finals. I finish the weigh-in process but I haven’t started on the tally reports. Also, they need to print a Boat Weigh-In sheet that lists the boat along with the anglers and the various fish they catch along with the weights. Haven’t even started on the Boat Weigh-In sheet! A wiser man would have panicked. But, that’s just not how I roll. 4:30PM: I’m sitting in my office 20 miles away from the inlet and the boats are coming in to get their catch weighed. I’m done! All I have to do is send the changes up to the website. To fill you in on how my twisted mind works, its 4:30PM, boats have returned to the inlet, I’m 20 miles away and have the application completed but I have to get it to a half dozen crazed event organizers. I take a moment reminisce about an old Dr. Who episode I saw about 20 years ago. In this episode, a Dooms Day bomb is just about to go off in 10 seconds and blow up the Universe unless Dr. Who presses the cancel button on the terminal keyboard. After the exciting battle in which Dr. Who defeats the bad guy and gets to the terminal with only seconds to spare, instead of pressing Cancel, Dr. Who uses that moment to crack his knuckles with only 3 seconds to spare. Then he presses the keyboard cancel key. Keeping in fashion, I too crack my knuckles before clicking the Upload Button.
All is well. The Universe and the Fishing Tournament are Saved!
Saturday 05/18/2013, second and final day of the fishing tournament: Everyone is happy. They still used their old Microsoft Access application last night before as a backup but, all their figures coincided with what my application came up with. Today, the boats have to be in by 2:00PM. The event organizers want me to come by at noon. I get there and they have 4 people on stage using my app to weigh-in fish and print the boat tally sheets. The Sun-Sentinel and the Deerfield Beach Observer are there to take pictures and report on the event. John Good is happy to see me along with everyone else. However, there are a couple of additional reports they need. I anticipated that so I brought my laptop. I set up my computer in a tent behind the stage. The anglers are wheeling their catch in wheel barrels up the stage. The Emcee is giving out T-Shirts to anyone who guesses the closest weight of each fish. I’m already on my third cup of beer. Long story short, from about 1-6PM, I’m making sure they have all the information they need to get the final tallies for the tournament. Party Time!!! And, these people party as well as they fish. I was so happy to be a part of this event and contribute to its success.