Hello, I'm an open source software engineer in my late 30s living in #Seoul, #Korea, and an avid advocate of #FLOSS and the #fediverse.
I'm the creator of @fedify, an #ActivityPub server framework in #TypeScript, @hollo, an ActivityPub-enabled microblogging software for single users, and @botkit, a simple ActivityPub bot framework.
LogTape is a zero-dependency logging library for JavaScript and TypeScript that provides a simple yet flexible logging system. It supports multiple JavaScript runtimes (Deno, Node.js, Bun, browsers, and edge functions), features hierarchical categories, structured logging, and offers seamless integration for both applications and libraries.
What's New in 0.12.0
Trace Log Level
LogTape now includes a trace severity level, which sits below debug in the verbosity hierarchy. This addition provides finer-grained control over logging output, particularly useful for detailed execution flow tracking during development and debugging.
All standard RFC 5424 facilities (kern, user, mail, daemon, local0–7, etc.)
Automatic priority calculation based on log levels
Structured data support for log record properties
Cross-runtime compatibility with Deno, Node.js, and Bun
Configurable connection timeouts, custom hostnames, and application names
Logger Method Alias
Added Logger.warning() as an alias for Logger.warn() to ensure consistency with the LogLevel type definition. This change addresses the naming mismatch where the LogLevel union type uses "warning" while the logger method was named warn(), making metaprogramming and dynamic method invocation more straightforward.
Unified Package Releases
Starting with version 0.12.0, all LogTape packages including @logtape/otel, @logtape/sentry, and @logtape/syslog share the same version number and are released together. This ensures compatibility between packages and simplifies version management for users.
Improved Build Infrastructure
LogTape has migrated from dnt to tsdown for npm package bundling. tsdown is a library-focused bundler built on top of Rolldown, a Rust-based bundler that powers the next generation of Vite. Unlike general-purpose bundlers, tsdown is specifically optimized for building TypeScript and JavaScript libraries with minimal configuration. This change brings several benefits:
Elimination of bundler warnings in Webpack, Vite, and other build tools
Improved compatibility with modern JavaScript toolchains
Better tree-shaking support
Cleaner package output
Faster build times through Rust-based performance optimizations
Migration Guide
Updating to Trace Level
If you have code that relies on debug being the lowest severity level, you may need to update your log level configurations:
// Before{ lowestLevel: "debug" } // This was the most verbose setting// After{ lowestLevel: "trace" } // Now includes trace messages
Leveraging Buffer Configuration
To optimize file sink performance in high-throughput scenarios:
getFileSink("app.log", { bufferSize: 16384, // Larger buffer for better performance flushInterval: 10_000 // Flush every 10 seconds})
LogTape is a zero-dependency logging library for JavaScript and TypeScript that provides a simple yet flexible logging system. It supports multiple JavaScript runtimes (Deno, Node.js, Bun, browsers, and edge functions), features hierarchical categories, structured logging, and offers seamless integration for both applications and libraries.
What's New in 0.12.0
Trace Log Level
LogTape now includes a trace severity level, which sits below debug in the verbosity hierarchy. This addition provides finer-grained control over logging output, particularly useful for detailed execution flow tracking during development and debugging.
All standard RFC 5424 facilities (kern, user, mail, daemon, local0–7, etc.)
Automatic priority calculation based on log levels
Structured data support for log record properties
Cross-runtime compatibility with Deno, Node.js, and Bun
Configurable connection timeouts, custom hostnames, and application names
Logger Method Alias
Added Logger.warning() as an alias for Logger.warn() to ensure consistency with the LogLevel type definition. This change addresses the naming mismatch where the LogLevel union type uses "warning" while the logger method was named warn(), making metaprogramming and dynamic method invocation more straightforward.
Unified Package Releases
Starting with version 0.12.0, all LogTape packages including @logtape/otel, @logtape/sentry, and @logtape/syslog share the same version number and are released together. This ensures compatibility between packages and simplifies version management for users.
Improved Build Infrastructure
LogTape has migrated from dnt to tsdown for npm package bundling. tsdown is a library-focused bundler built on top of Rolldown, a Rust-based bundler that powers the next generation of Vite. Unlike general-purpose bundlers, tsdown is specifically optimized for building TypeScript and JavaScript libraries with minimal configuration. This change brings several benefits:
Elimination of bundler warnings in Webpack, Vite, and other build tools
Improved compatibility with modern JavaScript toolchains
Better tree-shaking support
Cleaner package output
Faster build times through Rust-based performance optimizations
Migration Guide
Updating to Trace Level
If you have code that relies on debug being the lowest severity level, you may need to update your log level configurations:
// Before{ lowestLevel: "debug" } // This was the most verbose setting// After{ lowestLevel: "trace" } // Now includes trace messages
Leveraging Buffer Configuration
To optimize file sink performance in high-throughput scenarios:
getFileSink("app.log", { bufferSize: 16384, // Larger buffer for better performance flushInterval: 10_000 // Flush every 10 seconds})
Xcode 26's #SwiftUI API files have a combined 26,000 lines of diffs, but most is noise. We'll take the meaningful bits, use an LLM to generate stubs, then begin implementing important APIs for #AndroidDev! Of course your Swift will get the updates to Foundation, etc for free
Mitra v4.4.0 supports verification of RFC-9421 HTTP signatures. It is known to be compatible with @fedify, but I haven't tested it with Mastodon or Streams yet. Outgoing requests are still signed according to the draft-cavage. I don't plan to implement double-knocking, but something like FEP-844e could be supported in the future, though this is not urgent.
My implementation of a parser is available in APx library.
- Verifying RFC-9421 HTTP message signatures on incoming requests. - If the default post visibility is "followers", reposts will be followers-only too. - Edits and deletions are synced in private conversations.
So I remembered that @hongminhee recently added syntax highlighting to https://hackers.pub and had told me that it's done by just adding colors to the HTML markup of the posts so I was curious if it also ingested colors from outside and it DOES: so Hackers's Pub supports Wafrn's silly ass color posts!
ALT text detailsA screenshot of hackers pub showing colored text on wafrn inside hackers pub
- @fediforum happened, with a ton of demos, sessions and keynotes - @bonfire gets close to a formal 1.0 release, and is already available for usage - @anewsocial announces Bounce, a tool to migrate your social graph from #atproto to #activitypub - shutdown of a lemmy server provides opportunity for @piefedadmin
ALT text detailsScreenshot of Icon Composer displaying the Phanpy icon with a translucent, glass-like effect. The interface shows layer groups on the left and color, liquid glass, and composition settings on the right.
ALT text detailsPhanpy icon with "Liquid Glass" effect.
ALT text detailsPhanpy icon with "Liquid Glass" effect, Dark mode.
ALT text detailsPhanpy icon with "Liquid Glass" effect, Mono mode.
한 가지 명확히 해 두자면, 알라딘에 정보보호팀이 없었어서 이번 사태를 계기로 급하게 팀을 꾸린다든가 하는 건 아니고, 지금까지 꾸준히 사람인이나 잡코리아에 팀장이나 담당자 구인공고가 올라온 이력을 참조했을 때 그냥 처우 문제로 이직이 잦고 그에 비례해 구직도 잦은 평균적인 중소기업이었을 가능성이 높습니다.
마스토돈을 비롯한 연합우주 생태계에서는 봇 계정을 만드는것이 트위터에 비해서 비교적 "많이" 자유로운 편입니다.
그래서, Hackernews/Lobsters 같은 서비스의 피드를 실시간으로 업데이트하는 봇들도 더러 있는데요. 이런 계정들은 마스토돈 인스턴스들에 있지만, HackersPub도 명목상으로는 ActivityPub 프로토콜을 지원하는 서비스이기 때문에, 마스토돈 인스턴스에 있는 봇들을 구독이 가능합니다.
마스토돈을 비롯한 연합우주 생태계에서는 봇 계정을 만드는것이 트위터에 비해서 비교적 "많이" 자유로운 편입니다.
그래서, Hackernews/Lobsters 같은 서비스의 피드를 실시간으로 업데이트하는 봇들도 더러 있는데요. 이런 계정들은 마스토돈 인스턴스들에 있지만, HackersPub도 명목상으로는 ActivityPub 프로토콜을 지원하는 서비스이기 때문에, 마스토돈 인스턴스에 있는 봇들을 구독이 가능합니다.
In this 4-minute video I explain what the #fediverse is to people not familiar with it, mentioning some of its great features and benefits (interoperability, no ads, no surveillance...) and I set it in contrast to the world of Big Tech social platforms. I argue that, with the rise of Big Tech oligarchs and the current political climate, there has never been a better time to join the fediverse.
I hope you will enjoy this video and that you will find it useful (maybe as a tool to introduce your friends, family, colleagues, school administrators, local government officials to it).
The fediverse has truly changed my life, making me a better, more empowered digital citizen. I am endlessly grateful for it, so this is my contribution to the cause ❤️
I am also incredibly thankful for the work of @samaaberg and @patel.riyen who helped me bring my vision to life with their amazing cinematography skills and their assistance throughout the process, providing brilliant feedback to the script / edits from the POV of fedi newbies.
Lastly, I'm thankful for the opportunity I had to premiere the video last week at #FediForum - thank you @j12t and @anca
The video is up on my self-hosted PeerTube instance (thank you @yunohost) and for now it is unlisted as I have no idea how my VPS will hold up. I also included an alternate location in the blog post.
I hope you'll enjoy it! It's been a real labor of love (a month of full time work on it)... I see it as my love letter to the fediverse 💌
Edit/update: THANK YOU for all the people who volunteered to have their avatar show up in the last shot. There were 750+ submissions and only 135 spots - sorry I couldn't include everyone 🥲