October 2024

417 bookmarks saved in October 2024

parnas-1979.pdf

https://courses.cs.washington.edu/courses/cse503/08wi/parnas-1979.pdf
Designing software to be extensible and easily contracted is discussed as a special case of design for change. A number of ways that extension and contraction problems manifest themselves in current software are explained.

Constraint validation - HTML: HyperText Markup Language | MDN

https://developer.mozilla.org/en-US/docs/Web/HTML/Constraint_validation
The creation of web forms has always been a complex task. While marking up the form itself is easy, checking whether each field has a valid and coherent value is more difficult, and informing the user about the problem may become a headache. HTML5 introduced new mechanisms for forms: it added new semantic types for the <input> element and constraint validation to ease the work of checking the form content on the client side. Basic, usual constraints can be checked, without the need for JavaScript, by setting new attributes; more complex constraints can be tested using the Constraint Validation API.

Hyperlinks, the Open Web, and a Membership Appeal

https://kottke.org/24/10/hyperlinks-the-open-web-and-a-membership-appeal
I love linking out to other sites. The strength of the open web is in its many connections between nodes…the more, the better. Links are the whole goddamned point of the web! I want to send people away from kottke.org to learn something new or have a chuckle and then come back the next day for more. The goal is connection, knowledge, and sharing — I proudly have no competitors in this endeavor, only collaborators. (This is just another sentence so that I can link to more folks who love to link.)

Vector Databases Are the Wrong Abstraction

https://www.timescale.com/blog/vector-databases-are-the-wrong-abstraction/
A more effective abstraction is conceptualizing vector embeddings not as independent tables or data types but as a specialized index on the embedded data. This is not to say that vector embeddings are literally indexes in the traditional sense, like those in PostgreSQL or MySQL, which retrieve entire data rows from indexed tables. Instead, vector embeddings function as an indexing mechanism that retrieves the most relevant parts of the data based on its embeddings.

Before You Can Have Smalltalk, You Must First Defeat Capitalism. — Matthew Gaudet

https://www.mgaudet.ca/blog/2024/10/28/before-you-can-have-smalltalk-you-must-first-defeat-capitalism
The title of this blog post is at least a little sarcastic, but I think is an honest to goodness truth: If you want to build a future that involves beautiful systems like Smalltalk, you must first rebuild the economic environment wherein it could be built. Wherein it could succeed! These systems idealized in lamentations at SPLASH all seem to me to be products of economic surplus combined with the right people. We need an economy that has surpluses around for people to do explorations.

Engine — ANTIRUINS

https://antiruins.com/engine
ANTIRUINS Engine is a minimal game engine for the SEGA Dreamcast. The goal of this project is to offer an easy access to the SEGA Dreamcast as a creative platform. The engine can be programmed with Lua, an fast and flexible programming language. This greatly reduces the friction associated with prototyping game on the Dreamcast.

Working with stacked branches in Git is easier with --update-refs

https://andrewlock.net/working-with-stacked-branches-in-git-is-easier-with-update-refs/
In this post I described the new --update-refs feature for rebasing in Git 2.38. I introduced the concept of stacked branches and stacked PRs, and why I like them for feature development. Unfortunately, keeping stacked branches up to date can be quite arduous, requiring a lot of tricky rebasing. with --update-refs the commands are significantly simplified, as I showed in various scenarios. You can even enable --update-refs by default, so that all your rebases use it!

Cron-based backup - Litestream

https://litestream.io/alternatives/cron/
Sometimes Litestream can be overkill for projects with a small database that do not have high durability requirements. In these cases, it may be more appropriate to simply back up your database daily or hourly. This approach can also be used in conjunction with Litestream as a fallback. You can never have too many backups!

revealing the fediverse's gifts

https://www.wrecka.ge/revealing-the-gifts/
If they’re motivated, tooled up, and plugged into communities of support fediverse server teams can provide context-sensitive, high-touch local moderation for their members—while also connecting to a broad landscape of other well-governed servers. But can new fediverse members find them?

