Commit graph

15619 commits

Author SHA1 Message Date
William Carroll
7f8a5176ce Create server for managing Monzo credentials
I created a server to manage my access and refresh tokens. This server exposes a
larger API than it needs to at the moment, but that should change. The goal is
to expose a GET at /token to retrieve a valid access token. The server should
take care of refreshing tokens before they expire and getting entirely new
tokens, should they become so stale that I need to re-authorize my application.

A lot of my development of this project has been clumsy. I'm new to Go; I didn't
understand OAuth2.0; I'm learning concurrent programming (outside of the context
of comfortable Elixir/Erlang).

My habits for writing programs in compiled languages feels amateurish. I find
myself dropping log.Println's all over the source code when I should be using
proper debugging tools like Delve and properly logging with things like
httputil.Dump{Request,Response}.

The application right now is in a transitional state. There is still plenty of
code in main.go that belongs in tokens.go. For instance, the client
authorization code belongs in the tokens server.

Another question I haven't answered is where is the monzo client that I can use
to make function calls like `monzo.Transactions` or `monzo.Accounts`?

The benefit of having a tokens server is that it allows me to maintain state of
the tokens while I'm developing. This way, I can stop and start main.go without
disturbing the state of the access tokens. Of course this isn't the primary
benefit, which is to abstract over the OAuth details and expose an API
that gives me an access token whenever I request one.

The first benefit that I listed could and perhaps should be solved by
introducing some simple persistence. I'd like to write the access tokens to disk
when I shutdown the tokens server and read them from disk when I start the
tokens server. This will come. I could have done this before introducing the
tokens server, and it would have saved me a few hours I think.

Where has my time gone? Mostly I've been re-authorizing my client
unnecessarily. This process is expensive because it opens a web browser, asks me
to enter my email address, sends me an email, I then click the link in that
email. Overall this takes maybe 1-3 minutes in total. Before my tokens server
existed, however, I was doing this about 10-20 times per hour. It's a little
disappointing that I didn't rectify this earlier. I'd like to remain vigilant
and avoid making similar workflow mistakes as I move ahead.
2020-02-10 10:06:40 +00:00
William Carroll
e3ee0734e5 Document more API requests
I'm continuing to use restclient-mode, and I'm enjoying it. Updating the scratch
file with more endpoints and credentials.
2020-02-10 10:06:40 +00:00
William Carroll
2d3428c809 Practice concurrency in golang
Uploading some snippets I created to help me better understand concurrency in
general and specifically concurrency in golang.
2020-02-10 10:06:40 +00:00
William Carroll
2af05f698c Support vterm-mgt.el
I enjoyed using term-switcher so much that I ended up adopting vterm as my
primary terminal. After reaching for vterm as often as I did, I realized that I
would enjoy supporting cycling through instances, creating new instances,
deleting existing instances, renaming instances. Thus spawned vterm-mgt.el.

