#TypeScript

Deno's avatar
Deno

@[email protected]

Deno 2.2 was scheduled to be released tomorrow but we're slipping the release until next week to complete the V8 upgrade to 13.4

Deno's avatar
Deno

@[email protected]

Run Rust (left) in JavaScript (right) via wasm

deno.com/blog/intro-to-wasm

Deno's avatar
Deno

@[email protected]

Deno 2.2 was scheduled to be released tomorrow but we're slipping the release until next week to complete the V8 upgrade to 13.4

Deno's avatar
Deno

@[email protected]

Oracle justified its JavaScript trademark by claiming Node.js — now it wants that ignored

deno.com/blog/deno-v-oracle2

Deno's avatar
Deno

@[email protected]

Oracle justified its JavaScript trademark by claiming Node.js — now it wants that ignored

deno.com/blog/deno-v-oracle2

Deno's avatar
Deno

@[email protected]

Oracle justified its JavaScript trademark by claiming Node.js — now it wants that ignored

deno.com/blog/deno-v-oracle2

Deno's avatar
Deno

@[email protected]

Oracle justified its JavaScript trademark by claiming Node.js — now it wants that ignored

deno.com/blog/deno-v-oracle2

Deno's avatar
Deno

@[email protected]

Oracle justified its JavaScript trademark by claiming Node.js — now it wants that ignored

deno.com/blog/deno-v-oracle2

joschi's avatar
joschi

@[email protected]

Dear , what’s out there for , preferably with support for , , and ?
I know temporal.io and dbos.dev. What else have you got?

Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

Tutorial: publishing ESM-based npm packages with TypeScript
2ality.com/2025/02/typescript-

Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

Tutorial: publishing ESM-based npm packages with TypeScript
2ality.com/2025/02/typescript-

TJ Draper's avatar
TJ Draper

@[email protected]

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?).

The worst is easily Javascript.

TJ Draper's avatar
TJ Draper

@[email protected]

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?).

The worst is easily Javascript.

Jons Mostovojs's avatar
Jons Mostovojs

@[email protected] · Reply to alexandra's post

@xandra I'm so happy that someone's doing what I wanted to[1]. I'd be happy to write as well as contribute during review process if someone needs contributions.

Sadly, I've decided to post what I have worked on for in my blog, but in the spirit of 5th code jam[2], I could write a how-to article about setting up swarms of virtual machines on .

Alternatively, I can write an entry-level article about how to archive web pages and scrape stuff easily with (ugh) and/or .

Even more alternatively, as the most "good-interenetey" option, I can write an article about how and why to use for team and community management: guidelines, topic structures, etc.

[1]: social.doma.dev/@jonn/11220204
[2]: 32bit.cafe/~xandra/events/code

Deno's avatar
Deno

@[email protected]

JSR is now openly governed — meet its board members and check out its governance charter 👇

deno.com/blog/jsr-open-governa

Julian Fietkau's avatar
Julian Fietkau

@[email protected]

Made a little bit of progress on my project yesterday. Spun my wheels testing a few ORMs and running into compatibility problems with each of them. By the time I went to bed, the preferences page was capable of storing and loading account-local form data for the first time. 🥳

For this project, when progress looks slow from the outside, it's because I'm learning the ecosystem pretty much from scratch. Not letting myself get discouraged. 🙂

Julian Fietkau's avatar
Julian Fietkau

@[email protected]

Made a little bit of progress on my project yesterday. Spun my wheels testing a few ORMs and running into compatibility problems with each of them. By the time I went to bed, the preferences page was capable of storing and loading account-local form data for the first time. 🥳

For this project, when progress looks slow from the outside, it's because I'm learning the ecosystem pretty much from scratch. Not letting myself get discouraged. 🙂

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

重み付きランダム選択関数の作り方 (TypeScriptで実装)
qiita.com/ooyy0121/items/6783e

Deno's avatar
Deno

@[email protected]

Deno's fully featured, zero-overhead FFI is stable

Deno's avatar
Deno

@[email protected]

Building a CLI is easy with these browser methods 👀

Deno's avatar
Deno

@[email protected]

Deno 2.1.8 has been released with important LSP performance improvements along with an important bug fix for S3 uploads

github.com/denoland/deno/relea

Deno's avatar
Deno

@[email protected]

AsyncIterable<T> can be used to construct the body for Request and Response 👇

Deno's avatar
Deno

@[email protected]

Building a CLI is easy with these browser methods 👀

Deno's avatar
Deno

@[email protected]

Deno 2.1.8 has been released with important LSP performance improvements along with an important bug fix for S3 uploads

github.com/denoland/deno/relea

Deno's avatar
Deno

@[email protected]

AsyncIterable<T> can be used to construct the body for Request and Response 👇

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【図解解説】React19の新機能を使って書籍管理アプリを開発するチュートリアル【Hono/TypeScript/TailwindCSS】
qiita.com/Sicut_study/items/e1

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

Deno's avatar
Deno

@[email protected]

AsyncIterable<T> can be used to construct the body for Request and Response 👇

Denis's avatar
Denis

@[email protected]

uggggh I'm in ES module vs CommonJS hell in nodejs. With Typescript layered on top.

Is it just me, or is this whole JS/TS environment a sh*tshow and nobody will admit it? It feels like a huge ball of duct tape and baling wire.

Maybe I should see if I can convince my org to explore Deno.

Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

TypeDoc—my ideas for testing code in JSDoc comments: github.com/TypeStrong/typedoc/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

zodを用いた条件分岐バリデーションを実装してみる
qiita.com/ryouryou_34/items/f3

Deno's avatar
Deno

@[email protected]

Deno 2.1.8 has been released with important LSP performance improvements along with an important bug fix for S3 uploads

github.com/denoland/deno/relea

Deno's avatar
Deno

@[email protected]

Building a CLI is easy with these browser methods 👀

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

NestJSをやめてHonoを採用した理由🔥
qiita.com/kentawata/items/18f3

AdrianC's avatar
AdrianC

@[email protected]

Hi!

I'm Adrian, a FullStack looking for a job either in (or from it if you allow for remote work), with a permanent and open visa

I have experience building and maintaining web apps and APIs, designing systems, doing and a bit of , and

I'm experienced using , , , , , , and ; and on the DevOps side in CI/CD pipelines (either and Gitlab CI/CD), and a bit of

I was tasked with a lot of the happening in my previous company, researching tools, librairies, patterns or general technologies either for our own or for our products

I also wrote a lot of technical and non technical documentation and internal presentations, and even participated in a few meetups. You can read some of my writing on my blog: blog.adrianc.eu

You might also have seen me on a few Elixir-related Discord servers, or even Bluesky (@adrianc.eu) and Twitter ; either sharing tech news, helping people, reading in book clubs or just chatting

I’m open to full-time right now, contracting work can be discussed.

I'm looking for any developer position, not only , even though it represents most of my experience. And if the technology you're using isn't on my resume, give me a chance! I'm a fast learner and I might anyway have studied it in class :P

DM me for more info, like github link, my resume or anything :)

Boosts, responses and DM welcome, of course!

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

Deno's avatar
Deno

@[email protected]

Deno's fully featured, zero-overhead FFI is stable

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

Fedify is an server framework in & . 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:

If you're curious, take a look at the website! There's comprehensive docs, a demo, a tutorial, example code, and more:

https://fedify.dev/

AdrianC's avatar
AdrianC

@[email protected]

Hi!

I'm Adrian, a FullStack looking for a job either in (or from it if you allow for remote work), with a permanent and open visa

I have experience building and maintaining web apps and APIs, designing systems, doing and a bit of , and

I'm experienced using , , , , , , and ; and on the DevOps side in CI/CD pipelines (either and Gitlab CI/CD), and a bit of

I was tasked with a lot of the happening in my previous company, researching tools, librairies, patterns or general technologies either for our own or for our products

I also wrote a lot of technical and non technical documentation and internal presentations, and even participated in a few meetups. You can read some of my writing on my blog: blog.adrianc.eu

You might also have seen me on a few Elixir-related Discord servers, or even Bluesky (@adrianc.eu) and Twitter ; either sharing tech news, helping people, reading in book clubs or just chatting

I’m open to full-time right now, contracting work can be discussed.

I'm looking for any developer position, not only , even though it represents most of my experience. And if the technology you're using isn't on my resume, give me a chance! I'm a fast learner and I might anyway have studied it in class :P

DM me for more info, like github link, my resume or anything :)

Boosts, responses and DM welcome, of course!

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

Deno's avatar
Deno

@[email protected]

Want to use Rust in JavaScript?
Increase performance in the browser?
Here's an intro to using Wasm with Deno.

deno.com/blog/intro-to-wasm

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

Fedify is an server framework in & . 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:

If you're curious, take a look at the website! There's comprehensive docs, a demo, a tutorial, example code, and more:

https://fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

Are you interested in creating bots for the ? Meet , a framework that makes bot development easier than ever!

Key Features:

True Independence

  • Create standalone bots
  • No need for a Mastodon or Misskey account
  • Free from platform-specific limitations

Simple and Intuitive API

  • Create a complete bot in a single TypeScript file
  • Intuitive event handlers for mentions, follows, and messages
  • Rich text formatting with Markdown support

Modern Deployment

  • Deploy on Deno Deploy, Fly.io, Railway, or any virtual server
  • Minimal dependencies
  • Designed for modern cloud platforms

Enterprise-Ready Foundation

  • Built on Fedify, a rock-solid ActivityPub framework
  • Seamless federation with Mastodon, Misskey, and other platforms
  • Robust compatibility across the fediverse

Developer Experience

  • Full TypeScript support with great IDE integration
  • Comprehensive documentation
  • Built-in testing utilities

Here's a quick example of how simple it is to create a bot:

import { createBot, mention, text } from "@fedify/botkit";

const bot = createBot<void>({
  username: "greetbot",
  name: "Greet Bot",
  summary: text`A friendly bot that greets people!`,
  // ... configuration ...
});

