Commit graph

1145 commits

Author SHA1 Message Date
William Carroll
319652fe08 Solve InterviewCake's second-largest-item-in-bst
Return a function that returns the second largest item in a binary search
tree (i.e. BST).

A BST is a tree where each node has no more than two children (i.e. one left
child and one right child). All of the values in a BST's left subtree must be
less than the value of the root node; all of the values in a BST's right subtree
must be greater than the value of the root node; both left and right subtrees
must also be BSTs themselves.

I solved this problem thrice -- improving the performance profile each time. The
final solution has a runtime complexity of O(n) and a spacetime complexity of
O(1).
2020-03-16 11:45:34 +00:00
William Carroll
56d8d1d7b2 Solve InterviewCake's bst-checker problem
Write a function that returns true if a given binary tree is a valid binary
search tree (i.e. if all of root's left nodes are less than root.value, all of
root's right nodes are greater than root.value, and both left and right subtrees
are also valid binary search trees).
2020-03-15 23:09:29 +00:00
William Carroll
47a11b76a2 Solve InterviewCake's balanced-binary-tree problem
Write a predicate for determining if a binary tree is "super balanced", which
means that the depths of all of the tree's leaves are equal or differ by at most
one.
2020-03-14 12:48:37 +00:00
William Carroll
0f82a527de Mark duplicate InterviewCake questions as DONE
I wrongfully assumed that the relationship between a question and a question
category was one-to-one; it is actually one-to-many. This explains why I
completed the "Cafe Order Checker" and "Top Scores" questions twice.

I'm marking the questions that I've completed as DONE because I would prefer to
do every question once and then prioritize repeating the questions with which I
experienced difficulty.
2020-03-14 12:20:43 +00:00
William Carroll
ea4bf1ba96 Remove UK qualifier to London
Vincent tells me that saying "London, UK" is a very *American* thing to do. I
think that is his polite way of telling me that it's naive.
2020-03-13 23:14:03 +00:00
William Carroll
e93248bc31 Fix broken link to @tazjin's Twitter
Link to @tazjin's Twitter instead of @dmjio's Twitter.
2020-03-13 23:10:06 +00:00
William Carroll
aa9b81fe21 Move wrapNonNixProgram to utils module
Define the wrapNonNixProgram in my Nix utils module.
2020-03-13 23:03:57 +00:00
William Carroll
02721a25a7 Init the "Let's Learn Nix" blog series
I'm creating a short blog series to help newcomers learn Nix.
2020-03-13 23:03:42 +00:00
William Carroll
c46fd5ee14 Define wrapNonNixProgram as a helper utility
Write a simple Nix expression to DRY up my writeShellScriptBin wrapper pattern.
2020-03-13 17:25:05 +00:00
William Carroll
beeed2baa2 Prefer locally installed /usr/bin/git
From what I understand, gLinux and Nix are sometimes compatible and sometimes
incompatible.

Some nix-installed programs rely on system state that differs from gLinux's
system state. In other cases, Google wraps existing programs (e.g. git) to
provide Google-specific configuration.

Ever since I switched to home-manager and set `programs.git.enable = true`,
magit, which uses the git that PATH exposes hasn't been able to push, fetch, and
a few other commands.

TODO(wpcarro): Define a base home.nix that my gLinux and NixOS machines can
extend.
2020-03-13 16:54:51 +00:00
William Carroll
bd67b07f52 Add default value for pkgs parameter in shell.nix
Commands like `nix-shell shell.nix` couldn't resolve `pkgs` without a default
value. I'm unsure how I expected this to work previously...
2020-03-13 16:52:40 +00:00
William Carroll
a2a5a62836 Solve InterviewCake's top-scores problem
Write a function to sort a list of scores for a game in linear time. While I had
previously solved this in python, I hadn't marked the todo.org file, so I ended
up doing this again.

"Perfect practice makes perfect."
2020-03-13 16:51:38 +00:00
William Carroll
2695eae15d Define fish function, ptree
Get all pstree outputs for a given process name.

Usage:
```fish
> ptree ssh-agent
```

I'm unsure if I like home-managers; I'd prefer defining this functions in a
functions.fish file for a few reasons:
- I like syntax highlighting.
- home-manager compiles this into poorly formatted fish code.
2020-03-13 12:21:43 +00:00
William Carroll
c2522a1b7a Extend default-cache-ttl and max-cache-ttl for gpg-agent
Preferring eight hours for each of these values.
2020-03-13 12:21:01 +00:00
William Carroll
4509fb5e50 Restore ssh-agent initialize in ~/.profile
For two days I tried using gpg-agent to emulate ssh-agent, but it did not work
the same way as ssh-agent. For example, gcert stopped working. Also, when I
tried adding keys to ~/.gnupg/sshcontrol using `ssh-add ~/.ssh/id_rsa`, the
command failed.