I'm particularly excited about the KBD to toggle between vterm instances and
source code buffers.
2020-02-10 10:06:40 +00:00
William Carroll
8584059e7c Support cycle/{append,remove}
Supporting these functions was a little tricky. For example, how should we
handle calling cycle/remove on the item that is currently focused? After
attempting to be clever, I decided to just set the value to nil and let the
consumer decide what is best for them. I can always support a more opinionated
version that fallsback to previous-index if previous-index is set. But until I
have a better idea of how I'm going to consume this, I think nil is the best
option.
2020-02-10 10:06:33 +00:00
Vincent Ambo
042df0b523 docs(web/blog): Add some TODO entries for the draft 2020-02-10 01:34:54 +00:00
Vincent Ambo
541306f1bd docs(web/blog): Rewrite some style issues in the Emacs post 2020-02-10 01:24:34 +00:00
Vincent Ambo
9f75c91adc feat(web/blog): Add draft blog post on Emacs
This post is a draft, i.e. not linked from the index. It's not a
secret, but if you do find it through this commit before its
publication please don't share it too widely yet.
2020-02-10 00:29:51 +00:00
Vincent Ambo
b56b3db2f4 style(web/homepage): Highlight <kbd> elements like buttons 2020-02-10 00:08:53 +00:00
Vincent Ambo
9ed53f4201 fix(web/homepage): Make .uncoloured-link work again 2020-02-10 00:08:43 +00:00
Vincent Ambo
1e770f5d88 feat(web/blog): Add support for draft & unlisted posts
Posts with either `draft = true;` or `listed = false;` will no longer
be included in index generation and will have a warning callout
inserted at the top of the page urging people not to share the links
to them.
2020-02-09 21:44:48 +00:00
Vincent Ambo
0bc2f8995e style(web/blog): Minor formatting fixes in Watchguard post 2020-02-09 21:24:53 +00:00
Vincent Ambo
30e8f59d02 style(web/homepage): Overflow long code lines into scroll bars 2020-02-09 21:24:31 +00:00
Vincent Ambo
bd2d96d053 chore(web/blog): Move Watchguard images into static assets
Rather than sending user data to imgur ... lets get rid of all the
external stuff!
2020-02-09 21:16:03 +00:00
Vincent Ambo
de9f51de82 chore(web/blog): Remove duplicate CSS file 2020-02-09 21:06:37 +00:00
Vincent Ambo
386692d39d chore(web/homepage): Configure caching for fonts & images 2020-02-09 21:05:03 +00:00
Vincent Ambo
74a78de081 style(web/homepage): Unify page max-width at 800px 2020-02-09 20:52:14 +00:00
Vincent Ambo
e70b88b3c2 fix(third_party/cgit): Make vpath & repo available for about cmd
This change makes cgit pass the current repo and vpath inside of the
repo on to the about cmd, which makes it possible for it to correctly
render `tree`, `log` and other links to the same vpath.
2020-02-09 17:01:21 +00:00
Vincent Ambo
fb1b4b9bd3 style(web/homepage): Use somewhat livelier colours
The previous ones looked kind of dull. These are from my gruber-darker
rainbow-delimiters theme.
2020-02-09 13:39:12 +00:00
Vincent Ambo
b836a0df28 feat(web/homepage): Add styling for Cheddar callouts 2020-02-09 13:02:14 +00:00
Vincent Ambo
14b5447aac Merge branch 'feat/cheddar-extensions' 2020-02-09 12:07:10 +00:00
Vincent Ambo
c3d930aa7f docs(web/blog): Update best-tools post with new phone 2020-02-09 12:06:46 +00:00
Vincent Ambo
a8fa0edd72 feat(web/homepage): Add an entry for the Principia Discordia 2020-02-09 12:01:23 +00:00
Vincent Ambo
21e0279e08 chore(ops/infra/k8s): Bump website replicas to 3
There are typically 3 machines in the cluster, might as well have 3
website instances!
2020-02-09 02:21:09 +00:00
Vincent Ambo
ac2c9b7e87 style(web/homepage): Wrap links around the entire entry
This makes it much easier to click on them. Required some style
reshuffling to satisfy CSS.
2020-02-09 02:20:41 +00:00
Vincent Ambo
4a18b3971a fix(ops/infra/k8s): Send www.* to nginx for redirections 2020-02-09 01:54:13 +00:00
Vincent Ambo
1fa3316ca1 fix(web/homepage): Fix redirect setup
- all www.* traffic -> non-www
- redirect old blog entries without including the port
2020-02-09 01:48:59 +00:00
Vincent Ambo
83e99b87e5 fix(ci-builds): Remove tools.blog_cli 2020-02-09 01:43:24 +00:00
Vincent Ambo
d0800197c4 feat(ops/infra/k8s): Add website deployment configuration 2020-02-09 01:30:56 +00:00
Vincent Ambo
87967d5be3 docs: Update README with new website setup 2020-02-09 01:30:34 +00:00
Vincent Ambo
31b3e533c6 chore(tools): Remove //tools/blog_cli
No longer needed with the deprecation of tazblog.
2020-02-09 01:30:25 +00:00
Vincent Ambo
eb6e64ad47 chore(ops/infra/k8s): Delete tazblog deployment 2020-02-09 01:27:46 +00:00
Vincent Ambo
05ab6825b3 chore(web): Delete //web/tazblog
Deleting this code feels strange. This project has been around for a
decade, and despite occasionally needing a bunch of tweaks it had aged
well and worked fine for a very long time.

I've reached a strange point where I don't really feel like using
Haskell anymore, and every interaction with this project in recent
years has been fighting dependency management tooling for Haskell, or
dealing with strange build problems.

