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 works across all runtimes.
We're excited to announce the release of LogTape 0.11.0, which introduces significant enhancements to structured logging capabilities and adds a new JSON Lines formatter for better log processing.
New features and enhancements
Enhanced structured logging
LogTape 0.11.0 brings major improvements to structured logging, making it easier and more flexible to work with structured data in your logs.
Direct object logging
You can now log structured data directly by passing an object as the first argument to any log method:
logger.info({ userId: 123456, username: "johndoe", loginTime: new Date(),});
This creates a log entry with the object properties as structured fields, making your logs more machine-readable and searchable.
Universal property interpolation with {*}
A new special placeholder {*} allows you to interpolate all properties from your structured data at once:
logger.info("User logged in with properties {*}", { userId: 123456, username: "johndoe", loginTime: new Date(),});
This is particularly useful when you want to include all available context without explicitly naming each property in your message template.
Streamlined logging methods
All logging methods (debug, info, warn, error, fatal) now support the new object-first syntax as a convenient shorthand for structured logging with the {*} placeholder.
JSON Lines formatter
LogTape now includes built-in support for JSON Lines (also known as JSONL or NDJSON) format, a popular choice for structured logging in modern applications:
import { jsonLinesFormatter } from "@logtape/logtape";import { getFileSink } from "@logtape/file";await configure({ sinks: { jsonl: getFileSink("app.jsonl", { formatter: jsonLinesFormatter }), }, // ... rest of configuration});
The JSON Lines formatter outputs each log record as a JSON object on a separate line, making it ideal for log aggregation systems and analysis tools.
LogTape is a zero-dependency logging library for JavaScript and TypeScript that works across all runtimes.
We're excited to announce the release of LogTape 0.11.0, which introduces significant enhancements to structured logging capabilities and adds a new JSON Lines formatter for better log processing.
New features and enhancements
Enhanced structured logging
LogTape 0.11.0 brings major improvements to structured logging, making it easier and more flexible to work with structured data in your logs.
Direct object logging
You can now log structured data directly by passing an object as the first argument to any log method:
logger.info({ userId: 123456, username: "johndoe", loginTime: new Date(),});
This creates a log entry with the object properties as structured fields, making your logs more machine-readable and searchable.
Universal property interpolation with {*}
A new special placeholder {*} allows you to interpolate all properties from your structured data at once:
logger.info("User logged in with properties {*}", { userId: 123456, username: "johndoe", loginTime: new Date(),});
This is particularly useful when you want to include all available context without explicitly naming each property in your message template.
Streamlined logging methods
All logging methods (debug, info, warn, error, fatal) now support the new object-first syntax as a convenient shorthand for structured logging with the {*} placeholder.
JSON Lines formatter
LogTape now includes built-in support for JSON Lines (also known as JSONL or NDJSON) format, a popular choice for structured logging in modern applications:
import { jsonLinesFormatter } from "@logtape/logtape";import { getFileSink } from "@logtape/file";await configure({ sinks: { jsonl: getFileSink("app.jsonl", { formatter: jsonLinesFormatter }), }, // ... rest of configuration});
The JSON Lines formatter outputs each log record as a JSON object on a separate line, making it ideal for log aggregation systems and analysis tools.
It's been a while since we released a new minor version of #Hollo. I'm currently considering the timing for releasing Hollo 0.6.0. There are still a few changes left to implement, but once those are wrapped up, we should be able to release Hollo 0.6.0 soon!
Hackers' Pub을 사용하면서 연합우주(fediverse) 뿐만 아니라 Bluesky 사람들과도 교류하고 싶으신 분들은 Bridgy Fed라는 서비스를 사용해 보시면 좋을 것 같습니다. Hackers' Pub 계정 생성 후 2주가 지난 분들만 사용 가능하긴 한데요.[1]
@bsky.brid.gy 계정을 팔로하시면 Bluesky 쪽에 일종의 미러링 계정이 생성되게 됩니다. 성공적으로 Bluesky 미러가 생기면 @bsky.brid.gy 계정이 맞팔을 해 올 겁니다.
If you're on the fence about which driver to choose for #Fedify's message queue, here's a benchmark that just came out. In addition to no queue, we compare 5 drivers, for a total of 11 setups:
@thisismissem Here's the benchmark, and while it contains some questionable results, the overall conclusion is as following:
• Response times are much faster with queues than without. • Overall throughput is better without queues. • However, some queue setups can achieve throughput close to that of no queue.
This benchmark assumes communication within a single node, so the effect of queues may be greater in real-world networks.
GPL은 외부 릴리즈시 추가로 작성하거나 고친 소스 코드의 동일 조건 공개를 강제하는 특성으로 인해, 초기에 사회주의-공산주의라는 오해를 많이 받기는 했었음. 네가 썼다면, 네가 작성한 코드도 공개하라는 공유주의 라이센스니까.
그러나 그러한 공개 강제는 GPL을 일종의 플랫폼으로 만드는 효과 - GPL을 쓰면 GPL이고 아니면 처음부터 아니어야 함 - 가 있어서, 리눅스가 BSD를 제치고, 윈도와 유닉스를 넘어 인터넷과 세계의 커널이 되는 결정적 요인이 됩니다. 그리고 수많은 기업들이 이를 기반으로 자라나죠.
GPL은 자본주의 사회에서도 매우 훌륭하게 기능하고 있습니다. 이제 와서 GPL이 공산주의라고 하는 사람은 거의 없죠.
C를 굳이 비판하고 싶다면? C가 유사한 상황에서 꾸준히 편향되게 특정 사람(또는 집단)만 비판해왔는지를 먼저 살펴야 하지 않을까.
그런데, C의 언행이 꾸준히 편향되었음을 알아냈다 하더라도 그 자체를 비판할 수는 없다. 사람은 누구나 편향되어 있고 '편향 없음(소위 중립)'이라는 건 아주 특별한 상황이 아닌 이상 지향할만한 좋은 가치도 아니기 때문이다. 스스로가 어떤 편향을 얼마나 가지고 있는지 자각하고 있는지 여부, 그러한 편향을 공연히 인정하는지 여부에만 차이가 있을 뿐이다.
따라서 C에 대한 그나마 가능한 비판의 범주는 "편향이 있는데 없는 척을 한다(즉, 거짓말쟁이다)" 또는 "편향이 있는데 자각을 못한다(즉, 어리석다)"는 정도가 아닐까.
🎉 #Cloudflare#Workers support is now complete! After implementing the test infrastructure, core module, examples, and comprehensive documentation, #Fedify can now run on Cloudflare Workers.
This will be included in the upcoming Fedify 1.6 stable release. Thank you to everyone who requested this feature and provided feedback throughout the implementation!