I was trying to show off my darling little Raspi to my extended family but nobody was impressed. So my #GratefulForYou nod today goes out to all my Fedi friends who enjoy and delight in this kind of stuff. And thank you for always teaching me new things 🥹
 
      
  
            I was trying to show off my darling little Raspi to my extended family but nobody was impressed. So my #GratefulForYou nod today goes out to all my Fedi friends who enjoy and delight in this kind of stuff. And thank you for always teaching me new things 🥹
I was trying to show off my darling little Raspi to my extended family but nobody was impressed. So my #GratefulForYou nod today goes out to all my Fedi friends who enjoy and delight in this kind of stuff. And thank you for always teaching me new things 🥹
As fascism descends, you are going to need easy to access and use alternatives to Big Tech (aka Fascist Tech).
So maybe bookmark the Chatons collective site initiated by our friends at Framasoft with hosted versions of free-software services for collaborative writing, video conferencing, scheduling appointments, collaborative spreadsheets, file sharing, picture sharing, etc.
https://entraide.chatons.org/en/
#chatons #framasoft #alternatives #SmallTech #BigTech #technoFascism #selfDefense #tools #tech #collaborativeWriting #videoConferencing #scheduling #collaborativeSpreadsheet #fileSharing #pictureSharing #postItBoard #linkShortener #secureTextShraing #hosted #online #web
As fascism descends, you are going to need easy to access and use alternatives to Big Tech (aka Fascist Tech).
So maybe bookmark the Chatons collective site initiated by our friends at Framasoft with hosted versions of free-software services for collaborative writing, video conferencing, scheduling appointments, collaborative spreadsheets, file sharing, picture sharing, etc.
https://entraide.chatons.org/en/
#chatons #framasoft #alternatives #SmallTech #BigTech #technoFascism #selfDefense #tools #tech #collaborativeWriting #videoConferencing #scheduling #collaborativeSpreadsheet #fileSharing #pictureSharing #postItBoard #linkShortener #secureTextShraing #hosted #online #web
Sneak peek into the new, automated, Gaza Verified sign up, scheduling, and verification process.
The one-minute video shows the whole process in action.
Unless I find some last-minute bugs, this will be launching today and @joynewacc and I can restart validations this week with a process that means I spend one hour a day on it instead of the whole day (I’ve automated everything I was previously doing manually).
#GazaVerified #Gaza #Palestine #Mastodon #fediverse #Jitsi #Kitten #SmallWeb #SmallTech
Sneak peek into the new, automated, Gaza Verified sign up, scheduling, and verification process.
The one-minute video shows the whole process in action.
Unless I find some last-minute bugs, this will be launching today and @joynewacc and I can restart validations this week with a process that means I spend one hour a day on it instead of the whole day (I’ve automated everything I was previously doing manually).
#GazaVerified #Gaza #Palestine #Mastodon #fediverse #Jitsi #Kitten #SmallWeb #SmallTech
I haven’t added an example of how you implement migrations with Kitten’s¹ built-in JSDB database² yet but here’s one that I just used when renaming a field (property) in a table (JavaScript object) from “account” to “data” that illustrates the general granular approach you should take within persisted instances of JavaScript classes.
This is, of course, an advanced use case of the built-in JavaScript database that all Kitten apps have.
Kitten is simple for simple use cases. So check out the Persistence tutorial, for example, to see how easy it is to get started with JSDB in Kitten:
https://kitten.small-web.org/tutorials/persistence/
And see the Database App Modules tutorial for a more advanced usage where you persist instances of JavaScript classes and have full type safety:
https://kitten.small-web.org/tutorials/database-app-modules/
¹ https://kitten.small-web.org
² https://codeberg.org/small-tech/jsdb
#Kitten #SmallWeb#SmallTech #web #dev #persistence#JavaScript #database #JavaScriptDatabase #authoring #migrations
 
      
  
                            
                        
                         
      
  
                            
                        
                        It’s not fair to compare a state-of-the-art-AI-assisted proprietary tool from a trillion-dollar corporation with a hand-coded free and open tool from a small not-for-profit cooperative.
