- Port all the JavaScript to TypeScript. Finally, a typed language to
eliminate a whole class of avoidable errors. This ends up being a line-
by-line affair, mostly about adding type information on functions and
some function calls. This also involved adding quite a few null checks
(since TypeScript tracks nullness). This results in the code being
inherently more robust in the face of somehow malformed HTML which
doesn't contain what the script code is expecting to find.
- Ditch the recently added JSHint linter in favor of tslint.
- Upgrade from UglifyJS to Babel as a JS preprocessor. This lets me use modern ES6 syntax
in the JS code.
- Update JS code to leverage ES6.
- Remove most dependencies on JQuery for faster & smaller code. Once I remove the
dependency on the Bootstrap library, then the dependency on JQuery will also completely
go away.
- Use a new approach to managing icons. This has two primary benefits:
- It makes it possible to color the icons such that they look good in the
dark theme. Previously, the icons were rendered in black on dark grey when
using the dark theme.
- The average payload size for our web pages is reduced and we better use the
browser cache.
- The new icon approach makes it possible to remove our dependency on the fontawesome
package, which further slims down our payload requirement
- Refresh our iconography for a slightly lighter look.
- Remove the extra thick left-hand border of text blocks to lighten the
look.
- Added a "NN minutes to read" indication on top of each page. This is
only displayed if the count is > 1 minute.
- Added a calendar icon next to the blog post date.
- Exposed a bunch of strings that were buried in CSS/JS to translation.
- Add the 'keywords:' front-matter fields to the Hugo archetypes.
- Fixes the bug where not all of our files would get the right lastmod
time extracted from GitHub.
- Fixes most of the cases of bad HTML output around the use of {{<text>}}. There's
still a single bad case which I'll report to the Hugo folks.
- Use Hugo's new --minify option to minify HTML instead of having to use the
separate and slow html-minifier program.
- Fix some bad HTML on the landing page.