The simple fact is that the service never really did anything other
than render Markdown dynamically, and at this point I can do that much
better with //tools/cheddar instead.

So, tazblog-hs, it's time to say goodbye. Rest in peace!
2020-02-09 00:43:40 +00:00
Vincent Ambo
9fc9b58301 feat(web): Add a favicon to homepage & blog 2020-02-09 00:43:00 +00:00
Vincent Ambo
a791d5e359 fix(web/homepage): Minor style fixes that were lost 2020-02-09 00:31:31 +00:00
Vincent Ambo
9d9e088943 feat(web/homepage): Add entries for the depot itself & journaldriver 2020-02-09 00:31:19 +00:00
Vincent Ambo
4b5ca24f81 feat(web/blog): Move 'best-tools' doc into a real blog post 2020-02-09 00:31:06 +00:00
Vincent Ambo
0fd762e2d0 fix(web/homepage): Ensure old blog links keep working 2020-02-09 00:30:51 +00:00
Vincent Ambo
69b6ff26c3 feat(web/homepage): Add entries for nixery, kontemplate, dottime 2020-02-09 00:12:22 +00:00
Vincent Ambo
949c75e1bd style(web/homepage): Flip colours for misc/blog 2020-02-09 00:12:13 +00:00
Vincent Ambo
75969d886d feat(web/homepage): Add templating for entries on the homepage
Adds the actual insertion of entries into the homepage, subtly
colour-coding different types of entries.
2020-02-09 00:02:10 +00:00
Vincent Ambo
39854d71b2 refactor(web): Serve static assets to //web/homepage
Shuffles around the nginx locations that are served to ensure that all
static content will be served from tazj.in/static (including for the
blog).
2020-02-09 00:01:07 +00:00
Griffin Smith
25a1c5ade3 Factor out an EntityAttributes type
Factor out a new EntityAttributes type from some of the methods of the
Entity class, to avoid the proliferation of 1-argument boolean methods
on the entity class that always have to be forwarded through the Entity
instance for SomeEntity if they have defaults (forgetting to do which
has wasted tons of my time up to this point). Currently blocksVision,
blocksObject, and collision are all in there.
2020-02-08 17:24:27 -05:00
Vincent Ambo
e6002f95cd feat(web/homepage): Add static assets for new homepage
Adds the Jetbrains Mono font and the WIP CSS file for the homepage
and (soon) the blog.
2020-02-08 22:22:37 +00:00
Vincent Ambo
cce872e397 feat(web/homepage): Add Nix code to assemble the index page
This is not yet fully functional, but going in the right direction.

Some concepts are introduced:

* There is a light theme (used for blog entry pages) and a dark
  theme (used for the homepage itself)
* Entries can be either blog posts, projects or miscellaneous things
  that I want to link people to (possibly with a comment)

It might be interesting to add pages that filter to specific types, or
some such, which should be relatively easy to do.

Note that the layouts of entries are not actually done yet.
2020-02-08 22:21:06 +00:00
Bradley White
1d322760ae
fix: correct value in GOOGLE_CLOUD_CPP_PC_REQUIRES (#34)
`googleapis_cpp_bigquery_protos` => `googleapis_cpp_cloud_bigquery_protos`.
2020-02-08 14:51:49 -05:00
Griffin Smith
782d3880c8 Block doors being closed on gormlaks
Prevent closing doors when there's a gormlak or other entity with the
blocksObject attribute set to true on the same tile. There's a message
sent here which is grammatically incorrect - it says "The a gormlak
blocks the door" - should fix that later.
2020-02-08 13:42:51 -05:00
William Carroll
f145bc9eb6 Support cycle/focus-item
I oftentimes call `cycle/focus` and pass `(lambda (a) (equal a b))`. This
function should tighten up my code.
2020-02-08 15:55:59 +00:00
William Carroll
3f54dd8601 Support cycle/empty?
Add predicate for determining if a cycle contains items.

Updated cycle/{new,from-list} to support setting current-index to nil when a
consumer calls it with an empty list.
2020-02-08 15:55:53 +00:00
Vincent Ambo
7935957938 refactor(web): Move nginx setup to //web/homepage
The homepage is going to be the landing page for all content, whether
it be blog posts or other stuff.
2020-02-08 14:06:57 +00:00