(The latter works.)
https://github.com/orgs/community/discussions/170758#discussioncomment-14233260
#BigTech#AI #bullshit#GitHub#SmallTech #craft#Codeberg#Forgejo
I’m speaking at Defuse – Design For Use – at The Sugar Club in Dublin on November 10th at 7PM.
The theme is “Reclaiming Design: Taking Back Purpose in an Automated Age” and my talk’s titled “Think small.”
It’s first come, first served, so mark your calendars and show up early (and find me and say hi if you do!) :)
#ThinkSmall #DefuseDublin #IXDA #IXDADublin #SmallTech #SmallWeb #events #Dublin #Ireland #tech #design #ethics
🎶 One of these things is not like the other…🎶
Can you spot the difference kids?
#SmallWeb #SmallTech #BigWeb #BigTech #LinkedIn #PersonalWebSite
I’m speaking at Defuse – Design For Use – at The Sugar Club in Dublin on November 10th at 7PM.
The theme is “Reclaiming Design: Taking Back Purpose in an Automated Age” and my talk’s titled “Think small.”
It’s first come, first served, so mark your calendars and show up early (and find me and say hi if you do!) :)
#ThinkSmall #DefuseDublin #IXDA #IXDADublin #SmallTech #SmallWeb #events #Dublin #Ireland #tech #design #ethics
Coming soon (likely this afternoon, I’m writing tests and docs and updating examples as we speak)…
This is the sort of thing you’ll be able to do with Markdown pages. Just pop any arbitrary JavaScript you want in the new script block in the front matter and then import and use components as well as plain old JavaScript tagged template variable interpolation (not shown in this example) inside your Markdown.
The screen has all the code (sans the end of the last line of CSS and the closing tags for the
Rewriting the Windows section of Kitten’s installation instructions.
Update: it’s live now.
#Kitten #SmallWeb #SmallTech #web #dev #HTML #CSS #JavaScript #NodeJS #FOSS #tech #Windows #Microsoft #israel #genocide #ethnicCleansing #apartheid #settlerColonialism #Palestine #Gaza #WestBank #StopIsrael #StopTheGenocide #BoycottDivestmentSanctions #BDS #FreePalestine
The new integrated Markdown parser I’ve been implementing in Kitten has been kicking my ass for the past few weeks but I think I finally have it fully working and seamlessly so. Expect a new release this/next week that brings the parsing of Markdown pages (.page.md files) in your apps up to the standard of the recently-improved runtime Markdown parsing in Kitten HTML tagged-template strings (within <markdown>…</markdown> blocks).
The coolest thing is I was able to implement this without introducing any new syntax. In fact, I was able to simplify things so that you can now add arbitrary JavaScript to your Markdown pages within a multi-line script block in the YAML front matter (script: |) and use JavaScript string interpolation syntax in your Markdown (and, of course, Kitten components and conditionals, which, themselves, rely on string interpolation).
The only place where you have to deviate from standard Markdown in your Markdown pages is if you have JavaScript string interpolations or Kitten components/conditionals in code fences within your Markdown. In that case, you’ll have to escape them (e.g., <\${Component} />, \<if \${something}>something\</if>, etc.). And, to be fair, the person most impacted by this is likely me as the Kitten documentation at https://kitten.small-web.org is written in Kitten so I had a lot of escaping to do. But for any other use case, it means that things should just work and work exactly as they do in JavaScript pages (page.js files).
Anyway, so this is going to be a breaking change so I thought I’d give you (the three of you playing with Kitten right now?) a heads up. Of course, I’ll be updating the documentation to reflect all this.
(Remember, Kitten is in pre-release and it’s the framework I’m building/using to create Catalyst – the Small Web hosting solution – and Yarn – a small web – peer to peer – personal site app. So Kitten isn’t the means, not the end. And, at least until the Version 1 API freeze, things can and will break. That said, there’s nothing stopping you from playing with it now and, to be fair, at this point, such breaking changes should become rarer and rarer).
 💕
💕
#Kitten #SmallWeb#SmallTech #web #dev#Markdown#JavaScript#HTML#CSS#JavaScript#NodeJS
Bloody hell, finally, I think I’m done with the Markdown support rewrite in Kitten.
The Markdown rule for interpreting four spaces as code fences has been the biggest pain in my neck during this whole ordeal but, bitching aside, it means the parser is now more accurate and thus stronger for it.
If all goes well, expect a Monday release :)
 💕