// Respond to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}! Thanks for saying hello!`);
};

export default bot;

Getting Started:

  1. Install
  2. Run: deno add jsr:@fedify/botkit@^0.1.0-dev
  3. Create your bot with just a few lines of code

Check out our documentation at https://botkit.fedify.dev/ to learn more!

Deno's avatar
Deno

@[email protected]

Want to use Rust in JavaScript?
Increase performance in the browser?
Here's an intro to using Wasm with Deno.

deno.com/blog/intro-to-wasm

Deno's avatar
Deno

@[email protected]

Deno supports the new URL.parse() web API, which provides a simpler control flow for parsing URLs 👇

The new Web API URL.parse() provides a simpler control flow when you need to parse URLs.
Deno's avatar
Deno

@[email protected]

Want to use Rust in JavaScript?
Increase performance in the browser?
Here's an intro to using Wasm with Deno.

deno.com/blog/intro-to-wasm

Deno's avatar
Deno

@[email protected]

The OpenAI JavaScript SDK is now on JSR 🎉️

deno.com/blog/openai-on-jsr

Deno's avatar
Deno

@[email protected]

Deno supports the new URL.parse() web API, which provides a simpler control flow for parsing URLs 👇

The new Web API URL.parse() provides a simpler control flow when you need to parse URLs.
Deno's avatar
Deno

@[email protected]

Want to use Rust in JavaScript?
Increase performance in the browser?
Here's an intro to using Wasm with Deno.

deno.com/blog/intro-to-wasm

Deno's avatar
Deno

@[email protected]

Want to use Rust in JavaScript?
Increase performance in the browser?
Here's an intro to using Wasm with Deno.

deno.com/blog/intro-to-wasm

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Deno's avatar
Deno

@[email protected]

Deno supports the new URL.parse() web API, which provides a simpler control flow for parsing URLs 👇

The new Web API URL.parse() provides a simpler control flow when you need to parse URLs.
Deno's avatar
Deno

@[email protected]

Deno supports the new URL.parse() web API, which provides a simpler control flow for parsing URLs 👇

The new Web API URL.parse() provides a simpler control flow when you need to parse URLs.
Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

: incrementing and decrementing number literal types.

type X = Inc<5>; // 6
type Y = Dec<5>; // 4

gist.github.com/rauschma/69899

Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

: incrementing and decrementing number literal types.

type X = Inc<5>; // 6
type Y = Dec<5>; // 4

gist.github.com/rauschma/69899

Deno's avatar
Deno

@[email protected]

use CSS styling in console log with Deno

Deno's avatar
Deno

@[email protected]

Deno 2.1.7 is out!
▸ smaller deno compile binaries (~2Mb)
▸ Node compat bug fixes
Upgrade with `deno upgrade`

github.com/denoland/deno/relea

Deno's avatar
Deno

@[email protected]

VSCode will automatically detect your Deno tests

Deno's avatar
Deno

@[email protected]

The OpenAI JavaScript SDK is now on JSR 🎉️

deno.com/blog/openai-on-jsr

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Deno's avatar
Deno

@[email protected]

The OpenAI JavaScript SDK is now on JSR 🎉️

deno.com/blog/openai-on-jsr

Deno's avatar
Deno

@[email protected]

The OpenAI JavaScript SDK is now on JSR 🎉️

deno.com/blog/openai-on-jsr

Deno's avatar
Deno

@[email protected]

The OpenAI JavaScript SDK is now on JSR 🎉️

deno.com/blog/openai-on-jsr

Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

Feature in next week’s 5.8 Beta: --erasableSyntaxOnly
• Pull request: github.com/microsoft/TypeScrip
• Description (with an old name): github.com/microsoft/TypeScrip

Forbids non-type syntax that isn’t JavaScript—e.g. enums and namespaces.

Use case: TypeScript support in Node.js. 2ality.com/2025/01/nodejs-stri

/via @robpalmer

Deno's avatar
Deno

@[email protected]

VSCode will automatically detect your Deno tests

Deno's avatar
Deno

@[email protected]

Deno 2.1.7 is out!
▸ smaller deno compile binaries (~2Mb)
▸ Node compat bug fixes
Upgrade with `deno upgrade`

github.com/denoland/deno/relea

Deno's avatar
Deno

@[email protected]

use CSS styling in console log with Deno

^Kur0den\d{4}$ :irai_houki_tyuu:'s avatar
^Kur0den\d{4}$ :irai_houki_tyuu:

@[email protected]

『[Typescript] 「なぜ enum の利用が推奨されないのか?」をまとめてみた - Qiita』 - https://qiita.com/saba_can00/items/696baa5337eb10c37342

Deno's avatar
Deno

@[email protected]

Deno 2.1.7 is out!
▸ smaller deno compile binaries (~2Mb)
▸ Node compat bug fixes
Upgrade with `deno upgrade`

github.com/denoland/deno/relea

Deno's avatar
Deno

@[email protected]

use CSS styling in console log with Deno

Deno's avatar
Deno

@[email protected]

use CSS styling in console log with Deno

Deno's avatar
Deno

@[email protected]

use CSS styling in console log with Deno

Biome's avatar
Biome

@[email protected]

Today we’re happy to share our plans for Biome 2.0 as well as the rest of our roadmap for 2025.

Read all about it here: biomejs.dev/blog/roadmap-2025/

for and , written in

Deno's avatar
Deno

@[email protected]

git log --since "2024-01-01" --until "2025-01-01"

deno.com/blog/deno-in-2024

Deno's avatar
Deno

@[email protected]

git log --since "2024-01-01" --until "2025-01-01"

deno.com/blog/deno-in-2024

Deno's avatar
Deno

@[email protected]

git log --since "2024-01-01" --until "2025-01-01"

deno.com/blog/deno-in-2024

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

Deno's avatar
Deno

@[email protected]

Deno 2.1.6 has been released

- 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

github.com/denoland/deno/relea

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【図解解説/初心者OK】Next.jsとHonoで爆速タイピングゲームを作ろう【Redis/Bun/TypeScript/Upstash/TailwindCSS】
qiita.com/Sicut_study/items/c1

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

Slackで自分にきたメンションを、自動でタスク化してNotionに登録するアプリの作成した話
qiita.com/bskcorona-github/ite

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

誤解されがちなnever型の危険性: 「存在しない」について
qiita.com/uhyo/items/97941f855

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

個人開発したサービスが2日で3 万リーチした話
qiita.com/nogu66/items/93468b4

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

Deno's avatar
Deno

@[email protected]

Deno 2.1.6 has been released

- 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

github.com/denoland/deno/relea

Deno's avatar
Deno

@[email protected]

Deno 2.1.6 has been released

- 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

github.com/denoland/deno/relea

Deno's avatar
Deno

@[email protected]

Deno 2.1.6 has been released

- 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

github.com/denoland/deno/relea

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

Revath S Kumar :javascript:'s avatar
Revath S Kumar :javascript:

@[email protected] · Reply to Revath S Kumar :javascript:'s post

Wrote a small web utility to visualize the different string normalization forms of a text.

string-normalize.surge.sh/?str

Not the best design 😄 , but feedbacks are welcome.

desktop view of string normalize web page, showing NFC, NFD, NFKC and NFKD normalization forms of text "I ♥ Köln" is visiblemobile view of string normalize web page, showing NFC, NFD and NFKC normalization forms of text "I ♥ Köln" is visible
BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

ビルドされたVue.jsではタグ内でのインスタンス初期化実行がエラーになる
qiita.com/lyd-ryotaro/items/cf

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【Prisma,TypeScript】Prismaを用いたビットフラグによるデータ格納方法
qiita.com/rtkjm22/items/51b177

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust @fedify foundation.

https://botkit.fedify.dev/

Chris Krycho's avatar
Chris Krycho

@[email protected]

Two interesting API discussions for True Myth’s recently-released `Task` type—

1. A proposal for a `retry` method or function. This is a pretty obvious utility for an async operation, and people often build custom retry helpers around `Promise` today. github.com/true-myth/true-myth

Chris Krycho's avatar
Chris Krycho

@[email protected]

Two interesting API discussions for True Myth’s recently-released `Task` type—

1. A proposal for a `retry` method or function. This is a pretty obvious utility for an async operation, and people often build custom retry helpers around `Promise` today. github.com/true-myth/true-myth

Revath S Kumar :javascript:'s avatar
Revath S Kumar :javascript:

@[email protected] · Reply to Revath S Kumar :javascript:'s post

Wrote a small web utility to visualize the different string normalization forms of a text.

string-normalize.surge.sh/?str

Not the best design 😄 , but feedbacks are welcome.

desktop view of string normalize web page, showing NFC, NFD, NFKC and NFKD normalization forms of text "I ♥ Köln" is visiblemobile view of string normalize web page, showing NFC, NFD and NFKC normalization forms of text "I ♥ Köln" is visible
Chris Krycho's avatar
Chris Krycho

@[email protected]

I wrote up a quick note on “fairness” with async operations and how it is *not* a property of `Promise.race` and `Promise.all` in (or , obviously!). This is not something you have to think about often, but does it ever matter when you do! v5.chriskrycho.com/notes/javas

Chris Krycho's avatar
Chris Krycho

@[email protected]

I wrote up a quick note on “fairness” with async operations and how it is *not* a property of `Promise.race` and `Promise.all` in (or , obviously!). This is not something you have to think about often, but does it ever matter when you do! v5.chriskrycho.com/notes/javas

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【個人開発】YouTubeのコメントをX(Twitter)のように見れるアプリを開発しました!
qiita.com/shotaqiita/items/690

Jakob Miksch's avatar
Jakob Miksch

@[email protected] · Reply to Ilya Zverev's post

@zverik @mvexel @ianthetechie looks good in general, I am also a bit worried that it will be abandoned one day by Google. Also there are less programmers around than programmers.

