Commit graph

27 commits

Author SHA1 Message Date
William Carroll
6108f8df01 Support proof-of-concept blog
After some toil, I have a working proof-of-concept blog. The idea is simple:
write blog posts in markdown and store the posts in the `./posts`
directory. Then use the server and `pandoc` to convert these markdown files into
HTML at request time. I'm using nix to package everything together. It's far
from perfect, but it works at the moment, which is encouraging.
2020-01-23 22:01:06 +00:00
William Carroll
2e3bb0435f Package cl-arrows package
Using Nix to package this library of Clojure-inspired threading macros.

TODO: Send this patch to tazjin.
2020-01-23 21:57:25 +00:00
William Carroll
81d7bc405e Extend blog server to consume nix injections
All of this is still a work-in-progress. Just checking in my work.

Also:
- Write function `render-post` to convert a markdown file into HTML. This is
  still a work-in-progress since we need to capture the output and not just have
  it printed to *standard-out*.
- Return dummy data in /posts
2020-01-23 21:57:25 +00:00
William Carroll
b25d06db7e Attempt to inject dependencies into blog/server
- We need the markdown files, to be in the /nix/store and the server needs to be
  aware of there location.
- Since we're dependending on `pandoc`, our server needs to know about it too.

For both of these cases -- especially for the latter case -- I imagine there may
be a more idiomatic way of doing this.
2020-01-23 21:57:25 +00:00
William Carroll
336a1fdf9f Add <nixpkgs> to NIX_PATH
Lest we forget our roots.
2020-01-23 21:57:25 +00:00
William Carroll
2c28f85946 Start working on a blog
Attempting to write a blog where:

- The server is Common Lisp. Why? I'd like to learn Common Lisp.
- The blog posts can be written in Markdown.
- The package is developed and deployed using Nix.

Most of this is a learning exercise. The blog itself is something that I'd like
to use instead of Medium and other forums.
2020-01-23 16:34:07 +00:00
William Carroll
7f37acf548 Prefer <depot> and <universe>
Consuming the aliases that I defined in `NIX_PATH` in `.envrc`.
2020-01-23 16:33:47 +00:00
William Carroll
e76843d337 Create third_party
Create a third_party subdirectory and a third_party/lisp. This directory layout
resembles and is inspired by the layout of Google's mono-repo, Google3. @tazjin
borrowed this idea from Google and I'm borrowing the idea from him.
2020-01-23 16:31:54 +00:00
William Carroll
393bd0a5c7 Nixify repo
Using @tazjin's depot/default.nix to bootstrap this project. I'll be borrowing
his Nix idioms until I better understand Nix and have preferences of my own.
2020-01-23 16:30:39 +00:00
William Carroll
01539a9988 Support .envrc
Add `NIX_PATH` aliases for `depot` and `universe`.
2020-01-23 16:30:06 +00:00
William Carroll
d262d30543 Attempt to package CL unit testing with Nix
My first foray trying to package Common Lisp with Nix. I'm using @tazjin's
buildLisp and other libraries, all of which I'm importing as `tpkgs`, and all of
which have been a tremendous boon to my productivity.
2020-01-23 13:45:57 +00:00
William Carroll
55860debe5 Support Common Lisp
Adding some Common Lisp here to get the party started! *cues music*
2020-01-23 13:45:18 +00:00
William Carroll
c010e6d6cf Practice dijkstra's algorithm
Getting some practice with Python's heapq module (which I'm unsure if I used
correctly) to do a priority-first-traversal of a graph: known as Dijkstra's
algorithm.
2020-01-22 11:07:07 +00:00
William Carroll
91811236a5 Complete which-appears-twice
Solves the InterviewCake.com problem that asks us to write a function that
returns the number, y, that occurs twice in a list, xs, where xs is an unsorted
list of integers from 1..n with a length of n + 1.
2020-01-22 11:06:10 +00:00
William Carroll
4f6191b34c Complete reverse-linked-list problem
Completing the deceptively tricky reverse-linked-list problem from
InterviewCake.com.
2020-01-22 11:05:43 +00:00
William Carroll
2a0540d76d Create org table of sorting algorithms and their efficiency
This is just a small org table that I created to help me