Using SQLite as Storage for Web Server Static Content – Internal Tools Deployment Platform | Clace

https://clace.io/blog/sqlite/
For Clace, the decision was made to use SQLite for app files storage instead of using the file system. The reasoning was mainly to be able to do atomic version changes. When updating an app, since there could be lots of files being updated, using a database would allow all changes to be done atomically in a transaction. This would prevent broken web pages from being served during a version change.

Smarter than 'Ctrl+F': Linking Directly to Web Page Content

https://alfy.blog/2024/10/19/linking-directly-to-web-page-content.html
Historically, we could link to a certain part of the page only if that part had an ID. All we needed to do was to link to the URL and add the document fragment (ID). If we wanted to link to a certain part of the page, we needed to anchor that part to link to it. This was until we were blessed with the Text fragments!

Embeddings are underrated

https://technicalwriting.dev/data/embeddings.html
Embeddings aren't exactly new, but they have become much more widely accessible in the last couple years. What embeddings offer to technical writers is the ability to discover connections between texts at previously impossible scales.

Surviving a tech job market recession

https://lifeofaudrey.com/2024/05/22/tech-recession-survival.html
I lost my job in March and I’ve been slowly starting to look for my next thing. I’ve been talking to other folks who’ve been laid off to get a sense of the job market — and the stories they’re sharing give me flashbacks to twenty years ago.

An Experiment in Social Media

https://nikolas.ws/social-media-experiment
On the internet, there is a clear social understanding of hashtags. If we create web rings for hashtags, we can use that to connect arbitrary web pages that add those hashtags to their content. This will allow us to create hashtag aggregation pages (like those on Twitter or Mastodon) that cross platform boundaries. The web ring will act as a community library that people can contribute to, filing their posts and articles and resources where they feel they fit.

Using static websites for tiny archives – alexwlchan

https://alexwlchan.net/2024/static-websites/
Because this system has no moving parts, and it’s just files on a disk, I hope it will last a long time. I’ve already migrated a lot of my files to this approach, and I’m pleased with how it’s going. I get all the simplicity and portability of a file full of folders, with just a bit of extra functionality sprinkled on top.

Where web components shine - daverupert.com

https://daverupert.com/2024/10/super-web-components-sunshine/
In this job we need to think a lot about the tools we choose and why, so I cataloged all the places where web components (for me) feel like “the right tool for the job”. Your list may be different and I’d love to read it. And because I don’t want this to be 100% propaganda, I’ll also cover some of the not-so-great parts of web components as well.

Zero

https://zerosync.dev/
We’re building a general-purpose sync engine for the web. You put Zero in front of your existing database or web service, and we distribute your backend all the way to main thread of the UI.

nekoweb

https://nekoweb.org/
Nekoweb is a free static website hosting service, created in 2022 2023 2024 by a group of coders, programmers and artists, passionate for the old web and personal websites. Social media is too limiting. We believe that everyone should be able to freely express themselves in their own little corner of the web, without having to worry about things like algorithms, tracking, or advertisements.

House of Nettles • A Sociable Web

https://nex-3.com/blog/a-sociable-web/
I want things to be sociable, to be friendly, to be fun. I don't mean to try to avoid conflict entirely, which is neither possible nor truly desirable. But to envision a sociable web is to envision a place where interactions that make your world richer are easy to realize, and those that make your life worse easy to curtail. I want to be able to chat in public without the world overhearing, to meet new people and be able to block creeps, and to have conversations without being drowned in a sea of bad faith.

International Center for the History of Electronic Games

http://www.icheg.org
The International Center for the History of Electronic Games® (ICHEG) at The Strong collects, studies, and interprets video games, other electronic games, and related materials and the ways in which electronic games are changing how people play, learn, and connect with each other, including across boundaries of culture and geography.

Using Cloudflare on your website could be blocking RSS users - Open RSS

https://openrss.org/blog/using-cloudflare-on-your-website-could-be-blocking-rss-users?utm_medium=FuckOff&utm_source=FuckOff
Many users prefer to use an RSS feed reader to stay up to date with the content on the websites they visit. But if you've enabled Cloudflare on your website, you're likely blocking these RSS users from accessing your website content without realizing it.

