Lou Groshek Web Developer and Online Learning Consultant

My Expertise

Hi! My name is Lou, and I'm a freelance web developer specializing in static site generators including Gatsby, Jekyll, and HUGO. I have experience with a11y, AWS, Google Analytics, and the Adapt Framework for online learning content. My expertise also includes SCORM, Moodle, and WordPress online learning plugins like LearnDash and Edwiser.

I have 10 years of experience in the online learning industry, and I got my start doing front-end and PHP development for the Moodle LMS. What I love most about freelancing is that I am constantly learning new programming languages and frameworks. I prefer clients invested in elegant, efficient, and future-forward solutions with minimal technical debt. If you ask me for something that's not a very good idea, I'm sure to tell you so. ;)

Static Web Sites

I specialize in blazing-fast, bespoke, static sites that leverage the software-as-service model to reduce costs and maximize site flexibility, reliability, and SEO. These sites work great for small businesses, independent service providers, and startups.

HUGO and Gatsby are my favorite static site generators. Netlify Forms meets client needs for simple inputs and contact forms. Netlify Lambda Functions allow integration with virtually any service that provides an API. This allows clients to have the lean, mean site they want without the burden of server maintenance and security monitoring. For clients with higher traffic or more advanced needs, AWS Lambda often hits the sweet spot.

HUGO logo Gatsby logo Jekyll logo

Web Development

Extensive LAMP stack development experience and a hearty OSS ethos. My web development experience includes Vue, Angular, React.js, Node, Backbone, Jekyll, eCharts, D3, and Google Maps.

My background also includes projects which prioritize a11y and L10n.

Moodle and SCORM

I have extensive Moodle and SCORM expertise. I wrote the SCORM documentation on Moodle.org. I specialize in debugging and consulting services for your SCORM content in Moodle. My Moodle experience includes both custom development and instructional design.

For SCORM content authoring that's open-source, accessible, and developer-friendly, I highly recommend the Adapt authoring tool and framework.

Adapt Learning logo

Featured Projects

Child Poverty Action Lab Explorer
Child Poverty Action Lab Explorer Map

This map allows users to explore indicators of child opportunity within a school zones, a 2-mile radius around a school, for all schools the Dallas ISD school district. Users can visualize indicators in relation to the distribution of racial and ethnic groups. The project encourages equitable distribution of school bond resources across the district. Project features include:

  • Mapbox map with dynamic, filtered GeoJSON features and dynamic demographic layers
  • eCharts charting for feeder school data and patterns
  • Turf.js to dynamically generate school "zones"
  • Hash routing with localStorage to manage and cache map state
  • User tour with Joyride
  • Responsive, device-targeted interactions and display

Featured in:

Skills: React.js, MapBox, GeoJSON, SCSS, Bootstrap, nwb, npm, Gatsby

Check it out
Eviction Lab COVID-19 Housing Policy Scorecard
Eviction Lab COVID-19 Housing Policy Scorecard

This site feature ranks all US states by COVID-19-related tenant protections (or lack thereof). This interface and the individual state details pages all fetch and render data from a Google spreadsheet of eviction policy data maintained by Eviction Lab. Featured in:

Skills: jQuery, Bootstrap, Google Sheets API, mobile-first, a11y

Check it out
Evictionlab policy list
Eviction Lab Policy List

This dynamic table loads a list of national and local Covid-10 eviction policies. Project features include:

  • Sortable table draws content from Google Spreadsheet

Featured in:

Skills: JavaScript, jQuery, AJAX

Check it out
Evictionlab PDF and PPTX export contents
Eviction Lab Custom PDF and PPTX Reports

Server-side scripts to generate and download PDF and PPT reports selected from the Eviction Lab Explorer map. Project features include:

  • Update PDF and PPT generation scripts to render confidence interval
  • Combine Handlebars templates for more reliable translation
  • Update Eviction Lab map to pass confidence interval in request for PDF and PPT exports

Skills: Angular, Handlebars, PptxGenJS, Headless Chrome, Typescript

Check it out
Educational Opportunity Project site
Graph and Table Updates for Eviction Lab Map

Project features include:

  • Calculate and render confidence interval for line and bar chart data
  • Add confidence interval to chart tooltips
  • Add confidence interval to location cards and tables
  • Update Google Analytics tracking data
  • Add confidence interval toggle controls
  • Create SVG patterns for bar chart confidence interval shading

Skills: Angular, d3, Typescript, npm

Check it out
Evictionlab site
Eviction Lab Hugo Site

Moves Hugo site from gulp build process to native Hugo build. Project features include:

  • Test site content and fix minor errors caused by Hugo version update
  • Update Netlify configurations for Hugo build process
  • Switch image processing from gulp to native Hugo image processing

Skills: HUGO, Golang, gulp

Check it out
Educational Opportunity Project Opportunity Explorer PDF Export
Custom PDF Report Export for The Educational Opportunity Project at Stanford University

This project generates custom PDF reports based on locations selected by the user. The report is generated by rendering a Handlebars template in headless Chrome, then printing it to a PDF data stream for download.

Skills: Puppeteer, Handlebars, Headless Chrome, node.js, scss, AWS

Check it out
Educational Opportunity Project site
The Educational Opportunity Project at Stanford University

Web site for the Educational Opportunity Project. Project features include:

  • HUGO site architecture and styling
  • eCharts development and configuration
  • React.js component updates
  • SVG animation
  • jQuery modal dialogs
  • Netlify Lambda function, using node.js to register users to MailChimp list
  • Google Analytics custom events and tracking with Google Tag Manager

Skills: HUGO, eCharts, Golang, Bootstrap, React.js, nodejs, Netlify Functions, Netlify CMS, Google Analytics, Google Tag Manager

