Side Project: Watching All the Tech Job Openings in New Orleans
For a long time, I’ve been fascinated by websites that are simply a generated set of flat files. 9 times out of ten, the content you want to put up on the web doesn’t change enough to warrant a big back end database. Generating files (HTML and the like) up from and simply serving a bunch of static files is a great way to have a simple and fast website.
The problem: I’ve been looking for a job in New Orleans for the past month. Even though there are only three main job posting websites for New Orleans, it’s still a pain to check each one – I’d rather have one main web site from which I can see all the job postings.
The solution: NOLA Tech Jobs is simple website updated hourly that goes out and compiles a list of job postings from various job posting websites (Craigslist, Work Nola, and Nola.com). It’s powered by a cron script that runs hourly. The script does two things: scrapes the job posting websites and converts them in to Jekyll posts, then re-builds the Jekyll website.
I knew I’d be checking this site on my phone often, so I used Twitter Bootstrap to build out the user interface. The header image is responsive, thanks to some perl code I wrote.
An interesting thing happened when I was building the site. Even though I was powerless to refresh the page and trigger a refresh on the job list, I felt the need to. So I added a countdown timer, which somehow mitigated this urge to refresh the page (possibly by letting me know when it was “ok” to refresh the page). The countdown timer also had the added effect of being a moving element, making the page more interesting to look at.
This countdown box ended up taking much longer than I expected. Turns out, dealing with dates on the web is very difficult. I had to correct my server time with ntp
, and carefully generate the two files that control the countdown.
The countdown logic works like this:
- My countdown counts down from the current time (on the user’s computer) until the
Date
declared by my inclusion of{ % includes future % }
in my JavaScript (which is in a big chunk at the bottom of my default layout). This file simply has a date (formatted appropriately for JavaScript’s Date/Time standards) that is one hour in the future from the execution time of the site generation script. - The execution time of the script is stored via a similar
erb
include
and rendered out on the page. It was very important to render these out with the TimeZone, since without it, the countdown would default to the end user’s timezone, which may or may not be the same TZ as New Orleans.
I debated briefly about doing localization, but decided to keep everything pinned to America/Chicago
since that’s the timezone that New Orleans is in.
So, if you’re looking for a tech job in the New Orleans area, and are lazy like me, try NOLA Tech Jobs;