That Dev Girl

Better Code.
Better Websites.

My name is Joni Halabi and I am a web developer in Washington DC. I create websites and applications for large and small organizations, specializing in WordPress, Drupal, and Javascript applications.

E-mail me for more info


Georgetown University Medical Center home page

Georgetown University Medical Center (2018)

WordPress, ReactJS, Sass, HTML

I currently work full-time for Georgetown University as a Senior Javascript front-end developer in our University Information Services department. I worked with a team of developers, designers, and product managers to create a flexible and responsive themes for the University's school websites.

This site is part of a larger WordPress installation that includes individual sites and sites on a multi-site network. We are in the process of migrating our sites from Drupal and refactored that old theme to work with WordPress 5. I led the development of a series of custom core editor blocks, using ReactJS and the Gutenberg API, to meet our specific content needs. These blocks includes card decks, expandable content, custom list formats, and dynamic news blocks.

View Site

Board Game Innovation home page

Board Game Innovation (May 2017)

WordPress, WooCommerce, HTML 5, CSS, Bootstrap 4 (alpha), jQuery

BGI reached out to me in early 2017 to redesign and replatform their website. I created a new site design based on their logo and existing style guide standards. I also helped them evaluate several ecommerce platforms, including Shopify and WooCommerce, to determine which platform would best fit their needs.

I implemented the design in WordPress with WooCommerce. The site also includes custom functionality, including integration with Braintree for payment processing, integration with to provide shipping options, and support for international pricing and checkout.

View Site

Whitehaven code playground screenshot

Whitehaven Code Playground @ Georgetown (2016)

Jekyll, jQuery, HTML 5, CSS, Bootstrap 4 (alpha)

This site is also part of my work at Georgetown University. I created this site as part of our documentation efforts to encourage Drupal content editors be familiar with Bootstrap code supported in our website themes.

Users can insert commonly used code blocks and immediately see what they will look like in our Drupal 7 theme. (The theme's stylesheet is included on this page.) Users are also encouraged to play around with the code to update classes and add their own HTML as part of their training on the theme and Bootstrap.

View Site

SemanticClarity home page

SemanticClarity (February 2016)

Drupal 7, Sass, CSS, HTML 5

SemanticClarity reached out to me in late 2015 about relaunching their website in parallel with an initiative to refocus their business strategy.

I worked with them to create a new design based on their current branding and develop a flexible, responsive Drupal theme based on that design. The new site was on the Acquia platform. This site launced in early 2016, but the company no longer has a website, so this work is no longer available.

Chicago Community Trust home page

Chicago Community Trust (May 2015)

Wordpress, Javascript, SASS, CSS, HTML 5

I led the development of this project while working at AMS. Our team of developers collaborated with the designer, managers, and content editors during the course of the project. The site won the 2015 OMMA award for website excellence in the charity/non-profit space.

View Site


Macy's Internal Application (2014)

Backbone.js, Marionette, jQuery, Jasmine, CSS

At Optaros, I was the lead front-end developer on a team that re-platformed the UI of Macy's internal product management application as a Backbone application, using Marionette, Require, Jasmine, jQuery, and a custom light-weight CSS grid framework. We are created a library of core UI components to be used by us throughout this application, as well as by other Macy's teams.

My primary function on this team was to create component designs for each section of the application in development. These component designs included the Backbone model structure, necessary REST calls for a given section, and payloads for those REST calls.


15 August 2019

Besan Block: A long time coming

A few times a year, we hold an internal event at work that we call “Serendipity Day.” We use this day, inspired by NPR, to work on projects that are...

Read post

05 August 2019

I have a dirty little secret: I want to be a junior dev again

I have been a professional developer for 20 years. Actually, I have been writing code for much, much longer than that, but I have only been getting paid for it...

Read post

25 March 2019

Featured Images, Gutenberg, and You

A very common editor update that us WordPress developers make is to add options to the featured image meta box in the post editor. This is usually something like a...

Read post

16 October 2018

A Very Informal Look at Gutenberg Accessibility

We have been working all year to replatform our websites at work from Drupal to WordPress. We decided to go with WordPress for many reasons, one of the biggest being...

Read post

Want to read more?

Check out all of my blog posts


Customizing Gutenberg: Lessons Learned at Georgetown

The new Gutenberg editor comes with so many great content blocks. However, what if your editors have special use cases for their content that cannot be easily created with Gutenberg’s out-of-the-box blocks? At Georgetown, we have created a series of custom Gutenberg blocks in an effort to address our editors’ unique content needs.

This talk was given at WPCampus Online 2019.

See slide deck

Accessible Web Development

We develop websites for everyone to use, so why not make sure that everyone is able to use our sites? We as developers need to plan for accessibility before we write our first line of code.

This talk was given at NoVA CodeCamp (April 2017) and ConvergeSE (June 2017). A shorter version of this talk was given at edUi (September 2017).

See slide deck

Introduction to SVG

Notes and example code for my introductory lecture about creating and using SVGs.

See notes on GitHub

Introduction to Ember

Notes and example code for my introductory lecture about using Ember.js.

See notes on GitHub

CSS Navigation

Video lecture tutorial on how to create a multi-level website navigation with only HTML and CSS.

View on YouTube

Tools and Projects.

Accessible Calendar

HTML and CSS-only accessible and responsive calendar.


AJAX "Load More" Pagination

Add a "load more" button to your archive and search results pages to dynamically load additional posts without pagination or page loads.


Backbone Recursive Navigation

This component is a Backbone.js model and view that can be used to construct an infinitely deep navigation or nested list.


Backgrid Cell Extensions

This library contains a series of Backgrid cell extensions.


Besan Block Plugin

WordPress plugin that adds a post editor block to create charts from Google sheets.


Character Counter

Character counter written in jQuery.

Github Gist

Color Palette Plugin

Color palette creation plugin for WordPress.


Color Sequencing Dialog

This color sequencing widget was developed as a proof of concept to reorder large numbers of content blocks inside a YUI dialog box.


CSS Mega Menu

This simple mega navigation menu is inspired by the many mega menus on retail and other websites.

Github Gist

CSS-Only Menu

This simple navigation menu demonstrates how to create a main navigation menu with drop down sub-menus using just CSS.

Github Gist

CSV to JSON Converter

This script will convert a CSV file to JSON. That's it!

Github Gist

Flickr Place Image

Script that uses the Flickr API to provide placeholder images for web developers and designers.


GitHub to Trello Migration

This page/script allows you to migrate GitHub tickets into Trello.

Live Preview

Gutenberg Autocomplete Component

The existing OOTB Autocomplete component in the Gutenberg API is broken. This is a simple substitute.

Github Gist


A node module to copy boilerplate code for new projects, cloned from other personal Github repos.



Facebook profile picture generator app that adds an image of the Earth over your existing profile picture.


Phone Number Conversion

A quick tool to convert plain phone numbers into accessible phone number links.

Live Tool

Prototype Helper

A utility site that lists and loads all of my favorite prototyping tools.

View Site

Static Website Base

My personal standard base code for static websites.


Text Area Limit using YUI

This text area limit widget was developed as a proof of concept for implementing a character limit inside a text area.


WooCommerce Tiered Shipping Plugin

This WordPress plugin adds a tiered flat rate shipping option for the WooCommerce plugin.


Word Counter

Simple word counter in jQuery.

Github Gist

const thatDevGirl = {

'Joni Halabi',
'Senior web developer and instructor'
'Washington DC',
'Busy with project little peanut. OK for chatting.',


Let's talk shop!