While the concept of reusing gpg-agent for ssh-agent appeals to me...
- Fewer agent processes
- pinentry support
...in practice, it fell short of my expectations. Some or all of this may be
because I tried running this on a gLinux machine.
2020-03-13 12:17:58 +00:00
William Carroll
3c73f73517 Remove the "Professional Emacs" blog post
I don't intend to finish this blog post and since my blog is live, I'd rather
not show it on the internet.
2020-03-11 22:58:46 +00:00
William Carroll
c026f1a4c5 Add drafts for future blog posts
- caffeine.md: an explanation of my theory that caffeine antagonizes
  mindfulness.
- nix-and-hugo.md: a short tutorial explaining how I use Nix, the package
  manager and Hugo, the static site generator, to host my blog.
- self-hosting.md: explain how I installed NixOS on my used Acer laptop.
2020-03-11 22:54:50 +00:00
William Carroll
7163b299f5 Add social channels to footer of learn.wpcarro.dev
Per Mimi's suggestion, I think adding these channels helps customers better
understand that I'm a real person.
2020-03-11 18:34:20 +00:00
William Carroll
bcc2d1e902 Emphasize copy for learn.wpcarro.dev
- Embolden money amounts
- Italicize "Start today."
2020-03-11 18:33:46 +00:00
William Carroll
c23e263a9f Attempt to support gogs
Gogs claims to be an easy-to-use Git server and web frontend written in
golang. I'm eager to try it as an alternative to cgit.
2020-03-10 23:13:52 +00:00
William Carroll
73db632090 Support unclutter with home-manager
I removed the code that initializes unclutter from .profile - preferring to
start it with home-manager.
2020-03-10 23:07:30 +00:00
William Carroll
d784c1d157 Support keynav with home-manager
I removed the startup code from .profile. I also depend on a fork of
home-manager until I submit my PR from wpcarro/home-manager into
rycee/home-manager.
2020-03-10 23:07:30 +00:00
William Carroll
405be98069 Manage xsession with home-manager
redshift didn't properly work because it couldn't read the DISPLAY environment
variable. I can fix this ad-hoc with `systemctl --user import-environment
DISPLAY`, but home-manager will do this automatically if I allow it to manage my
xsession.
2020-03-10 23:07:30 +00:00
William Carroll
a7ad2e3712 Support redshift
redshift is the f.lux of Linux; it filters blue light from your screen.
2020-03-10 23:07:30 +00:00
William Carroll
8c0a56a03e Restore Emacs server
I think I removed the `(server-start)` call when I was debugging some EXWM
issues. I have stabilized my configuration considerably since then, and I'd like
to use the Emacs server.
2020-03-10 23:07:30 +00:00
William Carroll
921e6c2905 Remove dockerd startup from .profile
1. I haven't used docker in awhile.
2. If I need to restore the docker daemon, I will reach for a home-manager
   solution.
2020-03-10 23:07:30 +00:00
William Carroll
8e5152cd84 Remove PATH additions from .profile
I'd like to remove this and prefer using Nix-based solutions for PATH
maintenance.
2020-03-10 23:07:30 +00:00
William Carroll
0239f92d30 Remove RUST_SRC_PATH from .profile
I'm not doing enough Rust development to justify supporting this. I'm also in
the midst of a cleaning frenzy, so it's possible that this is just collateral
damage. I don't think it is because I can always use lorri to set this value
when I'm writing Rust (hopefully the second 1/2 of this year).
2020-03-10 23:07:30 +00:00
William Carroll
57fbee288b Define additional systemctl fish abbreviations
I often run `systemctl --user status <some-unit>`
2020-03-10 23:07:30 +00:00
William Carroll
3ae100e468 Manage session variables with home-manager
If you haven't noticed, home-manager is managing increasingly more of my
configuration.

- Migrate session variables to home.nix
- Drop support for unused session variables like TERMINAL, VISUAL
2020-03-10 23:07:30 +00:00
William Carroll
82b2c8c27c Remove ssh-agent code from .profile
TIL: gpg-agent sets the SSH_AUTH_SOCK and other values. Since I already use
home-manager to start gpg-agent and SSH has been functioning without issues, I'm
removing the obsolete ssh-agent code.
2020-03-10 23:07:30 +00:00
William Carroll
ad77311c94 Configure keyboard preference with home-manager
Preferring home-manager to reduce some of the clutter I've created.
2020-03-10 23:07:30 +00:00
William Carroll
b6a803d99d Configure bat to use a different theme
Whatever bat's default theme for syntax highlight is, I cannot read it with my
current theme.
2020-03-10 23:07:30 +00:00
William Carroll
452a8fd4c7 WIP: Partially solve InterviewCake's find duplicate number
Write a function that finds one duplicate number from a list of numbers 1..n.

