Links

Links to places on the web that I'd like to share.

All tags

Recent links

Joshua writes some good pointers on running your own public API from his experience running Pushover's API. I recommend reading his full post, I've distilled it down here with some of my notes.

  • Host the API on its own hostname (i.e. api.example.com) to allow for separate control of IP, TLS settings, and so on. I've made this mistake before of figuring I could just use NGINX in front of everything on a single domain. Not entirely scalable.

  • Account for users doing the bare minimum to get their application working, including inadvertently using non-conforming requests. Supporting them now will mean supporting them for all eternity unless you start working on a deprecation strategy. This reminded me of when I built a bot to send notifications of new posts on a subreddit. I created the URL for the post by inserting the subreddit name returned by the API. Within the URL I included "/r/" and the API also returned "/r/" before the subreddit name, which mean the URL generated had "/r/" twice. This still worked for a while before Reddit decided to reject those requests and I had to adjust my code. Had to dig through the Discord message archives for that one. Joshua also gives an example of not being too stringent:

Pushover's API has a message size limitation of 1,024 characters. If the message parameter is larger than that, I could reject the request because it's not correct, but then the user's message is lost and they may not have any error handling. In this case, I truncate the message to 1,024 characters and process it anyway [...] The user still receives something, and if they care that it's truncated, they can properly implement continuation or smarter truncation.

  • Use API tokens were possible for authentication, and make them easy to rotate.

  • Include a unique ID with every request and ask for them when providing customer support.

  • Assume humans will read your error messages, make them descriptive. Please, this.

  • Keep up with user failures, Pushover's API "short-circuits" the API logic after a set number of 4xx errors with a 429 response for an hour, along with a descriptive message. Use the API tokens to map the erroneous requests with a user and notify them via email.

  • Prefix any tokens you create ot help sorting out random strings. This is one thing I've seen used a lot but never considered doing myself until reading this.

Read from link

I learnt about the localisation efforts of Ibrahima SARR's team to create the Fulah language pack for Firefox from Eric Bailey's blog post about localising content. It shows a new perspective on common technical idioms used that may not directly translate well into other languages. The example described was the word "crash" which translated to hookii meaning "a cow falling over but not dying".

This also reminded me of a web page by Rogério de Lemos on mapping technical terms in Portuguese to their English counterparts when describing dependability.

Read from link

I try not to be negative in what I post online, for this reason, this will stay out of the main blog, and my Mastodon account, but I wanted to comment in some way so it will be a link post. Linked is a YouTube video from Mutahar on the incident with MKBHD, if you prefer reading here's a Verge article. I don't care to comment much on the ethicality of a full length sponsored video that seemingly positions itself as a review but what I don't have any tolerance or respect for is the egregious speeding especially in a residential area. The main speedometer was blurred out to cover the crime but the car had a passenger-side speedometer as well that showed Marquees drove up to 95 mph which converts to 152 kmh where the limit is 56kmh! Completely reckless to drive at those speeds at all, even more so in a residential area where a children playing sign was visible in the video. The video was quickly edited with a comment that said "Cut out the unnecessary driving clip that obviously added nothing to the video. I hear all your feedback on sponsored videos too." Good cover-up...

The linked video from Mutahar covers my views on the event.

Read from link

sqlite-vec is a vector search extension for SQLite with install options for Node.js, Python, Rust, rqlite and more. I previously used SQLite to store embeddings when investigating the viability of using a text embedding model to recommend related posts on the blog. However, back then I'd calculated the cosine similarity between each embedding which is compute intensive. Using this extension would allow me to dynamically retrieve the distance between an embedding and the embeddings stored in the database.

The extension can be compiled on various platforms but currently the PyPI package does not have an ARM release.

I also encountered an error when trying to retrieve distances for embeddings: "OperationalError: A LIMIT or 'k = ?' constraint is required on vec0 knn queries". I wasn't alone in this the workaround is to use k instead of LIMIT in the query. In the coming few weeks I'll be playing around with this extension some more, looks very promising so far.

Read from link

Title and all quotes translated from Dutch to English by Google Translate, minor edits for readability made by me.

As ProRail employees are on strike in different regions of the Netherlands this and next week. Even though these strikes are bound to various ProRail control centers, they affect traffic much broader than their region. Since NS runs a lot of 'long lines' across the country which may cross strike affected areas. NS has even started using new digital signage earlier this year to help passengers navigate these long routes. Tim van Leeuwen, Director of Operations Control at NS, explains why these long lines are needed:

[Long line services] are a direct consequence of how our small country is structured. In contrast to other countries, the Netherlands does not have one dominant urban area where employment and education are concentrated. Think of Paris in France, for example. Everyone has to go there in the morning and leave again in the evening. The French railways (SNCF) therefore base their timetable on this.

What you sometimes hear is true: the Netherlands is more of a large city than a small country. Not all residents of Den Bosch work in Rotterdam and not all residents of Groningen want to go to Amsterdam. You could actually say that everyone in the Netherlands has to go everywhere. And that is what NS is setting up its network with long lines for.

A major advantage is that NS is making optimum use of both the infrastructure and the train equipment. Due to the long lines, few trains have to turn around in Utrecht and that saves platform capacity and therefore space at Utrecht Central, a place in the middle of the city where space is limited. It also ensures that 80 percent of our passengers do not have to change trains.

Read from link

Alex writes about creating HTML files in folders to browse files in various ways.

This allowed me to radically simplify the folder structure, and stop chasing the perfect hierarchy. In these mini-websites, I use very basic folders – files are either grouped by year or by first letter of their filename. I only look at the folders when I’m adding new files, and never for browsing. When I’m looking for files, I always use the website. The website can use keyword tags to let me find files in multiple ways, and abstract away the details of the underlying folders.

Why HTML?

I’m deliberately going low-scale, low-tech. There’s no web server, no build system, no dependencies, and no JavaScript frameworks. I’m writing everything by hand, which is very manageable for small projects. Each website is a few hundred lines of code at most.

It reminded me of a time when I had to present a project I'd worked on as part of a job interview. I created a number of linked HTML files that walked through various parts of the code. It had the benefit that if a question was asked I could directly open up the relevant file and dive into the code. The interviewers didn't seem impressed but I ended up getting the job, so I guess it worked.

Read from link

Mark Wagenbuur, from Bicycle Dutch, writes about forever ongoing discussions about building bridges over the IJ, a river that now has seven ferry lines taking passengers back and forth. A quote from the blog:

In the 2015 version, I reported that there were six ferry lines, and now there are seven. The most important one of those, behind Central Station, is the F3 Buiksloterweg ferry. The earliest mention of this ferry dates back to the year 1308, but it is probably much older. Two ships operate on this line during the day, which means a ferry crosses the river every six minutes. During rush hour, a third ferry is added, reducing the waiting time to four minutes. At the busiest times, there is even a fourth ferry in operation.

I was reminded for an incident in January this year when the Metro M52 was closed towards Amsterdam Noord because of a flooding in a tunnel at Sixhavenweg. This was paired with the F3 Buiksloterweg ferries being taken out of service because the platform used to cross when docked had collapsed, the ferries ran to IJplein instead. To make matters works, a number of ferries from the 60 series were taken out of service because of technical problems resulted in cancelling the F9 route between Sporenburg and Zeeburgereiland.

Read from link

Ruben writes about keeping himself hydrated throughout the day and the ambiguity about how much water is actually required by your body. The thought about tracking water consumption through a database had just entered by mind only to be replaced instantaneously by the simplicity of a spreadsheet. In the very next paragraph Ruben writes:

So I did what every self-respecting computer engineer did: I built a database table to track my water intake! Then realised this was a bit of a pain, and made a spreadsheet instead.

Read from link

This paper written by nine researchers talk about how the presence of bicycles lanes have a traffic calming effect for motor-vehicle users at intersections. That is to say it not only makes the street safer for cyclists but micro-mobility users and pedestrians as well.

we found that the effect of the delineator-protected bicycle lane (marked with traffic cones and plastic delineators) was associated with a 28 % reduction in average maximum speeds and a 21 % decrease in average speeds for vehicles turning right. For those going straight, a smaller reduction of up to 8 % was observed. Traffic moving perpendicular to the bicycle lane experienced no decrease in speeds. Painted-only bike lanes were also associated with a small speed reduction of 11–15 %, but solely for vehicles turning right. These findings suggest an important secondary benefit of bicycle lanes: by having a traffic calming effect, delineated bicycle lanes may decrease the risk and severity of crashes for pedestrians and other road users.

The paper also mentions that the road width decreased slightly when adding the temporary bicycle lanes which in itself is considered a traffic calming measure by the Federal Highway Administration.

Discovered via Taras Grescoe.

Read from link

Wes Bos inspects McMaster-Carr a tools and parts shop with a website that's buttery smooth. No seriously try it.

The developers seemed to have pulled out all the stops to accomplish this. There are some simple methods like using CDN caching, client caching through ServiceWorkers and preloading assets in <head> including dns-prefetch but also lesser known, or more obscure ones like using sprites to load images to reduce the number of HTTP requests. The videos covers some more, but I'll be using some of these in my site builds in the future.

Read from link

Quotes from Alan Levy on deciding between tram or metro for ring roads around cities, in this case specifically the Bundesstraße 4 R in Nuremberg.

In favor of light rail, there’s the issue of speed. Normally, the advantage of subways over tramways is that they’re faster. However, on a circumferential route, the importance of speed is reduced, since people are likely to only travel a relatively short arc, connecting between different radials or from a radial to an off-radial destination. What are more important than speed on such a route are easy transfers and high frequency.

In favor of metro, there is the cost issue. The same factors that make speed less important and frequency more important also make it easier to build a metro. If the road is wide enough, which I think the one in Nuremberg is, then cut-and-cover is more feasible, reducing costs.

As usual with the blog there's great comparisons drawn from other cities like Paris and Cologne and other points made on trading capacity for frequency.

Read from link

Multiple university professors and researchers from different institutions comment on how students from 2017 and onwards store files in a flat structure and are unaware or unwilling to use folders.

I came across this 2021 article from a comment left by Simon Willison on HackerNews on how the HTML for People book asks the reader to "create a folder".

A notion of why this mental shift could be attributed to moving away from storting physical filling cabinets but also from the way content is consumed today with curated feeds rather than having to store or locate a file within a folder. Another reason could be with the emergence of good full-text (and image) search, I'm leaning more to this being a contributing factor.

Read from link

Seeing Blake Watson's HTML for People reminded me of learning to build a plain HTML website at school. The bulk of the guide covers the basics of HTML in an easy to consume format with short incremental examples. The guide also uses Simple.css to avoid having to learn any extra styling while still keeping the HTML content simple, although there's an extended bit that covers CSS and PHP.

Read from link

Simon Willison shares his experience serving on the board of the Python Software Foundation over the last two years and some of the responsibilities that entails.

The Python Software Foundation supports the development of Python and the community by allocating their donations towards running infrastructure other activities. However, they are not directly related to developing Python which is handled by the core team ran by the Python Steering Council. Infrastructure includes running PyPi and Python.org and activities most notably include organising PyCon. Simon also mentions an activity I hadn't considered before and that's acting as a fiscal sponsor to other python-related communities.

Simon's write-up is dense with information and definitely worth the read if this is interesting to you. This has also prompted a write-up by Makoto Nozaki on serving on the board of The Perl Foundation.

Read from link

NS train driver Stefan uploaded a new video of the 'Airport Sprinter' equipped with cameras and software that enable the driver to close the doors before the train departure. A task that is typically done by the train conductor during the departure procedure. Each carriage is equipped with external cameras allowing the driver to see passengers during the departure procedure visible at 8:20 in the video. This system, according to the video description, saves 10-15 seconds on average at each stop.

I've written about tests that were conducted back in 2022 on these sprinters, it seems the timed saved will be worked into the 2025 timetable to improve reliability.

An interesting side effect since the train conductor is no longer in charge of beginning the departure procedure if they move between trainsets at a stop they must notify the driver so as to not be left behind. This is seen at 16:18 in the video.

Read from link

Ian Carroll published a write-up together with Sam Curry on how they were able to add arbitrary crew members to bypass security screening or ride in a jump seat in the cockpit of an aircraft. They used SQL Injection (that seems to use MD5 password hashes!) on FlyCASS, a software system small airlines use to manage authorisation for their crew members at airports.

What was more shocking to me was seeing TSA allegedly trying to cover up the error.

The TSA press office said in a statement that this vulnerability could not be used to access a KCM checkpoint because the TSA initiates a vetting process before issuing a KCM barcode to a new member. However, a KCM barcode is not required to use KCM checkpoints, as the TSO can enter an airline employee ID manually. After we informed the TSA of this, they deleted the section of their website that mentions manually entering an employee ID, and did not respond to our correction. We have confirmed that the interface used by TSOs still allows manual input of employee IDs.

This post was discovered through Arne Bahlo's newsletter.

Read from link

As annoying as cookie banners are I like seeing them because they give me the choice to deny being tracked but also because I get to see all the vendors a company would have otherwise sold my data too. The longer the list the further I tend to stay away from site unless absolutely necessary. The linked write-up on Bite Code! is a neat summary on why the banners don't have to be as bothersome as they typically are especially because we could have had a standard Do Not Track HTTP header!

There has been for years a proposal for a standard, designed in 2009 (!), still available in all the popular web browsers (except safari) that can make for a seamless experience: the DNT header.

Almost no website have implemented it, because companies WANT to nag you, hopping to trick you into being tracked. They know nobody would click yes on those settings.

So now it's deprecated.

Companies are making your life hard by choice. They got told by the EU they could not be secret abusers anymore, so now they decided to be irritating on top.

Read from link

I'm not sure any re-org I've been subjected to has led to anything useful but wasted time, confusion and the de-prioritisation of work already done which leads to more wasted time. One aspect of the wasted time comes from the need to explain or maybe even justify the work done by the team having active documentation on the team’s tenants, work and roadmap is one way that helps. Logan's recent blog titled Mean Time To Reorg; Writing as Resilience provides some good examples of this in action.

As a tech lead of a project, these reorgs led to frequent changes in management reporting lines. The twice-annual reporting line change drew my time away from the team and project, and was spent on understanding the positions and intent of the new management structure, and briefing them on the work we did and why it was valuable. [...] Folks new to the project who only did surface level due diligence would misunderstand the details rather than fail to grok them in the first place. When a new hire joins the company there’s an expectation of some number of months before they develop expertise in all of the in-house systems. When there’s a reorg there’s an expectation that the new manager of an area is effective overnight.

I learned that in order to preserve my time for the team and project I needed to improve the speed at which new people (particularly management) onboarded [...] I did this through writing and documentation. We had in-depth docs for users of our product. [...] Over time I learned that essentially writing context and documentation about the roadmap greatly benefited the onboarding of new managers, engineers in the area, and curious customers.

Read from link

While reading the latest post on PedestrianObservations called Tradeoffs in Reliability and Shutdowns about the state of the German railway in the summer I re-discovered a toot from Jon Worth. I think it aptly describes what it means to have a reliable and trustworthy public transport system.

That 5am train with a dozen building workers on it, or the last train home in the evening matter for the trust and reliability of the system, even if those individual trains make heavy losses and are largely empty

Read from link

The author of TheCoffeeMachine gives a detailed walkthrough of how to add maps to a hugo site using uMap, which allows you to create maps based on OpenStreetMap (OSM) layers, and a shortcode that allows you to embed them. This is a belated TIL as I've already used this a few times, most recently for my post on the Tri-Country Train.

A rough overview of the steps involves signing up for and using uMap. This will allow you to create a map, set markers, and make the adjustments you need on top of existing OSM layer. From here using hanzei's hugo-component-osm theme you can embed the map into the hugo site using a shortcode. This includes passing in any parameters that uMap supports like coordinates to center the map and the zoom level.

I recommend reading the linked post for detailed steps. I needed to take this further and include a class within the iframe that's rendered on the page to able to style it with CSS. Unable to find a way to do this I forked and made my own addition. The pull request was created to the original repository if hanzei would like to include the changes. Here's a sample of what it looks like:

{< openstreetmap mapName="usa-train-lines-using-stadler-multiple-units_1100675" coordX="40.0731" coordY="-74.8924" scale="10" class="alignright" >}}

Read from link

I was not aware of how much of an accessibility issue having only a dark colour scheme posed. I know there are preferences but seeing the replies on Nai's Mastodon post about the difficulty of reading white text on a dark background for some with astigmatism was surprising.

But there are some people (like me) who may be visually impaired. Astigmatism, for example, can make reading text that is white on dark a real PITA. An effect known as "halation" occurs, where each letter behaves as if it were a flashlight, gaining its own halo of light and making all text read more blurry than normal.

No matter how good your glasses are, astigmatism still causes you to see a little blurry—it's something you get used to. But this damn effect makes all the text read as if you don't have your glasses on, or even worse, leading to much more tired eyes or even pain.

Linked in the thread is a Vice article in which the author also shares similar difficulty reading dark colour schemes with astigmatism but also why dark backgrounds work for others.

My own very-astigmatic eyes are exhausted by dark mode, but for many others, dark themes are an accessibility benefit. White backgrounds emphasize floaters, those tiny spots of fibers that appear in some people’s vision. People with disorders like photophobia or keratoconus, conditions that cause high sensitivity to light, might read more easily with dark themes.

Read from link

ICANN finally allocates the .internal TLD for private use after discussions first started in 2020. This means we can now use .internal domains on a private network without fear of it being up for grabs and resolvable to something else in the future. To prevent this previously you could purchase a domain name and use that or subdomains of that for internal use so you always control what is resolves to.

Resolved (2024.07.29.06), the Board reserves .INTERNAL from delegation in the DNS root zone permanently to provide for its use in private-use applications. The Board recommends that efforts be undertaken to raise awareness of its reservation for this purpose through the organization's technical outreach.

Between 2020 and now, ICANN opened the proposal for public comments which was summarised in PDF form. ICANN received responses from various groups like various ICANN committees, Amazon and Google. The majority of valid responses were in favour of using .internal with the others in support of the idea but asking for a shorter TLD.

Read from link

Our car-centric cities and towns rob people of their independence. People who would otherwise be perfectly capable of going out on their own to meet friends, or grocery shop, or go to the library are prevented from doing so because they can’t drive. Maybe they’re too young to drive, as I was at 14; or maybe they’ve gotten old enough that it’s no longer safe for them to drive; or perhaps they have a disability that prevents them from driving. Sometimes people can’t drive simply because they can’t afford a car, because these things are really expensive.

From Evan Sheehan.

Read from link

This article from the South China Morning Post covers the Iran-China railway link between Almaty in Kazakhstan through to Tehran in Iran. At the time this was published, I assume 2017, it had been a year since the first the first freight train connecting Iran and China ran through neighbouring countries Kazakhstan, Uzbekistan, and Turkmenistan in February of 2016. Traveling along the Silk Road taking only 14 days it provided a quicker route than ships between the two countries.

The arrival of this train in less than 14 days is unprecedented,” said President of the Railways of the Islamic Republic of Iran (RAI), Dr Mohsen Pour Seyed Aghaei. “The time spent by this train” to reach Tehran “has been 30 days shorter compared with the maritime route, which starts from China’s Shanghai port and ends in Iran’s Bandar Abbas” port city, Dr Pour Seyed Aghaei noted. He added, "This is an important step for the revival of the Silk Road and the train has travelled 700 km per day, saving 30 days compared to normal time that takes to go this distance.”

Part of this route towards Europe became a "life channel" during the COVID-19 pandemic as it required fewer health checks than road transport since the train uses local crews in each country. Halting flights and increasing maritime freight prices put this rail alternative in a good spot.

Interestingly, the UIC in another article.

It's clear there's a lot of activity in this area I'm not familiar with but it is interesting to learn more.

Read from link

The Holotypic Occlupanid Research Group, or HORG, work to classify and research plastic clips usually seen securing bread, fruit and other bags at the supermarket. The HORG calls these clips Occlupanids.

Occlupanids are generally found as parasitoids on bagged pastries in supermarkets, hardware stores, and other large commercial establishments. Their fascinating and complex life cycle is unfortunately severely under-researched. What is known is that they take nourishment from the plastic sacs that surround the bagged product, not the product itself, as was previously thought.

My favourite, the Coronaspinus chaos, since it looks like trees I drew as a child or as the HORG describes, "Chaotic crown of thorns."

I found the site from a CHUPPL documentary called The Bread Tab Conspiracy: $93,000,000,000 Disappeared.

Read from link

So cats do try their best to communicate vocally.

Research shows that, "listeners were able to identify domestic cat meows from two different contexts significantly better than chance, and that experienced listeners were better judges than inexperienced ones." Taking samples from two of three sibling cats showed that rising intonations were related to food and falling intonations with the vet.

Originally posted on Mastodon.

Read from link

CommonMark is the Markdown specification created by John MacFarlane, Jeff Atwood and others, to encompass the various flavours of Markdown that was adopted by different software over the years. GitHub adopted CommonMark along with it's extension for Markdown called GitHub Flavored Markdown (GFM) sometimes around 2016-2017. I've complained about how different platforms deveate from the standard. This GitHub Engineering post shows how good of a job the CommonMark contributors did to represent common usage of Markdown with only 1% deveating from GitHub's previous Markdown parser.

We [GitHub] actually enabled CommonMark for all new user comments in the website several months ago, with barely anybody noticing — this is a testament to the CommonMark team’s fantastic job at formally specifying the Markdown language in a way that is representative of its real world usage.

