The Top Five Developer Skills That'll Make You a Hero (Hint: Involves LEGOs) by Jean-Paul Delimat is a great read. His advice for working on real-world software projects is spot-on. His LEGO analogies are both effective and some of the most amusing things that I have read all week.
I've been known to use Voltaire's quote “Perfect is the enemy of good” in the context of finding the line between beautiful code solutions and the pragmatics of delivering on-time.Everything that I needed to do to install and configure Drone.io in order to set up a simple CI/CD pipeline to rebuild and (eventaully) redeploy my website was documented somewhere on the Internet. I just had to piece the puzzle together from the information I found scattered among multiple sites. This post is my attempt to get everything documented in one place. I'm sure future-me will need the reminder. Hopefully, this information may be of some help to others as well.After publishing my original Nested Forms in Angular article, my friend and colleague Val Neekman suggested I add a fourth approach, where static factory methods on each of the child components are used instead of a separate factory service. So it is with my thanks to him for the idea, along with some sample code to look at and a much appreciated review of my implementation of the idea, that I am able to write up Part 2 in my Nested Forms in Angular series.It only took a few hours tonight to set up a new VPS machine with Docker, LetsEncrypt, and Drone.io to be able to build and deploy my Hugo blog to a test site. The whole CI/CD pipeline takes less than ten seconds to finish.
I will have to write up all of the details, including my docker-compose files, nginx configs, and .drone.yml later on this week. It's all super exciting to see it come together.
The official Angular documentation discussing Reactive Forms shows how one can use groups and arrays to organize a form, and to dynamically add to it. The drawback of the example on that page is that everything is in a single component.
Once a component starts to grow in size and complexity, it becomes desirable to decompose it into multiple smaller components. At this point, there are a number of ways to break up the form into a set of nested form elements.With many thanks to Using Web Mentions in a static site (Hugo), published by Paul Kinlan in October 2019, I have added Webmention support to the site.
For now, I am using Webmention.io to handle the heavy lifting of providing the Webmention end-point, the same way the above-referenced article describes.
With only minor modifications to the Node.js script from the article, I can pull down all mentions for my domain from Webmention.My Semantic IndieWeb Theme currently being used for the site has been updated to provide a more responsive design. On landscape tablet or wider screens, the author card now displays in a column on the right side of the screen. On smaller devices, such as ones phone, the author card will continue to render at the end of the page.
There is a fair amount of yet-to-be-used whitespace under the author card in the wide screen view.While waiting at the local Panera Bread shop for my lunch order, I noticed a fellow patron who was wearing a Miskatonic Observatory t-shirt. It made my day.Today I realized that I had incorrectly set up a permalinks definition for the posts section of the website in a way that left the posts/ folder out of the generated path name. That wasn't how I intended the site to be laid out on-disk.
Since my content organization was the way I wanted things to end up, the permalinks definition was redundant as well as incorrect. However, I realized that I couldn't just remove it, as any-and-all links that I had previously shared on Mastodon would be broken!
Inspired by the many blog sites out there that display a series of icons
linking to the site author's other sites and social media profiles, I
set out to add the same to my site.