• Week 361

    30 November 2019

    I submitted the last of the content for Longridge this week. That means that project is now into review, and should be going live next month. It's been a bit longer to get here than planned, but I'm very pleased with the results.

    I started getting into the meat of Willsneck. That mainly involved more old-fashioned front-end code: HTML, CSS, and the lightest sprinkling of Javascript where appropriate. I also spent some time applying CSS keyframe animation to SVGs, which led to results swiftly.

    And I kicked off building out the deployment infrastructure. I always like to get deployment up and running early: it's one less thing to worry about later in the project. In this case, I'm doing things a little differently. We're deploying the site to Github Pages, and using the just out-of-beta Github Actions as a continuous integration to do so.

    I really like this setup. It's similar to the way tools like Netlify work, but with a little more control in exchange for a little more complexity. Rather than being reliant on the few static-site builders that Github Pages allows you to use, we're using Actions as our builder. That means on every push to our master branch, an Action runs on a virtual machine. That Action checks out our code, installs dependencies (and caches them for future runs), and builds the site to a dist/ directory. And then it commits the contents of that directory back to our gh-pages branch.

    That means we get continuous deployment of a static site on every push to master, but without having to store the compiled artefacts in the repository. Which is exactly as it should be: the repository contains the source for the site, not the compiled code as well; it's generated as necessary. This setup is working well with my temporary Parcel-based site, and it'll be straightforward to move to using Hugo for the final site.

    I'm impressed with Github Actions, and will consider it more for future tooling - the ability to run actions on a schedule means that many of the sites I've not moved to simpler builds or platform largely because of a lack of cron on them… might now be possible to move to a static site, and a few scripts running on GitHub.

    Finally, I took a quick look at the code for Hallin and got it spun up on my own machine - good enough going to be able to schedule a first meeting for that project.

    A good week: lots of code, nice to be back in a client office again, and one project nearly on the runway.

  • Week 360

    24 November 2019

    Longridge is properly coming into land now. That's meant almost all my work on it has been dealing with feedback: minor edits, checking the content on the platform itself, final feedback on videos. There's a big deadline next week, and there's about the right amount of things left in the right state, which is about the best you can ask for. It helps that, having taken a while to come together, I'm pretty pleased with the content we settled on, and how it's come out. I'm hoping the peer review process will go smoothly.

    Willsneck kicked off on Thursday: a short website build gig. I'd already been briefed by the team, and so hit the ground running, working on building up basic infrastructure for developing the site, and the first pass of the flat pages. Working in the browser in 2019 is really rather satisfying compared to twelve years ago: the promise of web standards is finally truly paying off, and Grid and Flexbox make life a lot easier.

    One of the new things I've decided to learn on this project is Parcel, which I'm using as a bundler/build tool for writing the flat pages. Normally, the minimum I need is compiling SCSS (which I like for tidiness), so that means integrating with PostCSS for compilation. This time, I'm also using posthtml for processing my static markup. posthtml is doing two things for me. By using posthtml-include, I can use very, very simple templating - just including one HTML file in another. But that's enough to handle repetitive elements like headers and footers, before I port the whole static build to a content management system. I've also found that posthtml-expressions will let me include data and simple JS expressions in my templates. That's particularly handy for some pages that are going to be driven from JSON-based data - I can prototype with the real data before we even get near the CMS. Always useful to add new tools to the belt, and I've found these libraries combined with Parcel to be the Right Level of Simple for the job at hand. Willsneck continues next week, as I get into the thornier detail work around art direction, SVGs, and CSS animation.

    Hallin, the other small software development job that's on the table, edges closer to likelihood. I spent an hour or two going over the existing code and writing enough documentation for myself to be able to spin up the project from a bare checkout. That was… neither as easy as I'd like, nor anywhere near the hardest spin-up I've had to do. But it's useful for getting a feel for what adding functionality to someone else's long running codebase will feel like, and useful feedback to the potential client.

    Finally, for an entirely separate personal project, I ordered an electronics prototype from JLCPCB. I've used JLC a few times for prototype boards. This time around, I'm also taking advantage of their prototyping service to build up the boards (or, at least, about 75% of them, the remaining components being things they don't have, or that I can source cheaper). Exciting to see how those will come out. This is also the first board I've designed in KiCad. This article and the scripts in it were highly useful for generating a positioning file.

    Looking at those notes reinforces what I already was feeling in my bones: it's going to be a busy end to the year.