Fireship.io: SvelteKit Full Course

I had a coffee with a Frontend developer on Monday, and he was telling me how he finds playing with Angular helped him understand React better. Another framework he mentioned is Svelte. It is something I always wanted to try out, so I decide to give the official quick start tutorial a spin. I started from the beginning and stopped at around the “bindings” part. It is a very easy framework to get the hang of!...

July 24, 2024

Quick start v. quick deploy: Express + MongoDB Atlas

I had planned to follow these steps one after another to create a simple CRUD website with Express and MongoDB Atlas: run a “hello world” example on my local machine. deploying it to a common platform, e.g. Vercel. wiring up the deployed Express App to the Mongo Atlas database Steps 1 and 2 were fine. This official guide was helpful, even though I still don’t understand exactly why I need to remove the following line before deploying:-...

July 20, 2024

Mailgun quick start: with Express on local machine

The relevant code can be found in this repo. After attending a meet-up, I was told of a volunteering opportunity to improve the group website. Specifically, at present, there was no functionality for the website to send out a confirmation email after someone signs up. The tech lead who put the website together in a few hours says that a good tool for this feature would be Mailgun. So I decided to give Mailgun a quick spin, to see if I am up for the task....

July 19, 2024

Not all public websites are crawled by Google

I discovered quite by chance yesterday that not all Hugo websites are crawled by Google. As Henry Leach explains when he was trying to search an old blog post in 2021 And that’s how I found out that I hadn’t configured a robots.txt file for my updated Hugo site, and Google was politely ignoring it. It seems the same is true of 2024 as well. Maybe that is one reason search engines such as DuckDuckGo or Marginalia is better for searching blog posts....

July 16, 2024

Hugo deploy: struggle v choice

Given my familiarity with Vercel, I initially wanted to deploy my Hugo blog there. But the process was just too difficult. Following the official guide led to a webpage that displayed some, but not all, features of my theme. I tried a few troubleshooting tips from various sources, but without a deep understanding of how Vercel works, couldn’t find a fix. Online discussions seem to put the finger of blame on which Hugo version is used by Vercel: but without knowing the full context it was hard to get a feel for whether that is right....

July 15, 2024

Uses of grep: changing font size for a Hugo static website

Recently I wanted to adjust the font size of this blog. I already have a theme installed, so the choices are either changing something somewhere within the theme, or somehow overriding the theme. A simple Google query didn’t produce any straightforward results. StackOverflow answers seem limited to specific situations. Perplexity AI gave a solution along the lines of overriding the default theme with some additional files. An intriguing solution, but one that neither worked nor have any obvious support from Hugo DOcs....

July 15, 2024

Smalltalk: Step 2

Richard Kenneth Eng’s article recommended Learn Smalltalk with ProfStef, which was easy to follow even without full concentration. I wanted to try gnu smalltalk next, but unfortunately it was not yet available for Apple chips. Given that Pharo is available on Mac, the best next step is probably Pharo by Example 9 (updated 2022), which is freely downloadable here.

July 13, 2024

Max Datom levels 1 to 5

I heard about this game in a Clojure dojo and wanted to give it a spin. It is an interactive tutorial of Datomic, a databse assoicated with Clojure. While it is not a technology I am likely to use, the story line was engaging and I ended up spending a morning on it. My takeaway from levels 1 to 5 is the truism that, in broad outlines, database systems need to fulfill the same kind of tasks....

July 12, 2024

Notes on my first Clojure Dojo

Doing 4clojure for 2 hours, from problem 1 to problem 21 (nth element). 1 Everything is an expression in clojure. So are there any statements? 2 On the command line, `(6 7 8) is not the same as (6 7 8) because it is not evaluated. Similiar for :a versus a. 3 Searching and parsing the following expressions: (for [i (range 1 5)] i) (for [i (range 1 5)](* 2 i)) (do (for [i (range 1 5)](* 2 i))) (doall (for [i (range 1 5)](* 2 i))) (print (for [i (range 1 10)](* 2 i))) 4...

July 10, 2024

Smalltalk and Clojure: quick start

Before attending a Smalltalk meetup and a Clojure dojo this week, I spent the morning getting to the “hello world” stage with these languages. Smalltalk After watching Bernat Romagosa’s video, I chose the Pharo variety of Smalltalk. I then followed Richard Kenneth Eng’s tutorial to dip my toe into the Pharo IDE, itself written in Smalltalk. Clojure Having flipped through the first chapters of Brave Clojure before, I was aware of the significant set-up costs....

July 9, 2024