H'mmm... seeing that #Scittle sits on top of #Javascript, I can cheat and use Javascript's trigonometry functions.
That's cheating, isn't it?
I'm not feeling well enough to do Hard Sums.
H'mmm... seeing that #Scittle sits on top of #Javascript, I can cheat and use Javascript's trigonometry functions.
That's cheating, isn't it?
I'm not feeling well enough to do Hard Sums.
Hey #FediHire,
ich suche für ein internes Projekt eine Selbstständige / #Freelancer Person für die Entwicklung eines Webinterface auf Grundlage einer API.
Dies sollte (bzw. muss leider) mit #JavaScript umgesetzt werden. Jedoch hätte ich gerne so wenig Framework(s) und sonstige Abhängigkeiten wie möglich.
Bei Interesse gerne melden ' title=':)
' class='emoji' src='https://api.iconify.design/)
/BoostOK.svg' /> #fedihire_de
We're excited to announce the release of BotKit 0.3.0! This release marks a significant milestone as #BotKit now supports #Node.js alongside #Deno, making it accessible to a wider audience. The minimum required Node.js version is 22.0.0. This dual-runtime support means you can now choose your preferred #JavaScript runtime while building #ActivityPub #bots with the same powerful BotKit APIs.
One of the most requested features has landed: poll support! You can now create interactive polls in your #bot messages, allowing followers to vote on questions with single or multiple-choice options. Polls are represented as ActivityPub Question
objects with proper expiration times, and your bot can react to votes through the new onVote
event handler. This feature enhances engagement possibilities and brings BotKit to feature parity with major #fediverse platforms like Mastodon and Misskey.
// Create a poll with multiple choicesawait session.publish(textWhat's your favorite programming language?
, { class: Question, poll: { multiple: true, // Allow multiple selections options: ["JavaScript", "TypeScript", "Python", "Rust"], endTime: Temporal.Now.instant().add({ hours: 24 }), },});// Handle votesbot.onVote = async (session, vote) => { console.log(</span><span>${</span><span>vote</span><span>.</span><span>actor</span><span>}</span><span> voted for "</span><span>${</span><span>vote</span><span>.</span><span>option</span><span>}</span><span>"
);};
The web frontend has been enhanced with a new followers page, thanks to the contribution from Hyeonseo Kim (@gaebalgom)! The /followers
route now displays a paginated list of your bot's followers, and the follower count on the main profile page is now clickable, providing better visibility into your bot's audience. This improvement makes the web interface more complete and user-friendly.
For developers looking for alternative storage backends, we've introduced the SqliteRepository
through the new @fedify/botkit-sqlite
package. This provides a production-ready SQLite-based storage solution with ACID compliance, write-ahead logging (WAL) for optimal performance, and proper indexing. Additionally, the new @fedify/botkit/repository
module offers MemoryCachedRepository
for adding an in-memory cache layer on top of any repository implementation, improving read performance for frequently accessed data.
This release also includes an important security update: we've upgraded to #Fedify 1.8.8, ensuring your bots stay secure and compatible with the latest ActivityPub standards. The repository pattern has been expanded with new interfaces and types like RepositoryGetMessagesOptions
, RepositoryGetFollowersOptions
, and proper support for polls storage through the KvStoreRepositoryPrefixes.polls
option, providing more flexibility for custom implementations.
We're excited to announce the release of BotKit 0.3.0! This release marks a significant milestone as #BotKit now supports #Node.js alongside #Deno, making it accessible to a wider audience. The minimum required Node.js version is 22.0.0. This dual-runtime support means you can now choose your preferred #JavaScript runtime while building #ActivityPub #bots with the same powerful BotKit APIs.
One of the most requested features has landed: poll support! You can now create interactive polls in your #bot messages, allowing followers to vote on questions with single or multiple-choice options. Polls are represented as ActivityPub Question
objects with proper expiration times, and your bot can react to votes through the new onVote
event handler. This feature enhances engagement possibilities and brings BotKit to feature parity with major #fediverse platforms like Mastodon and Misskey.
// Create a poll with multiple choicesawait session.publish(textWhat's your favorite programming language?
, { class: Question, poll: { multiple: true, // Allow multiple selections options: ["JavaScript", "TypeScript", "Python", "Rust"], endTime: Temporal.Now.instant().add({ hours: 24 }), },});// Handle votesbot.onVote = async (session, vote) => { console.log(</span><span>${</span><span>vote</span><span>.</span><span>actor</span><span>}</span><span> voted for "</span><span>${</span><span>vote</span><span>.</span><span>option</span><span>}</span><span>"
);};
The web frontend has been enhanced with a new followers page, thanks to the contribution from Hyeonseo Kim (@gaebalgom)! The /followers
route now displays a paginated list of your bot's followers, and the follower count on the main profile page is now clickable, providing better visibility into your bot's audience. This improvement makes the web interface more complete and user-friendly.
For developers looking for alternative storage backends, we've introduced the SqliteRepository
through the new @fedify/botkit-sqlite
package. This provides a production-ready SQLite-based storage solution with ACID compliance, write-ahead logging (WAL) for optimal performance, and proper indexing. Additionally, the new @fedify/botkit/repository
module offers MemoryCachedRepository
for adding an in-memory cache layer on top of any repository implementation, improving read performance for frequently accessed data.
This release also includes an important security update: we've upgraded to #Fedify 1.8.8, ensuring your bots stay secure and compatible with the latest ActivityPub standards. The repository pattern has been expanded with new interfaces and types like RepositoryGetMessagesOptions
, RepositoryGetFollowersOptions
, and proper support for polls storage through the KvStoreRepositoryPrefixes.polls
option, providing more flexibility for custom implementations.
Hey #FediHire,
ich suche für ein internes Projekt eine Selbstständige / #Freelancer Person für die Entwicklung eines Webinterface auf Grundlage einer API.
Dies sollte (bzw. muss leider) mit #JavaScript umgesetzt werden. Jedoch hätte ich gerne so wenig Framework(s) und sonstige Abhängigkeiten wie möglich.
Bei Interesse gerne melden ' title=':)
' class='emoji' src='https://api.iconify.design/)
/BoostOK.svg' /> #fedihire_de
I don’t normally have a drink on a Monday night. But after weeks of off and on work over the summer, I finally helped a friend launch his site. I am not a #JavaScript or #React programmer, so this was hard for me.
I modified my whiskey bottle when I poured my drink.
#alc #programming
I don’t normally have a drink on a Monday night. But after weeks of off and on work over the summer, I finally helped a friend launch his site. I am not a #JavaScript or #React programmer, so this was hard for me.
I modified my whiskey bottle when I poured my drink.
#alc #programming
Wow! You know that #Web#Tech is getting really good when you are able to replace significant amounts of #JavaScript with a few lines of #HTML and #CSS. Best part is the fact that you get #a11y out of the box with native widgets 🙌
A few examples: <dialog closedby="any">
, stylable <select>
and even HTML autocomplete/typeahead using the <datalist>
.
Wow! You know that #Web#Tech is getting really good when you are able to replace significant amounts of #JavaScript with a few lines of #HTML and #CSS. Best part is the fact that you get #a11y out of the box with native widgets 🙌
A few examples: <dialog closedby="any">
, stylable <select>
and even HTML autocomplete/typeahead using the <datalist>
.
I like this quote. There is so much meaning in it.
“People are getting sick of frameworks. All the JavaScript frameworks are so… what do you call it, like [un]wieldy. It takes so much work to just maintain this code, and then it updates to a new version, you need to change everything. PHP just stays the same and works.”
https://thenewstack.io/developers-rail-against-javascript-merchants-of-complexity/
I like this quote. There is so much meaning in it.
“People are getting sick of frameworks. All the JavaScript frameworks are so… what do you call it, like [un]wieldy. It takes so much work to just maintain this code, and then it updates to a new version, you need to change everything. PHP just stays the same and works.”
https://thenewstack.io/developers-rail-against-javascript-merchants-of-complexity/
Today I learned that regular expressions have a size limit and you get a “regular expression too large” error if you go over it.
Still trying to find some definitive documentation on what that size limit is in v8/latest Node.js.
How to build a rest web app using javascript
https://www.freecodecamp.org/news/javascript-fetch-api-for-beginners/
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
OK, so here’s likely the simplest possible example demonstrating:
• The same route, implemented as both a Kitten JavaScript Page (.page.js) and as a Kitten Markdown Page (.page.md)
• How to persist to the default Kitten JSDB¹ database.
(That first line with the nullish coalescing operator creates a “table” on the database with a default value for the count if it doesn’t already exist.)
¹ https://kitten.small-web.org/tutorials/persistence/
#Kitten #SmallWeb #web #dev #JavaScript #HTML #Markdown #example #comingSoon
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
A space for Bonfire maintainers and contributors to communicate