Hi, I'm Lindsay Wardell

I am a programmer, writer, and mother. I work as a Software Engineer at NoRedInk, and host of the podcast Human Side of Dev. I am experienced in building web applications with modern frontend frameworks, such as Vue, Elm, React, and Svelte, as well as backend technologies including Node, Sprint Boot, and SQL. I also enjoy blogging and presenting online about the technologies that I love working with.

I am currently learning more about functional programming, and utilizing languages like Elm and Haskell for side projects and at work. I have a Bachelor of Science in Software Development from Western Governor's University.

Projects

Vite Elm Template

ElmVite

A default template for building Elm applications using Vite. Includes hot-module reload of Elm modules (courtesy of vite-plugin-elm).

Features:

  • Hot Module Reload of all code in the app (including Elm)
  • Tooling installation via elm-tooling (includes Elm, elm-format, elm-json, and elm-test-rs)
  • Basic unit test examples
  • Github Actions CI for running tests
  • Recommends the Elm VS Code extension

Elm Vue Bridge

ElmVueViteTypescriptCypress

Bridge to render Elm modules in a Vue application. Renders Elm 0.19 modules within Vue 3.

Often, when a developer is starting with a new framework or language, the initial instinct is to build new projects using that tool. This can be very instructive, especially with a programming language. However, one of the strengths of Elm is that it compiles to Javascript, and as such it can be integrated with any existing web application.

elm-vue-bridge seeks to help developers familiar with Vue to explore the Elm ecosystem and perform their own experiments with the language. It provides a function to wrap an Elm module within a Vue component, and interact with it inside of your existing codebase. In this way, Elm can be introduced into your project without having to rewrite your architecture.


Natural Order

TypescriptViteVitest

Simple library to sort lists of strings, numbers, and objects naturally.

  • Returns a new list (default .sort() method mutates the original array)
  • Sort an array of string or objects in a natural way
  • Allows for sorting by nested objects
  • Numbers are handled properly - “2” is before “10”
  • Strings are after numbers
  • Empty strings are after “z”
  • “a” is before “B”
  • Semver-compatible sorting of version numbers

Consoleback

TypescriptViteVitest

Improved logging for Javascript applications

  • Uses console.log, console.warn, console.error, console.info, and console.debug
  • Adds timestamp and log type to message (if desired)
  • Time formatted to a local string with date-fns
  • Allows callback that gives the application access to the log.

Witchy Bell

ViteVueTypescript

Meditation timer that rings gently at a predetermined interval.

  • Fullly offline PWA support
  • Works on iOS and Android
  • Remembers time interval and other settings between sessions.

Juralen

ElmVueTypescriptTailwindVite

Turn-based strategy game for 2-8 players. Includes support for AI players and some music/sound effects.


ClockTracker

VueTypescriptTailwindViteNuxtNode

ClockTracker is a social platform for recording and sharing game logs of the social deduction game "Blood on the Clocktower"

  • Record game details, such as script, role, grimoire, storyteller, notes, and images.
  • Tag friends and share on social platforms such as Discord.
  • Look at charts and data related to your games to see trends, such as good/evil, common roles, preferred scripts, and more.
  • Track stats on roles per script, seeing how each role performs across all recorded games.
  • Participate in communities and with friends to share a log of your gaming experience with them.

Star Commander

ElmVueTypescriptTailwindViteNode

Star Commander is a card game for 2-4 players. The repository serves four functions: