This post from Candost reflects on traits of a good software engineer. It's very well thought out.
Read from linkLinks
Links to places on the web that I'd like to share.
All tags
- academic (1)
- aws (2)
- blog (16)
- cat (1)
- cloud (3)
- comic (1)
- database (4)
- ffmpeg (1)
- github (1)
- homelab (3)
- indieweb (1)
- interesting (16)
- linguistics (1)
- map (3)
- maritime (3)
- news (1)
- programming (11)
- python (1)
- rail (7)
- science (2)
- system-design (3)
- technology (5)
- til (3)
- tool (7)
- train (2)
- transport (14)
- visual-journalism (4)
- webdev (10)
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.
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 linkI 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 linksqlite-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.
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:
Read from link[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.
Not sure why I'm surprised but there are many web formats in which to write recipes. There's a microformat, why wouldn't there be? There's another format that Google prefers and Robb takes stab at designing his own.
Read from linkA daily game, with an unlimited practice mode, to guess words through Morse code. Discovered via Tom Scott's Newsletter.
Read from linkAlex 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 linkMark 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 linkRasmus has built a game in which the player has to sort food items in order of carbon footprint. The game gets harder with each new item as the list increases in length, a single mistake and it's game over. My high-score was 7.
They have also written a blog post about the release of the challenge.
Read from linkRuben 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:
Read from linkSo 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.
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 linkIvan Rivera writes about the derailed Renfe S-411 near Chamartín in which both occupants where safe. It's most likely that a train drifted downhill across two tight curves with speed limits for 45 km/h.
Read from linkWes 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.
A tour of what was once a secret NATO Joint Operations Center during the cold war that was built in a quarry in Maastricht. The tour is delivered by Gerard Smeets a volunteer and previously an officer that worked at the center. The YouTube channel covers other interesting stories from the Netherlands.
Read from linkA comic on the annoying design of modern UIs discovered via Tom Scott's Newsletter.
Read from linkQuotes 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 linkMultiple 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 linkSeeing 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 linkTerence Eden shares a few small CSS snippets to style links based on where they go. This could include adding text, changing the font size or color and other CSS properties. Using attribute selectors you can match links that start with, end with or contain specific domains.
Read from linkSimon 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 linkNS 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 linkIan 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 linkI re-discovered the Web Design Museum through Arne Bahlo's newsletter a site that allows you to browse through decades of changes seen on websites and applications.
Read from linkDom Corriveau runs his blog of an old Pixel 5, they also mention kaimac.org who I previously read about running their website of an ESP32, and compose.party which was new to be me and is also a website that is run on solar power and off a phone. Lots of interesting links to read through from the blog post along with instructions to replicate.
Discovered via 82MHz' Linkdump.
Read from linkAs 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!
Read from linkThere 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.
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.
Read from linkAs 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.
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.
Read from linkThat 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
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" >}}
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.
Read from linkMy 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.
An detailed view of various tapes, their adhesive and conforming properties along with examples of their uses.
Read from linkThe website, by Eli Fessler, archives posters, labels, stickers and other documents related to COVID-19 at the peak of the pandemic from around the world. They're categorised by date, location, language and other parameters. This one's for the future history books.
I discovered this through Tom Scott's Weekly Newsletter.
Read from linkICANN 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.
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 linkJohn Eldredge, creator of the Winamp Skin Museum, goes about digging in some skins and makes a few interesting discoveries.
Discovered via Tom Scott's Newsletter.
Read from linkThis 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 linkThe 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 linkA 2-D approximation of how an iceberg would float in reality.
Created by JoshData and inspired by GlacialMeg on Twitter. This was discovered on Mastodon through Stef Walter.
Read from linkSo 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 linkCommonMark 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.
Read from linkWe [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.
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 linkChrono Piano plays music based on the current date and time in the major, minor blues or pentatonic scale. Discovered via Stefan Judis' Web Weekly.
Read from linkA brief but interesting history of cursors, just like the title suggested. Discovered via Tom Scott's newsletter.
Read from linkA 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 linkThis 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 linkAs described on the front page "checking a box checks it for everyone!", can't really say more to that. A fun website built by eieio, they also posted a writeup of building it.
Read from linkRotating Sandwiches does exactly what it says on the tin. It's a website with high quality gifs of rotating sandwiches. Now I'm hungry.
Discovered by being the 2023 tiny awards winner.
Read from linkWhen Sal Mercogliano was covering the recent uncrewed surface vessel strike of the MV Tutor in the Red Sea he referenced an ArcGIS StoryMap created by Noam Raydan and Farzin Nadimi of the Washington Institute. The StoryMap is very comprehensive and documents the attacks in the Red Sea, Bab al-Mandab, and neighbouring areas dating back to 2019.
Read from linkThese 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 linkAn internet museum that starts from it'\''s origins as APRANET in 1977, marking major milestones in social media, e-commerce and the internet as we know it today.
Discovered via Nicolas Magand.
Read from linkWritten by Giovanni Collazo this guide on running SQLite in production with Django projects compliments another I very recently shared called Optimizing SQLite for servers by Sylvain Kerkour.
I will also be saving this for future reference. This is discovered via Simon Willison's Weblog.
Read from linkFrom 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".
Read from linkRemoving unnecessary complexity is a thankless job.
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-filter
s and manually editing GeoJSON files.
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 linkA 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 linkPhilipp 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 linkj6b72ss 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 linkThe 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.
Read from linkOn 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.
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 linkWhile 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 linkAn 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 linkAtom 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.
Read from linkHaving 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.
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:
Read from linkAt 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
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 linkEisenbahn-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 linkWhat 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 linkPaul Irish shares how to stablise video using FFmpeg using the defaults of VidStab. The article also provides a filter to compare the stablised and unstablised videos but simply running the stabilisation is enough for me.
Read from linkxz, 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 linkCSS Grids as simple as they are to design can get pretty complicated. Josh W Comeau's interactive guide to CSS contains sections that build on each other with examples and animations to visualise the concept.
Read from linkGreg Wilson's guide to SQL for analysts and data scientists through a number of exercises that are run on a SQLite database file.
Read from linkHow fly.io manages WireGuard peers and loads them just-in-time into the kernel speeding up kernel operations.
Read from linkI've always used aws ec2 describe-regions
and was never aware of the aws account list-regions
command as shared by Paweł Grzybek in his post. The account
command has a few other operations including enabling or disabling a region and changing contact details linked to the AWS account.
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.
Read from linkOur 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.
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 linkSVG 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 linkLike 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 linkThis is a great starting point to get familiar with or brush up on Unicode. It's clear, illustrative and well-written.
Read from linkAn informative @Reuters graphics article on the Houthi rebel attacks at the Bab al-Mandab straight with detailed plots on the attack types, context on the political situation, and how it affects the crew, shipping companies and global shipping.
Read from linkSwitzerland 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