💕
#Kitten #SmallWeb#SmallTech #web #dev#Markdown#HTML#CSS#JavaScript#NodeJS
The new integrated Markdown parser I’ve been implementing in Kitten has been kicking my ass for the past few weeks but I think I finally have it fully working and seamlessly so. Expect a new release this/next week that brings the parsing of Markdown pages (.page.md files) in your apps up to the standard of the recently-improved runtime Markdown parsing in Kitten HTML tagged-template strings (within <markdown>…</markdown> blocks).
The coolest thing is I was able to implement this without introducing any new syntax. In fact, I was able to simplify things so that you can now add arbitrary JavaScript to your Markdown pages within a multi-line script block in the YAML front matter (script: |) and use JavaScript string interpolation syntax in your Markdown (and, of course, Kitten components and conditionals, which, themselves, rely on string interpolation).
The only place where you have to deviate from standard Markdown in your Markdown pages is if you have JavaScript string interpolations or Kitten components/conditionals in code fences within your Markdown. In that case, you’ll have to escape them (e.g., <\${Component} />, \<if \${something}>something\</if>, etc.). And, to be fair, the person most impacted by this is likely me as the Kitten documentation at https://kitten.small-web.org is written in Kitten so I had a lot of escaping to do. But for any other use case, it means that things should just work and work exactly as they do in JavaScript pages (page.js files).
Anyway, so this is going to be a breaking change so I thought I’d give you (the three of you playing with Kitten right now?) a heads up. Of course, I’ll be updating the documentation to reflect all this.
(Remember, Kitten is in pre-release and it’s the framework I’m building/using to create Catalyst – the Small Web hosting solution – and Yarn – a small web – peer to peer – personal site app. So Kitten isn’t the means, not the end. And, at least until the Version 1 API freeze, things can and will break. That said, there’s nothing stopping you from playing with it now and, to be fair, at this point, such breaking changes should become rarer and rarer).
 💕
💕
#Kitten #SmallWeb#SmallTech #web #dev#Markdown#JavaScript#HTML#CSS#JavaScript#NodeJS
The new integrated Markdown parser I’ve been implementing in Kitten has been kicking my ass for the past few weeks but I think I finally have it fully working and seamlessly so. Expect a new release this/next week that brings the parsing of Markdown pages (.page.md files) in your apps up to the standard of the recently-improved runtime Markdown parsing in Kitten HTML tagged-template strings (within <markdown>…</markdown> blocks).
The coolest thing is I was able to implement this without introducing any new syntax. In fact, I was able to simplify things so that you can now add arbitrary JavaScript to your Markdown pages within a multi-line script block in the YAML front matter (script: |) and use JavaScript string interpolation syntax in your Markdown (and, of course, Kitten components and conditionals, which, themselves, rely on string interpolation).
The only place where you have to deviate from standard Markdown in your Markdown pages is if you have JavaScript string interpolations or Kitten components/conditionals in code fences within your Markdown. In that case, you’ll have to escape them (e.g., <\${Component} />, \<if \${something}>something\</if>, etc.). And, to be fair, the person most impacted by this is likely me as the Kitten documentation at https://kitten.small-web.org is written in Kitten so I had a lot of escaping to do. But for any other use case, it means that things should just work and work exactly as they do in JavaScript pages (page.js files).
Anyway, so this is going to be a breaking change so I thought I’d give you (the three of you playing with Kitten right now?) a heads up. Of course, I’ll be updating the documentation to reflect all this.
(Remember, Kitten is in pre-release and it’s the framework I’m building/using to create Catalyst – the Small Web hosting solution – and Yarn – a small web – peer to peer – personal site app. So Kitten isn’t the means, not the end. And, at least until the Version 1 API freeze, things can and will break. That said, there’s nothing stopping you from playing with it now and, to be fair, at this point, such breaking changes should become rarer and rarer).
 💕
