About
Howdy! My name is Taylor Fausak. I am a software developer living in Texas. The best way to reach me is by sending an email to taylor@fausak.me.
Projects
These are things that I have worked on that were noteworthy in some way. Not everything made the cut. This list is likely to be out of date. You can see a complete list of my projects on GitHub.
-
ActiveInteraction (2021, Ruby): ActiveInteraction confidently manages business logic. It is an implementation of the command pattern in Ruby. Aaron Lasseigne and I developed it to add a little bit of static typing to Ruby. It is also good for reusing code in different parts of an application.
-
Stoplight (2018, Ruby): Stoplight controls code like traffic. It is an implementation of the circuit breaker pattern in Ruby. Cameron Desautels and I created it as a way to wrap sections of code that occasionally fail. It prevents failures from cascading by short-circuiting problematic calls.
-
Haskeleton (2016, Haskell): Haskeleton is a project skeleton for Haskell packages. It provides a complete and idiomatic starting point. I made it to codify best practices. It also encourages package authors to create tests and benchmarks.
-
Rattletrap (2023, Haskell): Rattletrap parses and generates Rocket League replays. It is used to extract meaningful data from an opaque binary format and to write that data back out to the same format. I made this to see how Haskell compares to other languages in a medium-sized, real-world project.
-
Neon (2018, PureScript): Neon is an experimental standard library for PureScript. It starts from scratch to explore lawless type classes. I made it to see what duck typing would look like in a language like Haskell.
-
Flow (2015, Haskell): Flow allows writing more understandable Haskell. It borrows function application and composition operators from F#, Elm, and Elixir. I got fed up with cryptic, backwards operators and decided to create my own. It is a hard sell with the Haskell community, though.
-
Wuss (2016, Haskell): Wuss supports secure WebSockets. It handles the WSS protocol in Haskell. I wrote it to scratch an itch; the standard WebSocket library did not support WSS and I needed it for a project. Instead of making it only for myself, I released it as a package.
-
Strive (2018, Haskell): Strive wraps the Strava V3 API. It provides a convenient way to consume the API from Haskell. I built this to see how writing real-world stuff in Haskell felt. I liked it, and I learned about lenses along the way.
-
Erudite (2015, Ruby): Erudite helps turn documentation into tests. It is a Ruby version of Python’s
doctest
module. I started working on it after getting frustrated with the existing gems that did this. Also it is strange to me that doctests are not as popular in Ruby as they are in Python. -
Delay (2013, JavaScript): Delay slows down time-wasting websites. It is a Safari extension that adds a delay to the loading of websites like Facebook and Reddit. I made it to curb my own usage of such sites. There are lots of Firefox addons and extensions that do the same thing, but I don’t know of any other Safari extensions.
-
Blunt (2016, Haskell): Blunt converts Haskell expressions between the pointfree and pointful styles. It is a web front end to the
pointfree
andpointful
executables extracted from the Lambdabot. I created it as a more convenient way to use those tools. I also learned how to create WebSocket clients and servers for this service. -
Ledger (2015, Haskell, JavaScript): Ledger tracks expenses. It is an alternative to manually entering transactions into a spreadsheet. I used this project as a way to learn how to build an API with Haskell. And the front end is powered completely by React.
-
Moxen (2013, Python): Moxen catalogs Magic: the Gathering cards. It offers an interface for managing a collection. I created it as an alternative to the Gatherer, but I never actually deployed it. I did get pretty good at writing web scrapers because of this.
-
Mad Minute (2011, Objective-C): Mad Minute is a fast-paced math game. It is an iOS version of a game I played in second grade. I wrote this as an example consumer of the Famigo API. It was in the App Store for a brief while.
-
bdbxml-jukebox (2012, PHP): bdbxml-jukebox plays music in the browser. It is a glorified web front end to the getID3 library. I made this way back in high school as a way to listen to music on my phone without using up all the storage space. I also happened to learn about document-based data stores and the XML toolchain, including XPath and XSLT.