1
1
Fork 0

styling fixup, better header for contractor

This commit is contained in:
Ava Gaiety W 2025-06-09 00:21:40 -06:00
parent 2a5b1eba8a
commit f5f15c4ac1
19 changed files with 126 additions and 109 deletions

View file

@ -7,6 +7,7 @@ const hljs = require('highlight.js/lib/common');
const { setup } = require('highlightjs-glimmer'); const { setup } = require('highlightjs-glimmer');
const markdownit = require('markdown-it'); const markdownit = require('markdown-it');
const markdownitClass = require('@toycode/markdown-it-class'); const markdownitClass = require('@toycode/markdown-it-class');
const markdownitImageFigures = require('markdown-it-image-figures');
const anchor = require('markdown-it-anchor'); const anchor = require('markdown-it-anchor');
const cheerio = require('cheerio'); const cheerio = require('cheerio');
@ -34,15 +35,19 @@ const markdownClassMapping = {
em: ['italic', 'text-green'], em: ['italic', 'text-green'],
img: ['max-w-full', 'rounded-lg', 'max-h-600px', 'contrast-more:contrast-50'], // (contrast-more-50 here undoes the content contrast boost elsewhere) img: ['max-w-full', 'rounded-lg', 'max-h-600px', 'contrast-more:contrast-50'], // (contrast-more-50 here undoes the content contrast boost elsewhere)
video: ['max-w-full', 'rounded-lg', 'max-h-600px', 'contrast-more:contrast-50'], // (contrast-more-50 here undoes the content contrast boost elsewhere) video: ['max-w-full', 'rounded-lg', 'max-h-600px', 'contrast-more:contrast-50'], // (contrast-more-50 here undoes the content contrast boost elsewhere)
ul: ['list-disc', 'ml-4', 'text-subtext0'], hr: ['mt-2', 'mb-4', 'border-yellow'],
ul: ['list-disc', 'ml-4', 'mb-4', 'text-subtext0'],
li: ['text-subtext0'], li: ['text-subtext0'],
code: ['hljs'] figure: ['inline-block', 'mb-4'],
figcaption: ['text-flamingo', 'text-xs'],
code: ['font-mono', 'text-saphire']
}; };
setup(hljs); setup(hljs);
const md = markdownit({ const md = markdownit({
linkify: true, linkify: true,
html: true, html: true,
typographer: true,
highlight: function (str, lang) { highlight: function (str, lang) {
if (lang && hljs.getLanguage(lang)) { if (lang && hljs.getLanguage(lang)) {
try { try {
@ -53,6 +58,9 @@ const md = markdownit({
return ''; // use external default escaping return ''; // use external default escaping
} }
}); });
md.use(markdownitImageFigures, {
figcaption: "title",
});
md.use(markdownitClass, markdownClassMapping); md.use(markdownitClass, markdownClassMapping);
md.use(anchor, { md.use(anchor, {
permalink: anchor.permalink.headerLink() permalink: anchor.permalink.headerLink()

View file

@ -4,21 +4,17 @@
"type": "split", "type": "split",
"children": [ "children": [
{ {
"id": "b4acd2dd631ab8d1", "id": "5fec0627342eb82b",
"type": "tabs", "type": "tabs",
"children": [ "children": [
{ {
"id": "97b5602fe03321b5", "id": "c9b66ad850a244ea",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "markdown", "type": "empty",
"state": { "state": {},
"file": "blog/modding-minecraft.md",
"mode": "source",
"source": false
},
"icon": "lucide-file", "icon": "lucide-file",
"title": "modding-minecraft" "title": "New tab"
} }
} }
] ]
@ -168,8 +164,10 @@
"command-palette:Open command palette": false "command-palette:Open command palette": false
} }
}, },
"active": "97b5602fe03321b5", "active": "c9b66ad850a244ea",
"lastOpenFiles": [ "lastOpenFiles": [
"2025-06-05.md",
"blog/modding-minecraft.md",
"_site/blog/modding-minecraft/index.html", "_site/blog/modding-minecraft/index.html",
"_site/blog/modding-minecraft", "_site/blog/modding-minecraft",
"_site/img/content/projbesy-photon-shader.png", "_site/img/content/projbesy-photon-shader.png",
@ -181,7 +179,6 @@
"img/content/minimap.png", "img/content/minimap.png",
"img/content/modding-minecraft.webp", "img/content/modding-minecraft.webp",
"blog/ember-atx-2020-spring.md", "blog/ember-atx-2020-spring.md",
"blog/modding-minecraft.md",
"img/content/distant-horizons.jpg", "img/content/distant-horizons.jpg",
"img/content/projbesy-photon-shader.png", "img/content/projbesy-photon-shader.png",
"blog/arizona_school_finance.md", "blog/arizona_school_finance.md",

View file

@ -13,9 +13,9 @@
{{description | markdown | safe}} {{description | markdown | safe}}
</div> </div>
<div class="mx-2 bg-base dark:bg-base/85 rounded contrast-more:bg-crust shadow border-l-2 border-yellow"> <div class="markdown-content mx-2 bg-base dark:bg-base/85 rounded contrast-more:bg-crust shadow border-l-2 border-yellow flex flex-col gap-2">
<img src="{{coverImage or image}}" alt="" rel="presentation" class="border-b border-yellow" />
<div class="p-4 sm:p-6 contrast-more:contrast-150"> <div class="p-4 sm:p-6 contrast-more:contrast-150">
<img src="{{coverImage}}" alt="" rel="presentation" class="mb-8 rounded" />
{{ content | safe }} {{ content | safe }}
</div> </div>
</div> </div>

View file

@ -1,15 +1,13 @@
--- ---
title: A Beautiful Deer title: A Beautiful Deer
description: My proudest I have been of competently painting a miniature.
coverImage: /img/content/deer1.jpg
date: 2022-08-23
tags: tags:
- TTRPG - TTRPG
date: "2022-08-23"
description: My proudest I have been of competently painting a miniature.
coverImage: /img/content/deer1.jpg
imageDescription: D&D sized miniature close up of a deer with white spots, antlers, with clean shading walking through an implied grassy meadow with shrubs.
--- ---
_Note: This is an article backfill, meaning I neglected my blog for some time and inserted this article back into history as for when it happened._ _Note: This is an article backfill, meaning I neglected my blog for some time and inserted this article back into history as for when it happened._
Recently I set up a hobby painting station where I have been churning out some new miniatures I am becoming increasingly proud of. It's also helped that I invested in [The Army Painter's Speedpaints](https://www.thearmypainter.com/speedpaint/) Etsy has some wonderful [paint stations]([https://www.etsy.com/listing/976336032/corner-paint-brush-holder?ref=cart](https://www.etsy.com/listing/976336032/corner-paint-brush-holder?ref=cart "https://www.etsy.com/listing/976336032/corner-paint-brush-holder?ref=cart")for this hobby as well. Recently I set up a hobby painting station where I have been churning out some new miniatures I am becoming increasingly proud of. It's also helped that I invested in [The Army Painter's Speedpaints](https://www.thearmypainter.com/speedpaint/) Etsy has some wonderful [paint stations](https://www.etsy.com/listing/976336032/corner-paint-brush-holder) for this hobby as well.
![D&D sized miniature close up of a deer with white spots, antlers, with clean shading walking through an implied grassy meadow with shrubs.](img/content/deer2.jpg)

View file

@ -1,6 +1,5 @@
--- ---
id: multimedia_for_invisible title: Crafting Better Multimedia for the Invisible People All Around Us
aliases: []
tags: tags:
- College - College
- Writing - Writing
@ -8,7 +7,6 @@ tags:
coverImage: /img/content/multimedia_for_invisible.webp coverImage: /img/content/multimedia_for_invisible.webp
date: "2023-03-11" date: "2023-03-11"
description: For a more universally accessible web, educators are adjusting how they teach software engineering, user experience design, content writing, and multimedia production. description: For a more universally accessible web, educators are adjusting how they teach software engineering, user experience design, content writing, and multimedia production.
title: Crafting Better Multimedia for the Invisible People All Around Us
--- ---
Posted originally on [Medium: Crafting Better Multimedia for the Invisible People All Around Us](https://medium.com/@hergaiety/crafting-better-multimedia-for-the-invisible-people-all-around-us-952f22070e6b) Posted originally on [Medium: Crafting Better Multimedia for the Invisible People All Around Us](https://medium.com/@hergaiety/crafting-better-multimedia-for-the-invisible-people-all-around-us-952f22070e6b)

View file

@ -1,8 +1,9 @@
--- ---
tags: community
title: "Talk: Achieving A11y Automation Testing" title: "Talk: Achieving A11y Automation Testing"
description: "A success story and a look at how anyone can automate **A11y** regardless of framework." tags:
- community
date: 2021-02-29 date: 2021-02-29
description: A success story and a look at how anyone can automate **A11y** regardless of framework.
image: /img/content/testjssummit2021.jpg image: /img/content/testjssummit2021.jpg
imageDescription: Photo of Ava's at-home setup with a microphone resting atop of a Macbook Pro showing the slides onscreen imageDescription: Photo of Ava's at-home setup with a microphone resting atop of a Macbook Pro showing the slides onscreen
pinned: true pinned: true
@ -10,12 +11,9 @@ pinned: true
> Accessibility testing in has come a long way in recent years. We'll dive into how EmberJS prioritized A11y with meaningful RFC's, Addons, tooling and docs. Most importantly, we'll discuss how these successes can be applied to your very own apps be they Vue, React, Angular or anything else! > Accessibility testing in has come a long way in recent years. We'll dive into how EmberJS prioritized A11y with meaningful RFC's, Addons, tooling and docs. Most importantly, we'll discuss how these successes can be applied to your very own apps be they Vue, React, Angular or anything else!
![Photo of Ava's at-home setup with a microphone resting atop of a Macbook Pro showing the slides onscreen](/img/content/testjssummit2021.jpg)
[Watch the recorded talk here](https://portal.gitnation.org/contents/achieving-a11y-automation-testing) [Watch the recorded talk here](https://portal.gitnation.org/contents/achieving-a11y-automation-testing)
## Talk given at: ## Talk given at
* [TestJS Summit 2021](https://portal.gitnation.org/contents/achieving-a11y-automation-testing) * [TestJS Summit 2021](https://portal.gitnation.org/contents/achieving-a11y-automation-testing)
* Ember-LA * Ember-LA

View file

@ -14,11 +14,8 @@ pinned: true
_[“Slides”, relevant URLs used in presentation](https://www.notion.so/hergaiety/Thinking-in-Stories-Component-First-66c7c795e4864ed0a81fddbf777a6f86)_ _[“Slides”, relevant URLs used in presentation](https://www.notion.so/hergaiety/Thinking-in-Stories-Component-First-66c7c795e4864ed0a81fddbf777a6f86)_
[![Still frame from a YouTube video of Ava presenting split-screen with a smile looking at the camera on the left and a web interface showing a web component built in Storybook on the right.](/img/content/emberconf2022-2.png)](https://www.youtube.com/watch?v=88xWS0QeJUo&list=PLE7tQUdRKcya7rPej9KkDwUpBkQXT7Lw5)
[Watch the recorded talk here](https://www.youtube.com/watch?v=88xWS0QeJUo&list=PLE7tQUdRKcya7rPej9KkDwUpBkQXT7Lw5) [Watch the recorded talk here](https://www.youtube.com/watch?v=88xWS0QeJUo&list=PLE7tQUdRKcya7rPej9KkDwUpBkQXT7Lw5)
## Talk given at: ## Talk given at
[EmberConf 2022](https://2022.emberconf.com/) [EmberConf 2022](https://2022.emberconf.com/)

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 KiB

View file

@ -1,11 +1,8 @@
--- ---
id: index title: Ava Gaiety W.
aliases: []
tags: []
description: Portfolio containing work experience, code, volunteering and more! description: Portfolio containing work experience, code, volunteering and more!
eleventyExcludeFromCollections: true eleventyExcludeFromCollections: true
layout: pinned.njk layout: pinned.njk
title: Ava Gaiety W.
--- ---

14
package-lock.json generated
View file

@ -23,6 +23,7 @@
"highlightjs-glimmer": "^2.2.1", "highlightjs-glimmer": "^2.2.1",
"install": "^0.13.0", "install": "^0.13.0",
"markdown-it-anchor": "^9.2.0", "markdown-it-anchor": "^9.2.0",
"markdown-it-image-figures": "^2.1.1",
"npm": "^10.5.0", "npm": "^10.5.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"postcss": "^8.3.11", "postcss": "^8.3.11",
@ -5490,6 +5491,19 @@
"markdown-it": "*" "markdown-it": "*"
} }
}, },
"node_modules/markdown-it-image-figures": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/markdown-it-image-figures/-/markdown-it-image-figures-2.1.1.tgz",
"integrity": "sha512-mwXSQ2nPeVUzCMIE3HlLvjRioopiqyJLNph0pyx38yf9mpqFDhNGnMpAXF9/A2Xv0oiF2cVyg9xwfF0HNAz05g==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12.0.0"
},
"peerDependencies": {
"markdown-it": "*"
}
},
"node_modules/markdown-it/node_modules/argparse": { "node_modules/markdown-it/node_modules/argparse": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",

View file

@ -43,6 +43,7 @@
"highlightjs-glimmer": "^2.2.1", "highlightjs-glimmer": "^2.2.1",
"install": "^0.13.0", "install": "^0.13.0",
"markdown-it-anchor": "^9.2.0", "markdown-it-anchor": "^9.2.0",
"markdown-it-image-figures": "^2.1.1",
"npm": "^10.5.0", "npm": "^10.5.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"postcss": "^8.3.11", "postcss": "^8.3.11",

View file

@ -9,8 +9,6 @@ imageDescription: Mockup of four overlapping phones showing screenshots of diffe
pinned: true pinned: true
--- ---
![Mockup of four overlapping phones showing screenshots of different websites each relating to Gaiety's pet projects. These include combinations of dark and light themed sights with prominant text such as Gaiety's Life and Faetale a youtube site with a motto of Once Upon a Time.](/img/content/11ty.jpg)
Something a little different! This is a collection of several repositories that house my personal websites. They are all built in [Eleventy](https://www.11ty.dev/) a zero-config really superb static site generator with markdown content. Except for Faetale, which leverages [Nuxt and Vue which you can read my jourey on here](https://gaiety.life/posts/faetale-launch/). Most use [Tailwind](https://tailwindcss.com/) and [Tailwind UI](https://tailwindui.com/) with manual customizations to achieve easy to update sites. Each are run through [Digital Ocean Apps](https://www.digitalocean.com/products/app-platform) to automatically rebuild the static site when the repository is updated. Something a little different! This is a collection of several repositories that house my personal websites. They are all built in [Eleventy](https://www.11ty.dev/) a zero-config really superb static site generator with markdown content. Except for Faetale, which leverages [Nuxt and Vue which you can read my jourey on here](https://gaiety.life/posts/faetale-launch/). Most use [Tailwind](https://tailwindcss.com/) and [Tailwind UI](https://tailwindui.com/) with manual customizations to achieve easy to update sites. Each are run through [Digital Ocean Apps](https://www.digitalocean.com/products/app-platform) to automatically rebuild the static site when the repository is updated.
## Sites ## Sites

View file

@ -13,9 +13,7 @@ pinned: true
> Because while we are silly, your gender identity is important. Be your genuine self. Share how you are to be referred to by newer users of neopronouns or English language learners. > Because while we are silly, your gender identity is important. Be your genuine self. Share how you are to be referred to by newer users of neopronouns or English language learners.
![Mockup image with a focus on a mobile phone showing a web app called Pronoun Monster. It has a logo of overlapping three circles in an intricate pattern. In very large text it reads fae/faer/femme/femmeself with example pronoun usage below including Fae went to the park, I went with faer, Fae brought faer frisbee, at least I think it was femme, fae threw the frisbee to femmeself. Just before the image is cropped within the phone area it also reads a portion of a table indicating pronoun usage by nomintative, accusative, prenominal possessive and presumably others below the fold.](/img/content/pronoun-monster-mockup.jpg) Visit the site at <https://pronoun.monster/>
Visit the site at https://pronoun.monster/
Powered by **NodeJS** with **TailwindCSS** and **svg spritesheets** leveraging my own work (dogfooding) [svgdir2sprite (repo project page)](/repos/svgdir2sprite/). Hosted on my own _Ubuntu_ server via **nginx** and **Docker**. Powered by **NodeJS** with **TailwindCSS** and **svg spritesheets** leveraging my own work (dogfooding) [svgdir2sprite (repo project page)](/repos/svgdir2sprite/). Hosted on my own _Ubuntu_ server via **nginx** and **Docker**.
@ -23,5 +21,3 @@ Powered by **NodeJS** with **TailwindCSS** and **svg spritesheets** leveraging m
* [Angela](http://argylewerewolf.com/) who uses [it/its](https://pronoun.monster/it/it/its/its/itself), [she/her](https://pronoun.monster/she/her/hers/herself) * [Angela](http://argylewerewolf.com/) who uses [it/its](https://pronoun.monster/it/it/its/its/itself), [she/her](https://pronoun.monster/she/her/hers/herself)
* [Rizzo](https://goth.dev/) who uses [he/his](https://pronoun.monster/he/him/his/him/himself) [they/them](https://pronoun.monster/they/them/their/themself), [xier/xien](https://nibi.space/pronomen#xier) * [Rizzo](https://goth.dev/) who uses [he/his](https://pronoun.monster/he/him/his/him/himself) [they/them](https://pronoun.monster/they/them/their/themself), [xier/xien](https://nibi.space/pronomen#xier)

View file

@ -52,49 +52,6 @@
} }
} }
pre, p > code {
font-family: "VictorMono", monospace;
font-variant-ligatures: contextual;
color: rgb(var(--ctp-text));
}
p > code {
padding: 0 .25rem;
display: inline-block;
background-color: rgb(var(--ctp-mantle));
color: rgb(var(--ctp-red));
border: 1px solid rgb(var(--ctp-surface0));
border-radius: 0.25rem;
font-size: 0.875rem;
}
pre {
position: relative;
padding: 1rem 0.75rem;
margin: 1rem 0 ;
overflow: auto;
max-width: 100%;
white-space: pre-wrap;
page-break-inside: avoid;
background-color: rgb(var(--ctp-crust));
mask:
radial-gradient(0.56rem at 50% 0.75rem,#000 99%,#0000 101%) calc(50% - 0.5rem) 0/1rem 51% repeat-x,
radial-gradient(0.56rem at 50% -0.5rem,#0000 99%,#000 101%) 50% .25rem/1rem calc(51% - .25rem) repeat-x,
radial-gradient(0.56rem at 50% calc(100% - 0.75rem),#000 99%,#0000 101%) calc(50% - 0.5rem) 100%/1rem 51% repeat-x,
radial-gradient(0.56rem at 50% calc(100% + 0.5rem),#0000 99%,#000 101%) 50% calc(100% - .25rem)/1rem calc(51% - .25rem) repeat-x;
.hljs-language-icon {
position: absolute;
top: 0;
right: 0;
padding: .2rem .25rem;
color: rgb(var(--ctp-subtext1));
background-color: rgb(var(--ctp-base));
border-left: 1px solid rgb(var(--ctp-surface0));
border-bottom: 1px solid rgb(var(--ctp-surface0));
border-radius: 0 0 0 0.25rem;
font-size: 0.875rem;
}
}
.hljs-comment { .hljs-comment {
font-style: italic; font-style: italic;
} }
@ -158,6 +115,63 @@ pre {
} }
} }
.markdown-content {
hr {
margin-bottom: 1rem;
border-color: rgba(var(--ctp-yellow));
}
code {
color: rgba(var(--ctp-mauve));
}
pre code {
color: rgb(var(--ctp-text));
}
pre, code {
font-family: "VictorMono", monospace;
font-variant-ligatures: contextual;
}
p code {
padding: 0 .25rem;
display: inline-block;
background-color: rgb(var(--ctp-mantle));
color: rgb(var(--ctp-red));
border: 1px solid rgb(var(--ctp-surface0));
border-radius: 0.25rem;
font-size: 0.875rem;
}
pre {
position: relative;
padding: 1rem 0.75rem;
margin: 1rem 0 ;
overflow: auto;
max-width: 100%;
white-space: pre-wrap;
page-break-inside: avoid;
background-color: rgb(var(--ctp-crust));
mask:
radial-gradient(0.56rem at 50% 0.75rem,#000 99%,#0000 101%) calc(50% - 0.5rem) 0/1rem 51% repeat-x,
radial-gradient(0.56rem at 50% -0.5rem,#0000 99%,#000 101%) 50% .25rem/1rem calc(51% - .25rem) repeat-x,
radial-gradient(0.56rem at 50% calc(100% - 0.75rem),#000 99%,#0000 101%) calc(50% - 0.5rem) 100%/1rem 51% repeat-x,
radial-gradient(0.56rem at 50% calc(100% + 0.5rem),#0000 99%,#000 101%) 50% calc(100% - .25rem)/1rem calc(51% - .25rem) repeat-x;
.hljs-language-icon {
position: absolute;
top: 0;
right: 0;
padding: .2rem .25rem;
color: rgb(var(--ctp-subtext1));
background-color: rgb(var(--ctp-base));
border-left: 1px solid rgb(var(--ctp-surface0));
border-bottom: 1px solid rgb(var(--ctp-surface0));
border-radius: 0 0 0 0.25rem;
font-size: 0.875rem;
}
}
}
@keyframes blink-animation { @keyframes blink-animation {
to { to {
visibility: hidden; visibility: hidden;

View file

@ -3,11 +3,15 @@ tags: work
title: Senior Software Engineer at Allovue (PowerSchool) title: Senior Software Engineer at Allovue (PowerSchool)
description: _(Aug 2019 - Jul 2020, April 2022 - February 2024)_ Functional programming in **Elixir**, **Ember.js** and **Postgres** powering school budgeting nationwide. description: _(Aug 2019 - Jul 2020, April 2022 - February 2024)_ Functional programming in **Elixir**, **Ember.js** and **Postgres** powering school budgeting nationwide.
date: 2024-02-29 date: 2024-02-29
image: /img/content/allovue-thumb.png image: /img/content/allovue3.jpg
imageDescription: Screenshots of an Allovue web app on the overview page indicating a school district's number of institutions, school characacteristics, job types, sub-enrollment types as well as a section below for enrollment projections, formulas, and scenarios. The indication is that this allows a school district to manage their institutions budgets. imageDescription: Mockup of two phone screens showing previews of the Arizona School Spending website. They speak on Arizona's K-12 School Finance with a goal of making education dollars easier to understand with an option to search. On the second screen are graphs with dates and an indicator on tracking total enrollment over time. There's also an indicator of a custom report comparing 2/4 institutions.
pinned: false pinned: false
--- ---
I've been digging in deep with the rest of product in a very cross-function design, QA and engineering on something ~~I wish I could talk more about~~ and now I can proudly say it's released! Read more at [Allovue Partners with Arizona on School Finance Transparency](https://blog.allovue.com/press/announces-arizona-school-financial-transparency-portal).
---
Building budgeting software to give educators the tools and support they need to allocate resources to the needs of students for a more equitable world. Building budgeting software to give educators the tools and support they need to allocate resources to the needs of students for a more equitable world.
Empowering educators to strategically and equitably allocate resources to best support the needs of students. We're building budgeting software to give school districts the tools they need to give educators the tools they need. Empowering educators to strategically and equitably allocate resources to best support the needs of students. We're building budgeting software to give school districts the tools they need to give educators the tools they need.
@ -18,10 +22,6 @@ Furthermore, Allovue stands for equity and antiracism. I get to work with fellow
This has been my first full-time venture into functional programming with [Elixir](https://elixir-lang.org/) and [Phoenix](https://www.phoenixframework.org/) and I'm loving every minute of it. This has been my first full-time venture into functional programming with [Elixir](https://elixir-lang.org/) and [Phoenix](https://www.phoenixframework.org/) and I'm loving every minute of it.
I've been digging in deep with the rest of product in a very cross-function design, QA and engineering on something ~~I wish I could talk more about~~ and now I can proudly say it's released! Read more at [Allovue Partners with Arizona on School Finance Transparency](https://blog.allovue.com/press/announces-arizona-school-financial-transparency-portal).
![Mockup of two phone screens showing previews of the Arizona School Spending website. They speak on Arizona's K-12 School Finance with a goal of making education dollars easier to understand with an option to search. On the second screen are graphs with dates and an indicator on tracking total enrollment over time. There's also an indicator of a custom report comparing 2/4 institutions.](/img/content/allovue3.jpg)
## Prior to 2020 ## Prior to 2020
Leveraging modern web technologies we built an ambitious web app with Microstates within [EmberJS](https://emberjs.com/) powered by a [Rails](https://rubyonrails.org/) API. Pushing the boundaries of what is possible with [Ember Data](https://guides.emberjs.com/release/models/) with an advanced [Graphiti](https://www.graphiti.dev) data management layer to ensure payloads are handled efficiently for a better UX. Leveraging modern web technologies we built an ambitious web app with Microstates within [EmberJS](https://emberjs.com/) powered by a [Rails](https://rubyonrails.org/) API. Pushing the boundaries of what is possible with [Ember Data](https://guides.emberjs.com/release/models/) with an advanced [Graphiti](https://www.graphiti.dev) data management layer to ensure payloads are handled efficiently for a better UX.

View file

@ -1,13 +1,21 @@
--- ---
tags: work
title: Independent Contractor (PowerSchool, Bill & Melinda Gates Foundation) title: Independent Contractor (PowerSchool, Bill & Melinda Gates Foundation)
tags:
- work
date: "2025-03-27"
description: _(June 2024 - Current)_ Surfacing scientific papers for educators who can make a difference. Built with **Phoenix**, **Typescript**, **Lit** and **PostgreSQL**. description: _(June 2024 - Current)_ Surfacing scientific papers for educators who can make a difference. Built with **Phoenix**, **Typescript**, **Lit** and **PostgreSQL**.
date: 2025-03-27 image: /img/content/contractor-header.png
image: /img/content/contractor.png
imageDescription: Cropped screenshot of a webpage called Implement for Impact showing an Intervention for Zoology suggesting various statistics about the study. imageDescription: Cropped screenshot of a webpage called Implement for Impact showing an Intervention for Zoology suggesting various statistics about the study.
pinned: true pinned: true
--- ---
[Bill & Melinda Gates Foundation](https://www.gatesfoundation.org/) project in collaboration with PowerSchool. Solo built a full-stack **Elixir**, **Phoenix**, **Lit** (web components), **Typescript** with a **PostgreSQL** DB app through its deployment to production where [it's live today](https://implementforimpact.org/). Lead and was the primary developer for a greenfield project exceeding timeline and quality expectations.
![Cropped screenshot of a webpage called Implement for Impact showing an Intervention for Zoology suggesting various statistics about the study.](/img/content/contractor.png) - Collaborated in tech stack choice of `Elixir`, `Phoenix`, `Lit` (web components), `TypeScript`, with a `PostgreSQL` database
- Hand-crafted dynamic charts with zero-dependency `SVG` pie charts for **data visualization**
![Cropped screenshot of a webpage called Implement for Impact showing an Intervention for Zoology suggesting various statistics about the study.](/img/content/contractor.png "View showing an individual study known as an 'Intervention' derived from a scientific paper. Shows Subject, Academic Programs, Duration (length of time to implement), a Summary, Grades and more.")
---
_Thanks to [mokkify](https://mokkify.com) for mockups used on this page._

View file

@ -8,5 +8,3 @@ imageDescription: Screenshots of a web app called axe DevTools Mobile with a des
--- ---
Submitted contributions to [axe-core](https://github.com/dequelabs/axe-core) (open-source), [axe DevTools Linter](https://www.deque.com/axe/devtools/linter/), and more tooling to empower web engineers to build a more _accessible_ web. Technologies are focused on **Typescript** and **Playwright**. Submitted contributions to [axe-core](https://github.com/dequelabs/axe-core) (open-source), [axe DevTools Linter](https://www.deque.com/axe/devtools/linter/), and more tooling to empower web engineers to build a more _accessible_ web. Technologies are focused on **Typescript** and **Playwright**.
![Screenshots of a web app called axe DevTools Mobile with a desktop and mobile preview showing you may test any app with an indicator of how many issues remain, a scale rating, and the number of total scans ran across different apps](/img/content/deque.png)

View file

@ -17,9 +17,7 @@ Oncue has been supporting small moving companies through innovative simple to us
From `git init` I've worked with the talented team at Oncue to build out a design system of react components that are accessible, automation tested, mobile-first and ready for both current and future projects to consume. It was really exciting taking the lead on a project that is now widely being adopted within the company in such a short time-span. From `git init` I've worked with the talented team at Oncue to build out a design system of react components that are accessible, automation tested, mobile-first and ready for both current and future projects to consume. It was really exciting taking the lead on a project that is now widely being adopted within the company in such a short time-span.
[![Design System in Storybook](/img/content/oncue-designsystem.jpg) Check it out at https://designsystem.oncueapp.com/](https://designsystem.oncueapp.com/) I truly believe this project has changed the way Oncue will build software forever moving forward for the better. [Check it out at https://designsystem.oncueapp.com/](https://designsystem.oncueapp.com/)
I truly believe this project has changed the way Oncue will build software forever moving forward for the better.
### Using it in the Product ### Using it in the Product
@ -28,4 +26,3 @@ The design system has successfully been integrated into the product to reimagine
<video src="/img/content/oncue-product.mp4" autoplay loop muted><a href="https://oncue.co/">See product site here</a></video> <video src="/img/content/oncue-product.mp4" autoplay loop muted><a href="https://oncue.co/">See product site here</a></video>
It's great to see the same amount of attention given to mobile as has been given to the desktop site. We're making major strides in usability and accessibility. It's great to see the same amount of attention given to mobile as has been given to the desktop site. We're making major strides in usability and accessibility.

View file

@ -2,6 +2,7 @@
tags: work tags: work
title: Developer III at Q2ebanking title: Developer III at Q2ebanking
description: _(Jan 2016 - Aug 2019)_ Enterprise **Ember.js** & **Vue.js** powered banking software used by tens of millions worldwide. Mentoring, writing test automation, and writing a component for native HTML **Web Components**. description: _(Jan 2016 - Aug 2019)_ Enterprise **Ember.js** & **Vue.js** powered banking software used by tens of millions worldwide. Mentoring, writing test automation, and writing a component for native HTML **Web Components**.
image: /img/content/q21.jpg
date: 2019-08-01 date: 2019-08-01
--- ---
@ -9,11 +10,8 @@ date: 2019-08-01
## Stronger communities with better financial tools ## Stronger communities with better financial tools
![Mobile banking software](/img/content/q21.jpg)
Built [Ember.js](https://emberjs.com/) powered banking software used by tens of millions worldwide. _Mentored_ new hires, reforged _automation_ testing standards, improved **A11y**. Built [Ember.js](https://emberjs.com/) powered banking software used by tens of millions worldwide. _Mentored_ new hires, reforged _automation_ testing standards, improved **A11y**.
![Desktop banking software](/img/content/q22.jpg) ![Desktop banking software](/img/content/q22.jpg)
Lead an innovative [HTML5 **Web Components** project](https://gaiety.life/posts/on-web-components) to achieve ambitious cross-team goals. [Read more about that here...](https://gaiety.life/on-web-components) Lead an innovative [HTML5 **Web Components** project](https://gaiety.life/posts/on-web-components) to achieve ambitious cross-team goals. [Read more about that here...](https://gaiety.life/on-web-components)