since I do a lot of development seems to be make a bit more sense to me, even though I am more into

what I understand from your comments is that support for seems to be better compared to That is a good insight

WetHat💦's avatar
WetHat💦

@[email protected]

Key Points:
➡️ BotKit enables the creation of standalone ActivityPub bots, free from platform constraints.
➡️ It is user-friendly and written in TypeScript, ensuring type safety.
➡️ BotKit is easy to deploy with minimal dependencies on various virtual servers.
➡️ Powered by , a robust framework.

botkit.fedify.dev/

Deno's avatar
Deno

@[email protected]

Deno 🤝️ Nuxt.js

docs.deno.com/examples/nuxt_tu

Deno's avatar
Deno

@[email protected]

Advent of Code with Deno is over!

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 👇️
deno.com/blog/advent-of-code-2

phil seeing the special sticker for the first time
Deno's avatar
Deno

@[email protected]

Deno 🤝️ Nuxt.js

docs.deno.com/examples/nuxt_tu

Deno's avatar
Deno

@[email protected]

Advent of Code with Deno is over!

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 👇️
deno.com/blog/advent-of-code-2

phil seeing the special sticker for the first time
Jakob Miksch's avatar
Jakob Miksch

@[email protected]

Hey people do you have experience building mobile apps with either or ?

Deno's avatar
Deno

@[email protected]

Advent of Code with Deno is over!

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 👇️
deno.com/blog/advent-of-code-2

phil seeing the special sticker for the first time
WetHat💦's avatar
WetHat💦

@[email protected]

Key Points:
➡️ BotKit enables the creation of standalone ActivityPub bots, free from platform constraints.
➡️ It is user-friendly and written in TypeScript, ensuring type safety.
➡️ BotKit is easy to deploy with minimal dependencies on various virtual servers.
➡️ Powered by , a robust framework.

botkit.fedify.dev/

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

React19のformタグに関する新機能についてまとめてみる
qiita.com/syah_34vah/items/353

WetHat💦's avatar
WetHat💦

@[email protected]

Key Points:
➡️ BotKit enables the creation of standalone ActivityPub bots, free from platform constraints.
➡️ It is user-friendly and written in TypeScript, ensuring type safety.
➡️ BotKit is easy to deploy with minimal dependencies on various virtual servers.
➡️ Powered by , a robust framework.

botkit.fedify.dev/

Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

: Do you include source maps in client-side web apps (vs. libraries)?

OptionVoters
I include source maps15 (48%)
I don’t15 (48%)
(Other)1 (3%)
Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

: Do you include source maps in client-side web apps (vs. libraries)?

OptionVoters
I include source maps15 (48%)
I don’t15 (48%)
(Other)1 (3%)
Deno's avatar
Deno

@[email protected]

Deno 🤝️ Nuxt.js

docs.deno.com/examples/nuxt_tu

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【個人開発】【Gemini × DALL-E3】日記からAIが絵本を作成してくれるアプリを開発
qiita.com/shinry/items/279c34d

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【Chakra UI v3 × jest】テスト時のSelectの型エラーの解消方法①(Type '{ children: Element; }' has no properties in common with type 'IntrinsicAttributes & SelectTriggerProps & RefAttributes<HTMLButtonElement>'. 他)
qiita.com/ritsu21ctws/items/ed

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Deno's avatar
Deno

@[email protected]

Deno 2.1.5 just landed —

▸ new QUIC API
▸ improved Discord.js compatibility
▸ better tasks support in workspaces

github.com/denoland/deno/relea

Deno's avatar
Deno

@[email protected]

Deno 2.1.5 just landed —

▸ new QUIC API
▸ improved Discord.js compatibility
▸ better tasks support in workspaces

github.com/denoland/deno/relea

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Madame Aronow's avatar
Madame Aronow

@[email protected]

🚨 🚨 🚨

Good Morning friends - have a new role for ya!

Looking for a fairly senior frontend-focused 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 ( / / preferred) in addition to design chops

* Must have at least some experience with

* You must have developed frontends for (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 :blobfoxcrylaugh:

I'm the on the role, so feel free to ask any questions here and I'll either have an answer or go find you one :)

Full JD and application here: grnh.se/a1934cb05us

Madame Aronow's avatar
Madame Aronow

@[email protected]

🚨 🚨 🚨

Good Morning friends - have a new role for ya!

Looking for a fairly senior frontend-focused 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 ( / / preferred) in addition to design chops

* Must have at least some experience with

* You must have developed frontends for (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 :blobfoxcrylaugh:

I'm the on the role, so feel free to ask any questions here and I'll either have an answer or go find you one :)

Full JD and application here: grnh.se/a1934cb05us

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Deno's avatar
Deno

@[email protected]

Deno 2.1.5 just landed —

▸ new QUIC API
▸ improved Discord.js compatibility
▸ better tasks support in workspaces

github.com/denoland/deno/relea

Deno's avatar
Deno

@[email protected]

Deno 2.1.5 just landed —

▸ new QUIC API
▸ improved Discord.js compatibility
▸ better tasks support in workspaces

github.com/denoland/deno/relea

Deno's avatar
Deno

@[email protected]

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).

Goodbye WinterCG, welcome WinterTC!

deno.com/blog/wintertc

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Deno's avatar
Deno

@[email protected]

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).

Goodbye WinterCG, welcome WinterTC!

deno.com/blog/wintertc

Deno's avatar
Deno

@[email protected]

Deno 2.1.5 just landed —

▸ new QUIC API
▸ improved Discord.js compatibility
▸ better tasks support in workspaces

github.com/denoland/deno/relea

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Another day, another release (v0.25.0):

This update mainly features the new `@genart-api/wasm` package, providing Zig & TypeScript bindings for core GenArtAPI functionality (i.e. so far mostly parameter handling).

This WASM bridge/integration is designed as an API module for the thi.ng/wasm-api toolchain. Installation & build instructions are in the readme.

New package homepage:
github.com/thi-ng/genart-api/t

Example project (w/ param editor):
demo.thi.ng/genart-api/param-e

Example Zig source code:
github.com/thi-ng/genart-api/b

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Deno's avatar
Deno

@[email protected]

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).

Goodbye WinterCG, welcome WinterTC!

deno.com/blog/wintertc

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Deno's avatar
Deno

@[email protected]

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).

Goodbye WinterCG, welcome WinterTC!

deno.com/blog/wintertc

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

JavaScript/TypeScript Tech Feed (2025/1/10号)
qiita.com/ysknsid25/items/b0a4

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

New release of 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 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)

All changes since v0.21.0:
github.com/thi-ng/genart-api/c

🎉

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【TypeScript】Map<K, V>とRecord<K, V>ってなにが違うの?
qiita.com/_ken_/items/5f90aa1e

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Daniel Supernault's avatar
Daniel Supernault

@[email protected]

dont do typescript, you might get addicted

loops webUI code
Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

Node’s new built-in support for TypeScript
2ality.com/2025/01/nodejs-stri

Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

Node’s new built-in support for TypeScript
2ality.com/2025/01/nodejs-stri

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

Mastodon Engineering's avatar
Mastodon Engineering

@[email protected]

New year, new role @Mastodon!

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
2. Proficient in modern
3. Experienced with , and complex React/Redux applications

This remote full-time position requires a 4-hour overlap with the CET timezone.

For more info/to apply:
jobs.ashbyhq.com/mastodon/6a09

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

備忘録まとめ記事:頭の中のモヤモヤを整理し、AWS CDKでTypeScriptが主流な理由を考察してみた
qiita.com/free-honda/items/e27

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【React + TypeScript + Vite】デジタル名刺アプリの作成からデプロイまで
qiita.com/shin-tech/items/bd5f

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【個人開発】JISOU 課題3 学習記録アプリを完成させた上での苦労と気づき
qiita.com/ritsu21ctws/items/36

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【図解解説/初心者OK】Next.js不要?進化したReact Routerで技術記事アプリを作るチュートリアル【TypeScript/TailwindCSS】
qiita.com/Sicut_study/items/7d

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

JavaScript/TypeScript Tech Feed (2025/1/3号)
qiita.com/ysknsid25/items/2a75

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

(1st release cycle of 2025) 🎉 — New additions & updates to thi.ng/genart-api, a platform-independent extensible API for browser-based computational/algorithmic/generative art projects:

- Added 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

New adapter package `@genart-api/adapter-fxhash`:
github.com/thi-ng/genart-api/t

Commits since last release:
github.com/thi-ng/genart-api/c

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【React Hook】useStateで関数を保持させる方法
qiita.com/br_branch/items/d097

Alejandro Baez's avatar
Alejandro Baez

@[email protected]

Now that I got some fond memories of (read: Stockholm Syndrome), I sort of want to build stuff with . 😅

Though what I *really* want is an option like it for . Maybe a project for the new year. 🤔

Not like we don't have , , , and as examples of what could be a standard library. 😄

fedify.dev/

Alejandro Baez's avatar
Alejandro Baez

@[email protected]

Now that I got some fond memories of (read: Stockholm Syndrome), I sort of want to build stuff with . 😅

Though what I *really* want is an option like it for . Maybe a project for the new year. 🤔

Not like we don't have , , , and as examples of what could be a standard library. 😄

fedify.dev/

Alejandro Baez's avatar
Alejandro Baez

@[email protected]

Now that I got some fond memories of (read: Stockholm Syndrome), I sort of want to build stuff with . 😅

Though what I *really* want is an option like it for . Maybe a project for the new year. 🤔

Not like we don't have , , , and as examples of what could be a standard library. 😄

fedify.dev/

Deno's avatar
Deno

@[email protected]

Participating in Advent of Code 🎄?

Use Deno and win some exclusive prizes 🎁️ 👀️

deno.com/blog/advent-of-code-2

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

HonoとAWS Lambdaを使って業務改善ツールを作った話
qiita.com/access3151fq/items/0

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

