I'm going to build building an AI-powered app from scratch, focusing on javascript/typescript/azure and possibly dotnet for SOMOS.tech. I've got about a month to get it done, so it's going to be a wild ride!
I'm going to stream the process live and build in public.
However, due to my peculiar hours, the streaming might come with little to no notice.
Absolutely wild fact: creating a new V8 isolate (assuming I’m not “holding it wrong”) and compiling a large ES module can take over 100ms. But creating a new component instance in wasmtime is more on the order of 10ms 🤔
I *think* this is roughly apples to apples.
(Though, as one might expect, running JS that’s transpiled to WASM without JIT is going to be relatively slow, but that’s another story.)
I have seen careful and pedantic coders build impressive things with python and js while I tend to make a mess that's impossible to maintain. I also waste many hours debugging.
So for me, a strictly typed language leads to long term productivity. I also take on bigger problems with confidence.
Over the past few months, we've made several improvements to our documentation: 🗂️ better organized examples 📸 video tutorials 💻 more documentation in API reference and much more —
Are you still using npm transpile services like esm.sh and unpkg.com? ❌ dependency deduplication ❌ install hooks and native add-ons ❌ loading data files
Here's why we recommend importing npm packages natively via npm specifiers 👇
I had a bit of free time this weekend and finally got around to trying something “real” with WASM components. I wanted to test cross language interoperability on something big.
I was able to successfully componentize a natural language parser written in JavaScript using jco, and then call it from a Rust application 😂 there were… a few snags along the way, but it DOES work!
Haven't talked about LogTape in a while—it's a #logging library I made for #JavaScript and #TypeScript. You know how logging can be a pain point in JavaScript/TypeScript development? Well, I tried to address some common frustrations.
What makes it special
Zero dependencies
We've all been there with dependency hell, right? #LogTape has absolutely no external dependencies. Install it without worrying about bloating your node_modules.
You can organize your logs in a tree structure. Want to save only database-related logs to a file? Easy to do. Child categories can inherit settings from their parents too, which keeps things clean and manageable.
Writing a library and want to include logs without stepping on your users' toes? LogTape lets you add logging to your library while giving end users complete control over how those logs are handled.
Haven't talked about LogTape in a while—it's a #logging library I made for #JavaScript and #TypeScript. You know how logging can be a pain point in JavaScript/TypeScript development? Well, I tried to address some common frustrations.
What makes it special
Zero dependencies
We've all been there with dependency hell, right? #LogTape has absolutely no external dependencies. Install it without worrying about bloating your node_modules.
You can organize your logs in a tree structure. Want to save only database-related logs to a file? Easy to do. Child categories can inherit settings from their parents too, which keeps things clean and manageable.
Writing a library and want to include logs without stepping on your users' toes? LogTape lets you add logging to your library while giving end users complete control over how those logs are handled.
Haven't talked about LogTape in a while—it's a #logging library I made for #JavaScript and #TypeScript. You know how logging can be a pain point in JavaScript/TypeScript development? Well, I tried to address some common frustrations.
What makes it special
Zero dependencies
We've all been there with dependency hell, right? #LogTape has absolutely no external dependencies. Install it without worrying about bloating your node_modules.
You can organize your logs in a tree structure. Want to save only database-related logs to a file? Easy to do. Child categories can inherit settings from their parents too, which keeps things clean and manageable.
Writing a library and want to include logs without stepping on your users' toes? LogTape lets you add logging to your library while giving end users complete control over how those logs are handled.
Haven't talked about LogTape in a while—it's a #logging library I made for #JavaScript and #TypeScript. You know how logging can be a pain point in JavaScript/TypeScript development? Well, I tried to address some common frustrations.
What makes it special
Zero dependencies
We've all been there with dependency hell, right? #LogTape has absolutely no external dependencies. Install it without worrying about bloating your node_modules.
You can organize your logs in a tree structure. Want to save only database-related logs to a file? Easy to do. Child categories can inherit settings from their parents too, which keeps things clean and manageable.
Writing a library and want to include logs without stepping on your users' toes? LogTape lets you add logging to your library while giving end users complete control over how those logs are handled.
Haven't talked about LogTape in a while—it's a #logging library I made for #JavaScript and #TypeScript. You know how logging can be a pain point in JavaScript/TypeScript development? Well, I tried to address some common frustrations.
What makes it special
Zero dependencies
We've all been there with dependency hell, right? #LogTape has absolutely no external dependencies. Install it without worrying about bloating your node_modules.
You can organize your logs in a tree structure. Want to save only database-related logs to a file? Easy to do. Child categories can inherit settings from their parents too, which keeps things clean and manageable.
Writing a library and want to include logs without stepping on your users' toes? LogTape lets you add logging to your library while giving end users complete control over how those logs are handled.
🚀 Big news for Node.js developers! require(esm) has been backported to Node.js 20, removing a major roadblock for ESM adoption. With Node 18 nearing EOL, library maintainers can finally go ESM-only with confidence. 🎉
🚀 Big news for Node.js developers! require(esm) has been backported to Node.js 20, removing a major roadblock for ESM adoption. With Node 18 nearing EOL, library maintainers can finally go ESM-only with confidence. 🎉
🚀 Big news for Node.js developers! require(esm) has been backported to Node.js 20, removing a major roadblock for ESM adoption. With Node 18 nearing EOL, library maintainers can finally go ESM-only with confidence. 🎉
🚀 Big news for Node.js developers! require(esm) has been backported to Node.js 20, removing a major roadblock for ESM adoption. With Node 18 nearing EOL, library maintainers can finally go ESM-only with confidence. 🎉
Are you still using npm transpile services like esm.sh and unpkg.com? ❌ dependency deduplication ❌ install hooks and native add-ons ❌ loading data files
Here's why we recommend importing npm packages natively via npm specifiers 👇
Latest attempt at building better documentation for https://thi.ng/umbrella (also to make it available offline!): Having noticed that recent versions of TypeDoc support extracting & merging of doc strings from monorepos, over the past few weeks I've been updating/cleaning docstrings in hundreds of source files across all 200+ packages and started building a small tool to assemble a single/mega-page documentation (currently ~4.3MB of just HTML). The tool translates existing docstrings and references contained therein (and still used for the existing API docs) to support proper cross-package references.
Please be aware that so far this is only an early stage prototype and only contains very limited docs. I.e. there are no generics/typeparams, no details about classes/interfaces... But at least I know now HOW to add this all, as well as all the additional metadata I've already got (currently still only available via other custom tools/examples).
For example, there're links to the tag-based browser[1] and I'm also planning to add the fuzzy doc search engine/index[2] to this new documentation... The tag browser integration still needs more work in terms of correctly matching package names to tags. The underlying system is there already, just needs more work in terms of actually doing/assigning the concept mapping. Since most package names in thi.ng/umbrella are very plain/boring (for a reason), for many (most?) packages this already works pretty well:
Donno about you guys but it sure is nice not to have to try and decipher the clusterfuck-like syntax of Hugo’s Go-based templating engine anymore…
The code on the left is Kitten¹, on the right is Hugo².
Kitten’s ‘template engine’ is just JavaScript tagged template strings.
(I’m porting the Small Technology Foundation web site³ from Site.js⁴ to Kitten, and in the process from being a Hugo-based static site to a dynamic one with a nice little admin panel I’m making to make it trivially easy to add new news items, events, and videos.)
Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)
(I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)
Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)
(I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)
• Kitten (rolling release) • @small-tech/https version 5.3.2 • Auto Encrypt version 4.1.3
OCSP support has been reinstated in the server so existing sites with Let’s Encrypt certificates provisioned prior to the removal of the OCSP stapling requirement will not fail to load in Firefox.
Kitten servers in production will automatically update to this version in a few hours. You can also sign in to the Kitten settings page on your server and do a manual update to update Kitten immediately.
Over the past few months, we've made several improvements to our documentation: 🗂️ better organized examples 📸 video tutorials 💻 more documentation in API reference and much more —
The latest development in @deno_land 's petition to cancel Oracle’s claim to the #JavaScript trademark: Oracle used Node.js as proof of use & is seeking to dismiss fraud claims, delaying the case and avoiding questions about its right to the name.
Over the past few months, we've made several improvements to our documentation: 🗂️ better organized examples 📸 video tutorials 💻 more documentation in API reference and much more —
The latest development in @deno_land 's petition to cancel Oracle’s claim to the #JavaScript trademark: Oracle used Node.js as proof of use & is seeking to dismiss fraud claims, delaying the case and avoiding questions about its right to the name.
The latest development in @deno_land 's petition to cancel Oracle’s claim to the #JavaScript trademark: Oracle used Node.js as proof of use & is seeking to dismiss fraud claims, delaying the case and avoiding questions about its right to the name.
I'm a #Programmer/#SoftwareEngineer. I'm most fluent in #Python, have some basics in #Java and #C++, but I'm also taking up new languages like #Javascript and others in my eternal journey of getting better and minimising the impostor syndrome that befalls pretty much all programmers (I feel). I'm also very experienced in #CloudNative/#DevOps technologies, and have been the one devising solutions and maintaining infrastructure in a fast-paced startup environment in my previous employment.
I'm passionate in what I do and those that know me here or IRL would know that I'm always yapping about the things I'm learning or working on - I love discussing them, and I love helping people out - esp those on the same boat as me.
This passion has led me into writing and maintaining tons of #FOSS projects like Mango: a content distribution framework based on #Django for #Mastodon and #Bluesky that powers various bots of mine like @[email protected] and @[email protected], Charts: a #Helm chart repository for an easy and reproducible deployment strategy for all my projects and everything else I self-host on my #homelab, and Orked: O-tomated #RKE2 distribution, a collection of scripts I wrote that are comprehensively documented to enable everyone to self-host a production-grade #Kubernetes cluster for absolutely free in their homes.
I'm based in Malaysia, but I'm open to just about any on-site, hybrid, or remote job opportunities anywhere. In the meantime though, I'm actively looking for a job in countries like #Japan and #Singapore, in a bid for a desperate lifestyle change. I've linked below my Portfolio (which you too, could self-host your own!), for those who'd wish to connect/learn more of me. Thank you ❤️
I'm a #Programmer/#SoftwareEngineer. I'm most fluent in #Python, have some basics in #Java and #C++, but I'm also taking up new languages like #Javascript and others in my eternal journey of getting better and minimising the impostor syndrome that befalls pretty much all programmers (I feel). I'm also very experienced in #CloudNative/#DevOps technologies, and have been the one devising solutions and maintaining infrastructure in a fast-paced startup environment in my previous employment.
I'm passionate in what I do and those that know me here or IRL would know that I'm always yapping about the things I'm learning or working on - I love discussing them, and I love helping people out - esp those on the same boat as me.
This passion has led me into writing and maintaining tons of #FOSS projects like Mango: a content distribution framework based on #Django for #Mastodon and #Bluesky that powers various bots of mine like @[email protected] and @[email protected], Charts: a #Helm chart repository for an easy and reproducible deployment strategy for all my projects and everything else I self-host on my #homelab, and Orked: O-tomated #RKE2 distribution, a collection of scripts I wrote that are comprehensively documented to enable everyone to self-host a production-grade #Kubernetes cluster for absolutely free in their homes.
I'm based in Malaysia, but I'm open to just about any on-site, hybrid, or remote job opportunities anywhere. In the meantime though, I'm actively looking for a job in countries like #Japan and #Singapore, in a bid for a desperate lifestyle change. I've linked below my Portfolio (which you too, could self-host your own!), for those who'd wish to connect/learn more of me. Thank you ❤️
I've worked with dates and times in several programming languages, and I have to say that the best is easily PHP (since the big refactor in, what was it, 5.6?).
I've worked with dates and times in several programming languages, and I have to say that the best is easily PHP (since the big refactor in, what was it, 5.6?).
#Introduction Greetings! I'm a #software developer in the world of #dotnet and #JavaScript. Worth mentioning - a degree in game dev and table tennis coaching credentials.
I won a Hackathon, and once increased sales by 300%. In my timeline, you'll mostly find reflections on programming, as it is my bread and butter, as my odyssey into open-source continues.
Here to exchange ideas, learn, and share wisdom. Open for spirited discussions. Always game for a chat, so feel free to reach out.
tl;dr I created an extension for the GNOME desktop on Linux, so that folks can stream and listen to music from The Indie Beat – an online radio station powered by independent musicians sharing music in the Fediverse, via Bandwagon.
Background
Independent musicians, creatives, artists, makers – these are all folk who often struggle to connect with audiences, and where retail and tech platforms tend towards squeezing their ability to make money from their work (see the excellent Chokepoint Capitalism by Cory Doctorow – essential reading for today’s world and understanding how it systematically squeezes creatives). Over the Christmas period, I finally deleted my Spotify account, after reading about yet more awful ways that company is destroying authentic creativity for their own profit.
I’ve been a huge fan of independent artists for a very long time. Back in the MySpace / MP3 / Napster days I came across folks who I now count as friends, amazing musicians such as Cindy Alexander, and Alex Cornish.
Up until recently there was a wonderful streaming station, RadioFreeFedi, that offered music from artists who had a presence in the Fediverse. Sadly, that has now gone away.
Over the past couple of years I’ve been attending Fediforum, an online conference where people building in the Fediverse gather to share projects and ideas. During the events in 2024, I came across two fantastic people with an interest in making things better for artists and musicians: Ben Pate, builder of the Emissary platform, which has a music-centric edition called Bandwagon; and Kirsten Lambertsen, a multi-talented web creative who runs Patron Hunt, and who spun up an alternative streaming station, The Indie Beat.
Happy New Year fedifriends!
I'm excited to officially announce the launch of TheIndieBeat.fm, a streaming radio station showcasing indie #music from the Fediverse.
The Indie Beat Radio is made possible through a collaboration with Bandwagon.fm / @benpate
Music artists who upload their work to Bandwagon.fm have the option to make tracks available for streaming on TheIndieBeat.fm
Our goal is to use federation to make less work for artists — upload once; distribute infinitely.
The Indie Beat builds on Bandwagon, so artists who share their music in the Fediverse via Bandwagon, can also choose to add them to rotation on The Indie Beat.
Some inspirations
I was nerd-sniped, I mean, inspired, to make something with The Indie Beat, in part through a nice blog post shared by Neil Brown (which was apparently prompted by me, so that’s nice and circular!) about how to add the streams from The Indie Beat into Linux music apps such as mpd.
I don’t use mpd, and to be honest I most often live on Apple platforms (but I do keep a Plex server, which I intend to move to Jellyfin this year as I work on improving my self-hosting and homelab situations). I was pretty sure that I’d seen a taskbar music player for GNOME, though. I usually run GNOME on my Linux systems – the exception being my MNT Pocket Reform, which is Sway with a minimal set of other desktop apps.
The player I was thinking of is the SomaFM internet radio extension, which is a menubar app that lists the SomaFM station streams, and allows the user to choose between them.
The process
The first iteration was a straightforward copy/edit hack of the SomaFM extension, replacing the list of channel streams with the equivalent ones from The Indie Beat. Easy!
I excitedly sent a screenshot to Kirsten to show off!
There were quite a few things that I felt I could do better, though. First of all, the artwork was missing. Also, I knew that the whole point of The Indie Beat was to be a showcase for the artists on Bandwagon, and that there was supposed to be metadata in the stream header that contained their link information.
After a lot of poking at the MP3 stream, I realised that The Indie Beat is built on a streaming server called Azura Cast, which has an API – and The Indie Beat API had that data, and a whole lot more that I could use. In order to use it all though, I had to fully re-think how the extension would work.
So, I started over, from scratch.
I hand-traced the “catellite” artwork and made a minified icon for the GNOME top bar – the full design was not great at a tiny size.
I kept a similar look-and-feel to the SomaFM extension – an icon, a player, a list of channels – but, I removed the settings and favourites options from my scope, to keep things simple. I also have the menu expand to fit the channel names, which I don’t love as it means it changes size, but it works.
a little thing that I’m fond of is that the extension uses the configured accent colour – recently added in GNOME 47 – for some of the text.
I did a lot of reading and poking around at GNOME Shell and gjs, the JavaScript API that enables extensions to be built. I also learned a lot about GStreamer, the engine that GNOME apps use for access to audio and video media. This was all a long, long way from my past work coding for GNOME, ~20 years ago, back in early Anjuta days! I’m not naturally a JavaScript person at all, so I made a lot of mistakes here.
huge shout-out to the author of the JustPerfection extension, who carefully and helpfully reviewed my submissions to the GNOME Extensions site. This thing would be a lot more crashy and messy without that oversight!
the extension contains a small cached implementation of the Azura Cast API, which enables the extension to query the available channels, rather than needing to have a static internal list of streams updated if a channel came along or went away (a concept of “mixtapes” is on the roadmap for The Indie Beat in the future).
I needed to add a way to access an artist’s page, which comes from a property that’s stored in the now playing data, so building an API layer that sits parallel to the radio stream player seemed to work nicely.
The Indie Beat is evolving – within a few days of starting work on this side project, Kirsten switched the branding from pink to green, so I updated the artwork. She also added a Bonk Wave channel – and the extension seamlessly picked it up! That was a nice win.
Not What I Call Radio Bonk Wave is a new radio station from The Indie Beat Radio, curated by bonkwave.org and playing music which may be #BonkWave. Or may be #NotBonkWave.
I’ve posted a short video which covers the basic features: choose between channels, play/stop, open the Bandwagon page of the currently playing artist in a web browser, or directly jump to Bandwagon’s Explore page or The Indie Beat main page. I’ve aimed for simple and clean, as befits the GNOME philosophy.
There’s a lot of opportunity for creatives in the Fediverse!
Castopod is a great way to self-host a podcast with native ActivityPub federation. Bandwagon exists, where you can create a Fediverse profile for yourself and your music. You can share it through The Indie Beat. I’ve personally got my eye on Libre.FM (like Last.FM, but free, and with a renewed / reinvigorated interest in building new features like ActivityPub and IndieWeb support – here’s my profile). Beyond those, there is also Faircamp, a static site generator that helps musicians self-host their content and avoid enshittification through other channels and platforms. I’m excited! We can work together to make our spaces better for musicians and other artists!
More features for the extension?
This has been a fun side project!
I’ve got a few barely-formed ideas for things I can do with this in the future, as both Bandwagon and The Indie Beat evolve. Stay tuned. 📡
Oh, and through making this extension, I found and purchased an album I’m obsessed with, which has inspired me to do some other new things… so watch this space.
Update 26/02 – since posting this, folks have made me aware of some other fantastic options in this space. Hopefully, we can see more collaborations between these platforms / sites / curators, to grow the opportunity for everyone.
NHAM shares monthly online mixtapes of music from Fediverse musicians
Audio Interface, a set of radio shows for independent artists
the Faircamp Webring collects together many of the artists using Faircamp for their sites
Mirlo (there’s an open issue proposing that they add ActivityPub / Fediverse support)
Update 26/02 – I wanted a simple app to play The Indie Beat on my MNT Pocket Reform, too, so I made a more basic system tray app, that should work on most Linux desktops (written in Python)
Where do I get those stickers?
Come find me at FOSDEM 2025 in Brussels next weekend, I’ll have Bandwagon+The Indie Beat stickers to share 👍🏻
Today I dipped my toe into static site generation with @eleventy and it was a breeze! I didn’t know this #WebDevelopment stuff could actually be fun. I will now happily trade the complexities of #Wordpress plus visual site builders plus theme customization against the complexities of #SSG with vanilla #HTML / #CSS and (almost) no #JavaScript. If think, I‘ll redo all my sites with it. Hint: ChatGPT is also really good at teaching #Eleventy and CSS.
I've been hand rolling touch friendly elements in Svelte 5 + HTML + CSS. But it's getting a bit tedious, and I should probably try some UI component framework or library.
Trouble is, it's hard to choose, I have zero experience about any of them, not all of them are Svelte 5 compatible. What to do?
It's fine to do lots of up front work and learning provided I make the right choice. But boy it would suck to have to revert and start over with another library.
Twice a year, due to a very old system, many assumptions, user expectations, and a bright mind that decided to set a database in Europe/Amsterdam TZ, we have to deal with at least a bug regarding time issues. I cannot wait for Temporal to be fully implemented in all the platforms.
Replacing Date object. Adds support for time zone and calendar representations, many built-in methods for conversions, comparisons and computations, formatting, etc.
Replacing Date object. Adds support for time zone and calendar representations, many built-in methods for conversions, comparisons and computations, formatting, etc.
Fedify is an #ActivityPub server framework in #TypeScript & #JavaScript. It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.
The key features it provides currently are:
Type-safe objects for Activity Vocabulary (including some vendor-specific extensions)
Fedify is an #ActivityPub server framework in #TypeScript & #JavaScript. It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.
The key features it provides currently are:
Type-safe objects for Activity Vocabulary (including some vendor-specific extensions)
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
• npm install: 📦 Installs dependencies from package.json, updates package-lock.json if needed. Flexible but slower. • npm ci: ⚡ Clean, fast install based only on package-lock.json. Reproducible builds, perfect for CI/CD.
💡Tip: Use npm ci for consistent, reliable deployments! ✅ #javascript#npm
• npm install: 📦 Installs dependencies from package.json, updates package-lock.json if needed. Flexible but slower. • npm ci: ⚡ Clean, fast install based only on package-lock.json. Reproducible builds, perfect for CI/CD.
💡Tip: Use npm ci for consistent, reliable deployments! ✅ #javascript#npm
Just migrated from my mastodon.social account to the post.lurk.org instance (thank you @rra for the invite and the ressources ) So... here is my little #Introduction post (also a post of me searching for an internship lol) : Hi, I'm Zineb, I am a moroccan girly pop who loves to code, to draw and to sing :3 Currently in the first year of my Master's degree in Communication at the Ésac art school in Cambrai (france), I'm searching for an #internship in the field of #graphicdesign, especially with collectives enthusiastic about #webtoprint and #opensource tools (like me!). I mainly code with #HTML and #CSS, and I am currently learning #javascript. I can speak fluently french, english and arabic. I also have some basic knowledge in spanish. In terms of location, I'm seeking an internship in #Belgium, the #Netherlands, #Germany or the region of Paris. (Oh, forgot to mention that I can have an erasmus/internship grant ) Here's the link to my website: https://zinebammar.neocities.org/
Just migrated from my mastodon.social account to the post.lurk.org instance (thank you @rra for the invite and the ressources ) So... here is my little #Introduction post (also a post of me searching for an internship lol) : Hi, I'm Zineb, I am a moroccan girly pop who loves to code, to draw and to sing :3 Currently in the first year of my Master's degree in Communication at the Ésac art school in Cambrai (france), I'm searching for an #internship in the field of #graphicdesign, especially with collectives enthusiastic about #webtoprint and #opensource tools (like me!). I mainly code with #HTML and #CSS, and I am currently learning #javascript. I can speak fluently french, english and arabic. I also have some basic knowledge in spanish. In terms of location, I'm seeking an internship in #Belgium, the #Netherlands, #Germany or the region of Paris. (Oh, forgot to mention that I can have an erasmus/internship grant ) Here's the link to my website: https://zinebammar.neocities.org/
tl;dr I created an extension for the GNOME desktop on Linux, so that folks can stream and listen to music from The Indie Beat – an online radio station powered by independent musicians sharing music in the Fediverse, via Bandwagon.
Background
Independent musicians, creatives, artists, makers – these are all folk who often struggle to connect with audiences, and where retail and tech platforms tend towards squeezing their ability to make money from their work (see the excellent Chokepoint Capitalism by Cory Doctorow – essential reading for today’s world and understanding how it systematically squeezes creatives). Over the Christmas period, I finally deleted my Spotify account, after reading about yet more awful ways that company is destroying authentic creativity for their own profit.
I’ve been a huge fan of independent artists for a very long time. Back in the MySpace / MP3 / Napster days I came across folks who I now count as friends, amazing musicians such as Cindy Alexander, and Alex Cornish.
Up until recently there was a wonderful streaming station, RadioFreeFedi, that offered music from artists who had a presence in the Fediverse. Sadly, that has now gone away.
Over the past couple of years I’ve been attending Fediforum, an online conference where people building in the Fediverse gather to share projects and ideas. During the events in 2024, I came across two fantastic people with an interest in making things better for artists and musicians: Ben Pate, builder of the Emissary platform, which has a music-centric edition called Bandwagon; and Kirsten Lambertsen, a multi-talented web creative who runs Patron Hunt, and who spun up an alternative streaming station, The Indie Beat.
Happy New Year fedifriends!
I'm excited to officially announce the launch of TheIndieBeat.fm, a streaming radio station showcasing indie #music from the Fediverse.
The Indie Beat Radio is made possible through a collaboration with Bandwagon.fm / @benpate
Music artists who upload their work to Bandwagon.fm have the option to make tracks available for streaming on TheIndieBeat.fm
Our goal is to use federation to make less work for artists — upload once; distribute infinitely.
The Indie Beat builds on Bandwagon, so artists who share their music in the Fediverse via Bandwagon, can also choose to add them to rotation on The Indie Beat.
Some inspirations
I was nerd-sniped, I mean, inspired, to make something with The Indie Beat, in part through a nice blog post shared by Neil Brown (which was apparently prompted by me, so that’s nice and circular!) about how to add the streams from The Indie Beat into Linux music apps such as mpd.
I don’t use mpd, and to be honest I most often live on Apple platforms (but I do keep a Plex server, which I intend to move to Jellyfin this year as I work on improving my self-hosting and homelab situations). I was pretty sure that I’d seen a taskbar music player for GNOME, though. I usually run GNOME on my Linux systems – the exception being my MNT Pocket Reform, which is Sway with a minimal set of other desktop apps.
The player I was thinking of is the SomaFM internet radio extension, which is a menubar app that lists the SomaFM station streams, and allows the user to choose between them.
The process
The first iteration was a straightforward copy/edit hack of the SomaFM extension, replacing the list of channel streams with the equivalent ones from The Indie Beat. Easy!
I excitedly sent a screenshot to Kirsten to show off!
There were quite a few things that I felt I could do better, though. First of all, the artwork was missing. Also, I knew that the whole point of The Indie Beat was to be a showcase for the artists on Bandwagon, and that there was supposed to be metadata in the stream header that contained their link information.
After a lot of poking at the MP3 stream, I realised that The Indie Beat is built on a streaming server called Azura Cast, which has an API – and The Indie Beat API had that data, and a whole lot more that I could use. In order to use it all though, I had to fully re-think how the extension would work.
So, I started over, from scratch.
I hand-traced the “catellite” artwork and made a minified icon for the GNOME top bar – the full design was not great at a tiny size.
I kept a similar look-and-feel to the SomaFM extension – an icon, a player, a list of channels – but, I removed the settings and favourites options from my scope, to keep things simple. I also have the menu expand to fit the channel names, which I don’t love as it means it changes size, but it works.
a little thing that I’m fond of is that the extension uses the configured accent colour – recently added in GNOME 47 – for some of the text.
I did a lot of reading and poking around at GNOME Shell and gjs, the JavaScript API that enables extensions to be built. I also learned a lot about GStreamer, the engine that GNOME apps use for access to audio and video media. This was all a long, long way from my past work coding for GNOME, ~20 years ago, back in early Anjuta days! I’m not naturally a JavaScript person at all, so I made a lot of mistakes here.
huge shout-out to the author of the JustPerfection extension, who carefully and helpfully reviewed my submissions to the GNOME Extensions site. This thing would be a lot more crashy and messy without that oversight!
the extension contains a small cached implementation of the Azura Cast API, which enables the extension to query the available channels, rather than needing to have a static internal list of streams updated if a channel came along or went away (a concept of “mixtapes” is on the roadmap for The Indie Beat in the future).
I needed to add a way to access an artist’s page, which comes from a property that’s stored in the now playing data, so building an API layer that sits parallel to the radio stream player seemed to work nicely.
The Indie Beat is evolving – within a few days of starting work on this side project, Kirsten switched the branding from pink to green, so I updated the artwork. She also added a Bonk Wave channel – and the extension seamlessly picked it up! That was a nice win.
Not What I Call Radio Bonk Wave is a new radio station from The Indie Beat Radio, curated by bonkwave.org and playing music which may be #BonkWave. Or may be #NotBonkWave.
I’ve posted a short video which covers the basic features: choose between channels, play/stop, open the Bandwagon page of the currently playing artist in a web browser, or directly jump to Bandwagon’s Explore page or The Indie Beat main page. I’ve aimed for simple and clean, as befits the GNOME philosophy.
There’s a lot of opportunity for creatives in the Fediverse!
Castopod is a great way to self-host a podcast with native ActivityPub federation. Bandwagon exists, where you can create a Fediverse profile for yourself and your music. You can share it through The Indie Beat. I’ve personally got my eye on Libre.FM (like Last.FM, but free, and with a renewed / reinvigorated interest in building new features like ActivityPub and IndieWeb support – here’s my profile). Beyond those, there is also Faircamp, a static site generator that helps musicians self-host their content and avoid enshittification through other channels and platforms. I’m excited! We can work together to make our spaces better for musicians and other artists!
More features for the extension?
This has been a fun side project!
I’ve got a few barely-formed ideas for things I can do with this in the future, as both Bandwagon and The Indie Beat evolve. Stay tuned. 📡
Oh, and through making this extension, I found and purchased an album I’m obsessed with, which has inspired me to do some other new things… so watch this space.
Update 26/02 – since posting this, folks have made me aware of some other fantastic options in this space. Hopefully, we can see more collaborations between these platforms / sites / curators, to grow the opportunity for everyone.
NHAM shares monthly online mixtapes of music from Fediverse musicians
Audio Interface, a set of radio shows for independent artists
the Faircamp Webring collects together many of the artists using Faircamp for their sites
Mirlo (there’s an open issue proposing that they add ActivityPub / Fediverse support)
Update 26/02 – I wanted a simple app to play The Indie Beat on my MNT Pocket Reform, too, so I made a more basic system tray app, that should work on most Linux desktops (written in Python)
Where do I get those stickers?
Come find me at FOSDEM 2025 in Brussels next weekend, I’ll have Bandwagon+The Indie Beat stickers to share 👍🏻
So last night, while recording the preview of Kitten’s¹ improved component model², I made a silly mistake (copying raw HTML into a JavaScript function instead of wrapping it in a kitten.html`` tagged template, easy to do when you’re refactoring to pull out components from pages).
Then, once I figured out what I’d done, I made another one by forgetting to return the value from the function (easy to do when you’re used to using one-line closures as render functions).
I would have caught both of those so much faster if Kitten had helpful error messages for those two pitfalls. And guess what, this morning, it does :)
Attached are screenshot showing the before and after error messages.
#introduction Code Lutin est une #entreprise extraordinaire : pratiquant l'#autogestion (1 personne = 1 voix) et le salaire unique (quelque-soit le diplôme, l'expérience, l'ancienneté, le poste), nous sommes une des rares société « à participation ouvrière » en France
#introduction Code Lutin est une #entreprise extraordinaire : pratiquant l'#autogestion (1 personne = 1 voix) et le salaire unique (quelque-soit le diplôme, l'expérience, l'ancienneté, le poste), nous sommes une des rares société « à participation ouvrière » en France
Little preview video: Kitten’s improved component model
• Class-based page routes and components • Object-oriented • Event-based • Seamless hypermedia-driven WebSocket-based event mapping and interface updates (Streaming HTML) • A light server-side live component hierarchy with event bubbling • Almost as if you’re building a desktop or mobile app instead of a web app…
… another authoring simplification made possible because on the Small Web – which is a peer-to-peer web – you build a web app/site as a tool for one person (the owner of the site/app) instead of as a tool for you to farm millions of people.
- Correct handling of compilerOptions.types - Better handling of npm package types - Improvements to node:fs FileHandle - Make deno outdated more robust Run `deno upgrade` to get it
- Correct handling of compilerOptions.types - Better handling of npm package types - Improvements to node:fs FileHandle - Make deno outdated more robust Run `deno upgrade` to get it
- Correct handling of compilerOptions.types - Better handling of npm package types - Improvements to node:fs FileHandle - Make deno outdated more robust Run `deno upgrade` to get it
- Correct handling of compilerOptions.types - Better handling of npm package types - Improvements to node:fs FileHandle - Make deno outdated more robust Run `deno upgrade` to get it
Pretty soon, you’re going to be able to view your live pages and the events on them in real time while developing Kitten apps.
The improved component model with support for class-based routes (and a server-side component hiearchy that lets you build well-encapsulated components and pages and work in an event-driven way) is coming along nicely and I’m back to writing Place¹ using it.
(In the GIF, you’re looking at Place’s profile settings page. Not shown here but those profile changes reflect in realtime on all open pages. The highlighted piece of code is what streams the event details to the browser.)
Thanks to all who have participated. If we haven't contacted you about stickers, then please let us know (or email [email protected]).
Finally, one lucky winner will get the elite, special edition, hyper exclusive Deno sticker. (Here's Phil seeing it for the first time.) ️ More details 👇️ https://deno.com/blog/advent-of-code-2024
Thanks to all who have participated. If we haven't contacted you about stickers, then please let us know (or email [email protected]).
Finally, one lucky winner will get the elite, special edition, hyper exclusive Deno sticker. (Here's Phil seeing it for the first time.) ️ More details 👇️ https://deno.com/blog/advent-of-code-2024
Thanks to all who have participated. If we haven't contacted you about stickers, then please let us know (or email [email protected]).
Finally, one lucky winner will get the elite, special edition, hyper exclusive Deno sticker. (Here's Phil seeing it for the first time.) ️ More details 👇️ https://deno.com/blog/advent-of-code-2024
Good Morning #FediHire friends - have a new role for ya!
Looking for a fairly senior frontend-focused #Software Engineer to join a team building a containerization product for the CI/CD pipeline called Dagger.
The role is looking for some fairly specific criteria so here are the key points:
* This role is not a UI Designer position, you must have a strong coding background ( #JavaScript / #TypeScript / #ReactJS preferred) in addition to design chops
* You must have developed frontends for #devtools (the thought behind this requirement is that these tools are designed very differently than a typical B2C site so if you have done something substantially similar, answer yes)
* Americas (somewhere between EST to PST) timezones are required. We can hire in Canada, US, South America, and have hired in Europe before for exceptional candidates
* We cannot sponsor visas at this time
* I've worked with this company for about 6 months and have only positive things to say about the team and culture
* There's currently a bug in the application coming from the ATS that's making the dropdowns funky. Don't judge me too harshly, I've submitted a ticket
I'm the #recruiter on the role, so feel free to ask any questions here and I'll either have an answer or go find you one :)
Good Morning #FediHire friends - have a new role for ya!
Looking for a fairly senior frontend-focused #Software Engineer to join a team building a containerization product for the CI/CD pipeline called Dagger.
The role is looking for some fairly specific criteria so here are the key points:
* This role is not a UI Designer position, you must have a strong coding background ( #JavaScript / #TypeScript / #ReactJS preferred) in addition to design chops
* You must have developed frontends for #devtools (the thought behind this requirement is that these tools are designed very differently than a typical B2C site so if you have done something substantially similar, answer yes)
* Americas (somewhere between EST to PST) timezones are required. We can hire in Canada, US, South America, and have hired in Europe before for exceptional candidates
* We cannot sponsor visas at this time
* I've worked with this company for about 6 months and have only positive things to say about the team and culture
* There's currently a bug in the application coming from the ATS that's making the dropdowns funky. Don't judge me too harshly, I've submitted a ticket
I'm the #recruiter on the role, so feel free to ask any questions here and I'll either have an answer or go find you one :)
Deno is committed to web standards - that's why we co-founded WinterCG two years ago. Today marks the next step in that journey: WinterCG moves to Ecma International as technical comittee 55 (TC55).
Deno is committed to web standards - that's why we co-founded WinterCG two years ago. Today marks the next step in that journey: WinterCG moves to Ecma International as technical comittee 55 (TC55).
Deno is committed to web standards - that's why we co-founded WinterCG two years ago. Today marks the next step in that journey: WinterCG moves to Ecma International as technical comittee 55 (TC55).
Deno is committed to web standards - that's why we co-founded WinterCG two years ago. Today marks the next step in that journey: WinterCG moves to Ecma International as technical comittee 55 (TC55).
New release of https://thi.ng/genart-api (v0.24.0) — a platform-independent extensible API for browser-based computational/algorithmic/generative art projects:
This release contains quite a few new features, as well as several important fixes for bugs which were accidentally introduced in the two most recent versions...
- extracted the debug time provider & FPS overlay to separate package - updated `bigint` param handling (esp. randomization) - added `collector` and `iteration` metadata accessors - updated platform adapters (esp. the #fxhash one) - fixed image & ramp param handling - added a bunch of utilities to core API to deduplicate code in various adapters - updated/fixed examples & docs - added more tests (and updated core API to be more testable outside the browser)
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Interesting change: “Lifecycle scripts of dependencies are not executed during installation by default! This is a breaking change aimed at increasing security. In order to allow lifecycle scripts of specific dependencies, they should be listed in the pnpm.onlyBuiltDependencies field of package.json.”
Interesting change: “Lifecycle scripts of dependencies are not executed during installation by default! This is a breaking change aimed at increasing security. In order to allow lifecycle scripts of specific dependencies, they should be listed in the pnpm.onlyBuiltDependencies field of package.json.”
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Calflora is seeking an experienced developer who would like to take part in important conservation work and who values biodiversity data. This developer would assist in maintaining and developing Calflora’s Java-based website and infrastructure, including systems administration, database management, web application programming, front-end development, and data integration. Qualifications: Java - Databases (MySQL or other), Java-based web technologies (such as GWT), and interest in natural history and botany. https://myemail.constantcontact.com/The-Calflora-Team-is-Expanding-.html?soid=1101318247526&aid=vnjMtGwmYG4. #jobs#javascript
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
Our core team is looking for a senior Front-end Developer to elevate the web UI/UX experience for our users.
Ideally:
1. You are highly skilled in accessible and semantic #HTML 2. Proficient in modern #CSS 3. Experienced with #Javascript, #Typescript and complex React/Redux applications
This remote full-time position requires a 4-hour overlap with the CET timezone.
#ReleaseFriday (1st release cycle of 2025) 🎉 — New additions & updates to https://thi.ng/genart-api, a platform-independent extensible API for browser-based computational/algorithmic/generative art projects:
- Added https://fxhash.xyz platform adapter (incl. support & adaptations for 10 of the 17 built-in GenArtAPI param types) - Added `bigint` & `binary` data param types - Updated parameter type definitions & factories (date, datetime, time, numlist, strlist, text, vector) - Ensure any given default values are valid (and can be coerced) - Added MurmurHash3 (128 bit version) functions (e.g. seed PRNGs) - Added tests for all parameter types (factory functions & implementations) - Added tests for utility functions - Added GitHub actions (running tests) - Various API docs updates, clarifications & fixes - Update/refactor EditArt & Layer platform adapters - Updated main & adapter readmes
I just noticed the release notes for @gotink’s #JavaScript#KDL parser and it has this new tool for defining KDL<->JS mappings in a more complex way than just JiK. This is AMAZING. It lets you really harness the power of KDL’s node-based system but still work easily with JS objects, in a well-defined and structured way!
Cause sometimes what you really really want is a tree structure, not just objects and arrays. And you never want yaml, even if you think you do :P
I have added snow to my instance during the winter holidays. It's a tiny JS canvas and fades out on scroll down. The snow is also respecting the system accessibility settings, it won't be there if you prefer reduced motion.
Next month #ThingUmbrella will be already 7 years old (in its current monorepo form) and thi.ng itself turn 14 — a true teenager! 😱
2024 has been a year of a lot of maintenance and the first year in a while, in which I got to put so many of these tools & libraries to work on the development of several other new (and ongoing) projects (incl. some still unannounced ones). Considering the vastly different usage contexts, each time this is also a demonstration (to myself) of just how powerful, adaptable and _composable_ many of these libraries are, and I wish I'd be able to better communicate these aspects to other people...
My deepest thanks and gratitude to my amazing supporters/sponsors, who've been enabling me to continue this work, to expand on it and actively maintain it! Some of you already for years! Love you, people — Your support means the world to these projects (and to me)! And even though I'm still a far way from being able to work fulltime on all these projects, and also had to take on some consulting work this year, I too have been trying my best to work on thi.ng projects every day this year (and almost succeeded)...
- 200 packages/libraries/tools - 180 standalone example projects/tools - 520 code snippets/examples in docs (extractable via tooling)
Source code:
- 4,095 source files - 223k SLOC total, of which: - 159k lines of code - 64k comment lines (mostly for API docs)
Readme's:
- 33% of packages with 1,000+ words - 20% of packages with 1,500+ words - Min: 215, max: 9,519, avg: 1,075 words
3,445 Github ⭐️ (+12% in 2024)
200,675,881 NPM total downloads to date (🤯)
There're many valuable ways to support these projects: Share your usage/experience reports, tips & tricks, ask/answer questions, submit issues/PRs, create small examples, documentation/tutorials, word-of-mouth etc.
If you see value in these projects and want to support a large & mature body of open source work financially, I'm accepting contributions via: Github, Liberapay & Patreon — thank you very much for your consideration!
Next month #ThingUmbrella will be already 7 years old (in its current monorepo form) and thi.ng itself turn 14 — a true teenager! 😱
2024 has been a year of a lot of maintenance and the first year in a while, in which I got to put so many of these tools & libraries to work on the development of several other new (and ongoing) projects (incl. some still unannounced ones). Considering the vastly different usage contexts, each time this is also a demonstration (to myself) of just how powerful, adaptable and _composable_ many of these libraries are, and I wish I'd be able to better communicate these aspects to other people...
My deepest thanks and gratitude to my amazing supporters/sponsors, who've been enabling me to continue this work, to expand on it and actively maintain it! Some of you already for years! Love you, people — Your support means the world to these projects (and to me)! And even though I'm still a far way from being able to work fulltime on all these projects, and also had to take on some consulting work this year, I too have been trying my best to work on thi.ng projects every day this year (and almost succeeded)...
- 200 packages/libraries/tools - 180 standalone example projects/tools - 520 code snippets/examples in docs (extractable via tooling)
Source code:
- 4,095 source files - 223k SLOC total, of which: - 159k lines of code - 64k comment lines (mostly for API docs)
Readme's:
- 33% of packages with 1,000+ words - 20% of packages with 1,500+ words - Min: 215, max: 9,519, avg: 1,075 words
3,445 Github ⭐️ (+12% in 2024)
200,675,881 NPM total downloads to date (🤯)
There're many valuable ways to support these projects: Share your usage/experience reports, tips & tricks, ask/answer questions, submit issues/PRs, create small examples, documentation/tutorials, word-of-mouth etc.
If you see value in these projects and want to support a large & mature body of open source work financially, I'm accepting contributions via: Github, Liberapay & Patreon — thank you very much for your consideration!
I have added snow to my instance during the winter holidays. It's a tiny JS canvas and fades out on scroll down. The snow is also respecting the system accessibility settings, it won't be there if you prefer reduced motion.
Another new release of #GenArtAPI (v0.20.0), due to some urgent additions & updates of partially outdated documentation and refactoring/cleaning up of some parameter types. This project already contains more docs than code and because things are moving so fast, I forgot to update some parts... (Sorry for any confusion caused...)
Other notable updates:
- Simplified the core API's param value getter for obtaining time-based or randomized values (please check docs[1]) - Updated vector param definition - Added a `.configure()` method for the EditArt platform adapter to allow manual selection of adapted params (to override the default auto-selection)[2]
All implementations are WIP (but fully functional, to the best of my knowledge!). If there's demand, I'm considering adding more parameter type adaptations also for the EditArt adapater (e.g. to support vector/XY params, as already done for the Layer adapter...)
Since I've been told "people/artists don't read anymore", tonight I'm starting to record a video walkthrough, wish me luck! :)
I want to give huge thanks to everyone who supported all of us through this, who jumped in and had some really amazing discussions weighing all sorts of interesting trade-offs.
The end result is absolutely not something any one person could've reasonably come up with.
I hope y'all enjoy it <3
As part of this release, several implementations have already launched with full support for v2.0.0, so you can try it now!
There are around 8k .kdl files out on GitHub, which is a lot considering it's usually a config language!
I fully expect this to be the last version of KDL ever released. We really really tried, but I don't think there's anything we can reasonably improve on.
From here on out, the language is in the (stable!) hands of the ecosystem.
Also, we're hoping to have GitHub syntax highlighting support soon!
This proposal could help with the following problem—quoting Tzvetan Mikov (Static Hermes): “Unfortunately, in general it is impossible to compile JS statically to a tiny binary (Wasm or otherwise), because it is impossible statically to know which parts of the JS library are used.” https://x.com/tmikov/status/1869900344286949425
New release of https://thi.ng/genart-api, a modular cross-platform API/SDK for browser-based computational/algorithmic/generative art projects, helping to reduce artists' efforts to adapt work for different art platforms/environments/uses/workflows.
Main new v0.18.0 additions:
- The param editor reference implementation now groups parameters by their declared group and sorts them by given order (both optional) - The `@genart-api/adapter-layer` package supports adaptations/translations for more param types, incl. vectors, which are not yet natively supported by that platform. E.g. vectors will be transparently represented as multiple, separate numeric params on the platform side, but your artwork is blissfully unaware of this and still only would deal with vectors. The platform adapter does all the reconcilation and handling of param changes... - Started adding tests - Updated API docs & readme's
As always, feedback highly appreciated — this project is in active development...
I'm aware, the target audience for this larger project is quite limited, but the benefits are real (and palpable!), not just for artists in this field (but especially for them!)... I'll do my best to illustrate the (recurring) problems being solved here, demystify some of the concepts and squeeze in recording a short(ish) video showing how to develop a small project from scratch using this system/setup and then repurpose it and show related tools still in development...
$ pip3 search something ... RuntimeError: PyPI no longer supports 'pip search' [...]. Please use https://pypi.org/search (via a browser) instead. [...]
Sure, no problem. Let's see …
»JavaScript is disabled in your browser. Please enable JavaScript to proceed.«
Urgh, but okay, #pip is a #Python package manager, they're good guys. Let me just open #NoScript and temporarily allow pypi.org ... oh no, it wants to run #JavaScript from …
there is now another #KDL implementation that supports preserving and managing formatting/comments... and it's in #JavaScript / #TypeScript and supports 2.0!!
- https://thi.ng/ramp has just received a bugfix for ramps with more than 256 keyframes. Thanks to @robertoranon for finding & reporting! 🤩🙏 - https://thi.ng/meta-css also fixes a couple of issues related to using certain characters within template/macro arguments (e.g. `:`, `=`)
Last week, I also added a new feature to https://thi.ng/rstream to provide a 1:N fanout subscription type for reactive tuple values. For example, this is very useful for editing vector values via reactive UI components (using individual components per vector/tuple element)...
- Added platform adapter IDs for use with external editors/tooling - Updated editors[1] to check for platform adapter & API version compatibility, display warnings if needed... - Added/migrated three different seedable PRNG implementations in API core package (SFC32, XorShift128, XsAdd). These are completely independent and can be used by platform adapters and/or artworks (also multiple instances) - Initial release of first platform adapter for an upcoming art platform (currently invite only) - Restructured all example projects - Updated readme & API docs (https://docs.thi.ng/genart-api/core/)
[1] The param editor/sandbox requires your artwork to use the latest version of these packages: `@genart-api/core` and `@genart-api/adapter-urlparams`.
Almost each time I get a Dependabot alert, I've been using it as an opportunity to remove some 3rd party dependency. This doesn't mean my code is more secure (albeit I'm trying), but at least it's under my control, or is replaced with more native/built-in/vetted packages.
Latest case: An alert for a transitive dependency of `express` just caused me to refactor the only one (of 180) example projects in https://thi.ng/umbrella which depended on the latter, replaced with a barebones NodeJS built-in solution (good enough for this use case) and resulting in ~60 less dependencies in total...
I like that @deno_land tries to be an all-in solution. I like that about go as well. Good tooling, rich standard library. What is difficult, though, is that the js ecosystem is so fragmented. For instance, I’m trying to use drizzle ORM with SQLite. That’s far from straightforward. They don’t include examples for Deno. Translating commands to how Deno likes them is a hassle and I run into issues with migrations #development#javascript#deno
- Restructured the project as monorepo, splitting out core API and platform adapter(s) as separate packages - Switched package scope from `@thi.ng` to `@genart-api` to highlight project/platform independence (not directly related with other thi.ng projects). - Published new packages: `@genart-api/core` and `@genart-api/adapter-urlparams` - Moved API docs to https://docs.thi.ng/genart-api/core/ - Added support for n-dimensional vector parameters and added support in the reference platform adapter and in param editor - Updated all examples & parameter editor. The latter is now only compatible with this latest API version (v0.16.0) - Updated docs/readme
If you want to find out more, the project readme has _a lot_ more information. Also feel free to get in touch with any questions/proposals!
Update on #FreeJavaScript: Oracle has filed a notice of appearance, signaling engagement in the JavaScript trademark case. Aside from this, we’ve had no communication. Their response is due by January 4th.
Many very talented software engineers I know well from a previous employer have either just been layed off or are actively looking for a new gig due to these mass layoffs. If you know a company, preferrably in Germany, that is looking for #javascript#typescript developers, please let me know. Please boost for reach! #getfedihired
It just dawned on me that I haven't been mentioning five(!) recent https://thi.ng/genart-api updates, all from the past month... 😱
The latest version (v0.14.0, just released) is largely about an overhaul of messaging related functionality and also addresses use cases related to managing multiple artworks embedded (via `<iframe>`s) in a single document/page (think: online gallery scenarios...)
If you're already using GenArtAPI message/event listeners in your own artwork, you might have to rename some of them. This commit has the important details:
Also, the online parameter editors have been updated and are now only working with the latest version of the API, so be sure to update your artwork projects to stay compatible:
Other recent changes/additions (in no particular order):
- added new message types to poll the artwork/API for current state/info - update message names & naming convention - added ability to configure the API behavior/features (also via messaging) - option to emit frame messages w/ current timing/frame info - message broadcasting to multiple GenArtAPI instances/artworks - inject common defaults for optional settings in param specs - fixed date/datetime param handling (in editor) - updated/fixed time providers - updated debug time provider (w/ FPS visualization overlay) - use gzip compression for image param values (in default platform adapter) - added version info - various documentation updates - (WIP) WASM bindings for Zig-based artworks - (WIP) unpublished progress on real platform adapters
Some of these features are all about enabling new use cases and improving usability of external tooling around artworks adapting GenArtAPI, for example:
- Ability to broadcast start/stop messages to either individual or all artworks embedded in a page - Ability for the param editor to configure the artwork currently being worked on to emit timing & frame information (which then can be integrated in the editor UI without the editor knowing anything else about the artwork) - Enable editors to identify an artwork/project and store param presets grouped by project ID - Allow editors (or other tools) to check the API version used by the artwork by first sending a `genart:get-info` message, then listening for `genart:info` response (then maybe display a warning if version is incompatible) - etc.
If you want to find out more, the project readme has _a lot_ more information. Also feel free to get in touch with any questions!
"It insists that all user problems will be solved if teams just framework hard enough." (article about #javascript) but this THIS is the single one reason for me about #go - a standard library well stocked enough to not need frameworks anymore but instead choosing a small selection of really necessary libraries and a lil' sugar for any given project. I didn't framework hard the last decade - I didn't framework at all. (and its simplicity.) https://infrequently.org/2024/11/if-not-react-then-what/
@slightlyoff I've being doing this for so long (#webdev). I have an inkling that everytime this conversation comes up and the person doing the "front end frameworks are killing us" cautioning - can't or won't actually recommend an alternative - it's because it will never be possible.
Not until the JS baked directly into the browser stops sucking so badly.
It's bandaids on top of wounds on top of bandaids.
We’ve submitted a formal petition to cancel the JavaScript trademark: it is generic, Oracle has abandoned it, and Oracle committed fraud on the USPTO during the last trademark renewal.
Oracle has until January 4th to respond, or the case will go into default, which will result in the trademark being canceled.
Very much liking the succinctness of the JS Compression Streams API[1] and wish I'd known about this a couple of years earlier. Here're some small helpers to compress or decompress a byte array...
I've just also pushed a new version of https://thi.ng/genart-api (v0.11.0) in which the reference implementation platform adapter now uses gzip compression for serializing the data of image maps/parameters (in ~50-60% of the original size)...
- Added null pointer checks & guards in https://thi.ng/wasm-api. This also includes support for structs with fields using Zig-style optional pointers. - Updated the https://thi.ng/wasm-api-bindgen code generator for #TypeScript to produce smaller code for structs using many string fields - Did major ground work on #Zig#WebAssembly bindings of core https://thi.ng/genart-api functionality (see small demo below) - Fixed/updated/simplified time provider logic - Updated the debug time provider with its FPS analytics/visualization overlay, now computing moving min/max and moving average (default period = 200 frames) and the viz is dynamically/smoothly rescaling to current peak - Released new GenArtAPI v0.9.0
As for the Zig/WASM example: This is only interesting from a technical POV, no visuals here! All canvas drawing and parameter declarations/evaluations are done via Zig, using the aforementioned https://thi.ng/wasm-api infrastructure to provide a new API module which can be seamlessly used with the other hybrid WASM API modules, here for DOM creation (https://thi.ng/wasm-api-dom) and to handle Canvas2D drawing (https://thi.ng/wasm-api-canvas).
At the moment, this GenArtAPI WASM module is still a fixed part of this example, but will eventually be extracted & distributed as separate package.
Choose one of the two GUI implementations, then make any parameter changes and you should see the new values applied immediately (btw. the demo is likely not very usable on mobile)...
I'm a bot, now on a new instance at https://front-end.social/! If you're already following, the transition should happen automatically. However, if you have any bookmarked posts, I recommend re-bookmarking the direct links to articles in your browser for safe keeping.
Starting December 15th, the original instance will no longer be active. I'll send a reminder before then.
Really enjoying adding end-to-end tests to Kitten¹ using Playwright² and my own little Kitten controller class for starting/stopping/otherwise interacting with the Kitten server.
Just wrote some that comprehensively test identity creation and authentication for Small Web places:
https://thi.ng/genart-api is already at v0.8.1 now. This latest version includes a new "debug mode" time provider plugin which also collects and computes frame rate statistics (moving average) and injects a canvas visualization overlay (everything configurable). Together with the parameter editor, this is a small, but useful tool to help configuring an artwork and ensure fluid performance on a target device/platform...
https://thi.ng/memoize: Function memoization/caching. Added support for async functions/promises and made existing implementations variadic (and removed fixed arity versions!). This is thanks to a feature request by Hitomi Tenshi...
https://thi.ng/transducers-stats: Functional sequence processing. Added moving minimum/maximum transducers (deque-based to be super efficient) and updated Donchian channel transducer (aka moving min/max bounds) to also benefit from new implementation
There's also ongoing major (re)work of the long-promised 2D/3D mesh implementation. It's still on a private feature branch, but I'm getting closer for initial release...
I got kinda obsessed with mazes recently and made a tool to generate infinite random mazes. I wrote an article about how it works and created animated visualizations of the process.
"What are the effects of component-based architectures? They mean that developers no longer have to know HTML to write HTML. When it comes to accessibility, this is not a good thing. The vast majority of accessibility lives in the markup. Not understanding which elements to use or what is even valid to do in the language is always going to cause accessibility barriers."
Just released #LogTape 0.7.0 with implicit contexts! Now you can automatically include request IDs, user IDs, and more in your logs without passing context manually. Read more about this powerful feature:
👋 I’ve been a developer for about 24 years. The last 10+ I’ve been working in #DevRel roles, currently at LaunchDarkly as a Developer Experience Engineer.
I’m active in the developer community as a speaker, author & organizer. I speak a lot on topics like #WebDev, #JavaScript, #Jamstack & #Serverless. I co-wrote multiple books on Jamstack and run a newsletter on the topic. I organize virtual events on cfe.dev & run the Orlando Devs #meetup.
Thought it might be fun to make a small jsr package that actually has a bit of real-world utility. So here's `isit` as in `isit("Friday") ? "Hooray!" : "Boo!"` which I'll use in our morning work standup bot to send a different Teams meeting link depending on what day it is. Maybe it'll be useful to someone else too. It supports custom Dates and timezone offsets too. Enjoy! https://jsr.io/@phocks/isit
I should probably make a proper #introduction post. So guess now is fine?
Hello! I am Ari Archer. I am an #LGBT 17-year-old #OpenSource#Autistic developer from #Lithuania who likes to mess around with #software, #backend development, and of course my favourite #programming languages: #C (ANSI #C89 is my favourite C standard) and #Python :) I can fuck around in Assembly too, although I tend to think it's not practical in most cases, although I don't do that much low level programming for it to matter, I do enjoy occasional #ProgrammingLanguage development, though.
I have a (shitty) #website on https://ari.lt/ (which I need to re-re-re-write (I need to rewrite it for the 3rd time, the 2nd time was fine I think, but I kinda made it bad now ;-; because it's basically all #JavaScript), I also have a #blog at https://blog.ari.lt/ which I post random #thoughts, #progress, #tutorials, #recipes, etc. on, could I call it #lifestyle content? I don't know. I also like #cats (and I have one named Tina and I love her very much), #cooking, and #researching random things which I yap about to my friends.
I am very pro-#selfhosting and feel like more people should do it, maybe not anything large or mainstream, but at least try to, #learning about things is fun, and self-hosting teaches you a lot, as well as making it easier for people to migrate to #foss easier, which I believe to be a good thing. Most of my beliefs are centred around "by people for people" as in everything should be accessible, open source, and #free as in #freedom.
Greetings, Program! I'm Evan (he/him). I live in the #Portland area.
I'm an Engineering Manager with a technical background in #javascript and #frontend, and I believe putting people first is the key to making good software.
I’m a dad to three very energetic young kids, I’m a #coffee enthusiast, I like playing #videogames, taking #photos, and I enjoy #cooking when I can make the time for it.
Who me? Just a #Maker, IT Consultant and "all-around-#nerd".
I grew up watching Saturday morning cartoons, original #StarTrek re-runs, reading #Fantasy & #SciFi (not SyFy), lots of #Lego and eventually graduated to #RPG and #tabletop gaming.
My first computer was a #Commodore Vic-20 - at school, we learned graphical #LOGO on PETS and Apple IIe's... crashed the Unisys ICON network often before getting my first PC - grudgingly - really wanted an #Amiga.
Eventually, it was time for college - I *thought* I would be heavily involved in the physical aspects of technology, circuit design, and hardware engineering - instead, I gravitated to #programming.
At some point, you write something yourself. In this case, a JavaScript solution to unite blog posts with their interactions on the #socialweb and beyond...
- added two list param types (numeric & string) - added support for composite/nested param types, esp. interesting for custom param types declared by artworks and/or platforms - updated the first (of two) GUI param editors in the reference implementation to support composite params - added new example showcasing custom & composite param types (oscillators)
To explain a bit further: The example defines a custom oscillator parameter type, which itself consists of multiple sub-params to configure waveform, frequency, amplitude etc. Using the GenArtAPI messaging protocol, the external param editor (not knowing anything about the artwork or this custom param type) can still provide GUI widgets to customize the 2 oscillators used... Likewise, the artwork is completely decoupled from how those oscillator values are being computed or how they're customized via the editor...
If you've been avoiding #JavaScript & #TypeScript due to the complexity of the #Node.js ecosystem, give #Deno a try. Everything is simplified and you can start coding right away without having to set up a development environment.
If this was built with a framework the framework wouldn't even be loaded yet. This doesn't even lazy load any JS. There is just so little of it that I load it in <head/>. Each stone is an html element AND each stone placement has to calculate quite a bit before it can move on.
Henlo frens, i have completed my basic studies of HTML and CSS with the help of a local school, now i begin studying Javascript.
But between the JS studies, i want to practice my HTML and CSS skills, what would be the best way to do that?
I believe that trying to clone existing websites would be a cool way to upskill. Do you know of any particular website(s) that i should try and clone as a beginner? I have once worked with cloning amazon.com.
What else can i do as well? I want to focus on styling and structure as well.
Lots of new additions & improvements to the https://thi.ng/genart-api proposal, documentation, the reference implementation, examples and param editors this week:
- added new (12th) parameter type: image maps (supporting grayscale or RGB) - added new example project using an image parameter to create artwork - added code example showing how an art platform (or artwork itself) might define & work with a custom parameter type (example: sine oscillator) - added/updated API docs (https://docs.thi.ng/umbrella/genart-api/) - started documenting API states & transitions (diagram still WIP, forthcoming) - initial documentation of message protocol (for communicating w/ parent window and/or external tooling) - simplified the pluggable time provider implementations (for animation) - updated the reference implementation platform adapter to support all built-in param types - major update GUI param editors, now allowing users to dynamically load & customize externally hosted (compatible!) artworks, and also supporting image params, custom color chooser component...
Hello World! Alex Standiford here. I am a web developer at GoDaddy, who travels full-time in one of two RVs with my two kids, two cats, a dog, and my wife. I mostly talk about #travel, #WordPress, #RVlife and bad puns. Looking forward to meeting y’all!
With zero-overhead bindings to V8 APIs, memory safety through Rust’s ownership model, and great docs, it’s battle-hardened and production-ready. From here on, Rusty V8 will follow Chrome versions for predictable upgrades.
#LogTape v0.6.0, a zero-dependency structured logging library for #JavaScript & #TypeScript, has been released. The main changes include:
• Loggers now can override sinks of their ascendants. • Placeholders in message templates now forgive leading and trailing spaces. • Added LogRecord.rawMessage property. • Built-in text formatters now can be customized.
Today's #FediJam update: pixel graphics by @misnina are in, collectible placement is (probably) finalized. I'm very happy with how this looks now! 🙂
1.5 weekends to go before the jam ends, core gameplay and visuals more or less done, lots of auxiliary stuff left: light story content, sound effects, end screen, title screen and menus, options, credits, touch controls, ...
(Marked sensitive in case you'd like to avoid spoilers)
‣ Add `process` global variable, remove `window` ‣ Improve dep management ‣ Permission system updates ‣ Many stabilizations ‣ Better CommonJS support ‣ Test documentation with `deno test --doc`
I'm looking for a #JavaScript / #NuxtJS developer to help me extend my FastAPI/NuxtJS template (https://github.com/whythawk/full-stack-fastapi-postgresql) to support #ActivityPub. I'm busy with the #FastAPI server. My objective is an open source starter template for developing full federated apps for creator commercial activity (like a personal Etsy or Amazon site) where creators can sell their work & supporters can follow for new product releases. This is a paid project. Contact me direct. #FediHire
Since there has been a huge influx of new users, I decided to write a new #Introduction and actually pin it to my profile. I'm pushing 50 years old and I live in a Red State that is trying to make me illegal. I'm a #pansexual / #bisexual#transgender woman married to a heterosexual cisgender woman who frequently talks about the current hellscape for people like me in my Toots. I'm #NeuroDivergent / #ND which is probably why all of these sentences start with "I". I've worked in #InfoSec for a little over 20 years. I've had lots of roles in #SecEng, #SecOps, and #ThreatManagement. I taught myself #Perl, #Bash, #SQL, and #PowerShell. I'm decent at #JavaScript. I can read #Python and #Ruby. I enjoy automating things and turning manual processes into scripts. I've been the primary #CareGiver to my wife for 8 years since she developed a chronic condition and went on disability. My hobbies including #writing#paranormal short fiction, journaling my #dreams, and playing #PCGames on my laptop and #SteamDeck. I prefer #StarGate over #StarTrek over #StarWars. Still waiting for Amazon to do something, anything with the Stargate property. While we loved the #ArrowVerse including #Stargirl and #SwampThing, in general we prefer #Marvel over #DC. I'm a fan of #Horror / #HorrorFam, #HorrorMovies and #HorrorBooks, especially the existential dread of #CosmicHorror or #LovecraftianHorror. I tend to sympathize with the nameless terrors. I am not a fan of mindless slashers, unrelenting gore, or torture porn. Over-the-top, egregious gore that crosses into the absurd is fine, though, so I am a Sam Raimi fan, obvs. Also, #HorrorComedies are underappreciated. I'm slowly reconnecting with my #Pagan roots. I knew some stuff about #Tarot and had a friend who as a tree a lifetime ago and I'm trying to rekindle that. We've got #Cats and they are our kids. I also happen to love #Frogs, but we don't have any of those.
Unveiling the core gameplay loop of my #FediJam entry. 😀 Think you can do better than me? You're probably right! Prove it next month!
Note: still placeholder graphics, have not even started on presentation except basic animation. I wanted to get the movement nailed down early since it's so core to the experience. This feels about right.
(Gonna be marking these as sensitive in case people want to avoid spoilers.)
My name is Austin and I love my family, Sports, Music, and Tech.
I am a software developer at #PayTheory. At my job currently I work primarily with #Javascript, #React, and #Python. I know some #Swift and hope to publish an app in the AppStore in 2023. I am going to try to #BuildInPublic here.
Finally starting on my #FediJam project today. 😀 Because is it a real deadline if you don't start on the thing halfway through? 😇
This is after an hour or two of getting warmed up again in #threejs. Hand-fudged physics, no graphics yet, but you can guess at the basic gameplay concept. I'm having fun so far!
Acerca de mí: #introduction#presentation ¡Hola! Soy Mónica Gómez, también conocida como Autumn64. Soy una estudiante mexicana de Ingeniería en Sistemas Computacionales, soy una mujer transgénero y soy activista por el movimiento del #Software_Libre.
En redes me dedico a la promoción y difusión del Software Libre, así como de sus ventajas técnicas y éticas desde el punto de vista latinoamericano e hispanohablante.
Esta es mi cuenta principal, y además tengo otras cuentas en el #Fediverso. Si quieres verificar que realmente soy quien digo ser, por favor revisa mi clave pública: https://www.autumn64.xyz/src/es/key.html
It has two fun new shape styles, a bunch of added logos (👋 @pixelfed@joinpeertube@Codeberg@forgejo and more), some advanced options for turbo nerds, and irregularly shaped logos now get better cutouts.
I think this covers most of the feature requests I've received. 😀
There is one thing keeping me from switching to Firefox full time: the Chrome UI sounds extension. It makes a sound every time a new page loads or content updates. It's super helpful as a screen reader user when navigating very complex web apps. I tried repacking it for Firefox, but it won't run without some work. I'm looking at the sourcecode to see if I can make it work, but this is well outside my comfort zone. Anybody have resources for porting extensions from Chrome to Firefox?
I’ve been on here a while but never wrote an #introduction post so here it is.
My name is Mark thought most people call me JR (J.R. not “junior”). I am a believer and follower of Christ. My passion is #software#engineering and I’ve been at it professionally for over 14 years. Though I mostly develop for the web I enjoy working with the #fullstack including the hardware and architecture of it.
haven't done as much coding in d3 as i used to, but i just wanna point out how great it is that we have a data visualisation tool like this that is free and open source. check it out if you haven't already https://d3js.org
I’ve been fascinated by the #web since I first got on the internet when I was a teenager. The idea that anyone could create a website — how cool is that!?
I’ve been a #Mac user even longer (my parents were in education and my mom would bring home her office Mac Classic on the weekends). Being creative with #HyperCard and wanting to make dynamic websites eventually got me into #programming. First with #Perl, later #PHP, and now #JavaScript and #TypeScript. I’ve also had some fun with #C, #ObjectiveC, and #Swift.
For 14 years I worked at a small company that makes the premier CMS for the #AltWeekly press in the US. Now I work on web applications in #React in the far-more corporate world. I also used to co-organize TucsonJS and Tucson React meetups.
I'm a #softwaredev focusing on #javascript & #typescript specifically #deno. Right now, I'm working on a blog called Craig's Deno Diary. I also contribute to a few Deno projects and am taking a break from working in the corporate world.
I have over 20 years of experience in web development, first using Java and recently JavaScript/TypeScript. Before that I was a #journalist for 10 years.
I live in #Maine USA & try to enjoy the beautiful environment here as often as possible.
Some new #passkey capabilities are being added to #Chrome after a careful standardization work by the community. - Hints: allow you to control #authentication UI, especially when you want to focus on security key or cross-device authentication. - Related origin requests: allow passkeys to work on related but different origins. - JSON serialization: simplifies your #JavaScript code with binary encoding and decoding.
There is a fundamental difference between #complexity for the sake of convenience (I can build an entire app quickly. Think #JavaScript framework of the day), vs complexity for the sake of robustness (I can make changes to the app quickly without introducing new bugs. Think #Rust or #Haskell).
When you are not familiar with the tech, both can look the same, but they are not. The latter is actually #simplicity in disguise
I currently work at the Icelandic Met Office as a #GIS Coordinator in #Reykjavik. In general, I help people make maps, find #geodata either with code (#python or #javascript) or with desktop software like #QGIS
I love the outdoors and enjoy hiking, climbing and biking. I've been involved with Icelandic Search & Rescue for many years, both on the frontline (mountain rescue) and as an instructor for new team members.
If I had a bajillion monies and didn't need to work I would spend my life as a muse for everyone I meet. I want to help everyone find their passions and do cool things. I like to help. I'm not sure what hashtag to use for that.
Updated internal state handling of the https://thi.ng/parse parser generators & DSL to define parsers. Seeing a 1.2 - 1.6x speedup of parsing performance in example projects (see project readme for links), especially for larger inputs...
Version 0.5.0 of #LogTape, the zero-dependency #logging library for #Deno, #Node.js, #Bun, edge functions, and browsers, has been released! The main additions include:
• Contexts • ANSI color formatter • Comprehensive docs • A few API conveniences
It’s been years since I’ve used NodeJS and was curious about the current situation. Is Deno a thing? I see they backtracked a bit and now have an NPM compatibility layer (although I don’t mind that). And I think I like the direction with JSR.io. Is Bun alright? I’ve seen some comments saying that it was not ready for v1 yet. Is this going to be like an io.js situation and we will all go back to Node eventually?
Hosting on Deno Deploy just got more performant with beta Web Cache API support: 🚀 sub-millisecond read latency 🚅 multi Gbps write throughput 💾 unbounded storage
Deno 1.46 is not only the last 1.x release, but also one of the biggest: - Simpler CLI - Multi-threaded web servers - HTML, CSS, YAML support in `deno fmt` - Better Node/npm compat (support for playwright, google-cloud, etc.) and much more 👇️
The `datetime` attribute of the #HTML `<time>` may seem complicated: it accepts a lot of formats in order to deal with 1) moments 2) durations 3) timezone offsets.
I've rewritten #Fedify several times and in several languages. The first time it was written in #TypeScript, then #Python, then C#, then back to TypeScript. (It was codenamed FediKit at the time of development.) I settled on TypeScript for the following reasons:
• It has a decent JSON-LD implementation. • Lots of people use it. (I wanted Fedify to be widely used.) • It's type-safe enough.
Even if I were to build Fedify again, I would choose TypeScript.
In the next version of #LogTape, a zero-dependency #logging library for #JavaScript & #TypeScript, contexts will be introduced that allow the same set of properties to be shared across multiple log messages. Thanks to @okikio for collaborating on the design! This feature is available for preview in 0.5.0-dev.60+f819929c.
- Fixed a bug when viewing threads in notification screen. - Implemented setting for CW toots (default collapsed or visible) - Fixed dates - Fixed image viewing - Added help to toot editor - Changed some colors - Updated #curl to 8.9.1 - Added ALT text for image uploads
#LogTape is a logging library for #JavaScript and #TypeScript. It provides a simple and flexible logging system that is easy to use and easy to extend. The highlights of LogTape are:
• Zero dependencies • Designed to be used in libraries as well as apps • Supports virtually every runtime: #Node.js, #Deno, #Bun, edge functions, and browsers • Structured logging • Logger categories (names) are hierarchical • Dead simple sink (destination) interface
This is my 13 year old Acer Aspire One 722-C62kk running the #Linux version of #DOStodon on a current Arch install. I recently learned I can get a new battery for 20€ to revive it. 😊
Hi I'm Daniel, a 37 year old developer and technical lead at @telemetrydeck ! I enjoy long walks along the #datalake, I work in #analytics and #privacy is super important to me! (Which is why I make an analytics service that provably won't collect personal #data). I also love developing in #swift for #iOS and #vapor and I tolerate #javascript :D~
Ich bin zwar noch bis November ausgebucht, aber wie man so schön sagt: Der frühe Vogel fängt den Wurm, also falls jemand für Nov/Dez/Januar ein Projekt in der Pipeline hat und #PHP#Laravel#Svelte#JavaScript#Vue#Livewire Unterstützung braucht, bitte Bescheid sagen!
#Deno and #Bun people are putting an incredible amount of work modernizing server side js.
The energy is reminding me of early day #Python - so many new tools made with proper care behind rather than most of NodeJS ecosystem which is just glued together with band-aids and staples :blobcatgrimacing:
That being said, after working with Deno for the past week it still feels a bit too bleeding edge though it does work with #jupyter!
## Detail The images depict dots representing positions of tones of the Aeolean mode (relative minor) of a #Major#Scale as appears on a standard #guitar#fretboard
The various SVG's show what is meant to be perceived as "the same mode", with select tones missing. It's a basic, "locate what's missing" #Puzzles
### Deficit
I know how to make the SVG "look how" i want enough to satisfy me. I know what I want for the function of the user interaction.
I don't know efficient JavaScript/ #HTML5 to do it
Any libraries that are meant specifically to assist w/ this type of project? There's jQuery UI for example, but I've never messed with it deeply.
Modern #CATMAID enables hundreds of #neuroscience researchers world wide to collaboratively map neuronal circuits in large datasets, e.g., 100 TB or larger, limited only by bandwidth and server-side storage. The goal: to map and analyse a whole brain #connectome.
Running client-side on #javascript and server-side on #django#python#postgresql, it's a pleasure to use–if I may say so–and easy to hack on to extend its functionality with further widgets.
The first minimally viable product was produced in 2007 by Stephan Saalfeld (what we now refer to, dearly, as "Ice Age CATMAID), who demonstrated to us all that the web, and javascript, where the way to go for distributed, collaborative annotation of large datasets accessed piece-wise. See the original paper: https://academic.oup.com/bioinformatics/article-abstract/25/15/1984/210794
PE argument I find irksome: "everyone has js enabled"
Nobody is saying otherwise.
What we are saying is js fails, often, and interactivity should work *before* JS loads (if it even does). That's progressive enhancement. Or 'islands architecture' if you prefer.
fresh #Introduction time because it's been like 2 years since I wrote one!
I'm erin, a transfeminine front end developer (or to steal from @brad_frost front of the front end developer) living in so called Portland, Oregon. I seem to mostly post about mental health, old thinkpads, craft web development, privacy, security, and the death of the world wide web. I post about politics too (sorry about that!). I have a blog at @[email protected] and a I post about books I'm reading on bookwyrm at @[email protected]
ok, time for a big old list of tags that I'll probably update later:
Now that our instance has a higher size limit for toots, time for a re-#introduction. This time with more hashtags!
Hi! I'm Jeff. :blobcatwave:
I've been a software engineer since around 1999 I guess. I started with #WebDev back in the early days of applets, DHTML, and Flash. I've since moved on to #FullStack work on just about anything that has a compiler or an interpreter. I've even recently dabbled in #PCB design and #3DPrinting.
My software specialties are in high performance computing #HPC, #GPGPU, and #ComputationalChemistry. Although I usually enjoy any programming problem with a good challenge to it. I spent waaay too much time in school and got all the degrees in computer science. I still work in #academia part-time writing research software.
My favorite programming languages at the moment are #Rust and #Kotlin. Although, I've spent a lot of time writing #Javascript lately. With the right tooling it's not completely terrible.
#c - what if everything was a pointer #lisp - what if everything was a linked list #haskell - what if everything was a pure function #forth - what if everything was a stack #lua - what if everything was a hash map #erlang - what if everything was immutable #prolog - what if everything was a pattern to match #java - what if everything was a class #rust - what if everything was a memory allocation problem #golang - what if everything != nil #javascript - what if everything was everything
#HowToThing#Epilogue#LongRead: After 66 days of addressing 30 wildly varied use cases and building ~20 new example projects of varying complexity to illustrate how #ThingUmbrella libraries can be used & combined, I'm taking a break to concentrate on other important thi.ngs...
With this overall selection I tried shining a light on common architectural patterns, but also some underexposed, yet interesting niche topics. Since there were many different techniques involved, it's natural not everything resonated with everyone. That's fine! Though, my hope always is that readers take an interest in a wide range of topics, and so many of these new examples were purposefully multi-faceted and hopefully provided insights for at least some parts, plus (in)directly communicated a core essence of the larger project:
Only individual packages (or small clusters) are designed & optimized for a set of particular use cases. At large, though, thi.ng explicitly does NOT offer any such guidance or even opinion. All I can offer are possibilities, nudges and cross-references, how these constructs & techniques can be (and have been) useful and/or the theory underpinning them. For some topics, thi.ng libs provide multiple approaches to achieve certain goals. This again is by design (not lack of it!) and stems from hard-learned experience, showing that many (esp. larger) projects highly benefit from more nuanced (sometimes conflicting approaches) compared to popular defacto "catch-all" framework solutions. To avid users (incl. myself) this approach has become a somewhat unique offering and advantage, yet in itself seems to be the hardest and most confusing aspect of the entire project to communicate to newcomers.
So seeing this list of new projects together, to me really is a celebration (and confirmation/testament) of the overall #BottomUpDesign#ThingUmbrella approach (which I've been building on since ~2006): From the wide spectrum/flexibility of use cases, the expressiveness, concision, the data-first approach, the undogmatic mix of complementary paradigms, the separation of concerns, no hidden magic state, only minimal build tooling requirements (a bundler is optional, but recommended for tree shaking, no more) — these are all aspects I think are key to building better (incl. more maintainable & reason-able) software. IMO they are worth embracing & exposing more people to and this is what I've partially attempted to do with this series of posts...
ICYMI here's a summary of the 10 most recent posts (full list in the https://thi.ng/umbrella readme). Many of those examples have more comments than code...
My life’s work is building Oolie, our family business and Certified #BCorp helping families sleep better with #organic bedding and baby products. I hope you’ll check us out.
In my former career, I was into online learning, creative coding, and data visualization, even publishing a couple of books. I still love that stuff (#DataVis#Processing#p5js#d3js#JavaScript), but that feels like 1M years ago.
Expect to see posts about everything mentioned above!
I'm an open-source enthusiast and self-hosting masochist. Initially a #JavaScript developer, still doing all things web, big #WebAssembly fan, recovering conference addict. I am a #DevRel focusing on #DevEx & OSS communities in particular. Also a staunch advocate of flexible, async remote work.
#LogTape is a logging library for #JavaScript and #TypeScript. It provides a simple and flexible logging system that is easy to use and easy to extend. The highlights of LogTape are:
• Zero dependencies • Designed to be used in libraries as well as apps • Supports virtually every runtime: #Node.js, #Deno, #Bun, edge functions, and browsers • Structured logging • Logger categories (names) are hierarchical • Dead simple sink (destination) interface
Here's my #introductions... I'm into #retrocomputing and #retrocomputers, am a #6502 fan, but I like green spaces and days which not overcast, I like science and #sf - mostly #sfbooks and stories - #computerscience, aka #cs or #compsci, I like #brianeno for his music and his thoughtful writings and funny videos, I write just a little code in #python and #javascript and #assembly and generally spend a lot of time on the internet. Isn't the world a lovely place but in a fine old state though?
^ This is useful for when you're using #Javascript's dynamic capabilities with classes and you want to let #Typescript know about what you're doing.
`AddProperties` takes a class as the first argument and returns a class. Instances of the returned class have the properties that you specify in the second argument as well as all the stuff from the original class.
#Fedify is an #ActivityPub server framework in #TypeScript & #JavaScript. It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.
The key features it provides currently are:
• Type-safe objects for Activity Vocabulary (including some vendor-specific extensions) • #WebFinger client and server • HTTP Signatures • Middleware for handling webhooks • #NodeInfo protocol • #Node.js, #Deno, and #Bun support • CLI toolchain for testing and debugging
If you're curious, take a look at the Fedify website! There's comprehensive docs, a demo, a tutorial, example code, and more:
😅 So I did not fully appreciate the power of hashtags on this place when I wrote my #introduction, so I'm giving it a second go.
• I'm a front-end web developer in Spokane, WA. I work for Red Hat on Ansible Controller using #react, #javascript, #typescript. I don't write so much #CSS here as I have at previous gigs, but, I'm okay at that too…
Fedify is an #ActivityPub server framework in #TypeScript & #JavaScript. It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.
The key features it provides currently are:
Type-safe objects for Activity Vocabulary (including some vendor-specific extensions)
How did we go back to the world of #javascript being an absolute sausage fest - absolute state of this where there are no women in list until #28 (and then only one) - it's almost exclusively white men
Unicopedia Ægypta is a developer-oriented set of #Unicode utilities related to Egyptian hieroglyphs, wrapped into one single app, built with #Electron.
Why do I like it? – Feels cleaner (subjective!). – Easier to grow standard library (no global name clashes). – Namespace imports are faster than property access.
@tante Yes! Especially on the point of react being used in areas HTML + JS work fine. In my side projects I’ve practically sworn off React. The more I learn about options prebaked into JavaScript, the less I value frameworks for a majority of apps. I can’t imagine how many web apps can be rebuilt using WebComponents and CustomEvents and simple custom state management library with less complexity. Worst case, just use Lit or Enhance. #JavaScript#React#WebComponents
I’ve moved recently, time for a (re)introduction — and a heartfelt Thank You! to @ben
I am a writer, copywriter, online editor, and I generally write a lot; I design websites with plain HTML/CSS/JS or using WordPress and other CMS; occasionally I work as a speaker, podcast producer, sound designer — to mention the most important bits.
ich bin umgezogen und erst seit ein paar Stunden hier auf dem neuen Server, deswegen eine kurze Vorstellung — und ein herzliches Dankeschön an @ben
Ich bin Texter und Online-Redakteur, schreibe auch sonst viel; ich gestalte Websites in HTML, mit WordPress oder anderen CMS, arbeite außerdem gelegentlich als Sprecher, Podcast-Produzent, Sounddesigner – um mal die wesentlichen Dinge genannt zu haben.
#Introduction Greetings! I'm a #software developer in the world of #dotnet and #JavaScript. Worth mentioning - a degree in game dev and table tennis coaching credentials.
I won a Hackathon, and once increased sales by 300%. In my timeline, you'll mostly find reflections on programming, as it is my bread and butter, as my odyssey into open-source continues.
Here to exchange ideas, learn, and share wisdom. Open for spirited discussions. Always game for a chat, so feel free to reach out.
Hey Fediverse! I plan to make this profile a notebook of #TIL bits about #webdev, #javascript, #software and #hardware. Probably the odd toot about digital privacy, free speech and computer history. Will try to help the community as best as I can!
Je profite de la vague d'arrivage pour faire mon #introduction que je n'ai jamais vraiment faite finalement :)
Je suis dev, principalement web depuis maintenant une douzaine d'années. J'ai commencé avec #PHP et la stack #WAMP comme beaucoup, un petit passage forcé et douloureux par .NET et maintenant principalement du #JavaScript (avec Vue) #NodeJS et un peu de #Mule
Au delà de tout ça, j'aime les jeux vidéos (BotW et TotK sont en haut de ma liste), le #cinéma, la #moto et les bouquins :)
Ahora que parece que la migración a mi instancia se ha completado es el turno de presentarme...
Me gano la vida como programador #Android tanto con #Kotlin como con #Java, aunque también "domino" otros lenguajes como #PHP o #Javascript y me defiendo con #Swift, #C y otros muchos. También me peleo con mi servidor, y poco a poco voy pasándome al #selfhosting.
Me gusta la #música (casi cualquier género), el #cine (sobre todo terror y ciencia-ficción) y las #series (ciencia-ficción mayormente).
I'm also a music nerd and #HotSauce lover and recently got back into the habit of reading #books. #VideoGames are also something that is dear to my heart.
Feel free to reach out if you want to talk about any of these topics. Welcome to the #FediVerse!
So, I'm working on a thing for #rstats 📦 {leafem}... Add a geojson layer to a leaflet map and then add a layer selection drop-down menu referencing that layer. Let's us color our geometries according to selected features. Saves a lot of space as we only need to add geometries once and then have #JavaScript take care of the coloring. See https://twitter.com/TimSalabim3/status/1629180151224213510 for the journey so far.
Narrat 🐀 has been getting a bit of attention again so here's another intro of the engine. I think most people who might be interested in this don't actually know about it so I'm hoping to reach more people for once.
Narrat is a game engine I created to easily make interactive fiction games (narrative RPGs, visual novels etc) for desktop or browser.
I’ve worked on this game engine for some time, mostly to help friends make their games. It’s been used on a few small games, and some bigger ones in progress.
I'm a Product Designer at Netflix where I've most recently been working on design systems, but I’ve worked on multiple aspects of the service in my nearly 10 years there. I’m both a designer and a developer — I mostly work with #HTML, #CSS, and #JavaScript.
I’m also a husband and a father.
I used to live in The Bay (San Francisco) and now I live in The Land (Cleveland).
From 1 January 2023, I plan to #buildInPublic my experimental web framework. My aim is to have a framework that is suitable for real-time MPA while load instantly without any setup or compilation. I will use #nusa hashtag to post my progress 😊
I’m matt and I spend a lot of my time building things that people use on the internet. I’m always down for #Frontend chat on all things #JavaScript, #React, #WebAssembly etc.
I’m part scientist🔭🥼 (in another life), part maker🔩🪛, part runner🏃🏽♀️🏃♂️, part climber🧗🧗♂️… the list goes on.
I’m also super curious about how #ActivityPub works and the #Fediverse, so now that I’ve been afforded some time off I may take a deeper look 👀
#Introduction: I’m Lucas, bi software developer and Wikimedian from Berlin. I like writing tools for #Wikimedia#Toolforge, mainly in #Python, though I’m also working on a #JavaScript library to use the MediaWiki API; on the projects, I’m mainly active on #Wikidata and #WikimediaCommons. I play the #piano and occasionally live-stream that or post recordings. I’m making my way through #Tolkien’s The History of Middle-earth. I speak German, English and some Portuguese. Nice to meet y’all 🙂
Celebrating my past experimental #projects about state machine #DSL that can generate both code and diagram. But alas, I don't have any single project in need that DSL so continuing it is kinda hard. It's written in #Rust but I have 2 other prototype written in #Nim (require compilation) and #Javascript (pure runtime, no compilation).
If anyone want to collaborate or continue the effort, feel free to ask me. I have some stuff in mind about it. https://github.com/DrSensor/scdlang
I'm a software developer in the #boston area that's primarily focused on Web Players. Things like Video.js and media-chrome. I'm also focused on #a11y and accessibility of the players, particularly in the realm of captions, as the current editor of WebVTT and a member of the Timed Text Working Group at the W3C. I also enjoy writing #javascript.
I'm an avid reader, though, mostly consume books as audiobooks. There's a lot of #scifi in there, but also Fantasy, and recently I've been trying to alternate non-fiction in there too. I also watch lots of movies and TV. And not to mention manga and anime.
My name is Stephen Bannasch and I think kindness and curiousity are important.
Used Ruby for all sorts of projects since 2008. Also created very high performance JavaScript model-based visualizations. Recently been digging into machine learning ... which seems both fascinating and creepy. Hardware projects over the years involving sensors and microcontrollers, along with digital and analog design.
Bon. J'ai dû remigrer d'instance pour la 2e fois en 10 jours. Donc revoilà mon #introduction.
Je parle peu et repartage pas mal ce qui me semble intéressant / important. 🌌 J'aime découvrir des choses dans tous les pans scientifiques, particulièrement en #linguistique, #astronomie, #sociologie.
💻 Je code des trucs #JavaScript en faisant gaffe à l'accessibilité et je garde un œil sur le #libre et les questions de #privacy. Et je tripatouille #Linux.
What’s up party people. I’m Ryosuke, I work at #PlayStation prototyping new experiences across console, #VR, and more. Before that I ran a #cannabis publication and studio for over 10 years.
My main hobbies are #classicalguitar and the ancient game #go or #baduk -- I'm 1-5k, always looking for people who want to play in person regardless of level!
Hi, I am known as dunkelstern almost everywhere, in real life just call me “jo”.
I am a backend-developer using #python and #javascript by day, but i am living on github by night too and working on one of those unfinished projects there (#rust, #c, python and #cad)
Hi, ich bin fast überall dunkelstern, im echten leben sagen die leute meistens Jo.
Ich arbeite als backend-entwickler mit #python und #javascript, bin aber auch privat auf github zuhause und kippe dort meine drölf millionen unfertige projekte ab (#rust, #c, python und #cad)
Wenn ich nicht an meinem #smarthome bastel dann wahrscheinlich an irgend nem #3d-drucker oder sonstigem #elektronik gebastel.
Am wochenende findet ihr mich im habitat in augsburg, meinem #makerspace