Pluralistic: You should be using an RSS reader (16 Oct 2024) – Pluralistic: Daily links from Cory Doctorow

https://pluralistic.net/2024/10/16/keep-it-really-simple-stupid/
RSS basically works like social media should work. Using RSS is a chance to visit a utopian future in which the platforms have no power, and all power is vested in publishers, who get to decide what to publish, and in readers, who have total control over what they read and how, without leaking any personal information through the simple act of reading.

Democracy dies on Instagram - by Taylor Lorenz - User Mag

https://www.usermag.co/p/democracy-dies-on-instagram
The company says it will restrict any image, video, or text post that “identifies a problem that impacts people and is caused by the action or inaction of others,” which is an incredibly wide swath of content. If you speak about these things on Meta, your reach will be limited and your account will be surfaced to fewer people.

Web Components are not Framework Components — and That’s Okay • Lea Verou

https://lea.verou.me/blog/2024/wcs-vs-frameworks/
The bottom line is, web components reduce the number of use cases where we need to reach for a framework, but complex large applications will likely still benefit from one. So how about we conclude that frameworks are useful, web components are also useful, stop fighting and go make awesome sh!t using whatever tools we find most productive?

Invoker Commands (Explainer) | Open UI

https://open-ui.org/components/invokers.explainer/
Adding commandfor and command attributes to <button> and elements would allow authors to assign behaviour to buttons in a more accessible and declarative way, while reducing bugs and simplifying the amount of JavaScript pages are required to ship for interactivity. Buttons with command will - when clicked, touched, or enacted via keypress - dispatch a CommandEvent on the element referenced by commandfor, with some default behaviours.

Popover API - Web APIs | MDN

https://developer.mozilla.org/en-US/docs/Web/API/Popover_API
The Popover API provides developers with a standard, consistent, flexible mechanism for displaying popover content on top of other page content. Popover content can be controlled either declaratively using HTML attributes, or via JavaScript.

:has() - CSS: Cascading Style Sheets | MDN

https://developer.mozilla.org/en-US/docs/Web/CSS/:has
The functional :has() CSS pseudo-class represents an element if any of the relative selectors that are passed as an argument match at least one element when anchored against this element. This pseudo-class presents a way of selecting a parent element or a previous sibling element with respect to a reference element by taking a relative selector list as an argument.

CSS container queries - CSS: Cascading Style Sheets | MDN

https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Container_queries
Container queries enable you to apply styles to an element based on the size of the element's container. If, for example, a container has less space available in the surrounding context, you can hide certain elements or use smaller fonts.

wavebeem

https://www.wavebeem.com/
I'm Sage Fennel (they/them), aka "wavebeem". I love video games, web development, makeup, pixel art, progressive metal, cats, and the color green. I live in Portland, where I enjoy gray skies, green leaves, and gentle rain.

how to buy shoes in the fediverse

https://www.wrecka.ge/fediverse-shoes/
The reason I think these problems are worth solving is because one of most valuable gifts of the fediverse as it currently exists is the ability to experience the fediverse from within a home server that is good for you—that cares about your experience, that moderates (locally and remotely) in ways that meet your needs and protect you from the things you actually want protection from, that is built to last.

Who invented the word ‘podcast’?

https://www.theverge.com/c/24238422/podcast-etymology-term-history-tech-vergecast
Before a podcast was a “podcast,” it was… well, it wasn’t really much of anything. A few of the early believers called them “audio blogs,” and the journalist often credited with coining the term “podcast” also offered “GuerillaMedia” as an alternative in the very same article. (And actually, there’s plenty of debate over exactly who coined the term and when. The history of the podcast is more contentious than you’d think.)

Espresso Drink Ratio Calculator – Coffee Bros.

https://coffeebros.com/pages/espresso-drink-ratio-calculator
Order fresh roasted coffee online: Coffee Bros. sources seasonal, award-winning, and specialty coffees with a focus on high-scoring and high-quality blends, espresso roasts and single origin coffees which are all small-batch roasted. Experience complex taste notes, from fragrant and aromatic to the bold and rich.

