#TypeScript

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

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Lots of new updates this week (and still hoping for some constructive feedback by fellow generative artists, also for RFCs in the repo's issue tracker):

- lots of documentation additions/updates (README, diagrams and API docs)
- update message protocol and add message types/docs for handling resizing & frame events
- update param editors (e.g. "apply" button for randomized defaults, timecode display, open variation in new window)
- update/extend reference platform adapter implementation
- update examples
- add new example project (see link below)
- add bare-bones project template
- released 3 versions of the @thi.ng/genart-api package this week (latest v0.5.0)
- 200+ commits by now

Some pre-configured versions of the new p5.js example (incl. editor):

- demo.thi.ng/genart-api/param-e
- demo.thi.ng/genart-api/param-e

Project repo:
github.com/thi-ng/genart-api

Still screenshot of an animation of a few hundred orange circles on blue background with an overlaid parameter editor on the LHS, showing a subset of design parameters to control the anim & circle colors, sizes, arrangement, movement...
Still screenshot of an animation of a few hundred orange circles on blue background with an overlaid parameter editor on the LHS, showing a subset of design parameters to control the anim & circle colors, sizes, arrangement, movement...
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

Josh "UFO" Byrd 🛸's avatar
Josh "UFO" 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

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Some updates from this week:

- switched from Apache 2.0 to MIT license
- started publishing API files & types as package (optional)
- updated readme & diagrams

New installation & getting started instructions:
github.com/thi-ng/genart-api/b

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.

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

PSA: I'd wager most people following me are only interested in a subset of the things I keep talking about here. To help you with filtering, I've been trying to be consistent with my use of hashtags, and so here's a list of ongoing projects/interests:

- : My main undertaking of the past 6+ years, a collection of approx. 200 projects (also related: )
- : Overarching term for my art projects using various computational, parametric, procedural, generative, simulation techniques (not to be confused with "generative AI", though!)
- : My main interests outside of coding & art making
- : My take on B&W landscape photography (originally I had a Twitter account by that name)
- : Electronic music pearls/recommendations (also former Twitter account, mostly YT/Invidious links)

Other project specific hashtags (sure I'm forgetting some important ones):

- : endlessly evolving generative art pieces (all still WIP)
- : Platform-independent API/protocol for customizing & publishing browser-based generative art projects

Hope that helps! 😅

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Been starting to rework my upcoming piece to be controllable/customizable via thi.ng/genart-api. Whilst such parameter controls like the ones shown in the screen recording are nothing new, the differences here are more about the underlying API/protocol (for more context & goals please consult the readme):

1) Relative platform independence (i.e. this system is for browser-based works only and relies on externally defined platform adapters, which can be developed by the community & are reusable among artists)
2) Ability to very easily repurpose such pieces without any code changes required in the artwork. E.g. a simple swapping out of a platform adapter script tag in the HTML wrapper will suffice
3) Extensible. Both platforms and artworks can define custom parameter types (e.g. for hardware sensors or composite parameters consisting of sub-parameters used for configuration of that particular main param). An example for this is included in the above linked repo...

Btw. If you're interested in trying this out yourself, please check out the readme and get in touch if you need help integrating this into your own project(s)... As shown in the video, you can use the param editors at: demo.thi.ng/genart-api/param-e (not all API features are yet supported by both editors, all WIP!)

Screen recording of a generative art piece (complex, colorful, animated, multi-layered and multi-scale pixel textures) being customized via exposed parameters and the user trying out different variations and randomizations...
Screen recording of a generative art piece (complex, colorful, animated, multi-layered and multi-scale pixel textures) being customized via exposed parameters and the user trying out different variations and randomizations...
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
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
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

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

Fellow computational/generative/procedural/algorithmic artists: I've been busy expanding/refactoring, and above all, using and documenting the previously proposed cross-platform API for browser-based generative art projects, which is aiming to:

