Categories
Work

Campus Webcams (C#)

A simple site that reconstitutes single JPEG images from within the UCF firewall for outside consumption via Motion-JPEG

Purpose

We got an urgent request to recreate UCF’s Campus Webcams site, as UCF Marketing was replacing the main UCF site with a WordPress install (thus removing all of the various sub sites of that legacy implementation). We had no contact with the original developers nor any glimpse of the code that powered the previous Webcams site. In addition to reproducing the original site, it was requested that the new site also double the number of cameras viewable.

Method

I got to work quickly on an .NET C# MVC3 application, building out a default Area for the public and an admin Area for a front-end to a database that stored webcam information. I gathered data manuals on all the various camera manufacturers represented throughout our departments and discovered ways to pull single-frame data at specific resolutions from each. I wrote an Action that composes constant snapshot data into a Motion-JPG stream. Finally, after some research, I pulled down a Nuget package for an image processor to do Gaussian blurs on the images (for legal reasons).

Highlights

There is nothing quite as bizarrely satisfying as writing the raw response output of a Motion-JPG stream. It’s too bad that no version of Internet Explorer (through 10) supports Motion-JPG; any IE visitors get redirected to the raw Frame output (and a basic JavaScript refresh every eight or so seconds). It was also fairly satisfying to get into the groove of making all of my applications responsive for browsers and devices smaller than our minimum window size. Finally, just because I could, it was a blast to develop a KML feed that could display the cameras on Google Maps.

Categories
Work

LINK

  • Type: Website
  • Language: PHP
  • Framework: None
  • Authentication: Integrated
  • Data Source: SQL Database

Purpose

This project was largely self-initiated. As with many problems at UCF, my task arose from a former student assistant’s bad and incomplete code. Rather than tip-toe around it and poke and prod as necessary, I decided to take up a sprint to rewrite the database front-end and accompanying student-facing site.

Method

As we had yet to adopt a PHP framework, the CRUD for each table was developed by hand, with a few helper functions that matched httpPost values with SQL table columns for create and edit pushes.

Highlights

For the public event submission form, I was able to discover an API to UCF’s campus map, consume it as JSON, parse out the list of buildings, and make that a required choice for the event. Once the event was approved and posted, public users could then discover the location of the event through a link to the campus map.

As each event was displayable as both a master event and a single session of a master event, I was able to integrate each with a “Post to Facebook” and “Post to Twitter” button, allowing a social layer of connection to the program’s social networking presences.

Finally, we developed some icons that allowed event categories to be associated with a color, allowing users to quickly determine differences.

Takeaway

Sometimes, throwing away the remnants of a bad idea and starting fresh is the best way to go, despite the time commitment. The resulting application has survived with no changes for years now–a testament to the customer’s satisfaction with the user experience.

Categories
Work

SDES IT: Training Application

  • Type: Website
  • Language: C#
  • Framework: MVC 2
  • Authentication: Integrated
  • Data Source: SQL Database

Purpose

Our training situation at SDES IT developed into a full-time training position. Once hired, this trainer requested a way to have users discover classes, sign up for said classes, and be sent reminders for said classes.

Method

For this application, I wanted to dip my toes in .NET MVC (then at version 2). The resulting app absorbed the existing PHP site (including videos, text copies, and links) and introduced a Windows-Auth-protected section that allowed users to sign up for available classes and fill out a profile (which would be pulled up on subsequent visits). After each submission, an iCal-formatted ICS file would be dispatched to their email address, allowing them to track their own class signups.

Highlights

The delineation of access levels is so painless in MVC, as each controller can easily be filtered to a certain Active Directory user or role/group. This allowed the app to cover public users, domain users, and administrators in one project with ease. Also, building an ICS file from scratch was exciting and highly effective.

Takeaway

While we were not quite prepared for the volatility the trainer position would exhibit over the next few years, the application ran into very few problems during its tenure as a class-signup solution. It is currently on hold for a redesign to match future needs.