Example of Tabs with Automatic Activation | APG | WAI | W3C

https://www.w3.org/WAI/ARIA/apg/patterns/tabs/examples/tabs-automatic/
This example section demonstrates a tabs widget that implements the Tabs Pattern. In this example, a tab is automatically activated and its associated panel is displayed when the tab receives focus. It is recommended that authors consider implementing automatic activation of tabs only in circumstances where panels can be displayed instantly, i.e., all panel content is present in the DOM.

HTML for People

https://htmlforpeople.com/
HTML isn’t only for people working in the tech field. It’s for anybody, the way documents are for anybody. HTML is just another type of document. A very special one—the one the web is built on.

The Web We've (Never) Lost

https://www.bitoff.org/web-we-never-lost/
Doesn't it feel like the web is getting worse every day? Do you miss the days when Google wasn't a garbage factory, Twitter wasn't a cesspool of Nazis, and you weren't treated like a pair of eyeballs with a wallet? Don't worry, the web of yore is still alive and kicking – in fact, it's thriving. You just need to know where to look. Let's take a dive into the non-mainstream web, where people create blogs and websites for the sheer joy of it, algorithmic feeds are nowhere to be found – and you can join, too!

Resources for keeping the web free, open, and poetic | Stefan Bohacek

https://stefanbohacek.com/blog/resources-for-keeping-the-web-free-open-and-poetic/
I’ve been running my own personal website for over 15 years now. It has been a fun learning experience, and an opportunity to share my work and get to know a ton of amazing people. And I’d like to help others to do the same without needing to learn how to manage servers or be a rock star programmer.

BYOK is a simple new writing tool designed to help perpetual procrastinators | Wallpaper

https://www.wallpaper.com/tech/byok-is-a-new-writing-tool-for-perpetual-procrastinators
This is the BYOK, billed as a ‘distraction-free’ writing device for those who need pure focus in order to channel their productivity as effectively as possible. The procrastinating writer oftens torments themselves with the idea that there’s a simple and effective solution to their woes, usually one that involves buying something – the perfect notebook or pen – or some studious or trivial ritual that helps get the words flowing. It’s an approach that does little more than perpetuate the procrastination and kick the idea of getting something done even further down the road.

BYOK: The Ultimate Distraction-Free Writing Tool by Nick Sjolinder — Kickstarter

https://www.kickstarter.com/projects/byok/byok-the-ultimate-distraction-free-writing-tool?ref=73utr6&utm_source=prelaunch&utm_medium=button
Designed for those who take their writing seriously, BYOK eliminates distractions, so that you can fully immerse yourself in your creative process—for a seamless and fully focused writing experience. And best of all: you get to use your own keyboard.

AI Winter Is Coming

https://leehanchung.github.io/blogs/2024/09/20/ai-winter/
This is how we’re headed for another AI winter, just as we saw with the fall of data science, crypto, and the modern data stack. And that’s actually a good thing. The promoters will hop onto the next trendy buzzword, while the real producers will keep moving forward, building a more capable future for AI.

Wasm is the new CGI | Roborooter.com

https://roborooter.com/post/wasm-is-the-new-cgi/
And to be clear I don't mean the Common Gateway Interface as a protocol. I mean what CGI and the cgi-bin application model brought to the web. They allowed people to easily write code that makes websites interactive. This shifted the web from an archive of documents to a vast network of applications. It was the first "web application model". I think Wasm (WebAssembly) is setup to bring the next "web application model" to the industry.

Molly White, Citation Needed / Web3 Is Going Just Great - XOXO Festival (2024) - YouTube

https://www.youtube.com/watch?v=MTaeVVAvk-c&list=PLCbA9r6ecYWU6SVyvb32a0YHIzpr9jxnW&index=3
Best known for puncturing blockchain/crypto hype with her Web3 Is Going Just Great project, writer/researcher Molly White believes a better web is possible. Launched two years ago, her Citation Needed newsletter covers “tech world without all the boosterism,” while her latest project tracks the crypto industry’s attempts to influence the 2024 elections.

