about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2020-08-09 Sketch database schemaWilliam Carroll1-0/+41
Defining a few tables in init.sql to sketch a few records that I need to persist.
2020-08-09 Initialize a default.nix for nix-buildWilliam Carroll1-0/+27
As the previous commit mentions, I'm attempting to build and deploy this project with `nix-shell` and `nix-build` instead of `cabal` and `stack`. I'm in the Hamburg airport right now, and my internet connection isn't stable enough to test this, so I'm committing it until I can more robustly test it.
2020-08-09 Add common language extensions to .ghciWilliam Carroll6-9/+5
I'd like to see if I can avoid using `cabal` and `stack` and build and deploy this application using `nix-shell` and `nix-build` only. Let's see how that goes.
2020-08-08 Consume GoogleSignIn.validateJWTWilliam Carroll4-26/+60
TL;DR: - Consume GoogleSignIn.validateJWT in the Handler for /verify - Rename validation fn to validateJWT - Prefer Text to String type
2020-08-08 Add tests for "exp" field of the JWTWilliam Carroll4-13/+61
Assert that the exp field of the JWT is "fresh".
2020-08-08 Test that the JWT's iss field meets our expectationsWilliam Carroll3-9/+42
The JWT should match "accounts.google.com" or "https://accounts.google.com". If it doesn't, we produce a validation error. TL;DR: - Group all failed stringOrURI function calls as StringOrURIParseFailure errors
2020-08-08 Test that an improperly encoded JWT returns a DecodeErrorWilliam Carroll1-0/+3
The subject of this commit message says it all.
2020-08-08 Tests valid and invalid JWTs for the "aud" fieldWilliam Carroll4-21/+87
Test that when the JWT contains the client ID for my Google app, the JWT is valid, and when it doesn't, it's invalid.
2020-08-08 Update jwtIsValid API to return IO BoolWilliam Carroll2-6/+6
I need IO for: - Getting the current time to validate `exp` - Making an HTTP request to Google's token verifier endpoint
2020-08-08 Remove redundant deps from API.hsWilliam Carroll1-2/+0
Thank you, -Wall. You are truly an unsung hero.
2020-08-08 Begin work for supporting GoogleSignIn server-sideWilliam Carroll4-5/+92
I'm attempting to be an obedient boy and implement this and future features using TDD. TL;DR: - Defined a few tests - Defined an empty GoogleSignIn module - Defined a Fixtures module to quickly create JWTs to test
2020-08-08 Define Utils moduleWilliam Carroll1-0/+8
Dumping grounds for personal, stylistic functions intended to improve readabily and writability (in that order).
2020-08-06 Support echo server to test POST /verifyWilliam Carroll5-8/+79
TL;DR: - Add common dependencies like Servant, Aeson, Warp, Cors - Define a POST /verify endpoint for our client to hit - POST to /verify client-side onSignIn
2020-08-06 Support Google Sign-in client-sideWilliam Carroll5-1/+53
TODO: Support Google Sign-in server-side Also: - Add Haskell to project's shell.nix - Add stubbed Main.hs and Spec.hs - Add common .ghci file
2020-08-06 Re-type type using the altered keyboardWilliam Carroll5-7/+129
Remember: always read the instructions; that's the most important part.
2020-08-06 Support Transforms.optimizeWilliam Carroll2-0/+19
Partially optimize inputs and document rules for further optimizations we can make.
2020-08-05 Apply a series of transformation to a QWERTY keyboardWilliam Carroll4-32/+51
TL;DR: - Accept input from the CLI - Add a project README.md
2020-08-05 Support App.transformWilliam Carroll5-1/+57
Apply the transform to a Keyboard. Onwards to the final demonstration!
2020-08-05 Support parsing the list of transformsWilliam Carroll2-7/+65
Using Haskell's Text.ParserCombinators.ReadP library for the first time, and I enjoyed it thoroughly! It's nice avoiding a third-party library like MegaParsec.
2020-08-05 Define an instance for Show for a KeyboardWilliam Carroll1-0/+23
This will help me debug.
2020-08-05 Create a Utils moduleWilliam Carroll1-0/+8
To stylize things...
2020-08-05 Add some the scaffolding for testingWilliam Carroll2-0/+20
As I attempt to habituate TDD, I should have some examples of tests to minimize all friction preventing me from testing.
2020-08-04 Include instructions for building Tailwind CSS in README.mdWilliam Carroll1-0/+1
After consuming my Elm boilerplate, I realized that I was missing this.
2020-08-04 Create small command line program that parses argumentsWilliam Carroll3-0/+56
Before starting my take-home assignment, the instructions advised me to create a "Hello, world" program in the language of my choice. Since I'm choosing Haskell, I created this example as my starter boilerplate.
2020-07-30 Mark Dangal as watchedWilliam Carroll2-1/+1
Many Bollywood movies have excellent acting, excellent directing, excellent storytelling, but in my opinion, they spoil this with unnecessary musicals interspersed throughout the films. Dangal is a notable exception here. Overall, I'd say that this movie is appropriately rated!
2020-07-30 Mark Hitchcock's Vertigo as watchedWilliam Carroll2-1/+1
Watched the famous "Vertigo" with the timeless Jimmy Stewart. Overall I'd say that the film is overhyped, but worth watching nevertheless.
2020-07-26 Watch "Hacksaw Ridge"William Carroll2-1/+1
I don't plan on writing movie reviews in my Git commit message.
2020-07-26 Add query for the productive directorsWilliam Carroll1-0/+15
Show the movies from directors that appear more than once in the list.
2020-07-26 Create a scratch buffer for common queriesWilliam Carroll1-0/+50
Defining some commonly used criteria for selecting movies as SQL queries.
2020-07-26 Mark Andhadhun as watchedWilliam Carroll1-1/+1
What a confusing movie this was... I may need to watch it a second time to better understand what happened, but I found watching it once already so exhausting that I'm not sure I'll ever watch it again.
2020-07-26 Update schema for Movies tableWilliam Carroll2-90/+0
Added the following fields (would be cool if `git` could show this): - rating - haveWatched - director - isCartoon - requiresSubtitles
2020-07-26 Create //playbooks/sqlite3.mdWilliam Carroll1-0/+115
Write a playbook for using SQLite to capture some trivia that I often forget in between my ~infrequent uses of SQLite.
2020-07-26 Create //playbooks/shell.mdWilliam Carroll1-0/+12
Taken from the overview: > I'm making this as an offline reference for some of the commands that I use > often enough to need to remember but not often enough to *actually* remember.
2020-07-26 Add .sqliterc to //configsWilliam Carroll1-0/+2
Prefer these more human-readable defaults to SQLite.
2020-07-26 Create SQLite database from unwatched movies in imdb-top-250.orgWilliam Carroll3-2/+92
The astute observer may notice that the number of entries in db.sqlite3 is fewer than the number of unwatched movies in imdb-top-250.org. I'm at a lake in Germany with Mimi and Cullen, so we took the intersection of my unwatched movies, Mimi's unwatched movies, and Cullen's unwatched movies.
2020-07-24 Add two steps to finances playbookWilliam Carroll1-0/+2
I needed to add the first step since I dipped into my Emergency fund last month to pay for someone to prepare my US tax return. I added the other step as a reminder.
2020-07-24 Fix typo in finances playbookWilliam Carroll1-1/+1
amount -> amounts
2020-07-21 Support dictionary.mdWilliam Carroll1-0/+12
Back when I owned an iPhone -- before I switched (mistakenly and thus temporarily) to Android -- I had a note for each year's newly learned words. As I am condensing as many of my documents as possible into my briefcase, I decided it is time for including a dictionary. I can still record words on my phone, and then I can transfer them to this document.
2020-07-20 Create //todo-listsWilliam Carroll3-0/+256
In the beginning there existed only a generic //org directory... This directory was generic enough to include any .org file regardless of its purpose, but specific enough to disallow membership of other worthy files of the Markdown ilk. Then came the //playbooks directory, which robbed //org of most of its inhabitants... In the interim various .md and .org TODO lists existed scattered across the landscape of the monorepo... some existed in far-away, exotic lands like "travel-histlist"... These fractious tribes shared much in common with their distant relatives, but the superficial differences granted the simple-minded, draconian filesystem license to prevent them from mingling. Then one day the monorepo had a new visitor: //todo-lists. //todo-lists restored order to the monorepo, uniting all of the fractious documents under one roof. .md and .org files held hands and sang Kumbaya around a blazing fire for the first time in history. All was well, and all were happy.
2020-07-20 Create //playbooksWilliam Carroll8-1/+4
I'm particularly excited about this idea. As I was reading Graham's "Erase your darlings" blog post, I had an idea: I should have playbooks at the root of my monorepo. I can have playbooks for the following: - How to install NixOS - How to build GCR images from Nix expressions - A collection of miscellaneous shell commands (e.g. "how to kill a process by name") - What series of steps should I follow when I receive a paycheck I already keep README's at the root of each package, which I think is where many of these instructions belong. Other tutorials that I write for myself that do not belong to any package can go in //playbooks. I also will host my personal habits in //playbooks since habits are a bit like playbooks for life. Let's see how this idea ages as the caffeine wears off...
2020-07-20 Move monzo_ynab into //toolsWilliam Carroll16-3/+3
Optimizing is difficult: I like flat hierarchies because I don't like directory-hopping, but I also would like a cleaner root for my mono-repo. Bombs away! Well it's that time again, folks: spring cleaning! Here I am musing about a few things that bother me: - Should I use kebab-case or snake_case? - It feels ~confusing to have //tools and //utils. What a //projects? Isn't everything a project? *sigh*
2020-07-20 Add a README to haskell-fileWilliam Carroll1-0/+7
Because every library/package deserves a README.
2020-07-20 Move AOC into //scratchWilliam Carroll8-0/+0
Also rename it advent-of-code-2019 since I expect to participate this year as well. TODO: Should directories and files be name like-this or like_this?
2020-07-17 Partially complete IO chapter exercisesWilliam Carroll1-0/+35
Inconveniently, I do not have the cipher code that I wrote from a previous chapter, and I'm not eager to reimplement it. TODO - Implement encrypt - Implement decrypt - Read all characters from STDIN
2020-07-17 Remove week / 52 indicatorWilliam Carroll1-1/+1
This is taking up too much space.
2020-07-17 Update grocery listWilliam Carroll1-13/+33
- Add new entries - Change quantities of existing entries
2020-07-17 Partially complete the "Basic Libraries" chapter exercisesWilliam Carroll1-0/+60
I was instructed to benchmark these functions, but I couldn't get the benchmarking library to run using Nix -- although I'm *sure* it's possible. Unfortunately the book recommends using `stack`, which I couldn't reproduce.
2020-07-14 Complete exercises for "Non-Strictness" chapterWilliam Carroll1-0/+6
I completed most of the exercises for this enlightening chapter in ghci.
2020-07-12 Finish exercises for Monad Transformer chapterWilliam Carroll1-6/+110
I expect to look back on this code and cringe, but... it compiles!
2020-07-12 Partially complete Monad Transformer exercisesWilliam Carroll1-0/+79
Write Functor, Applicative, Monad instances for: - MaybeT - EitherT - ReaderT