Check it out
Dignity + Debt Site react app
React.js App for Princeton University's Dignity + Debt Site

This custom React.js component allows users to compare their student loan debt to that of various US demographics. It also allows users to explore how loan refinancing would affect their payoff timeline and overall payment on a loan.

Skills: React.js, HUGO, Golang, Bootstrap, Netlify

Check it out
TeachingLab web site
Twitter Feed for TeachingLab HUGO Site

TeachingLab wanted to display recent tweets on their site. I wrote JavaScript and a nodejs Netlify Function to fetch the tweets through Twitter's oAuth API, render the tweets, and animate them.

Skills: HUGO, Twitter API 2.0, Golang, Bootstrap, React.js, nodejs, Netlify Functions, Netlify CMS

Check it out
PrimedIO Site
Bespoke Static Site with HUGO

PrimedIO wanted a static site with blazing-fast SEO. They needed internationalization, Nelify Forms, and were capable of editing blog posts and other content themselves once the site was up and running. This site features extensive CSS work to implement design elements and responsiveness without negatively affecting load time.

Skills: HUGO, Golang, CSS, Bootstrap, JavaScript, PHP, JSON, Netlify, Netlify Forms

Check it out
Adapt corporate training SCORM
SCORM Corporate Training with Adapt

This corporate client needed SCORM online learning content that would be responsive, WCAG A compliant, and easily translated into several langauges. They selected a subway map theme for content organization, and the content pages reflect this theme by portraying color-coded subway "paths" and subway stop "nodes". I developed several custom Adapt plugins in order to give the client the highly customized format they preferred. These Adapt plugin customizations include:

  • A custom question type
  • A custom plugin presenting a responsive dialogue between two characters
  • A custom "more info" text feature
  • Customizations to the hotspotMenu plugin to add graphical progress display overlays on the subway map
  • Custom SCORM reporting
  • Custom navigation locking
  • Schema updates for full translation of the certificate and several other components

Skills: SCORM, Adapt, Backbone.js, Mustache, a11y, L10n

Dignity + Debt Site
Princeton University's Dignity + Debt Site with HUGO

This site uses Bootstrap 4 for navigation and layout responsiveness. Content pages loop through custom data files stored outside of the HUGO content directory. Many content fields are editable using Netlify CMS.

Skills: HUGO, Golang, CSS, JavaScript, PHP, JSON, Netlify, Netlify CMS

Check it out
User1st accessibility rule documentation site
Accessibility Remediation Documentation Site with HUGO

User1st wanted to use a static site generator to create a documentation reference for their automated remediation tool and developer training programs. This site uses a modified version of the DocDock theme. I created a custom template for the rule documentation pages, and wrote a PHP script to convert CSVs of rule documentation into individual markdown files.

In subsequent updates to this site, I have added a Netlify CMS schema so that a11y criteria are editable via Netlify CMS. I have also added JSON custom content types to output all a11y standards, standards sorted by WCAG guideline, and standards sorted by tag. I have also retooled the navigation menu to sort all items by WCAG Guideline.

Skills: HUGO, Golang, CSS, JavaScript, PHP, JSON, Netlify, Netlify CMS, a11y

Check it out
User1st online learning site
Online Accessibility Training Marketplace with Moodle

User1st wanted an online learning environment for the delivery of accessible SCORM training modules. The content we produced needed to meet the exacting accessibility standards advised in the training they contained. We chose the Adapt framework, and when it came time to test the SCORM content for accessibility, I was able to use CSS and JavaScript to alter the Adapt theme and plugins in order to improve screen reader accessibility.

Skills: Moodle, Adapt, SCORM, PHP, CSS, JavaScript

Check it out
Morel's Ortho-Bionomy Site
Wellness Services and Courses with Squarespace

Morel needed a simple web site to advertise her wellness service offerings and in-person traiings.

Skills: Squarespace, CSS, JavaScript

Check it out
Amy's Consulting Site
Consulting Services and Information with Squarespace

Amy needed a simple web site to advertise her consulting and analytics offerings. Amy came to me with a very particular aesthetic and image set in mind, and this site required extensive image editing, as well as some font set embedding, to make the site look just right despite the constraints of the Squarespace platform.

Skills: Squarespace, CSS, JavaScript

Check it out
Moodle tracker
Online Moodle Course Marketplace with Edwiser

SumLogix came to me with a legacy Moodle site and several existing Moodle courses. Their existing WordPress/Moodle integration was no longer functioning, and their Moodle site was long outdated. I manually upgraded the Moodle database through several major versions, updated the WordPress plugins and theme, added a child theme for UX updates, and tested and configured PayPal and Stripe purchase workflows. This site accepts transactions in multiple currencies, using the WordPress Currency Switcher plugin and geolocation to provide the customer with the appropriate currency.

Skills: Moodle, WordPress, WooCommerce, Edwiser, PHP, CSS, JavaScript

Check it out
Wallaroo Labs Blog
Hugo Customizations

Wallaroo Labs needed updates to an existing blog using the Hugo static site generator. I updated the display of individual posts and post indexes. I also added a slideout panel for additional links.

Skills: Hugo, golang, CSS, JavaScript

Check it out
Moodle tracker
Moodle Core Contributions

I have made 13 contributions to Moodle core. MDL-57785 reduces the server load resulting from SCORM content access by eliminating a navigation menu refresh when the navigation menu is not shown in the display. MDL-60478 improves performance of the network connectivity check performed during SCORM sessions, increasing the interval at which checks were performed, increasing the request timeout value to prevent false positives, and reducing the default number of alerts shown to 1.

Skills: PHP, YUI, JavaScript, Grunt, git, Travis, SCORM

Check it out