Scripting News: Monday, October 7, 2024

http://scripting.com/2024/10/07.html
Today's the big day. Thanks to John Naughton's wonderful piece in the Guardian, I'm hearing from people all over the world about what blogging means to them. I appreciate all of the messages, but would appreciate them even more if they were on your blog. We need to keep using the tech. Blogging is kind of lost, and I would like to see that change. Every time you post something you're proud of on a social media site, how about taking a moment and posting it to your blog too. And while there, if appropriate, link to something from some part of your post, even though the social media sites don't support linking, the web is still there and it still does. #

Autoscale based on metrics · Fly Docs

https://fly.io/docs/launch/autoscale-by-metric/
The metrics-based autoscaler scales an app’s Machines based on any metric, such as pending work items or queue depth. Scaling on metrics other than requests or connections is useful for apps, like background workers, that aren’t running web services. Apps with services that need to scale based on HTTP requests can use the built-in Fly Proxy autostop/autostart feature for Machines.

Cascade Create Space | STEAM Centers at PCC

https://www.pcc.edu/maker/cascade-create-space/
The Cascade Create Space is a STEAM Center focused on creating community and encouraging learning and creativity in a flexible, welcoming environment that offers a variety of experiences from formal co-curricular support of academic coursework to skills-focused workshops and informal opportunities for STEAM exploration and self-expression.

TR/ST Takes the Stage Once More in His Spellbinding Video for "Performance" — Post-Punk.com

https://post-punk.com/tr-st-takes-the-stage-once-more-in-his-spellbinding-video-for-performance/
This single, a tantalizing glimpse of his upcoming album Performance set for release on September 13 via Dais Records, unfolds like a vivid dream—where raw emotion meets a shimmering synth backdrop. Alfons pulls us into his world, where each beat and breath is charged with profound sincerity, inviting listeners to linger in the bittersweet space between melancholy and euphoria.

Weird Web October

https://weirdweboctober.website/
Weird Web October is a challenge to try and make a website every day of October, based on the theme for each day, inspired by Inktober. It’s open to you and everyone!

What is OpenAPI? - OpenAPI Initiative

https://www.openapis.org/what-is-openapi
The OpenAPI Specification (OAS) provides a consistent means to carry information through each stage of the API lifecycle. It is a specification language for HTTP APIs that defines structure and syntax in a way that is not wedded to the programming language the API is created in. API specifications are typically written in YAML or JSON, allowing for easy sharing and consumption of the specification.

Educational LCD Oscilloscope Kit EDU08 Velleman | Jameco

https://www.jameco.com/z/WSEDU08-Velleman-Velleman-Educational-LCD-Oscilloscope-Kit-by-Whadda_2261959.html?trk_msg=4P14JF8AODRKB0OJBNA6UIJB1G&trk_contact=0BK3H3I8ID11QJT0HBNJJVJBV0&trk_sid=91VNO9GBV7OR98IEVRIR9Q0KV0&trk_link=S6SL6TGC5GU4PA79DEKMDI4A64&utm_source=FuckOff&utm_medium=FuckOff&utm_term=FuckOff&utm_campaign=FuckOff&utm_content=FuckOff
Build your own oscilloscope and learn how to visualize signals. See the signals you learn about in real life! Despite the low cost, this oscilloscope has many features only found on expensive units like signal markers, frequency, dB, true RMS readouts, etc. This powerful auto-setup function will get you going in a snap!

Building a Storybook-like demo browser with web components — a much simpler way to get most of the benefits

https://jan.miksovsky.com/posts/2020/11-02-storybook
I recently tried Storybook, a popular tool for browsing the demos and documentation for a UI component library. I think Storybook offers a good user experience, but its developer experience entails complexity out of proportion to its benefits. I tried creating a simpler web component library browser using web components, and am happy with the result.

The Nine Node Pillars - Platformatic HQ

