Justin using a laptop outside Life Alive

Photo: Louise Elsberg

Justin
Alexander
Francos

jf@justinfrancos.com

Every entry here is an answer to a problem that I or someone else had, and represents a project that I researched on my own, and then designed and implemented on my own.

Skill Highlights:
2017
Programmatically created (this) personal web page using Node.js

I didn't want the user to experience the typical reload delay in navigating among parts of the site, so I designed it as a single-page application, where the "links" (about/portfolio/music) switch among the sections by adjusting the display style element to show or hide each section.

But I also wanted to be able to link to each section. So I wrote some JavaScript that generates three versions of this page, differing only in which section is initially visible. In addition, the script constructs the portfolio section from a skeleton structure and a dictionary of data for each portfolio entry.

Independent/solo

Published at http://justinfrancos.com

  • HTML5/CSS3
  • BootStrap 4
  • Node.js
  • jQuery
GitHub Repository

Wrote a single-page application that scrapes and collates arbitrary online calendars

I wrote a calendar-scraping Python script, which lives on a Linode server. The front-end accepts online calendars that you specify by URL, uses AJAX and SSE to communicate with the Python script, combines the resulting calendar data and displays them by date.

Many libraries are utilized by the calendar scraper, including html2text, which I patched to include XPath-ish data with every node of text.

Independent/solo

Published at http://cs.justinfrancos.com

  • Python
  • HTML5
  • jQuery/Ajax/SSE
  • BootStrap 3
  • GNU/Linux
  • Selenium/PhantomJS
  • Beautiful Soup
  • NGINX
  • Patching other people's software
Front-end JavaScript
2016
Wrote a single-page application to automate the drawing of shapes inscribed within a circle

Commissioned by Ryan Moore from The Globe Institute's Sound and Consciousness Program to automate the drawing of diagrams that he uses for his classes. They took him hours to create, now they take minutes.

The drawings consist of a circle with lines connecting (not necessarily adjacent) vertices of equilateral shapes along the circle's circumference.

Independent/solo

Published at http://justinfrancos.com/cyclicalpatterns

  • jQuery
  • HTML5
  • BootStrap 3
  • Single‑page application
  • Trigonometry
  • SVG
Front-end JavaScript

Augmented surveilliance system with ZoneMinder
It was difficult for staff to get recorded video from the surveilliance system's poor interface, so I installed and configured ZoneMinder, which receives RTSP streams from the unit and does the recording itself. Configured 15 terabytes of storage among 10 hard drives using RAID and LVM.
Epiphany School/solo
  • Linux Administration
  • LVM/RAID
  • Hardware Configuration
2015
Wrote musical ear training iPhone app "Ear Sharpener"

Automated a musical ear training exercise I learned in high school, which originally required a tape recorder and many hours of preparation.

This is a rewrite/redesign of an earlier (2010) version, which was written in Objective-C.

Some technical points:
  • Created custom controls
  • Created interface programmatically using “constraints”
  • Used lower level audio calls for instances where low-latency, synchronicity, and memory conservation were needed
  • Addressed concurrency issues

1.53K units sold, 4.5 star rating (as of 3/8/2017)

Third party review
Independent/solo

Ear Sharpener in the iTunes Store

  • Swift
  • XCode
  • iOS
  • Constraints
  • Concurrency
  • Low‑level audio

Wrote a single-page application demo of my iPhone app "Ear Sharpener"
I wanted folks to be able to see what my Ear Sharpener iPhone app is like before downloading it. Uses HTML5's audio api.
Independent/solo

Published at http://earsharpener.com

  • JavaScript
  • JQuery
  • BootStrap 3
Front-end JavaScript

Created custom video surveillance remote monitor

The principal wanted a permanent remote monitor mounted in her office. So I Installed Debian on an HDMI stick, and replaced X's login software with a script that ran 12 instances of mpv, each one accessing an RTSP stream from ZoneMinder and displaying in a 3x4 grid.

Epiphany School/solo
  • Linux Administration
  • Bash

Wrote a "brain training" iPhone app

There is a “brain fitness” game called “Dual N-Back”. I made a musical version of it called Dual N-Bach.

Independent/solo

Dual N-Bach in the iTunes Store

  • Swift
  • XCode
2014
Created custom Linux distribution for students' laptops

Eight year old laptops had hardware that was working fine but Windows XP was approaching end-of-life. So I wrote a set of scripts to be run against a fresh Linux Mint (Qiana) install, to make the laptops suitable for students and for being integrated into a Windows domain environment, which could then be used to image all ~100 laptops using a FOG server that I setup.

Scripts automated: Joining the domain using Centrify on first boot after imaging, customizing available applications, pre-configuring wireless connection, disabling text mode except for via "Magic SysRq", replacing mdm with lightdm, adding printers, replacing the boot logo, setting some Libre Office defaults, locking the background, and allowing an admin to access an xterm while a student is logged on.

Epiphany School/solo
  • Linux Administration
  • Bash
2012
Wrote a calendar scraper backend (Bash/Linode) and front end (iOS)
I wrote a Bash script that scraped the data from 24 Boston-based venues' calendars. It ran once a day and put the data into an SQLite database. The iOS front end checked for and downloaded these updates, and displayed all events by date, and provided various filtering options.
Independent/solo
  • Linux/Bash
  • Objective-C
  • XCode
  • SQLite
2010
Wrote musical ear training iPhone app "Ear Sharpener"

Automated a musical ear training exercise I learned in high school, which originally required a tape recorder and many hours of preparation.

I had to use C++ for some of the low-level audio, specifically to synchronize playback of multiple sounds.

This is an earlier version of the above (2015) version of Ear Sharpener.

Independent/solo
  • Objective-C
  • C++
  • XCode
  • iOS