The Nepean Sailing Club website is large and complex, and has gone through many evolutions and re-designs over the years, from a static collection of HTML 4.01 pages to a custom-made integrated design with partial WordPress implementation, to a full modern WordPress Theme implementation. “Legacy” static web pages (like pre-2009 race results) are still saved when it is not cost-effective, practical or feasible to migrate the static pages content to WordPress.
This site has thousands of files, hundreds of pages, and dozens of scripts, dynamic functions, on-line databases, server-side scripts, automated scheduled jobs, etc.
The website is managed by two volunteers: Daniel Servranckx and Hugh Morrin:
- Daniel has been the Webmaster since 2000. He is responsible for all the technical and server-side operations and maintenance, with an emphasis on keeping the NSC server and WordPress Content Management System secure and up to date, in addition to monitoring, developing and maintaining custom-made applications, databases, scripts and automated off-site backup systems.
- Hugh Morrin has been the co-Webmaster since 2005. His efforts were originally focused on sailing and racing content, but he has progressively taken on an active management role, focusing on the website content and organization. He is now the primary point-of-contact for all matters related to the website front-end.
Highlights of Significant Projects and Milestones
- Refactored the form-to-email script (our Object Oriented version of formmail.php), adding various testing layers and security features. Updated the form processing script PHPMailer to latest version.
- Researched, tested then replaced the WordPress Email Address Encoder plugin with one offering a more robust encoding scheme.
- Converted all the SQL database tables from MyIsam to InnoDB Storage Engine for improved performance. InnoDB is the default storage engine on MariaDB, the open source MySQL DBMS on NSC.CA.
- Created a real-time Boat Launch Sequence system using a combination of Google Form, sheets and local page to collect and display the launching sequence as it is being edited for timely access by waiting members.
- Created a system for recording acknowledgement of NSC’s COVID-19 Code of Conduct, using a combination of Google Form, Google Sheets and a local page to collect and display the acknowledgements, for easy access by the gate attendants. Also developed a Yard Access Reservation system, that was not implemented.
- Moved all the Database connector scripts (except for Riverchallenge which is managed by another volunteer) from the web public to a server private folder for more robust DB access security.
- Rewrote the entire server side automated system that compresses and sends database and other critical file backups (like the race results) to an offsite email account for safekeeping.
- Created a web server based script to protect files with specific extensions (like PDF) in a ‘protected’ folder from being accessed when not referenced by an NSC page. In particular, this protects the Parking Permits from non-member access.
- Updated the server to PHP 7.3, and converted obsolete functions in home-grown PHP scripts.
- Improved the security on all web-based forms (such as Race Volunteers Registration, Classified Ads and Proof Of Insurance) by adding to the form a server generated hidden field whose value can only be used once, thus preventing out-of-domain or other type of ‘unexpected’ usage.
- Migrated the Proof Of Insurance system from a Comma Separated Excel storage system to a full database storage system, and added management components such as the display of ‘delinquent’ members.
- Removed several obsolete WordPress plugins and replaced with equivalent (or nearly equivalent) variants.
- Converted the Member’s Login WordPress plugin into an ‘home grown’ plugin to avoid continuous error notifications by the WordPress firewall.
- Migrated the email anti-spam confirmation script from Perl to PHP, and re-coded the existing Perl script to forward to the PHP script for legacy support.
- Created a Dock Resurfacing Registration System using a combination of a Google Form, Google Sheets and display of registrants in a website page.
- Rebuilt the entire NSC website following an unrecoverable disk reformatting by the host data centre. Using monthly, weekly and daily backups produced by automated scripts on the NSC server and stored in a Gmail account, reconstructed a usable web site over a 24 hour period, and a fully functional site with up to date information over an additional 48 hours.
- Helped iSport Solutions with the off-site migration of the iSport component of Sail Training sub-web, and re-wrote the NSC based components to interact with the split hosting.
- Updated the server script from PHP 5.4 to 7.2, and converted obsolete functions in home-grown PHP scripts, such as the image and photo scaling code used to reformat uploaded images, as used in the Classified Ads.
- Updated the Racing Committee Volunteers Registration System framework from version 3.3.7 to 3.4.1 as, contrary to expectations, version 3 was updated.
- Re-wrote the server-side Jobs scheduler into a set of Linux Bash Scripts based on their running schedule (hourly, daily, weekly, monthly, daily-fev-to-Aug, etc).
- Migrated the entire NSC.CA web site from WebNameHost Hosting to PCLF Hosting (with the assistance of Patrick Fleury, NSC IT Support).
- Installed and configured WordFence Premium on WordPress. WordFence is a firewall plugin whose paying version provides immediate installation of counter measures for newly discovered threats.
- Rewrote the Apache ‘.htaccess’ file to enforce security/privacy of files and folders, and reroute missing (404) pages from previous designs using Google Master Console and server error log reports.
- Converted the membership ‘Bluebook’, a single table database updated monthly from an Access-generated table, to a two-table database (members and boats), updated monthly from two NorthStar-generated Excel membership and boat reports; redesigned the Bluebook and ‘Members Only’ authentication system (WordPress login and static scripts access) to use the new members table, and re-coded the various applications that use the Bluebook signup for authentication.
- Wrote a parallel Racing Committee Volunteer Registration system using the Bootstrap version 4 framework as the version 3 is no longer updated and will eventually be retired. Both versions will be maintained in parallel until version 3 is retired.
- Re-factored the Proof Of Insurance application to a Model-View-Controller (MVC) paradigm.
- Modified the Proof Of Insurance collection and display system to pre-populate the collection form with previous year’s data.
- Re-designed the member’s Upload application using Ajax to fetch, analyse and display upload information from the NSC server in order to better manage uploaded files.
- Created a new WordPress sub-web using the generic NSC / Twentytwelve for BYC/NSC Interclub Racing.
- Re-factored the stand-alone Race Committee Volunteer Registration system using the Bootstrap 3.7 adaptive framework to provide a well behaved display on all devices.
- Designed a client/server system to collect and store Proof Of Insurance data from members, display said data to authorized users, and create and email a daily backup of the data csv file via a CRON (batch) job.
- Designed a WordPress Theme function to use the MySQL member’s database (the ‘Bluebook’) as a secondary login for members without WordPress account, thus unifying the Bluebook and ‘Members Only’ authentication into a single system.
- Rewrote the Registration / Reservation system from PERL to PHP, adding a splash page builder form to quickly create the event page.
- Installed and configured the free version of WordFence Security Plugin, a WordPress firewall and malware scanner.
- Wrote applications to display water level, wind and weather information to the NSC Weather page using CSV and XML data files fetched from external sites (like the Environment Canada City page for Ottawa on the Meteorological Service of Canada’s HTTP data server).
- Created a new WordPress sub-web using the generic NSC / Twentytwelve for the Ottawa Cat and Skiff Grand Prix regatta.
- Created a set of CRON (batch) jobs to backup and email databases and CVS files, clean up logs and temporary files, and fix downloaded images’ size.
- Created a proof of concept WordPress eCommerce sub-web based on the WooCommerce WordPress plugin.
- Converted the MySQL DB extension and the various database applications from mysqli to the more robust and generalized PHP Data Object (PDO).
- Refactored the Race Committee Volunteers Registration and Reminder system from a set of PHP procedural scripts to a PHP Object Oriented model.
- Converted the MySQL DB extension from mysql to mysqli, upgraded the jQuery Library, and added several layers of validation and security to the user’s inputs and PHP Session handling.
- Re-factored the Bluebook application to a Model-View-Controller (MVC) paradigm.
- Re-factored the Board and Directors applications to a Model-View-Controller (MVC) paradigm.
- Activated the WordPress Twentytwelve child theme developed the previous year on the NSC main web site and sub-webs, and developed static header and footer files for inclusion in static PHP pages thus giving them the same unified look and feel as the WordPress pages.
- Assisted iSport Solutions in establishing an online payment solution for the Sail Training Center.
- Developed a WordPress master theme as as a child Theme of WordPress TwentyTwelve theme, an HTML5/CSS3 adaptive design perfectly suited for various display formats such as handheld devices, laptops and desktops.
- This single child theme became the “NSC Branding” theme used in the creation of the Sail Training Center website, the ABLE Sail website, the River Challenge website, and to re-theme the existing Nepean Sailing Club website. Each website shares a common look and feel — since they are all based on the exact same child theme of TwentyTwelve — but have distinct headers ( images, titles, taglines) and navigation.
- This scheme allows the Nepean Sailing Club web team to create new “compliant” sub-Webs as required, with minimum time and effort.
- With Ted Eedson, the Board Of Directors Secretary, converted the free BOX.COM (formerly BOX.NET) cloud-based storage to a more versatile pay-for-service account with more storage, and developed a comprehensive document storage structure to hold all official governance and office documents.
- Introduced the usage of CLOUD storage and applications using BOX.NET, created a directory structure and migrated all the official NSC documents to public or private folders to the remote CLOUD servers.
- Converted the nsc.ca WordPress installation to Network/ Multi-users, and integrated the existing independent WordPress sub-Webs into a single, unified system. Also imported and installed a MySQL multi-table Race Committee Volunteer Registration system exported from another site, altered the tables structure and modified the PHP application code at the users’ request to add functionality such as reporting and checkbox-driven updating. We then cloned this database system and added other functions to facilitate usage as a general event/work party registration system.
- Migrated the main NSC page to the WordPress.org framework to allow key NSC players (directors, committee chairs, office staff) to do their own postings by means of an easy to use Content Management System (CMS) as well as to allow them to solicit comments, and to offer users extended search capabilities on keywords, categories, tags and months. See Way Back Machine, Oct 2009.
- Converted the HTML 4.01 design to an XHTML-strict Template, created our own template (PHP and CSS files) to match the look and feel of the old site – a corporate requirement – and modified plugins and the theme PHP code to increase or match the functionality of the old site. This activity required approximately 40 hrs.
- Created the integrated NSC Google Calendar, that remains in use today.
- Converted the site from an Microsoft’s ASP/ Coldfusion/MSSQL environment to a LAMP (Linux, Apache, MySQL, PHP) environment. This effort alone required about 70 hours of work as databases had to be converted and imported from Microsoft’s SQL to MySQL environment, many scripts had to be re-written from ASP and Coldfusion to PHP, a new access to the member’s private area had to be devised and implemented, and hundreds of broken links caused by file names upper and lower case mismatch (Microsoft being case insensitive but not Linux) had to be tracked and fixed.
- With the coming of MSIE7, combined the two “browser-dependent” Style Sheets developed in previous years into a single IE ready, “browser-independent” set.
- Re-designed the pages backbone using modern coding and styling techniques, converting a table-based layout into a table-less, Cascading Style Sheet Positioning (CSS-P) layout. See Way Back Machine, 10 Oct 2006.
- Hugh Morrin joined the web team, initially setting up the Race Results folders and pages, a structure that remains in place today, and provides race results dating back to 2003.
- Created a “poor man” Reservation/Registration system in PERL to support the office and the kitchen.
- Using the services of a graphic artist, completely re-designed and rebuilt the website structure and backbone to W3C HTML V4.01 / CSS Level 2 compliant standards that present a common look and feel on all major web browsers. Two different style sheets were used for IE and non-IE browsers. See Way Back Machine, 31 Dec 2003.
- Converted the site from a loose collection of Web pages to HTML V3.2 compliant standards, see Way Back Machine, 31 Mar 2001.
- In April, Daniel Servranckx took over as Webmaster.
- Bernie Coyne moved to the USA. Don Duchenes took over as interim Webmaster.
- Bernie Coyne registered the website and created the first pages. See Way Back Machine, 11 Nov 1998.
Page updated: 2020-07-10.
03 Aug: HM: Minor editorial corrections.
10 Jul: DS: Updated text.
23 Jun: HM: Added this update log. Very minor editorial updates.
24 Jun: DS: added the 2019 and 2020 sections.
24 Jun: HM: Minor editorial updates.
15 Dec: Unspecified updates. Last update before this update log was added.
DS: Page created.
Page maintained by D. Servranckx.