💕
#Kitten #SmallWeb#SmallTech #web #dev#Markdown#JavaScript#HTML#CSS#JavaScript#NodeJS
Ppl of Mastodon. Please help educate the normies about independent, small tech and self hosting. Not only fancy stuff like docker/VS etc and home servers, but cheap shared webspace online, small CMS, wikis, favourite federated or OS apps, (mine are Masto, Lemmy, Grav, Jekyll, Ghost and others). Introduce them to what is actually out here. Try not to expect total purity! They want to be free, not join a cult 😎😇
#smalltech #smolweb #selfhosting #freeweb #academia #academicchatter
🥳 New Kitten Release
Housekeeping:
• Updated runtime version to Node version 22.18.0 (latest LTS).
 • Removed --experimental-global-customevent in node launch command (as CustomEvent is no longer behing the CLI flag since Node v19.0.0)
 • Renamed --experimental-loader flag to --loader as the experimental prefix is no longer required.
Enjoy!
 💕
💕
#Kitten#KittenRelease #SmallWeb#SmallTech #web #dev#HTML#JavaScript#CSS#NodeJS
Ah, and also, forgot to mention this change:
Improved:
• Debugging your Kitten app is now easier when you run it using `INSPECT=true kitten …` as the Node runtime is launched using the `--inspect-brk` tag instead of the `--inspect` tag. This means that execution will wait for your debugger (e.g., Chromium’s DevTools at `chrome://inspect`, etc.) to connect before starting the server. This makes it possible to hit breakpoints that might previously have been impossible to reach as they occured before you had a chance to run the debugger.
Full change log:
https://codeberg.org/kitten/app/src/branch/main/CHANGELOG.md#2025-08-12
#Kitten #SmallWeb #SmallTech #NodeJS #debugger #debugging #web #dev #JavaScript
 
      
  
             
      
  
                            
                        
                         
      
  
             
      
  
              
           
      
  
                            
                        
                        ![Screenshot: three windows: left side: Source of index.page.md, top-right browser showing running web app, bottom-right, source of Button and Reactions components.
Contents of windows:
index.page.md:
---
title: An interactive markdown page
script: |
  import Reaction from './Reaction.fragment.js'
  // Initialise database if necessary.
  kitten.db.reactions ??= {}
  kitten.db.reactions.Heart ??= 0
  kitten.db.reactions.Confetti ??= 0
  kitten.db.reactions.Smiley ??= 0
  let page
  export function onConnect (data) {
    page = data.page
  }
  export function onReaction (data) {
    kitten.db.reactions[data.type]++
    page.send(kitten.html`<${Reaction} />`)
  }
---
<page css>
# Hello!
While this is a __markdown__ page, I can easily layer interactivity by adding a simple component in a script block.
## Reactions{id=your-reactions}
<${Reaction} />
Browser (output):
Hello!
While this is a markdown page, I can easily layer interactivity by adding a simple component in a script block.
Reactions
Heart button: 5
Confetti button: 4
Smiley button: 3](https://s3-eu-central-1.amazonaws.com/mastodon-aral/media_attachments/files/115/049/184/562/940/121/original/3683dc4fa5099f6b.png) 
      
  
                            
                        
                         
      
  
                            
                        
                        