Hi, I'm Lindsay Wardell

I am a programmer, writer, and mother. I work as a Software Engineer at NoRedInk, and former co-host on the podcast Views on Vue. I am experienced in building web applications with modern frontend frameworks, such as Vue, 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.

Juralen

ElmVueTypescriptTailwindVite

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


Star Commander

ElmVueTypescriptTailwindViteNode

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