https://www.platformatichq.com/node-principles
To share our insights, we've created the Nine Node Pillars– nine guiding principles for creating robust, scalable, and maintainable Node applications in enterprise environments.This guide can be used as a checklist to identify gaps in your current practices and prioritize areas for improvement.

Don't Sleep on AbortController - kettanaito.com

https://kettanaito.com/blog/dont-sleep-on-abort-controller
If you are creating libraries in JavaScript where aborting or cancelling operations makes sense, I highly encourage you to look no further than the AbortController API. It's incredible! And if you are building applications, you can utilize the abort controller to a great effect when you need to cancel requests, remove event listeners, abort streams, or teach any logic to be abortable.

Some Go web dev notes

https://jvns.ca/blog/2024/09/27/some-go-web-dev-notes/
I spent a lot of time in the past couple of weeks working on a website in Go that may or may not ever see the light of day, but I learned a couple of things along the way I wanted to write down.

Can we do the thing people do when fictional history is made and pretend that the games from UFO 50 were our childhood games? : r/ufo50

https://www.reddit.com/r/ufo50/comments/1fp3h81/can_we_do_the_thing_people_do_when_fictional/
I grew up in the 2000s, around the mid 2010s I discovered emulators and started playing a bunch of LX games. I remember playing some of them for hours at a time. Now the collection is out and I'm replaying them all. UFOsoft really just knew what they were doing

In their plaintive call for a return to the office, CEOs reveal how little they are needed | John Quiggin | The Guardian

https://www.theguardian.com/commentisfree/2024/sep/26/in-their-plaintive-call-for-a-return-to-the-office-ceos-reveal-how-little-they-are-needed
As Gideon Haigh observed 20 years ago, the era of neoliberalism has been associated with the “cult of the CEO”. The office has been the shrine of that cult. In their plaintive call for a return there, CEOs are like declining deities who see their votaries deserting them.

POLYBIUS on Steam

https://store.steampowered.com/app/906120/POLYBIUS/
POLYBIUS is a fast, trippy tunnel shooter playable on a normal screen or in VR. 50 levels of blissful trance shooting action are set to a blistering soundtrack. The PS4 version was EDGE Magazine’s VR GOTY in 2017, and the PC version of the game was even used as the basis for a NIN music video.

Introducing Jelly-Load! – TFW8b.com

https://www.tfw8b.com/introducing-jelly-load/
Why load your 8bit things via the convenience of Cassette, Disk or Cartridge when you can load things via YouTube video? Because it’s horribly slow that’s why! But it is rather cool! And if like me you’ve got a million electronic bits and bobs lying around the house, you may have enough electronic purchase left-overs to start making your own Jelly-Load interface right now! 😀

Interstellar Sentinel on Steam

https://store.steampowered.com/app/2426610/Interstellar_Sentinel/
A thrilling sci-fi fantasy shmup / shoot’em up with epic boss battles and a vast arsenal of futuristic weapons! Battle legions of demonic entities, restore the cosmic balance, and save the universe! Flow state gaming to unleash your inner hero! Feel your skills grow on your way to 1CC S+ tier rank!

Introducing sqlite-lembed: A SQLite extension for generating text embeddings locally | Alex Garcia's Blog

https://alexgarcia.xyz/blog/2024/sqlite-lembed-init/index.html
sqlite-lembed is a SQLite extension for generating text embeddings, meant to work alongside sqlite-vec. With a single embeddings model file provided in the .gguf format, you can generate embeddings using regular SQL functions, and store them directly inside your SQLite database. No extra server, process, or configuration needed!

Hybrid full-text search and vector search with SQLite | Alex Garcia's Blog

https://alexgarcia.xyz/blog/2024/sqlite-vec-hybrid-search/index.html
You can use SQLite's builtin full-text search (FTS5) extension and semantic search with sqlite-vec to create "hybrid search" in your applications. You can combine results using different methods like keyword-first, re-ranking by "semantics", and reciprocal rank fusion. Best of all, since it's all in SQLite, experiments and prototypes are cheap and easy, no 3rd party services required!