Recently I dove into the Dutch RVO webservices to get agricultural field data. Dealing with legacy SOAP, GML and PKIO certificates was... an experience. I therefore build a TypeScript package that can act as a connector and handle the heavy lifting and just output a modern GeoJSON (including reprojection to WGS84). I made it open-source at https://github.com/SvenVw/rvo-connector. It's a start as it now only supports requesting fields and not altering fields yet #TypeScript #rvo #Agriculture #netherlands
Recently I dove into the Dutch RVO webservices to get agricultural field data. Dealing with legacy SOAP, GML and PKIO certificates was... an experience. I therefore build a TypeScript package that can act as a connector and handle the heavy lifting and just output a modern GeoJSON (including reprojection to WGS84). I made it open-source at https://github.com/SvenVw/rvo-connector. It's a start as it now only supports requesting fields and not altering fields yet #TypeScript #rvo #Agriculture #netherlands
#BotKit is a #TypeScript framework for building #ActivityPub bots. The difference from typical Mastodon/Misskey bots? Your bot runs as its own independent server—no platform account needed.
This means no character limits, no rate limiting headaches, no API restrictions.
bot.onMention = async (session, message) => {
await message.reply(text`Hi, ${message.actor}!`);
};The ActivityPub stuff (federation, HTTP Signatures, delivery queues) is handled by #Fedify under the hood. You just write your bot logic.
BotKitは、ActivityPubボットを作るためのTypeScriptフレームワークです。既存のMastodon/Misskeyボットとの違いは、ボット自体が独立したサーバーとして動作すること。プラットフォームのアカウントは不要です。
文字数制限もなければ、APIレート制限に悩まされることもありません。
bot.onMention = async (session, message) => {
await message.reply(text`こんにちは、${message.actor}さん!`);
};フェデレーション、HTTP Signatures、配送キューといったActivityPub周りの処理はFedifyがすべて引き受けます。ボットのロジックを書くだけです。
DenoでもNode.jsでも動きます。
BotKit은 ActivityPub 봇을 만드는 #TypeScript 프레임워크입니다. 일반적인 Mastodon/Misskey 봇과 다른 점은, 봇 자체가 독립된 서버로 돌아간다는 겁니다. 플랫폼 계정이 필요 없습니다.
글자 수 제한도 없고, API 호출 제한에 시달릴 일도 없습니다.
bot.onMention = async (session, message) => {
await message.reply(text`안녕하세요, ${message.actor}님!`);
};연합(federation), HTTP Signatures, 메시지 전달 같은 #ActivityPub 관련 처리는 Fedify가 알아서 해줍니다. 봇 로직만 짜면 되는 거죠.
#BotKit is a #TypeScript framework for building #ActivityPub bots. The difference from typical Mastodon/Misskey bots? Your bot runs as its own independent server—no platform account needed.
This means no character limits, no rate limiting headaches, no API restrictions.
bot.onMention = async (session, message) => {
await message.reply(text`Hi, ${message.actor}!`);
};The ActivityPub stuff (federation, HTTP Signatures, delivery queues) is handled by #Fedify under the hood. You just write your bot logic.
#BotKit is a #TypeScript framework for building #ActivityPub bots. The difference from typical Mastodon/Misskey bots? Your bot runs as its own independent server—no platform account needed.
This means no character limits, no rate limiting headaches, no API restrictions.
bot.onMention = async (session, message) => {
await message.reply(text`Hi, ${message.actor}!`);
};The ActivityPub stuff (federation, HTTP Signatures, delivery queues) is handled by #Fedify under the hood. You just write your bot logic.
I've been playing with Clojure lately. Tonight, I released a Telegram bot that generates a QR code from any string you send to it. A few months ago, I made another QR bot in TypeScript using Zustand/Immer as the backend. In Clojure, there's no need for external libraries: immutability, atoms, and watchers are all built into the language.
#ReleaseTuesday — Earlier today, I published https://thi.ng/arcball, a small new package providing an intuitive click & drag 3D camera view controller which is completely agnostic from any UI/drawing/rendering framework. The library simply provides the (quaternion) maths to translate gesture events into rotations and then computes a view matrix (presumably for WebGL/WebGPU).
The code is ported from the old 2016 Clojure implementation in https://thi.ng/geom-clj, which itself is based on a 1992 paper (link in readme). Behind the scenes it uses https://thi.ng/matrices and https://thi.ng/vectors for various math ops.
There's also a small new example project to show how to use it (mouse & touch events are enabled, but zooming only works via scroll gestures on touchpad or mousewheel):
Abuse of the nullish coalescing operator in JS/TS
https://fredrikmalmo.com/blog/js-ts-nullish-empty-string-coalescing
#HackerNews #Abuse #of #the #nullish #coalescing #operator #in #JS/TS #JavaScript #TypeScript #NullishCoalescing #ProgrammingTips
I've been playing with Clojure lately. Tonight, I released a Telegram bot that generates a QR code from any string you send to it. A few months ago, I made another QR bot in TypeScript using Zustand/Immer as the backend. In Clojure, there's no need for external libraries: immutability, atoms, and watchers are all built into the language.
#ReleaseTuesday — Earlier today, I published https://thi.ng/arcball, a small new package providing an intuitive click & drag 3D camera view controller which is completely agnostic from any UI/drawing/rendering framework. The library simply provides the (quaternion) maths to translate gesture events into rotations and then computes a view matrix (presumably for WebGL/WebGPU).
The code is ported from the old 2016 Clojure implementation in https://thi.ng/geom-clj, which itself is based on a 1992 paper (link in readme). Behind the scenes it uses https://thi.ng/matrices and https://thi.ng/vectors for various math ops.
There's also a small new example project to show how to use it (mouse & touch events are enabled, but zooming only works via scroll gestures on touchpad or mousewheel):
For you #TypeScript devs out there that have learned #Rust, what resources have you found that helped you?
🔄 #VERT - Next-generation #opensource file converter that processes files locally using #WebAssembly #privacy #infosec #DevOps
🔐 All image, audio & document conversions happen on your device - files never touch external servers. No data is sent to third-party cloud services.
⚡ Supports 250+ file formats including images, audio, documents & video. Universal conversion tool for any file type you need.
🧵 👇
📦 No file size limits - conversion speed depends only on your device's power. No upload caps or bandwidth restrictions.
🎨 Modern UI built with #Svelte and #TypeScript for fast, intuitive experience. Snappy interface that feels great to use.
🎬 Video conversion via self-hostable #Rust daemon (vertd) using #FFmpeg. Full power of your computer for faster video processing.
📜 Licensed under AGPL-3.0 - fully transparent & self-hostable. Promotes user control and data security.
TIL: `satisfies` is my favorite TypeScript keyword
https://sjer.red/blog/2024-12-21/
#HackerNews #TIL #TypeScript #satisfies #keyword #programming #developer #community
For you #TypeScript devs out there that have learned #Rust, what resources have you found that helped you?