Fun fact: In Emacs, you can insert literal TAB character by pressing `C-q
TAB`. For creating tables, using TAB characters feels perfectly
acceptable. Perhaps the TAB name comes from TABle.
2020-01-22 10:12:27 +00:00
William Carroll
de039c7133 Complete find-rotation-point
Solves an InterviewCake.com problem that returns the index of the element in a
list that should be the first element in that list. It's an exercise that's
useful for seeing other applications of a binary search.
2020-01-22 10:11:23 +00:00
William Carroll
bbea699f06 Complete string permutations problem
Solves an InterviewCake.com problem that returns all of the permutations of a
string input. The problem states that it's acceptable to assume that your input
string will not have repeated characters, which is why using a Set is
acceptable. I like this solution because it builds a permutations tree and then
assembles all of the permutations by doing a DFT over that tree.
2020-01-22 10:09:46 +00:00
William Carroll
64bd3f0303 Complete balanced binary tree problem
Supporting a function that returns true if a tree has no two leaf nodes with
depth differences greater than 1.
2020-01-22 10:08:56 +00:00
William Carroll
bb0de3dec2 Begin tests for Haskell File module
Cameron sent over some property tests for his File.split function, which is a
part of a larger effort to port f.el, a nice library for working with file
paths, over to Haskell.
2020-01-18 17:05:32 +00:00
William Carroll
34dc3e05c8 Complete practice algorithms from InterviewCake.com
While I've done these algorithms before, I'm preparing for an on-site with
DeepMind, so I created a subdirectory called deepmind where I'm storing my
second attempts at these problems. The idea of storing them in a second
directory is to remove the urge to check my existing solutions that also exist
in this repository.
2020-01-18 17:04:05 +00:00
William Carroll
a62553f7b7 Add DeepMind subdirectory
I need to prepare for my on-site with DeepMind, so I'll host some attempts to
solve data structures and algorithms questions here.
2020-01-17 20:08:24 +00:00
William Carroll
8d00a456a0 Beging work to port f.el to Haskell
This is a work-in-progress. I'd like to add a README to this project to explain
my intention. The goal, roughly, is to port Elisp's fantastic f.el module to
Haskell. I consider Haskell APIs to be useful but somewhat sloppily designed. In
the same spirit as Elixir wrapping Erlang APIs, many of the functions I intend
to define will simply wrap existing Haskell APIs, but with a hopefully cleaner
API that I find more intuitive.
2020-01-15 14:29:18 +00:00
William Carroll
d4d8397e5f Add InterviewCake.com examples
Adds some of the code I generated while studying for a role transfer at Google
using the fantastic resource, InterviewCake.com. This work predates the
mono-repo.

I should think of ways to DRY up this code and the code in
crack_the_coding_interview, but I'm afraid I'm creating unnecessary work for
myself that way.
2020-01-15 14:25:33 +00:00
William Carroll
b4ee283b23 Add "Crack the Coding Interview" examples
I believe I have multiple other snippets and attempts scattered across /tmp,
~/programming, and other directories. Again, I created these files and others
before the mono-repo.
2020-01-15 14:23:37 +00:00
William Carroll
456d358cd7 Upload my 2019 Advent of Code attempts
Well, unexpectedly (perhaps naively so), I only made it to Day 7. I created
these before I stumbled upon the idea of the mono-repository; otherwise, I like
to think I would have more granular commits introducing this work.
2020-01-15 14:21:45 +00:00
William Carroll
d480b6f08b Initialize repo
Adding a README and a basic .gitignore to initialize this mono-repo. I'm quite
excited about this undertaking!
2020-01-15 14:21:08 +00:00