All in all, less than 1% of the input documents were modified by the normalization process, matching our [GitHub's] expectations and again proving that the CommonMark spec really represents the real-world usage of the language.

Read from link

India has accelerated its rate of electrifying railway lines in the last few years, this article covers some of the numbers and current progress.

“The pace of electrification has been the highest in the last 15 years: between 2011 and 2020, about 20,000rkm of railway lines were electrified, and another 20,000km of route kilometres have been electrified between 2020 and November 2023,” says Sharif Qamar, associate director at the Energy and Resources Institute, a Delhi-based research institution.

As of 1 September 2023 91.49% of the railways have been electrified according to the Indian Railways.

Read from link

A collection of personal websites which have curated links to other websites. I've spent a few hours diving down rabbit holes after discovering the site through 82MHz's post a few days ago and discovered some interesting sites.

Read from link

This open source tool, discovered via 82MHz, fetches an authors Mastodon thread to be rendered as an HTML page or to be exported as a Markdown file. masto-thread-renderer can be self-hosted and the author has hosted version available as well at thread.choomba.one.

I've done something very similar by creating a Python script that can fetch a toots JSON payload via Mastodon's public API. The JSON file can then be used in a Hugo shortcode to display it on a site. This approach including the Python code was adapted from Brandon Rozek's approach detailed on their blog.

Threads from Mastodon on my blog are tagged as "toots". Here's an example called Riding the Elizabeth Line! from the blog and the same thread on masto-thread-renderer.

Read from link

These simple but well written articles remind me of the many children encyclopedic books I read through as a child. Its good to see a format like this on the internet thats accessible for all and something which can be, and is, kept up to date.

Discovered via Nicolas Magand

Read from link

From Matthew Graybosch via People and Blogs

I still have a website on matthewgraybosch.com, but its mainly a substitute for having a LinkedIn account because LinkedIn has always been the Ashley Madison of job hunting, only more cultish. I mean, have you seen the people posting there? Its like the Stepford Wives got equally robotic husbands and they all got corporate jobs.

Yes, yes and a 100 times yes. No social media outlet is more artificial than LinkedIn.

Read from link

"Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better."— Edsger Dijkstra

Derek Kedziora made a some good comments on Eugene Yans post titled "Simplicity is An Advantage but Sadly Complexity Sells Better".

Removing unnecessary complexity is a thankless job.

Read from link

By using satellite images from Google in QGIS and marking areas of potentially good Christmas trees then exporting that layer and joining it with the National Forest Motor Vehicle User Map in Wherobots Cloud using Spatial SQL @lyonwj was able to map the areas with accessible roads.

Theres a lot of interesting bits to unpack there, but my main takeaway was the use of spatial SQL, it certainly beats relying on osmium tags-filters and manually editing GeoJSON files.

Read from link

Based on OpenStreetMap data this map displays all country borders along with the 10,000 most populous cities. The file itself comes down to 628KB, which is impressive, allowing it to be cached on the client device. Different variants of this map are available with no country borders or fewer cities, to bring the overall size down. This can be used as a base map or a fallback map with leaflet. What I found interesting was looking into the code and seeing how the land areas were plotted and drawn, with the lakes then drawn above that and finally the cities after the lakes.

After discovering this, I've taken the opportunity to use it on my rail page to plot all the locations where I've filmed a video. At the time of posting this, it hasnt reached its final form yet but I'll be working on it over the coming days.

Read from link

A look at everyday dialogue in 1586 England as documented by French refugee Jacques Bellot. In the video, Simon Roper explores the writing providing some interesting insights into the development of English at the time and today.

Read from link

Philipp Keller documents three examples of defining a database schema for your tagging strategy with performance tests and sample queries. The simple "MySQLicious" solution with one table for items and tags. The "Scuttle" solution with two tables one for tags and the other for items. Finally, the classic associative tables approach, or as called by the author the "Toxi" solution, with a table for items, another for tags, and an item-mapping table.

The last approach also has a Wikipedia entry, that I sometimes refer to when building similar tables as a subtle reminder.

Read from link

j6b72ss article covers the precise reasons why I stayed away from Traefik thinking of it as a container-first proxy. The author, however, explores how Traefik is used in their environment with static binaries. Over the last few years Ive moved towards containerisation, so maybe Traefik might even be a better fit over using Nginx for everything regardless.

The HN comments have some interesting discussions on how this compares to Caddy for containers, most leaning towards Caddy.

One of the HN comments from johanbcn pointed out an interesting documentation framework called Diátaxis which I will take a look at.

Read from link

The article tells the story of the underground cables that power the internet, as they follow the 50 crew members of KDDI Ocean Link, one of 22 repair and maintenance ships of the 77 cable ships in the world in the wake of the Fukushima nuclear accident.

On average, [cable breaks] happen every other day, about 200 times a year. The reason websites continue to load, bank transfers go through, and civilization persists is because of the thousand or so people living aboard 20-some ships stationed around the world, who race to fix each cable as soon as it breaks.

Read from link

A clear and illustration example of the term frequency-inverse document frequency measure to determine the importance of words within a collection of documents. Taking this one step further Jana Vembunarayanan, the blogs author, uses cosine similarity to link a search query to return the most relevant documents.

Read from link

While troubleshooting an RSS client recently, I needed an RSS feed with a steady stream of items. After some searching, I landed on Lorem RSS, an open-source tool built by Michael Bertolacci used to generate RSS items at varying frequencies through different feeds.

Read from link

An overview of the design choices behind creating the JavaScript Registry (JSR) which is compatible with yarn, npm and others. One thing that stood out to be was that the website is rendered server-side, the post goes through their design to optimize for Time-To-First-Byte between their rendering and API server backed by a Postgres database.

The rest of the post is also a good read.

Read from link

Atom differs from RSS in a few key ways and for the better. Chris Wellons' blog post outlines a few of these differences theyve encountered while working on Elfeed for emacs. One thatve I run into before and find really odd is the use of <channel> when only one channel is permitted in an RSS feed.

Having a channel tag suggests a single feed can have a number of different channels. Nope! Only one channel is allowed, meaning the channel tag serves absolutely no purpose.

Atom is a much cleaner specification, with much clearer intent, and without all the mistakes and ambiguities.

Read from link

Stephen Wolfram, mathematician, computer scientists and CEO of Wolfram Research, describes all the incremental improvements made in different parts of his life in the pursuit of productivity. It's an article I've read and come back to three different times now, and with each I've taken some new bits and pieces that I could use myself.

The reasoning behind pull out shelves:

One of my theories of personal organization is that any flat surface represents a potential "stagnation point" that will tend to accumulate piles of stuff—and the best way to avoid such piles is just to avoid having permanent flat surfaces.

Collecting personal analytics of physical and digital text:

I have systems that keep all sorts of data, including every keystroke I type, every step I take and what my computer screen looks like every minute (sadly, the movie of this is very dull). I also have a whole variety of medical and environmental sensors, as well as data from devices and systems that I interact with.

Archival and searchability:

At the top of my personal homepage is a search box. Type in something like "rhinoceros elephant" and I'll immediately find every email I've sent or received in the past 30 years in which that's appeared, as well as every file on my machine, and every paper document in my archives

Read from link

Having just shared the Eisenbahn-Planer, I have to post about the Treinposities rail agenda. This is a curated list of rail events in the Netherlands that gets updated regularly by the site administrators. The site has many more interesting pages, with details on rolling stock in the Netherlands and other countries, live map of trains in the Netherlands, details on train routes with expected rolling stock, and much more.

Read from link

Eisenbahn-Planer tracks events with a focus on historical and/or heritage railways. There are quite a number of filters you can apply with multiple language options.

Read from link

What if I told you that by tuning a few knobs, you can configure SQLite to reach ~8,300 writes / s and ~168,000 read / s concurrently, with 0 errors

Some interesting configurations that are possible with SQLite today making it much more versatile even though it isn't designed to be a client/server SQL database. Discovered via Simon Willison's weblog.

Read from link

xz, a widely used open source compression tool, introduced a backdoor with malicious code. This in turn has affected a number of applications and distributions, the most notable of which are Fedora, Debian (unstable, experimental) and HomeBrew. Evan Boehs has pieced together a timeline of events going as far back as 2021 which tells a story of how JiaT75 using social engineering became a trusted member for the open source project. Pressure (very harshly so) was applied to the Lasse Collin the sole active maintainer at the time to add another maintainer to xz from seemly multiple people. This coordinated attempt lasting two years is honestly quite shocking.

Read from link

Dan Luu writes about using simple architectures to build apps using Wave as an example. The post covers the initial technology choices made to be maintained by a small tem and the tradeoffs in the long run, along with the flexibility it provided to adapt to local markets.

Our architecture is so simple I’m not even going to bother with an architectural diagram. Instead, I’ll discuss a few boring things we do that help us keep things boring.

Read from link

When requesting actions on AWS accounts or resources, AWS needs to verify if the principal (user, role, application, etc.) making the request is allowed to carry out the action. For single accounts with simple workloads, this can be done easily by setting an identity-based policy on the user. However, as needs grow and additional accounts are added, other factors come into play, such as resource-based policies, cross-account roles, service control policies, and more.

Whenever I encounter potential access-related problems, I refer to this flow chart for troubleshooting. Given the number of times I end up searching for this, I believe it might be helpful to share it.

Read from link

SVG is an interesting and versatile text-based image format. Now I know it's not the Christmas season, but Hunor Márton Borbély has put together an advent calendar for SVG examples, and I've only now started working through them. It's very interactive and informative. I know I'll definitely be using these examples as references in the future.

Read from link

Like GeoGuessr but instead of Google Streetview you're given an image which you have to locate on a map along with the year it was taken. It's quite fun trying to take clues from the image in an attempt to date it. The images selected in the game actually make it lightly easier than random locations on Google Streetview with GeoGuessr.

Read from link

Switzerland is often referenced when discussing good public transit systems, Jokteur does a good job describing of the country uses clock-face scheduling to reliably connected different locations together. A good read with clear examples illustrating the concept along with follow-up reading in case you’re interested in the subject.

Read from link