about summary refs log tree commit diff
path: root/assessments
AgeCommit message (Collapse)AuthorFilesLines
2021-10-06 Add Ramp's technical assessmentWilliam Carroll2-0/+116
More technical interviews
2021-01-22 Prefer POST /verify to GET /verifyWilliam Carroll3-10/+20
To make things easier for testing, I setup the /verify endpoint as a GET, so that I could email myself clickable URLs. With POST /verify, my options are: - send email with an HTML button and form that POSTs to /verify - email myself the curl instruction I'm preferring the latter for now...
2021-01-22 Add 'assessments/tt/' from commit 'ee8e75231cd9d3d4aa3ffbbfa0e3b8511712e1ee'William Carroll42-0/+3994
git-subtree-dir: assessments/tt git-subtree-mainline: 67e0f93b3bbc386421a276cbd5675f5ac51625ae git-subtree-split: ee8e75231cd9d3d4aa3ffbbfa0e3b8511712e1ee
2020-12-12 Add project-local .gitignoreWilliam Carroll1-0/+1
Since the `default.nix` file is specific to my tooling, I'm ignoring it.
2020-12-12 Add usage instructions to top-level READMEWilliam Carroll2-21/+14
Also delete redundant `README` from `server` directory.
2020-12-12 Expose functions at API layerWilliam Carroll4-2/+104
Creating a simple HTTP RESTful API for exposing our `Server.semiprime` function. It supports some help messages, primitive parsing and error handling, and singular vs. batch processing of arguments. For more sophisticated parsing and error-checking, I prefer to use Haskell's Servant library.
2020-12-12 Include cache hit/miss info in return typeWilliam Carroll2-3/+4
This can be useful downstream for diagnostics.
2020-12-12 Expand 10^5 in READMEWilliam Carroll1-1/+1
I think it's more readable this way.
2020-12-12 Simple Math testsWilliam Carroll1-3/+1
Calling `assert` within the `Enum.map` makes the errors more usable.
2020-12-12 Define Server.semiprimeWilliam Carroll2-9/+49
- Clear the boilerplate that `mix` generated - Consume `Math.factor` to test which inputs are semiprimes - Cache all inputs that are semiprimes as soon as we discover that they are - semiprimes I considered a couple things related to the Cache: - Could save space by storing all semiprime factors in a tree. This would make the lookups more expensive. Also because the tree's depth would never exceed two (because all semiprimes only have two factors), the tree would be quite broad, and we may not be saving enough space for the trade to be worthwhile. I might be wrong about that though. - We could consider pre-computing all semiprimes when we start the app, but without running some tests firsts, I'm not sure whether or not it's worth the trouble.
2020-12-12 Define Cache.{list,clear} to help debuggingWilliam Carroll1-0/+14
Since I'm often using `iex` for interactive development, these functions are useful.
2020-12-12 Define Cache and convert app to OTPWilliam Carroll4-1/+58
Define a simple in-memory key-value store for our cache. TL;DR: - Define `Cache` as a simple state-keeping `Agent` - Define `Sup`, which starts our Cache process - Define `App`, which starts our Supervisor process - Whitelist `App` in `mix.exs`, so that it starts after calling `iex -S mix`
2020-12-11 Add moduledoc to ExtrasWilliam Carroll1-0/+4
9 out of 10 doctors agree that every module needs a doc. Ask your doctor if moduledocs are right for you!
2020-12-11 Define stubbed default.nixWilliam Carroll1-0/+1
In case I want to package this project with Nix. For now, it's useful to store this at the project root because it help my Emacs's `project-find-file` function.
2020-12-11 Define Math moduleWilliam Carroll2-0/+58
Support `Math.factor` and cover it with tests.
2020-12-11 Define Extras moduleWilliam Carroll2-0/+36
I'll use as the host for utility functions needed to extend the stdlib.
2020-12-11 Init Elixir projectWilliam Carroll8-0/+107
Starting fresh with... ```shell mix new server ```
2020-12-11 Initialize the Semiprimes ServiceWilliam Carroll1-0/+30
This is an exciting take-home assignment because I get to write a service in Elixir!
2020-08-20 Move scratch/brilliant into //assessmentsWilliam Carroll10-0/+426
Where it belongs...
2020-08-20 Drop support for dir-locals.nix, <nixpkgs>, etc.William Carroll1-0/+1
In the spirit of Marie Kondo, I'm tidying up! TL;DR: - Prefer .envrc `use_nix` and delete all dir-locals.nix files - Remove ~all references to <nixpkgs>, <unstable>, <depot> and prefer referencing each with briefcase.third_party.{pkgs,unstable,depot} - Delete nixBufferFromShell function since I was only using that in dir-locals.nix files
2020-08-20 Revise previous opinions about absolute paths GT <bracket-notation>William Carroll1-1/+1
Unforeseen problem: `buildkite-agent` runs its builds in a separate directory, so if I want the `nix-build` command to build the newly checked out code, I need to set <briefcase> to the CWD.
2020-08-20 Set -Wall and cleanup warningsWilliam Carroll2-9/+11
I should have done this from the start.
2020-08-20 Create an assessment directoryWilliam Carroll10-0/+359
I've been doing a few take-home assessment recently, all of which I've attempted to solve using Haskell. I'm having a good time, and I'm noticing strong and weak points with my Haskell programming. I always attempt to apply any feedback a reviewer gives me, and I'm storing my first drafts, second attempts, and feedback here for now. This recently attempt was for a role at Jane Street.