Programming for the Riverside County Transportation Commission (RCTC)

Sat, 04/22/2017 - 23:19

I have performed several tasks for RCTC over the last two years updating and creating content, not only for their main website, but for the various construction and project proposal websites as well. This article only highlights a few.

NOTE: Geographics company did not create the latest version of the RCTC main website. They still do a great deal of work for them, but for the website, they decided to go another way.

Since 2015 I have been maintaining many of the websites and one of the servers for the Riverside County Transportation Commission (RCTC). When I took over maintaining the server users were complaining that they were uploading files that were disappearing after a day or so. It turned out that the server was full. I proposed that the server be upgraded for 2 reasons.

  1. I was not yet familiar with the servers content and didn't want to delete anything that might break any websites.
  2. Much of the content on these websites are public information that legally must be available for research.

I was amazed that the server had not been compromised as the 'root' password was only five letters,...lowercase. The server had been running for 10 years so, it must have been luck that kept hackers out because, as is usually the case, in the secure log there was the steady stream of brute force attacks against the root login...."amazing".

So, I upgraded the server and added a reasonable password for root.

SR-91 Project Closure Alerts
Sr-91 alerts

In 2015 I built a mobile website that posted the MANY closures of the SR-91 Freeway Construction project. The content was searchable based a number of parameters. The data was populated by a previous developer using the Wordpress Custom Post Data plugin so it was not very search able. With my knowledge of MYSQL I was able to make the data searchable to the clients satisfaction. The program was able to send an email blast via an SMTP to alert subscribers of upcoming closures. The email alert system was never used as it was designed. I designed it so that a user could built an email alert just like an article or page post in the CMS. This data would be overlaid into a template. They could have posted specific major closures into the email for subscribers to see. Instead, once a week the same blanket email told 1000's of subscribers what they already knew...that the SR-91 freeway was going to have construction closures and to go to the website for more information.

Luckily I wrote the program as a plugin and was able to re-purpose it for customers in later websites. The 91 freeway is now open and so the website alerts are no longer updated.

 

OnTheMove - RCTC Monthly Newsletter
onthemove rctc enewsletter

The RCTC newsletter is sent using Constant Contact and luckily they simply send me the articles and let me build it because, I don't tend to like using Constant Contact ... at least not when I have to build a temple using their tools. They inject tables that add padding. Other tools like Granicus or MailChimp basically give you full control to build, "your", template. Anyways I build the newsletter once a month. I built a simple PHP program that injects inline styles based on variables declared at the beginning of the program. I use inline styles because everyone at RCTC uses Outlook which is more fun that a barrel of monkeys using Internet Explorer...seriously, Its not.

 

Live Streaming Board meetings using Azure Media

Live Streaming Board meetings using Azure Media

RCTC wanted to be a ble to stream their board meetings on the website using a service called Azure Media. They provided me with some source code and I added it obligingly. A few days later I was asked if it would be possible to:

 

  1. Add multiple videos on one page that could be displayed in the same player using the buttons plugin?
  2. Could I make it so that the video could easily be switched out as necessary?

 

I had never written anything for Symfony Apostrophe 1.5 and the CMS was deprecated so there was little documentation and absolutely no support. Regardless, I figured it out and created a plugin.

 

I had never with Symfony before, or for that matter, any framework that needed the PHP cache to be cleared. (This is sort of an ambiguous term). Clearing the cache is sort of a pseudo compile of the PHP, LESS/SASS and Javascript in order for the website to load faster. The first time a typed in "# symfony cc", the website broke. But, I didn't freak out...I just looked at the error logs. (this was apparently enough for a previous developer to quit). Turns out the permissions were incorrectly set on the cache folder. I set them correctly and re-ran the operation (voila). And for good measure I write a bash script to backup the cache folder and the database before the cache cleared automatically for future use. It was easier than using version control in this instance.

 

Tell RCTC
Tell RCTC

This was a fun little project. The RCTC Freeway Service patrol is a team of tow-truck drivers that will magically appear behind your car if you are broken down on Riverside freeways and help you out for free. I have actually had to use this once. Its pretty cool. So, anyways RCTC had a simple web-page designed for customer feedback and they wanted it upgraded with a more modern look and of course it needed to be responsive.

I designed this using Grunt to be as streamlined as possible. The white-space in the HTML is stripped out, the SASS and Javascript is minified. If I had access to the server I would have added Gzip server-side compression (but I didn't).

 

RCTC Photo Library Upgrade
RCTC Photo Library Upgrade

RCTC requested some new features for the photo library:

  1. The ability to upload photos, This was previously done using FTP
  2. The ability to add and administer users and user permissions
  3. The ability to add and manage folders
  4. A better cart system allow individual downloads as well as the ability to download the cart as a zip file

For good measure seeing as how we were upgrading it, we decided to give it a more modern look and make it mobile responsive

Despite the program being based on old vanilla PHP, I saw no need to rewrite it. I did harden the login code a bit and upgraded the abstraction layer to use PDO.