What I did in 2018 #
My plan, from a year ago, was:
- Produce explanations and demos from my procedural map generator experiments.
- Go back to old articles and update them.
- Work other developers on algorithms and articles.
- Write a tutorial on coordinate systems and cameras.
- Write tutorials about making interactive tutorials.
- Become faster at writing explanations.
What did I do in 2018? I think I did reasonably well with goals 1, 2, and 6, and not so well on goals 3, 4, and 5.
Labels: annual-review
Printing my pages #
Occasionally someone will want to print one of my web pages, even though it means losing access to all the interactive parts. There are a few things I do to make this work better:
- I try to start all my interactive diagrams in a state where it's informative without interaction. This is not only helpful for printing, but also for people skimming the page. I haven't always done this in the past so I've been trying to go back through my older pages and change them to work this way.
- I have a "print stylesheet" using @media print { … } that changes the page style when printing. It changes the font, removes background colors, removes text shadows, and instructs the browser to avoid breaking the page inside a diagram.
- (Added today) When printing, I display the URLs for the links on the page. Since you can't click the links, it's useful to display the URLs.
Website updates, part 3 #
While updating my website build process over the past week (part 1, part 2), I decided I should also revisit my page layouts. Last year, I started learning about responsive design, studied the theory, and implemented it on my site. I converted 514 out of around 600 pages, and said “The rest are either unimportant or impractical to convert.” Of the ones I didn't convert, some were in a 450px width and most in a 600px width. I wanted to see if I could convert the 450px pages to 600px at least.
Labels: design , infrastructure
Website updates, part 2 #
In part 1 I described some of the things I was doing to improve how my site is built. I had planned to implement the translation of each XHTML file to HTML in Python, but that didn't quite work out. I went back to my primary goals:
- Versioning of references to JS, CSS resources, so that I can improve browser caching of my pages.
- Tracking dependencies so that if something a page depends on is modified, the page is rebuilt.
- Custom macros for each project.
I was hoping to implement all of this in November before I started my December project, but I didn't. So I decided to focus on the most important part, versioning.
Labels: infrastructure
Website updates, part 1 #
I finished mapgen4 last week and wanted to "sharpen my tools" before I started the next project. My website is over 20 years old and spans 5 domains. The build process has grown over time, supporting all the different tools I've used over the decades.
There are a few features I've wanted to add to my static site generator:
- Versioning of js, css resources so that I can increase the expiration cache time. This should improve load time. I've been doing this manually and want to automate it.
- Dependency tracking, so that if something includes another thing, and that thing changes, the first thing gets rebuilt. This should reduce content mismatch errors.
- Custom macros for each project that get expanded at build time. This should make it easier to write new pages.
Labels: infrastructure