- decouple art creation from any platform-specifics (where possible)
- improve the portability of art pieces between different platforms/environments
- deduplicate work regarding parameter handling, validation, coercion, serialization
- enable the creation & adoption of better external tooling for managing parameters (e.g. param editor GUIs, variation management)
- support time-based parameters & custom param types
- unified PRNG & screen resolution handling
- also for time-based works, decouple animation time from real time via optional plug&play time providers (e.g. for non-realtime asset recording) without any code changes required
- externalize transport control (i.e. play/pause/resume)
- extensive IPC message protocol for notifying (and responding to) external tooling about state & param changes

Please visit the repo for a better overview, a zero-dependency working reference implementation, example projects & param editors, architecture & lifecycle diagrams and extensive documentation. The readme is ~2500 words so far, and there also growing API docs.

Repo:
thi.ng/genart-api

Example project with two different param editors (one using canvas based GUI widgets, the other HTML input elements only):

demo.thi.ng/umbrella/genart-ap

Everything is work-in-progress. Currently also working on adapters for two existing art platforms. Will share more when ready... Boosts & feedback from other practitioners very much appreciated!

High-level software architecture overview diagram of the proposed system. An IFrame contains the following components: GenArt API, Art piece, Platform Adapter & Time Provider. An optional second frame (wrapper window) contains player/wrapper for the art and/or param editor GUIs. The windows communicate via the browser's postMessage() mechanism
High-level software architecture overview diagram of the proposed system. An IFrame contains the following components: GenArt API, Art piece, Platform Adapter & Time Provider. An optional second frame (wrapper window) contains player/wrapper for the art and/or param editor GUIs. The windows communicate via the browser's postMessage() mechanism
UML sequence diagram showing the initialization sequence/timeline of the various system components and their interactions. The bottom part also gives an overview of animation loop
UML sequence diagram showing the initialization sequence/timeline of the various system components and their interactions. The bottom part also gives an overview of animation loop
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

Karsten Schmidt's avatar
Karsten Schmidt

@[email protected]

This week I built a small interactive tool to compute & visualize WCAG color contrast and highlight all those combinations which don't satisfy the recommended accessibility threshold (hatched background).

The tool allows you to choose two different text colors and it computes the contrast for each against the 216 "web safe" colors as backgrounds. The text color chosen for each combo is always the one with the higher contrast, but again, if neither satisfy the min. contrast, that combo will be highlighted...

demo.thi.ng/umbrella/color-con

Screen recording of the linked color tool, showing the user changing one of the colors via the browser's color picker and the visualization updating all 200+ color combinations interactively, highlighting those cells which don't satisfy WCAG contrast thresholds
Screen recording of the linked color tool, showing the user changing one of the colors via the browser's color picker and the visualization updating all 200+ color combinations interactively, highlighting those cells which don't satisfy WCAG contrast thresholds
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
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}.");
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...
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
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 “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 “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 “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.
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

y.o.n.a. :heart_transgender:'s avatar
y.o.n.a. :heart_transgender:

@[email protected]

Hi! My name is Yona. It’s great to see you here 💜

I am a human girl living on this swiftly tilting planet with my lovely partner @model_subject and a very silly cat named Archer. I’m trans and I exist and I try every day to express the joy this brings me. :blob_cat_heart:​

Sometimes I also drink coffee, code, dream, work on music, play games, grow hot peppers, yearn, take selfies, and try to understand my life and the world I live in. I probably have too many hobbies, but I’m always finding something new to consume my interest. I love seeing what you are all interested in too!

I’m here to build community, and create a real alternative to the capitalist hellscape that dominates our lives. Let’s create a space together where we are all free to be our true unapologetic selves :heart_transgender:​

(cw: selfie, eye contact)

a girl standing in her doorway and smiling. she is wearing a teal hoodie and a pink top.
a girl standing in her doorway and smiling. she is wearing a teal hoodie and a pink top.
洪 民憙 (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 terminal
Screenshot: log messages printed out on the terminal
Screenshot: log messages printed out on web browser's console
Screenshot: 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.

洪 民憙 (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.

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)

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.