The early Web had a quality that has been lost ever since: it was simple
Download #httpd , #netscape write some #html by hand and boom, the concept of a networked digital society is born.
It first started going pear shaped with #LAMP . The complexity of a full blown database was not justified for most use cases. As proven decades later by the popularity of #sqlite and #ssg approaches.
The final blow was when #bigtech got into the act. Immense complexity for the simplest things became a moat
The journey of #javascript is the poster child of out of control #complexity. What started as tiny client side code to introduce some interactivity has eaten html itself (virtual #dom) and then metastasized also on the server side. A gargantuan duplication of functionality between client and server that eventually backlashed into the #htmx and #livewire type approaches.
When you throw in the explosion of mobile clients (with architectures controlled by a duopoly) you get to the lunacy of today.
heise+ | YouTube per Bookmarklet ohne peinliche Übersetzungen nutzen
Abstruse Übersetzungen und Synchronisierungen sind auf YouTube Alltag. Ein simples Bookmarklet schaltet mit nur einem Klick auf die Originalsprache um.
ESLint 10.0: Neue Features für die JavaScript-Codeanalyse im Major Release
Der auf JavaScript ausgelegte Linter bringt einige Änderungen, darunter neue Optionen für die RuleTester-API und ein Update im Umgang mit JSX-Referenzen.
🥳 JavaScript Database (JSDB)¹ version 7.0.0 released
Breaking change JSTable.PERSIST event now uses a parameter object with properties for type, keypath, value, change, and table. This should make listening for events on your databases much nicer to author. e.g., a snippet from Catalyst² I’m working on:
const settingsTable = db.settings['__table__']
const JSTable = settingsTable.constructor
settingsTable.addListener(JSTable.PERSIST, ({ keypath, value }) => {
switch (keypath) {
case 'servers.serverPoolSize':
console.info('New server pool size requested', value)
this.updateServerPool()
break
// etc.
}
})
This new version of JSDB is not in the latest Kitten³ yet as it is a breaking change and I want to make sure I update my sites/apps first if needed. I should have it integrated tomorrow.
To see the simple use case for JSDB in Kitten (the default untyped database that’s easy to get started with and perfect for quick experiments, little sites, etc.), see: https://kitten.small-web.org/tutorials/persistence/
JavaScript: webpack ist unbeliebt – doch wird am häufigsten genutzt
In einer neuen Studie ist Vite das beliebteste JavaScript-Tool und läuft webpack in der Nutzung fast den ersten Rang ab. Nur zwei Prozentpunkte trennen sie.
Last year, I was working with #AI agents before this new "boom". I was really amazed by it and the opportunity that only I seemed to recognize on my team.
All that faded away as soon as you realize these agents behave like little kids that provide a non deterministic answer each time; and to answer my PM the question "why this doesn't work all the time?" with "IDK" was not enough.
Years ago I was working on a Python project. That was the backend of an Angular project. I finished my part and I was done, but higher ups decided to move me to the Angular side I didn't know anything about. My coworker knew a great deal of it so I used him as my search engine, I asked him everything, and why not if he was just there. This was nice and all until one day he was gone because he resigned a month before
enterJS Integrate AI: So bringt KI echten Mehrwert in Webanwendungen
Die Online-Konferenz am 28. April zeigt, wie Web Developer in ihren Produkten künstliche Intelligenz so anbieten können, dass sie echten Mehrwert bringt.
Today is the 10th anniversary of Liberapay's launch!
In its first decade, Liberapay processed donations worth a total of around 5 million euros, from more than 40k donors in more than 110 countries to more than 3500 recipients in more than 80 countries.
Thank you all.
To keep making the world a better place, everyone who uses Liberapay to collect donations, including Liberapay itself, needs your support. Browse the website. Donate if you can. Spread the word.
On this somewhat special anniversary, I also want to state once again that Liberapay is an open project. You can contribute to it if you have some basic skills, and receive some money in return. There's still a lot of work to do, including quite a bit that doesn't involve programming, and plenty to learn.
Liberapay is written in #Python, #SQL (until I can finish building what's needed to get rid of it), and as little #JavaScript as possible.
Today I have been paying a Struts 1 app with Internet Explorer 6 compatible JavaScript to work on modern browsers. This continues tomorrow, and probably for a few days more. Wish me luck!!
And now I've implemented it. But instead of porting it to the slowest most decrepit retromachine I can find, I'm going the other direction: What kind of visual effects can I achieve if I throw a decent GPU at it?
The video above in 🧵 1 is a screen capture from my Javascript + WebGPU implementation. It's running at 20 FPS, using about 5% of the CPU and 3% of the GPU. More to come...
So guess who wrote a convoluted date comparison conditional instead of using Temporal.ZonedDateTime.compare() like an intelligent human being and ended up hitting an edge case where future scheduled calls started getting cleaned off the database instead of past ones?
I’ll give you a hint: has two thumbs and his name is Aral 🤦♂️
Anyway, just restored things from yesterday’s backup and sent a direct message to everyone scheduled for a Gaza Verified video verification call apologising for the confusion and explaining what happened.
Moral of the story: stick to the Temporal API and use its methods if you’re implementing anything even remotely non-trivial involving dates, especially if there are timezones involved. (You can use a Temporal API polyfill in Node.js – I’ve been using temporal-polyfill.)
jQuery 4.0 veröffentlicht: Weniger Legacy, mehr moderne Webstandards
Mit jQuery 4 erscheint erstmals seit Jahren eine neue Hauptversion. Weniger Legacy, moderne Browser, mehr Sicherheit – mit überschaubaren Breaking Changes.