JavaScript/TypeScript Tech Feed (2024/12/27号)
qiita.com/ysknsid25/items/ae27

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

thi.ng/umbrella 2024 summary

Next month 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)...

Super special thanks go out to: @avi @made @Yura @robertoranon @jeffpalmer @alesroubicek @slowdownitsfine @latrokles @rc101 and others... (Sorry if I missed any other people/supporters/users here — please ping me (again) if I don't follow you already!) 🙏😍

Some juicy/boring statistics ( only!):

In 2024 there were 1,639 commits (incl. today's release), of which:

- 467 features (29%)
- 389 documentation related (24%)
- 340 refactor & performance (21%)
- 198 build, CI, testing, restructuring (12%)
- 112 releases (7%)
- 87 bug fixes (5%)

Scope:

- 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!

github.com/postspectacular
liberapay.com/thi.ng/
patreon.com/thing_umbrella

Ps. I'm on a small single-user instance only here - any boosts are highly appreciated to increase visibility! Thank you! 🙏

Screenshot of my Github activity/contribution heatmap of the past year, listing 2493 contributions (only a handful of days without contribs since end of Jan 2024)

Visualization from here:
https://github.com/postspectacular
Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

thi.ng/umbrella 2024 summary

Next month 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)...

Super special thanks go out to: @avi @made @Yura @robertoranon @jeffpalmer @alesroubicek @slowdownitsfine @latrokles @rc101 and others... (Sorry if I missed any other people/supporters/users here — please ping me (again) if I don't follow you already!) 🙏😍

Some juicy/boring statistics ( only!):

In 2024 there were 1,639 commits (incl. today's release), of which:

- 467 features (29%)
- 389 documentation related (24%)
- 340 refactor & performance (21%)
- 198 build, CI, testing, restructuring (12%)
- 112 releases (7%)
- 87 bug fixes (5%)

Scope:

- 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!

github.com/postspectacular
liberapay.com/thi.ng/
patreon.com/thing_umbrella

Ps. I'm on a small single-user instance only here - any boosts are highly appreciated to increase visibility! Thank you! 🙏

Screenshot of my Github activity/contribution heatmap of the past year, listing 2493 contributions (only a handful of days without contribs since end of Jan 2024)

Visualization from here:
https://github.com/postspectacular
Deno's avatar
Deno

@[email protected]

Thank you for your support in helping us reach 100,000 GitHub stars! ⭐️

github.com/denoland/deno

Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

Node.js 23.6.0 (“current”): --experimental-strip-types is enabled by default—i.e., we can run .ts files without compiling them.
2ality.com/2025/01/nodejs-stri

• Limitation of type stripping: no real compilation, only removal of type syntax. Most important unsupported features: enums & constructor parameter properties.

• Future: --experimental-transform-types which also supports TypeScript-only syntax.

David Bisset's avatar
David Bisset

@[email protected]

This is right up my ally:

A bookmark-everything app (links, notes and images) with based automatic tagging and full text search. Even has iOS/Android app, support, REST API and SSO support.

github.com/hoarder-app/hoarder

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Another new release of (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]

You can see all the changes since the last release here:
github.com/thi-ng/genart-api/c

[1] docs.thi.ng/genart-api/core/in
[2] github.com/thi-ng/genart-api/t

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

DuckDB Node Neo Client 試し撃ち
qiita.com/mineco123/items/c257

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【図解解説】0からNext.jsとRAGで最新情報特化のチャットボットを作ろう【LangChain/OpenAI/TypeScript】
qiita.com/Sicut_study/items/d1

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

and already second update this week, plus the addition of a new platform adapter package for publishing artwork to editart.xyz (ready ahead of 😉)... (cc/ @pifragile)

This new release (all packages at v0.19.0 now) also includes several updates to API docs and adapter readme's:

- github.com/thi-ng/genart-api
- github.com/thi-ng/genart-api/t
- github.com/thi-ng/genart-api/t

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! :)

Kat Marchán 🐈's avatar
Kat Marchán 🐈

@[email protected]

I am absolutely overjoyed to announce the release of 2.0.0!! kdl.dev

It's a significant overhaul of the language to make it SO MUCH NICER in so many ways.

This is the culmination of over 3 years of work (4 if you count from before 1.0.0), by SCORES of contributors.

github.com/kdl-org/kdl/release

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!

👉 github.com/kdl-org/kdl-rs
👉 / / github.com/tjol/ckdl
👉 github.com/IceDragon200/kuddle
👉 / github.com/bgotink/kdl
👉 github.com/tabatkins/kdlpy

KDL is already used in all sorts of projects, and by various folks as a DSL for their own small hobby things: github.com/kdl-org/kdl?tab=rea

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!

(Boosts welcome!!)

syntax-highlighted zellij config ported to 2.0.0 format.

// This config is just like `zellij.kdl`, except it shows what it would look
// like if modifiers were done using `+` instead of spaces (thus needing to be
// quoted).
keybinds {
    normal {
        // uncomment this and adjust key if using copy_on_select=#false
        /- bind Alt+c { Copy }
    }
    locked {
        bind Ctrl+g { SwitchToMode Normal }
    }
    resize {
        bind Ctrl+n { SwitchToMode Normal }
        bind h Left { Resize Left }
        bind j Down { Resize Down }
        bind k Up { Resize Up }
        bind l Right { Resize Right }
        bind "=" + { Resize Increase }
        bind - { Resize Decrease }
    }
    pane {
        bind Ctrl+p { SwitchToMode Normal }a section of a syntax-highlighted example KDL document based on a GitHub Actions yaml configuration, ported to KDL 2.0.0.

    steps {
      step uses="actions/checkout@v1"
      step "Install Rust" uses="actions-rs/toolchain@v1" {
        profile minimal
        toolchain "${{ matrix.rust }}"
        components clippy
        override #true
      }
      step Clippy { run cargo clippy --all -- -D warnings }
      step "Run tests" { run cargo test --all --verbose }
      step "Other Stuff" run="""
        echo foo
        echo bar
        echo baz
        """
    }
Deno's avatar
Deno

@[email protected]

Thank you for your support in helping us reach 100,000 GitHub stars! ⭐️

github.com/denoland/deno

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

【保存版】フロントエンド初心者がまず読むべき資料まとめ【2024年最新】
qiita.com/nuco_YM/items/b4259d

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

DenoとFreshでお手軽ポケモン図鑑開発
qiita.com/kannoixia/items/af9c

:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

Branded Type ベストプラクティス 検索
qiita.com/uhyo/items/de4cb2085

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

New release of 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...

Nikhil 🐧's avatar
Nikhil 🐧

@[email protected]

I tried and now I never want to touch again 🫠

anorax's avatar
anorax

@[email protected]

Les claviers, c'est « so 20e siècle » 🙄
Écrire avec un smart cube, ça c'est le turfu ma gueule !


En tournant les tranches de son smart cube (Rubik's cube connecté), une personne écrit sur son PC.
Kat Marchán 🐈's avatar
Kat Marchán 🐈

@[email protected]

there is now another implementation that supports preserving and managing formatting/comments... and it's in / and supports 2.0!!

If you're a JS dev and you've been wanting to check out the latest KDL, check this out: github.com/bgotink/kdl

Deno's avatar
Deno

@[email protected]

Deno 🤝️ @qwikdev

docs.deno.com/examples/qwik_tu

build qwik with deno
:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

1日1ハム語🐹 ハムちゃんが適当にお返事してくれるチャットアプリつくってみた
qiita.com/toremolo72/items/3af

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

New work:

Over the past two months I've been actively revisiting, updating/extending and now close to finishing this 1.5 year long journey... The actual journey has been much longer, been toying with (faux) fluid sims since ~2007...

A 50 second preview of one of my fave variations, best enjoyed fullscreen... Tried to achieve some molten, dichroic/irridescent glass & oilfilm aesthetics here, but there're over a dozen of other very different routes/styles possible too, with 25+ parameters to tweak the simulation and look & feel...

Made with thi.ng/shader-ast & thi.ng/shader-ast-stdlib

50 second screencapture of a realtime animated fluidsim showing expanding & interacting droplets of a faux, somewhat lightly viscous liquid, accumulating in thin layers, but constantly diffusing/mixing/fading. The droplets are initially tinted in purple, fading to black and then temportarily transitioning into an molten glass phase before vanishing... The thi.ng logo/watermark is overlayed in the center
Deno's avatar
Deno

@[email protected]

Deno can now finally be installed through npm!

npm install -g deno

npx deno eval -p 1+2

npmjs.com/package/deno

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

(Vol. 2) — Also new/recent updates in :

- thi.ng/ramp has just received a bugfix for ramps with more than 256 keyframes. Thanks to @robertoranon for finding & reporting! 🤩🙏
- 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 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)...

API docs & mini example:
docs.thi.ng/umbrella/rstream/f

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

(the 13th) — New version (v0.17.0) of thi.ng/genart-api with the following updates:

- 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 (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`.

demo.thi.ng/genart-api/param-e

New improved version (of editor) with many more features (incl. variation/preset management) is in the works...

Deno's avatar
Deno

@[email protected]

Interested in contributing to Deno?

Check out Divy's talk on Deno internals and op2: youtube.com/watch?v=vINOqgn_ik

tea 🌺's avatar
tea 🌺

@[email protected]

Would love thoughts and feedback on my Future / deferred promise library:

npmjs.com/package/@reggi/futur

Be kind ❤️

Deno's avatar
Deno

@[email protected]

Easily check for outdated dependencies with `deno outdated` 👇️

docs.deno.com/runtime/referenc

Deno outdated will check for outdated dependencies.
:rss: Qiita - 人気の記事's avatar
:rss: Qiita - 人気の記事

@[email protected]

フルスタックNext.jsの決定版!? "Payload"で管理画面&WebAPIを自動生成!
qiita.com/UtaMori/items/531c30

Deno's avatar
Deno

@[email protected]

this wren wants to remind you that Deno permission flags have shorthands

deno.com/blog/v1.46#short-hand

deno permission flags have shorthands
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

Hello, I'm an open source software engineer in my late 30s living in , , and an avid advocate of and the .

I'm the creator of @fedify, an server framework in , @hollo, an ActivityPub-enabled microblogging software for single users, and @botkit, a simple ActivityPub bot framework.

I'm also very interested in East Asian languages (so-called ) and . Feel free to talk to me in , (), or (), or even in Literary Chinese (, )!

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

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 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...

Gio's avatar
Gio

@[email protected]

Ideas on connecting with composable Workflows and use that also for data modelling in

domain-centric.dev/posts/data-

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Major project updates from this past week:

thi.ng/genart-api

- 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 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!

Gio's avatar
Gio

@[email protected]

One problem I see with Effect is that you can't try to pipe functions without adopting the full FP package.

Instead, I think in

functions can/should be composable and procedural at the same time

domain-centric.dev/posts/workfl...

domain-centric.dev/posts/workf

Alvin Ashcraft 🐿️'s avatar
Alvin Ashcraft 🐿️

@[email protected]

How to generate unit tests with GitHub Copilot: Tips and examples.

buff.ly/49pSCXd

Deno's avatar
Deno

@[email protected]

Deno 🤝️ SolidJS

deno.com/blog/build-solidjs-wi

Gio's avatar
Gio

@[email protected]

Am I missing something important or is typia.io better than zod for

runtime type validation? There's no much info online, so it would be great if anybody here could share their own experience using it in Node, Bun or
@deno.land

Deno's avatar
Deno

@[email protected]

Update on : 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.

deno.com/blog/deno-v-oracle/20

kris 🦜's avatar
kris 🦜

@[email protected]

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 developers, please let me know. Please boost for reach!

Gio's avatar
Gio

@[email protected]

More pseudo-functional ideas for error handling in

(and if you know how to make better ts codeblocks in Markdown/Lume please let me know!!)

domain-centric.dev/posts/error-handling

Alejandro Baez's avatar
Alejandro Baez

@[email protected] · Reply to Alejandro Baez's post

Day 2 done with some messing about for . I'm certainly relearning again . 🫠

This one took me much longer cause I didn't know how to handle mahjong slices of arrays in typescript. 😅

git.sr.ht/~ab/advent-of-code-2

Deno's avatar
Deno

@[email protected]

Did you know you can host your Next.js app on Deno Deploy in just a few steps? Here's how👇️

deno.com/blog/nextjs-on-deno-d

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

It just dawned on me that I haven't been mentioning five(!) recent 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:

github.com/thi-ng/genart-api/c

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:

Generic editor harness (for your own compatible artworks):
demo.thi.ng/genart-api/param-e

Demo (with test artwork):
demo.thi.ng/genart-api/param-e

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!

Alejandro Baez's avatar
Alejandro Baez

@[email protected]

Trying something with @deno_land and 😁

It's been extra long since I done anything in . So should be interesting.

Here's day 1 complete 😆

git.sr.ht/~ab/advent-of-code-2

Deno's avatar
Deno

@[email protected]

Participating in Advent of Code 🎄?

Use Deno and win some exclusive prizes 🎁️ 👀️

deno.com/blog/advent-of-code-2

Deno's avatar
Deno

@[email protected]

It's done. Now it’s your turn, Oracle.

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.

It's time to .

deno.com/blog/deno-v-oracle

Albrecht Köhnlein 🚀's avatar
Albrecht Köhnlein 🚀

@[email protected]

Me fixing "variable is possibly 'null'" errors in

typescriptlang.org/docs/handbo

Meme of "Salt Bae", adding multiple exclamation marks
Deno's avatar
Deno

@[email protected]

Deno 2.1 is out 🎉️
✈️️ first class Wasm support
🌳️ Long Term Support branch
⭐️ Improved dependency management
and much more!

deno.com/blog/v2.1

Deno's avatar
Deno

@[email protected]

Deno 🤝️ @drizzleorm

deno.com/blog/build-database-a

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected] · Reply to Karsten Schmidt's post

Did some further updates to the code generator for bindings (thi.ng/wasm-api-bindgen) and released new versions of all thi.ng/wasm-api packages. The new codegen creates even smaller code (approx. -20%), achieved via better re-use of newly introduced helper functions to reduce boilerplate...

These changes will have compounding effects for larger numbers (or complexities) of generated types, especially those involving structs with string fields and/or arrays/slices...

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

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 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)...

[1] developer.mozilla.org/en-US/do

(edit: removed obsolete `async`)

TypeScript source code:

```
const compressBytes = (
	buf: TypedArray,
	fmt: CompressionFormat = "gzip"
) => pipe(buf, new CompressionStream(fmt));

const decompressBytes = (
	buf: Uint8Array,
	fmt: CompressionFormat = "gzip"
) => pipe(buf, new DecompressionStream(fmt));

// shared compression/decompression helper
const pipe = async (
	buf: TypedArray,
	stream: ReadableWritablePair<any, Uint8Array>
) =>
	new Uint8Array(
		await new Response(
			new Blob([buf]).stream().pipeThrough(stream)
		).arrayBuffer()
	);
```
Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Various and updates from this week:

- Added null pointer checks & guards in thi.ng/wasm-api. This also includes support for structs with fields using Zig-style optional pointers.
- Updated the thi.ng/wasm-api-bindgen code generator for to produce smaller code for structs using many string fields
- Did major ground work on bindings of core 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 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 (thi.ng/wasm-api-dom) and to handle Canvas2D drawing (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.

Demo (with param editor):
demo.thi.ng/genart-api/param-e

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)...

Source code (TypeScript in `/src`, Zig in `/zig` directories):
github.com/thi-ng/genart-api/t

Deno's avatar
Deno

@[email protected]

Deno is a JavaScript package manager with more flexibility:
📦️ npm and JSR
🛠️️ package.json and deno.json
👟️ fast

deno.com/blog/your-new-js-pack

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Yesterday, one year ago... (Still wondering how many people actually have read or tried out any of these)

mastodon.thi.ng/@toxi/11134859

sublimer@あすてろいどん鯖管's avatar
sublimer@あすてろいどん鯖管

@[email protected]

はてなブログに投稿しました
TypeScriptのコードをそのままデプロイできてOpenAIのAPIもSQLiteもCronもメール送受信も使える高機能なPaaSの「Val Town」 - await wakeUp(); sublimer.hatenablog.com/entry/

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Some and releases from this past week:

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...

The URL chooser of the reference implementation's parameter editor is also mobile friendly now. You can see a demo of both in action here:
demo.thi.ng/genart-api/param-e

Some thi.ng/umbrella related updates:

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...

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...

mochuel0 ⁂'s avatar
mochuel0 ⁂

@[email protected]

This extension is a fork of the official deno extension. Adds support for Deno LSP on notebooks. It also defines a new notebook type (*.nb.ts). This way you can use "import" between notebooks. Lastly, it also adds a notebook controller for vscode, so you can use deno's jupyter kernel in vscode without Python.

github.com/redking00/vscode-nb

Ivan Herman's avatar
Ivan Herman

@[email protected]

Developing an node.js compatible npm package in deno seems to be possible with the dnt tool. I have not tried it yet but, if it works, it is brilliant (it is so much smoother to develop with deno than with node+npm)

github.com/denoland/dnt

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post

0.7.0をリリースしました!

新機能の暗黙的コンテキストにより、リクエストID、ユーザーIDなどの文脈情報を、手動で渡すことなくログに自動的に含められるようになりました。

詳しくは記事をご覧ください:

zenn.dev/hongminhee/articles/3

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

Just released 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:

dev.to/hongminhee/introducing-

Daisuke Murase's avatar
Daisuke Murase

@[email protected]

Unfortunately, I was laid off yesterday 😱

I have over 20 years of experience as a software engineer, specializing in , , and development, particularly passionate about building scalable, high-performance backend systems and asynchronous network software.

I live in Portland OR and looking for a full time job in in the US.

If you know of any opportunities where my skills might be a good fit, I would greatly appreciate any leads or referrals.

Thank you for your support!

David Bisset's avatar
David Bisset

@[email protected]

Why I 🧡 the web.

A tool that allows you to extract a list of html pages from a website and compile them into an book to be imported into your of choice.

github.com/maoserr/epublifier

Deno's avatar
Deno

@[email protected]

Want to modernize legacy JavaScript?

One way is to convert CommonJS code to ESM 👇️

deno.com/blog/convert-cjs-to-e

Joshua Byrd's avatar
Joshua Byrd

@[email protected]

Just for fun I decided to try publishing a package on this new JSR "open-source package registry". Quick, simple, and fun. Love it! jsr.io/@phocks

Deno's avatar
Deno

@[email protected]

4 years after Deno 1.0, the next generation of JavaScript is ready for production at scale.

Deno 2 is out today
🐢 Fully backwards compatible with Node and npm
📦 Package management and node_modules and package.json
📅 Long term support

deno.com/2

Nicd's avatar
Nicd

@[email protected]

as posts aren't migrated:

Software dev from , . Worked on full stack and / projects for 10+ years, on my free time I use & (hope in the future at work!).

Main hobby project is codestats.net/, a free programming stats project. I also enjoy , , and video games.

Blog: blog.nytsoi.net/ (engine: git.ahlcode.fi/nicd/scriptoriu)

Some packages:
hex.pm/users/nicd

Working on UI.

Deno's avatar
Deno

@[email protected]

Deno 2 is not yet released, but we've made many️ updates to the release candidate 👇️

deno.com/blog/v2.0-release-can

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

More exciting updates to thi.ng/genart-api, an API for browser-based generative artworks:

- 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)

New example w/ editor (make sure to select the "imgui" editor):
demo.thi.ng/genart-api/param-e

Example source code:
github.com/thi-ng/genart-api/b

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...

Deno's avatar
Deno

@[email protected]

The 🦕️ is out of the bag...

youtube.com/watch?v=pcC4Dr6Wj2

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

If you've been avoiding & due to the complexity of the .js ecosystem, give a try. Everything is simplified and you can start coding right away without having to set up a development environment.

Danny Blue's avatar
Danny Blue

@[email protected]

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.

github.com/deebloo/go-board

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

Introducing Fedify: Build Your Own Fediverse App with Ease! 🚀

Are you excited about the but find implementing daunting? Meet , a framework that simplifies building federated server apps. Whether you're creating the next Mastodon, Pixelfed, or something entirely new, Fedify has you covered.

What Fedify Offers:

Fedify abstracts away the complexities of ActivityPub, letting you focus on your app's unique features. It's designed to work seamlessly with popular web frameworks like Hono, Express, and Fresh.

Get Started Today!

Check out our step-by-step tutorial to create a microblog: https://fedify.dev/tutorial/microblog

Explore the discussions, contribute, or just star us on GitHub: https://github.com/dahlia/fedify

Join the Fedify community! Questions? Ideas? Find us on Matrix: #fedify:matrix.org.

Let's build a more diverse and interoperable fediverse together with Fedify!

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Lots of new additions & improvements to the thi.ng/genart-api proposal, documentation, the reference implementation, examples and param editors this week:

thi.ng/genart-api

- 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 (docs.thi.ng/umbrella/genart-ap)
- 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...

Example editors:

- demo.thi.ng/genart-api/param-e — either of the two editors can be used...
- demo.thi.ng/genart-api/param-e — currently only the rdom-forms editor can be used for this and you'll need to choose an image for the other params to make sense...

(Note: The imgui-based editor is NOT mobile friendly. Also, the editor sidebar can be toggled on/off via Escape key)

As usual, everything's work-in-progress until further notice. Feedback welcome!

Screenshot of the linked image map parameter example, showing a sidebar with different parameter controls (low res grayscale image preview, color picker), and the artwork showing the imported image represented as a fine grid of differently sized pink dots on dark blue background
Pierre's avatar
Pierre

@[email protected]

activitypub typescript server framework called Fedify announces first stable release. It is being used by the open source Ghost CMS platform. Can't wait to see what other apps are created with Fedify

Github repo here: github.com/dahlia/fedify/relea

activitypub typescript server framework called Fedify announces first stable release. It is being used by the open source Ghost CMS platform. Can't wait to see what other apps are created with Fedify

Github repo here: https://github.com/dahlia/fedify/releases/tag/1.0.0
Diplo Dino's avatar
Diplo Dino

@[email protected]

Since I haven’t yet posted an

Hi, Mastodon! I joined :mastodon: before the kicked off because I love exploring new apps and social media sites.

I’m a programmer by trade, usually working on web apps using and of course (we love it just the way it is lol :blobmiou:)

I’m constantly , especially , , and ! I’m passionate about music, especially and electronica. Catch me at … IYKYK 🙃

Deno's avatar
Deno

@[email protected]

Rusty V8 is now stable!

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.

deno.com/blog/rusty-v8-stabili

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

v0.6.0, a zero-dependency structured logging library for & , 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.

Available now from JSR and npm:

• JSR: jsr.io/@logtape/[email protected]
• npm: npmjs.com/package/@logtape/log

Deno's avatar
Deno

@[email protected]

Deno 2 Release Candidate has dropped:

‣ Add `process` global variable, remove `window`
‣ Improve dep management
‣ Permission system updates
‣ Many stabilizations
‣ Better CommonJS support
‣ Test documentation with `deno test --doc`

deno.com/blog/v2.0-release-can

Wizarth's avatar
Wizarth

@[email protected]

:

Big software nerd, trying to get back doing software dev for fun after putting all my energy into doing it for work.

Outside of that, I'm trying to discover who I am. Not so much midlife crisis as "My personality is all trauma responses?" "Always has been."

Deno's avatar
Deno

@[email protected]

Help us spread the word — it's time to

javascript.tm

McFunkypants the #gamedev's avatar
McFunkypants the #gamedev

@[email protected]

just wrote my first pinball physics from scratch! it was so fun, only a couple hours of math confusion but I knew the secret involved DOT PRODUCT in some way and that was enough to get things rolling!

pinball physics demo
洪 民憙(ホン・ミンヒ)'s avatar
洪 民憙(ホン・ミンヒ)

@[email protected]

DenoやBunが好きな方いらっしゃいますか?

Deno's avatar
Deno

@[email protected]

Curious about how the JSR logo and website design came together? 🤔️

Here's a 👀️ into our design process.

deno.com/blog/designing-jsr

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

Hello, I'm an open source software engineer in my late 30s living in , , and an avid advocate of and the .

I'm the creator of @fedify, an server framework in , and @hollo, a fediverse microblog for single users.

I'm also very interested in East Asian languages (so-called ) and . Feel free to talk to me in , (), or (), or even in Literary Chinese (/#漢文)!

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

Fedifyは、TypeScriptとJavaScriptで書かれたActivityPubサーバーフレームワークです。分散型のソーシャルネットワークを構築するためのサーバーアプリケーションを作る際の複雑さと冗長なコードを排除し、ビジネスロジックとユーザー体験の開発に集中できるようにすることを目指しています。

現在提供している主な機能は以下の通りです:

  • Activity Vocabularyのための型安全なオブジェクト(一部のベンダー固有の拡張機能を含む)
  • WebFingerクライアントとサーバー
  • HTTP SignaturesObject Integrity Proofs
  • ウェブフックを処理するためのミドルウェア
  • NodeInfoプロトコル
  • Node.js、Deno、Bunのサポート
  • テストとデバッグのためのCLIツールチェーン

興味がある方は、Fedifyのウェブサイトをご覧ください!包括的なドキュメント、デモ、チュートリアル、サンプルコードなどが用意されています:

https://fedify.dev/

Eric McCarthy's avatar
Eric McCarthy

@[email protected]

Time to finally do an !

I’ve been fascinated by the 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 user even longer (my parents were in education and my mom would bring home her office Mac Classic on the weekends). Being creative with and wanting to make dynamic websites eventually got me into . First with , later , and now and . I’ve also had some fun with , , and .

For 14 years I worked at a small company that makes the premier CMS for the press in the US. Now I work on web applications in in the far-more corporate world. I also used to co-organize TucsonJS and Tucson React meetups.

Craig Doremus 🦕's avatar
Craig Doremus 🦕

@[email protected]

I'm a focusing on & specifically . 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 for 10 years.

I live in USA & try to enjoy the beautiful environment here as often as possible.

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

I love (@deno_land) because it turned me from a hater into a JavaScript programmer, or more precisely, a programmer.

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Updated internal state handling of the 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...

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

Version 0.5.0 of , the zero-dependency library for , .js, , edge functions, and browsers, has been released! The main additions include:

• Contexts
• ANSI color formatter
• Comprehensive docs
• A few API conveniences

LogTape v0.5.0 is available from JSR and npm:

• JSR: jsr.io/@logtape/[email protected]
• npm: npmjs.com/package/@logtape/log

In addition, a new website with documentation has been launched, so please check it out!

logtape.org/

Deno's avatar
Deno

@[email protected]

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.com/blog/deploy-cache-api

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

The new tutorial I'm writing now even includes an explanation of and for readers who don't know them. As a result, it's getting very long. 😓

Deno's avatar
Deno

@[email protected]

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 👇️

deno.com/blog/v1.46

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

QiitaにLogTapeの紹介文を日本語で書いて載せました。翻訳機とAIを多用したため、不自然な日本語があるかもしれませんが、不適切な表現を見つけたらぜひご指摘ください!

qiita.com/hongminhee/items/fff

Matt Davis's avatar
Matt Davis

@[email protected]

Think software testing should be easier? So do we!

If you have 90 mins, know TypeScript, and are 18+ in the US or CA, come participate in our remote user study over Zoom. Eligible participants receive a $30 Amazon gift card.

Self-screen & schedule a time slot here: cmu.ca1.qualtrics.com/jfe/form

Boosts appreciated!

Matti Järvinen's avatar
Matti Järvinen

@[email protected]

Hi! I'm a scrum master, developer, dad, geek & gamer.

I work at Gofore.com as a SM.

I love frontend & & related stuff. I have , & as my tools to streamline dev processes.

Hobbies include:

hard scifi or no physics at all, I do not care
(s) oh boy I got almost 100
Pen & Paper (s) currently The One Ring RPG & Edge of the Empire
, , , + other consoles..

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

I've rewritten several times and in several languages. The first time it was written in , then , 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.

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

In the next version of , a zero-dependency library for & , 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.

• JSR: jsr.io/@logtape/[email protected]
• npm: npmjs.com/package/@logtape/log

github.com/dahlia/logtape#cont

const logger = getLogger(["my-app", "my-module"]);
const ctx = logger.with({ userId: 1234, requestId: "abc" });
ctx.info `This log message will have the context (userId & requestId).`;
ctx.warn("Context can be used inside message template: {userId}, {requestId}.");
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

is a logging library for and . 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: .js, , , edge functions, and browsers
• Structured logging
• Logger categories (names) are hierarchical
• Dead simple sink (destination) interface

logtape.org/

Henrik Jernevad's avatar
Henrik Jernevad

@[email protected]

Time for an . 😊

My name is Henrik Jernevad, and I live in Sweden with my wife and two kids.

I love ! Started as a kid and never stopped. Work as architect/developer aiming to create simple, effective solutions. Most experience in /#JVM and . Currently learning .

Otherwise interested in , , and .

My post will be mostly programming related. I also blog at henko.net/blog/.

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

I'm unsure whether to adopt an emerging JavaScript runtime like or for 's tutorial, or stick with traditional .js. 🤔

If I choose Bun/Deno, it comes with built-in support, hot reloading, and a fetch-style HTTP server, so I don't have to explain much about it, but I need to deal with installing Bun/Deno itself.

On the other hand, Node.js can be assumed to be already installed on the reader's system, but they will need to set up TypeScript, hot reloading, etc.

OptionVoters
Bun0 (0%)
Deno0 (0%)
Node.js0 (0%)
Oscar Bazaldua's avatar
Oscar Bazaldua

@[email protected]

I haven't made a proper , so here we go.

I'm Oscar, a petrolhead that at some point decided to leave car journalism for computers (what was I thinking?!)

I've worked on cool stuff at Microsoft, Amazon and now Twilio.

I don't have a favorite language/fw, I hate them all.

I'm from Mexico, hablo español and I live in Seattle-ish with my lovely wife and Matcha, my cat.

Ping me if you want to chat about , , or any questions about and

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

소개: () 상에 서버 앱을 만들기 위한 강력한 라이브러리! 🚀

Fedify는 연합형 앱의 복잡함을 단순화하여 개발자가 가장 중요한 것—고유한 기능과 사용자 경험—에 집중할 수 있게 해줍니다. Fedify의 특징을 살펴볼까요? 🧵

Deno's avatar
Deno

@[email protected]

Deno is known for its HTTP imports, but we've found it's insufficient for larger projects. This post explains the situation and how we've improved it.

deno.com/blog/http-imports

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

Please only answer if you know how to code in . Can you also code in ?

OptionVoters
Yes, I can code in TypeScript too.0 (0%)
No, I can't code in TypeScript.0 (0%)
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

Today I learned that 's type error messages are internationalized. Great!

Deno's avatar
Deno

@[email protected]

std/data-structures, common data structures including red-black trees and binary heaps, is now stabilized at v1 on JSR

jsr.io/@std/data-structures

Thomas Steiner :chrome:'s avatar
Thomas Steiner :chrome:

@[email protected]

Oh, that's interesting 👀: is experimenting with letting you run code directly by simply stripping the types, but without performing actual type checks: github.com/nodejs/node/pull/53. This would allow you to just run `node index.ts`.

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

Released v0.4.2 of , which is a zero-dependency library for & ! Since this version, it work well on Workers out of box!

• JSR: jsr.io/@logtape/[email protected]
• npm: npmjs.com/package/@logtape/log

Deno's avatar
Deno

@[email protected]

🚀 Deno 1.45 is released!

‣ Workspace and monorepo support
‣ Node.js compat improvements
‣ Updates to deno install
‣ deno init --lib
‣ deno vendor deprecation
‣ Standard Library stabilization
‣ V8 12.7 and TypeScript 5.5

Release notes: deno.com/blog/v1.45

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

: After 66 days of addressing 30 wildly varied use cases and building ~20 new example projects of varying complexity to illustrate how 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 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 thi.ng/umbrella readme). Many of those examples have more comments than code...

021: Iterative animated polygon subdivision & heat map viz
mastodon.thi.ng/@toxi/11122194

022: Quasi-random voronoi lattice generator
mastodon.thi.ng/@toxi/11124441

023: Tag-based Jaccard similarity ranking using bitfields
mastodon.thi.ng/@toxi/11125696

024: 2.5D hidden line visualization of DEM files
mastodon.thi.ng/@toxi/11126950

025: Transforming & plotting 10k data points using SIMD
mastodon.thi.ng/@toxi/11128326

026: Shader meta-programming to generate 16 animated function plots
mastodon.thi.ng/@toxi/11129584

027: Flocking sim w/ neighborhood queries to visualize proximity
mastodon.thi.ng/@toxi/11130843

028: Randomized, space-filling, nested 2D grid layout generator
mastodon.thi.ng/@toxi/11132456

029: Forth-like DSL & livecoding playground for 2D geometry
mastodon.thi.ng/@toxi/11133502

030: Procedural text generation via custom DSL & parse grammar
mastodon.thi.ng/@toxi/11134707

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

A week ago was the 1st anniversary of this solo instance & more generally of my fulltime move to Mastodon. A good time for a more detailed intro, partially intended as CV thread (pinned to my profile) which I will add to over time (also to compensate the ongoing lack of a proper website)... Always open to consulting offers, commissions and/or suitable remote positions...

Hi, I'm Karsten 👋 — indy software engineer, researcher, author of hundreds of projects (since ~1999), computational/generative artist/designer, landscape photographer, lecturer, outdoor enthusiast, on the ND spectrum. Main interest in transdisplinary research, tool making, exploring techniques, projects & roles amplifying the creative, educational, expressive and inspirational potential of (personal) computation, code as material, combining this with generative techniques of all forms (quite different to what is now called and implied by "generative AI").

Much of my own practice & philosophy is about , interconnectedness, simplicity and composability as key enablers of emergent effects (also in terms of workflow & tool/system design). Been adopting a round-robin approach to cross-pollinate my work & learning, spending periods going deep into various fields to build up and combine experience in (A-Z order): API design, audio/DSP, baremetal (mainly STM32), computer vision/image processing, compiler/DSL/VM impl, databases/linked data/query engines, data structures impl, dataviz, fabrication (3DP, CNC, knit, lasercut), file formats & protocols (as connective tissue), "fullstack" webdev (front/back/AWS), generative & evolutionary algorithms/art/design/aesthetics/music, geometry/graphics, parsers, renderers, simulation (agents/CFD/particles/physics), shaders, typography, UI/UX/IxD...

Since 2018 my main endeavor has been thi.ng/umbrella, a "jurassic" (as it's been called) monorepo of ~185 code libraries, addressing many of the above topics (plus ~150 examples to illustrate usage). More generally, for the past decade my OSS work has been focused on , , , , , , , , , /#VEX. Earlier on, mainly Java (~15 years, since 1996).

Formative years in the deep end of the 8bit demoscene (Chip Special Software) & game dev (eg. The Brundles, 1993), B&W dark room lab (since age 10), music production/studio (from 1993-2003), studied media informatics, moved to London initially as web dev, game dev (Shockwave 3D, ActionScript), interaction designer, information architect. Branched out, more varied clients/roles/community for my growing collection of computational design tools, which I've been continously expanding/updating for the past 20+ years, and which have been the backbone of 99% of my work since ~2006 (and which helped countless artists/designers/students/studios/startups). Creator of thi.ng (since 2011), toxiclibs (2006-2013), both large-scale, multi-faceted library collections. Early contributor to Processing (2003-2005, pieces of core graphics API).

Worked on dozens of interactive installations/exhibitions, public spaces & mediafacades (own projects and many collabs, several award winning), large-scale print on-demand projects (>250k unique outputs), was instrumental in creating some of the first generative brand identity systems (incl. cloud infrastructure & asset management pipelines), collaborated with architects, artists, agencies, hardware engineers, had my work shown at major galleries/museums worldwide, taught 60+ workshops at universities, institutions and companies (mainly in EMEA). Was algorithm design lead at Nike's research group for 5 years, working on novel internal design tools, workflows, methods of make, product design (footwear & apparel) and team training. After 23 years in London, my family decided on a lifestyle change and so currently based in the beautiful Allgäu region in Southern Germany.

A subdivided irregular grid of thumbnail images of some notable projects I've worked on (exhibitions, renders/visualizations, workshops, tools, physical products/artifacts), all of them involving generative design approaches and made with tools I've created myself. The selection covers projects from 2007-2020...
Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

So much to do, but can't stop watching & hacking on this pseudo fluid sim every now & then... 🤩 Probably will develop this further into a tutorial for thi.ng/shader-ast

40 second animation of a colorful orange/red/pink/purple 2D pseudo fluid simulation. Random small droplets are added every few frames. Each one then starts diffusing and mixing with existing older droplets. Everything is constantly being perturbed by an animated noise flow field and decaying/fading to avoid oversaturation and to strike an interesting balance between fluid and empty space
Axel Rauschmayer's avatar
Axel Rauschmayer

@[email protected]

My books on and are free to read online:

– Exploring JavaScript (ES2024 edition)
– Deep JavaScript
– Tackling TypeScript
– Shell scripting with Node.js

:mastodon: Boosts appreciated!

exploringjs.com

Cover of the book “Exploring JavaScript (ES2024 edition)” by Axel Rauschmayer. It shows a rhinoceros.Cover of the book “Deep JavaScript” by Axel Rauschmayer. It shows a freediver who swims under water and follows a rope down into the deep.Cover of the book “Tackling TypeScript” by Axel Rauschmayer. It shows a a pair of boxing gloves.Cover of the book “Shell scripting with Node.js” by Axel Rauschmayer. It shows a field of light blue hexagonal bars, with three yellow ones in the middle.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

Introducing : A powerful library for building server apps in the ! 🚀

Fedify aims to simplify the complex world of federated apps, allowing developers to focus on what matters most—their unique features and user experience. Let's explore what makes Fedify stand out! 🧵

Deno's avatar
Deno

@[email protected]

std/crypto, extensions and utilities to the Web Crypto API, is now stabilized at v1.0.0 on JSR

jsr.io/@std/crypto

maybeanerd's avatar
maybeanerd

@[email protected]

Now that I moved instance, it's time for a new !

I'm a fullstack software engineer who loves and is based in Germany.
In my free time I like to contribute to and build fun stuff like bots for .
Oh, and I play a lot of games.
Both videogames on and , as well as tabletop games like or .
Also into

洪 民憙 (Hong Minhee) 🤏🏼's avatar
洪 民憙 (Hong Minhee) 🤏🏼

@[email protected]

is a logging library for and . 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: .js, , , edge functions, and browsers
• Structured logging
• Logger categories (names) are hierarchical
• Dead simple sink (destination) interface

github.com/dahlia/logtape

Screenshot: log messages printed out on the terminalScreenshot: log messages printed out on web browser's console
Emelia 👸🏻's avatar
Emelia 👸🏻

@[email protected]

Okay, okay, at @nova's behest, an post:

Hi 👋🏻 I'm Emelia, from , , I'm trans queer and kinky.

I'm a princess 👸🏻 currently working most with , currently working on Fediverse Trust & Safety tooling

I'm most known for my work on , and contribute to & other fediverse software

In 2020, I became the of Unobvious Technology, aiming to improve the safety, and profitability of and advance the

Callionica's avatar
Callionica

@[email protected] · Reply to Callionica's post

And of course the syntax equivalent to the above so you can use it directly in your code:

```
/**
* @template { new (args: any) => any } Class
* @template { object } Properties
* @typedef { new (...args: ConstructorParameters<Class>) => (InstanceType<Class> & Properties) } AddProperties
*/
```

Callionica's avatar
Callionica

@[email protected] · Reply to Callionica's post

^ This is useful for when you're using 's dynamic capabilities with classes and you want to let 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.

Callionica's avatar
Callionica

@[email protected]

Adding properties to a class (AKA constructor function) in

```
class X {
x: number = 1;
constructor(o : number) {}
}

type AddProperties<
Class extends new (args: any) => any,
Properties extends object
> = new (...args: ConstructorParameters<Class>) => (InstanceType<Class> & Properties);

const Y = X as AddProperties<typeof X, { name: string }>;
const y = new Y(1);
y.x;
y.name;
```

This is just the TypeScript side of things.

Bennolius 😷⚡'s avatar
Bennolius 😷⚡

@[email protected]

Time for an updated .

I'm into (, , , one day ).

rocks - some competence in , and ; less in others. Currently learning and , among others, and building @vortmaro.

is a big deal and to mitigate it, let's switch to , , and adopt diets.

sucks, we should nuke it (with masks, filtration, ventilation, far-UV, etc.)

洪 民憙 (Hong Minhee) 🤏🏼's avatar
洪 民憙 (Hong Minhee) 🤏🏼

@[email protected]

is an server framework in & . 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)
client and server
• HTTP Signatures
• Middleware for handling webhooks
protocol
.js, , and 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:

fedify.dev/

casraf :typescript: 🇮🇱's avatar
casraf :typescript: 🇮🇱

@[email protected]

I guess it's time for an .

I'm a freelance full-stack & mobile developer at trade and love playing with different techs in my free time.

Love problem-solving, finding ways to introduce creativity into code, and creating quality-of-life dev tools and libraries whenever I can.

I have some packages for and and other nice stuff on my website at casraf.dev/projects :) feel free to say hi!

Keith J Grant's avatar
Keith J Grant

@[email protected]

😅 So I did not fully appreciate the power of hashtags on this place when I wrote my , 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 , , . I don't write so much here as I have at previous gigs, but, I'm okay at that too…

• I'm the author of CSS in Depth 📘 manning.com/books/css-in-depth

• I enjoy mixing and have my recipes available in a : sidecar.us

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

Fedify is an server framework in & . 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:

If you're curious, take a look at the website! There's comprehensive docs, a demo, a tutorial, example code, and more:

https://fedify.dev/

Thomas Lockney's avatar
Thomas Lockney

@[email protected]

When it comes to learning , one of my favorite tools is Deno's kernel (lnkd.in/g2GPc_gM). It makes writing quick examples easy and accessible. I'll need to eventually write up how this all works, but the combination of , Jupyter, , and Juno Connect (an iOS/iPadOS Jupyter client) have given me the ability to play around on the go.

From: @deno_land
fosstodon.org/@deno_land/11268

Deno's avatar
Deno

@[email protected]

curious about TypeScript, but haven't had time to learn?

check out our new Bites series — short, digestible lessons to learn 👇️

deno.com/blog/deno-bites-ts-in

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post

I never use vanilla , I always code in instead, and Node.js is a pain in the neck with TypeScript settings.

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Revisiting an old unfinished project with new eyes & new colors...

An abstract colorful handdrawn form with gradient highly saturated margenta, orange,blue gradient and thi.ng logo overlay. The drawn stroke/curve itself has been deformed by a super basic fluid simulationAn abstract colorful handdrawn form with gradient highly saturated margenta, orange,blue gradient and thi.ng logo overlay. The drawn stroke/curve itself has been deformed by a super basic fluid simulationAn abstract colorful handdrawn form with gradient highly saturated margenta, orange,blue gradient and thi.ng logo overlay. The drawn stroke/curve itself has been deformed by a super basic fluid simulationAn abstract colorful handdrawn form with gradient highly saturated margenta, orange,blue gradient and thi.ng logo overlay. The drawn stroke/curve itself has been deformed by a super basic fluid simulation
Josh's avatar
Josh

@[email protected]

Hello, fediverse! I'm a father, elder millennial, and software developer primarily in the ecosystem. Though I do enjoy working with , , and other and/or frameworks. I came here like many others as part of the . l'm looking for professional networking, learning, and socialization.

I love , , , , , , and .

I want to move to one day!

plague-of-grackles 😷🍉🐈‍⬛'s avatar
plague-of-grackles 😷🍉🐈‍⬛

@[email protected]

Ok thanks to @nikolovlazar 's video, I was able to get debugging working for a tiny app in 🎊​. Next step is to get it working for a slightly larger application.

Nikita @ #DevFest Berlin 2024's avatar
Nikita @ #DevFest Berlin 2024

@[email protected]

Time to update my !

Hi Fediverse, I am Nikita :BlobhajReach:
I am a 24-year-old full-stack web developer from Braunschweig 🇩🇪

Things I like: F(L)OSS (duh), , , , the Fediverse, , and U+1E9E Latin Capital Letter Sharp S (ẞ)

Things I dislike: How everything BigTech touches tends to get worse. Also fermented milk products (unless it's cheese)

I blog (rarely) at kytta.dev, and I code (less rarely) at github.com/kytta

Martin Wenisch's avatar
Martin Wenisch

@[email protected]

Po mesici na Mastodonu prisel cas na

Jsem programator z Liberce. Pracoval jsem pro ziskovky i neziskovky ruzne po svete. Pro B&MG Foundation v Keni, v >c.d, vytvarel jsem Zbrane pro Ukrajinu a podobne. Aktualne programuju vlastni socialni sit WRKS.

V tech stacku mam TypeScript, Next, AWS, databaze a v podstate vsecko kolem toho.

✍️ Pisu pravidelne o vsem, co mi prijde pod ruku.

Liana :v_trans: :v_kirb:'s avatar
Liana :v_trans: :v_kirb:

@[email protected] · Reply to Liana :v_trans: :v_kirb:'s post

Narrat Game Engine

🚀 If you just want to try it, , get on the website it’s very quick (get-narrat.com)

Here are some screenshots of games that have been made on it by people (Links to those games are on the website)

I don't really have a big network of followers so the only people can learn about this engine is if other people help spread info about it

Liana :v_trans: :v_kirb:'s avatar
Liana :v_trans: :v_kirb:

@[email protected]

Narrat Game Engine

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.

This Tumblr post has more details and could do with a signal boost as it's getting attention tumblr.com/bubbline3456/708071

There's also a Patreon:
patreon.com/NarratEngine

🧵

Paul Taylor's avatar
Paul Taylor

@[email protected]

I’ve been putting it off but it’s about time I did an .
So, hi all!
As a of one, my little boy is everything.
I’m an at bigbite.net where I primarily focus on workflows, and in-house tooling. Working with and and a variety of tech built on top of for the most part.
I’ve been putting off working on my personal site for years. Put it down to laziness.
(1/2)

Jesse Youngblood's avatar
Jesse Youngblood

@[email protected]

👋 Hello! It's time for a proper . I'm Jesse Youngblood, a software developer based out of Boston USA.

I'm mostly focused on microservices and React web apps, plus mobile apps in . I'm also an avid cyclist and musician.

I've been on Twitter for 15 years and quite sad to see it fall apart, but super excited to see all the excitement building around Mastodon. Can't wait to see where it goes!

Dave Mackey's avatar
Dave Mackey

@[email protected]

Software Engineer. Insatiable learner across an eclectic collection of topics: , , , , / , , etc.

Introvert, but friendly. Slowly working towards building a to replace .

Live in , from upstate .

Currently working on ; these days I primarily code in and

Previous work includes , , , .

Ross Gardiner's avatar
Ross Gardiner

@[email protected]

Hello! I guess I'm here now. 👋

You might find me talking about some of these nerdy topics:

And these slightly different nerdy topics:

seiyria's avatar
seiyria

@[email protected]

Hi! I'm Kyle. I make software, focus primarily on frontend development ( ), and I like making games.

I've made a bunch of ambitious games using web technologies and will probably keep doing that, you might see me sometimes.

I also really enjoy playing survival games, JRPGs, and a few other genres.

Dumb jokes are kinda my thing. Most of my boosts are just that.

nosh :fosstodon: (ʘ‿ʘ)'s avatar
nosh :fosstodon: (ʘ‿ʘ)

@[email protected]

Just decided to revamp my introduction.

I am a full stack web dev 🍔 working remotely from the 🏔

A father of 2 👨‍👩‍👧‍👦 love different types of music 🎵, movies & 📺.

Work with for day job.

Interested in all sorts of web technologies & development.

Interested in making websites for anyone who needs one.

treefit's avatar
treefit

@[email protected]

Hi, I'm treefit, a dev working on . I'm responsible for the desktop client together with @jikstra.
My favorite coding language is , but I "speak" , , , , too.
I'm also capable in and , but not as much.

I'm new to the mastodon/toot style of communication (never used Twitter, either), so I'm still learning of how this all works.

My goal is to give you some behind-the scenes peeks onto the DeltaChat development.

Darek Kay's avatar
Darek Kay

@[email protected]

Hey, I'm Darek Kay 👋

I'm a and an advocate, currently working at IBM. I love sharing what I know through my , and at conferences.

I enjoy hiking, board games, escape rooms and playing the guitar/keyboard. Lately I've been diving deeper into as well.

I prefer reading and writing less frequent but more substantial posts.