The function should satisfy the following performance objectives:
Runtime complexity: O(n*log(n))
Space complexity:   O(1)
2020-03-10 15:01:30 +00:00
William Carroll
d408915cfd Add Google Analytics to learn.wpcarro.dev
Ten people have visited https://learn.wpcarro.dev, but no one has emailed me
yet. I'd like to learn more about how people are using my website.
2020-03-10 15:00:41 +00:00
William Carroll
c06d93a275 Ad Google AdSense script to blog.wpcarro.dev
I'm adding Google Ads to my blog to:
- learn more about Google AdSense
- attempt to offset the my advertising costs for learn.wpcarro.dev

I may need to surround the <script></script> tags with markup to positions the
ads optimally. I will publish this first, see what it looks like without any
markup, and then progress.
2020-03-10 13:27:11 +00:00
William Carroll
a37e10ced5 Lint hugo Tailwind theme
My Emacs automatically trims trailing whitespace when I save a buffer. As a
result, this diff appears whenever I edit the baseof.html file. Instead of
continuing to ignore the diff, I'm committing it.
2020-03-10 13:27:11 +00:00
William Carroll
118b7b9668 Draft blog post about March's cell phone challenge
Started working on my debut blog post about giving up my cell phone during
march.

I'd like to publish this post by the end of the month, once I conclude the
experiment. At that time, I'd like to change the voice of some the content to be
past test. For now, I'm dumping ideas here while they're fresh in my mind. I
will refine and prune the final post later.
2020-03-10 13:27:11 +00:00
William Carroll
1fbdec0d6a Initialize //blog with lorri
To create new posts, I run...
```shell
hugo new name-of-post.md
```

While writing posts, I run...
```shell
hugo serve -D
```

I need hugo available on PATH environment variable, which lorri provides.
2020-03-10 13:27:11 +00:00
William Carroll
1e75f709ee Update Tailwind theme
Thing I changed:
- prefer a white background
- simplify the footer text

Other things that I'd like to change:
- use JetBrains Mono for the mono-font
2020-03-10 13:27:11 +00:00
William Carroll
220c6d138b Rename my-first-post
I created this file while following Hugo's quick-start tutorial. When I publish
a blog post, I will delete this file.
2020-03-10 13:27:11 +00:00
William Carroll
58ed992059 Solve InterviewCake's "find rotation point" problem
Write a function that accepts a rotated cycle of alphabetically sorted strings
and returns the index what should be the first element if the elements were not
rotated.
2020-03-10 13:27:11 +00:00
William Carroll
b929a6bb57 Nixify hugo deployment
Create a derivation for building the static files of my blog.
2020-03-09 15:35:12 +00:00
William Carroll
6e4c721be5 Add 'blog/themes/tailwind/' from commit '2cf446f4ef7bdcc4303ebcb0a3062e87cde4928b'
git-subtree-dir: blog/themes/tailwind
git-subtree-mainline: d206a2812f
git-subtree-split: 2cf446f4ef
2020-03-09 13:31:09 +00:00
William Carroll
d206a2812f Prefer hugo for blog.wpcarro.dev
Instead of creating my own static website generator, I'm trying Hugo. Huge is a
newer alternative to Jekyll. So far, I like what I see.

- Ignoring /blog/public since this is where `huge -D` generates the static
  assets.
- Using a TailwindCSS theme.
- Creating a dumby post about Emacs to test deployments.
- Deleting all Common Lisp and Nix code that powered my previous, half-baked
  blog.
2020-03-09 13:27:35 +00:00
William Carroll
2e0ad09a02 Increase vertical margins for splash text
I'm attempting to follow the principles the TailwindCSS authors wrote in their
design book: To space properly, zealously space.
2020-03-08 22:10:23 +00:00
William Carroll
7924b12fa6 Add "Why delay? Start today." to footer
For now, my slogan is "Why delay? Start today."

Like any slogan, the more you repeat it, the more it sticks.
2020-03-08 22:09:22 +00:00
William Carroll
2285fc8b36 Embolden "You will be coding from day one."
Emphasize the fact that students will start coding on the first day.
2020-03-08 22:08:40 +00:00
William Carroll
4bc9bb4910 Prefer "Learn to code" to "Learn to program"
I think this is more consistent with the main content.
2020-03-08 22:07:57 +00:00
William Carroll
669b728e49 Adjust learn.wpcarro.dev's styles for all devices
- Add a max width to constraint the width of the content
- Add horizontal padding to improve readability on handheld devices
- Reduce the font size of all headings
2020-03-08 19:23:19 +00:00