What is Hackers' Pub?

Hackers' Pub is a place for software engineers to share their knowledge and experience with each other. It's also an ActivityPub-enabled social network, so you can follow your favorite hackers in the fediverse and get their latest posts in your feed.

0
@hongminhee洪 民憙 (Hong Minhee) :nonbinary: from the point of view of someone who is "maintaining" a JSON-LD processing fedi software and has implemented their own JSON-LD processing library (which is, to my knowledge, the fastest in it's programming language), JSON-LD is pure overhead. there is nothing it allows for that can't be done with

1. making fields which take multiple values explicit
2. always using namespaces and letting HTTP compression take care of minimizing the transfer

without JSON-LD, fedi software could use zero-ish-copy deserialization for a majority of their objects (when strings aren't escaped) through tools like serde_json and Cow<str>, or
System.Text.Json.JsonDocument. JSON-LD processing effectively mandates a JSON node DOM (in the algorithms standardized, you may be able to get rid of it with Clever Programming)

additionally, due to JSON-LD 1.1 features like @type:@json, you can not even fetch contexts ahead of time of running JSON DOM transformations, meaning all JSON-LD code has to be async (in the languages which has the concept), potentially losing out on significant optimizations that can't be done in coroutines due to various reasons (e.g. C# async methods can't have ref structs, Rust async functions usually require thread safety due to tokio's prevalence, even if they're ran in a single-threaded runtime)

this is
after context processing introducing network dependency to the deserialization of data, wasting time and data on non-server cases (e.g. activitypub C2S). sure you can cache individual contexts, but then the context can change underneath you, desynchronizing your cached context and, in the worst case, opening you up to security vulnerabilities

json-ld is not my favorite part of this protocol

@kopperkopper :colon_three: @hongminhee洪 民憙 (Hong Minhee) :nonbinary: As the person probably most responsible for making sure json-ld stayed in the spec (two reasons: because it was the only extensibility answer we had, and because we were trying hard to retain interoperability with the linked data people, which ultimately did not matter), I agree with you. I do ultimately regret not having a simpler solution than json-ld, especially because it greatly hurt our ability to sign messages, which has considerable effect on the ecosystem.

Mea culpa :\

I do think it's fixable. I'd be interested in joining a conversation about how to fix it.

0
0
0

Do you want to design a cross-stitch pattern? This website is neat.

Now to try to figure out how to print this. If it works it could be fun to make different species.

I think I'd like to see how small I can make the patterns. Since I am very lazy and won't complete a big complex project.

There are also sites that will convert photos, but the results look like waaaay too much work to really make.

flosscross.com/

A simple pattern I designed with four ants, two facing up, two facing down.
0
1
0

Man, I grew up on Power Rangers, The Magic School Bus, Captain Planet, and generally people of different backgrounds and skills coming together to try to save the world and learn things. So like, how tf did we end up here?!

RE: https://bsky.app/profile/did:plc:3gjqsztgr3nhdyu6toz6n4i5/post/3mfaato4enc25

0

RE: mastodon.social/@twostraws/115

I've sent Kickstart TestFlight invites to 10 more people, all of whom emailed me to say they were interested. I made another video of its features – it was 38 minutes, despite me flying through everything quickly 🫠 Hopefully I'll be able to expand the TestFlight further soon!

0
0
3
0

I am old and my technology is aging with me

But the stuff I can keep using I keep using

Which is one reason I am enthusiastic about my switch to using the MNT Reform line of computers for my stuff. I want that for my computer itself. I want a computer that can age with me, but also grow and change, which has never been possible with laptops in my lifetime.

@cwebberChristine Lemmer-Webber This is basically where I'm at too. I'd like to keep using the Pocket Reform in some incarnation for as long as I can - with some tweaks and upgrades along the way, to be sure, but with the same chassis. (We'll see how that goes as I get older and my vision gets worse but I can always chassis swap)

Of course I feel a bit hypocritical saying that while continuing to buy each new MNT thing, but I can afford it and I want to support them. It's only partly an excuse I tell myself 😅

0
0

Instruments 26.4 adds a whole host of new features in the latest Xcode beta!

We'll take a look at them during my App Performance and Instruments Virtuoso course, starting next week.

This amazing tool keeps getting more and more powerful. I hope you can join me for a deep dive into Instruments.

Click through for full course details, testimonials from past students, and enrollment info.

swift-virtuoso.com

(Know developers who might be interested? Please boost and spread the word!)

0
1
@hongminhee洪 民憙 (Hong Minhee) :nonbinary: from the point of view of someone who is "maintaining" a JSON-LD processing fedi software and has implemented their own JSON-LD processing library (which is, to my knowledge, the fastest in it's programming language), JSON-LD is pure overhead. there is nothing it allows for that can't be done with

1. making fields which take multiple values explicit
2. always using namespaces and letting HTTP compression take care of minimizing the transfer

without JSON-LD, fedi software could use zero-ish-copy deserialization for a majority of their objects (when strings aren't escaped) through tools like serde_json and Cow<str>, or
System.Text.Json.JsonDocument. JSON-LD processing effectively mandates a JSON node DOM (in the algorithms standardized, you may be able to get rid of it with Clever Programming)

additionally, due to JSON-LD 1.1 features like @type:@json, you can not even fetch contexts ahead of time of running JSON DOM transformations, meaning all JSON-LD code has to be async (in the languages which has the concept), potentially losing out on significant optimizations that can't be done in coroutines due to various reasons (e.g. C# async methods can't have ref structs, Rust async functions usually require thread safety due to tokio's prevalence, even if they're ran in a single-threaded runtime)

this is
after context processing introducing network dependency to the deserialization of data, wasting time and data on non-server cases (e.g. activitypub C2S). sure you can cache individual contexts, but then the context can change underneath you, desynchronizing your cached context and, in the worst case, opening you up to security vulnerabilities

json-ld is not my favorite part of this protocol

@kopperkopper :colon_three: @hongminhee洪 民憙 (Hong Minhee) :nonbinary: As the person probably most responsible for making sure json-ld stayed in the spec (two reasons: because it was the only extensibility answer we had, and because we were trying hard to retain interoperability with the linked data people, which ultimately did not matter), I agree with you. I do ultimately regret not having a simpler solution than json-ld, especially because it greatly hurt our ability to sign messages, which has considerable effect on the ecosystem.

Mea culpa :\

I do think it's fixable. I'd be interested in joining a conversation about how to fix it.

0

Instruments 26.4 adds a whole host of new features in the latest Xcode beta!

We'll take a look at them during my App Performance and Instruments Virtuoso course, starting next week.

This amazing tool keeps getting more and more powerful. I hope you can join me for a deep dive into Instruments.

Click through for full course details, testimonials from past students, and enrollment info.

swift-virtuoso.com

(Know developers who might be interested? Please boost and spread the word!)

0
0
1
1
0
1
0
8
0
1
0
0

Question for Emacs wizards. I found a strange thing which I could not understand after reading the documentation (gnu.org/software/emacs/manual/) and even after reading the startup files, shipped with my Emacs 30.2.

If I use the -q option — Emacs will add site-lisp directories to the load-path. But with -Q option — there are no site-lisp catalogs in the load-path. Why is this happens? :drgn_confused:

Note: the option --no-site-lisp is not used in the both examples. So, as I understood after reading the gnu.org/software/emacs/manual/, even with --no-site-file (or -Q) the site-lisp catalogs should be added to the load-path in the both cases :drgn_confused:

Xterm window divided in two panes. On the one pane there is emacs -Q --batch --eval "(print load-path)" command which prints list of catalogs from /usr/local/share/emacs/30.2/lisp/*. On the second pane there is emacs -q --batch --eval "(print load-path)" command wich prints list of catalogs from /usr/local/share/emacs/30.2/lisp/* AND from /usr/local/share/emacs/30.2/site-lisp AND from /usr/local/share/emacs/site-lisp.
0
1
0

I have paying work for a graphic designer with experience in web design and corporate identity (logos, letterhead, marketing collateral, etc.).

Don't worry about having to code on the web design front—that's my job. I just need someone who can work with a coder. I'm in the US, so it's probably best if you're in North America too. But I'm open to working with people elsewhere.

Figured I would throw this out to the fediverse to see if any of you out there do this kind of work. If you do, send me your contact information and portfolio by DM, or by email to info@roguerepairman.com.

Boosts welcome :boost_requested:

0
8
0
0

洪 民憙 (Hong Minhee) :nonbinary: shared the below article:

ActivityPub Social API Hackathon

evan @evan@activitypub.space

<p><a href="https://wedistribute.org/2025/08/social-web-foundation-is-betting-big-on-client-to-server-api/" rel="nofollow ugc">It's well-known</a> that we love the <a href="https://github.com/swicg/activitypub-api/" rel="nofollow ugc">ActivityPub API</a> at the Social Web Foundation.</p> <p>I think it would be great for our community to have an ActivityPub API hackathon sometime this year -- hopefully this summer. Hackathons are a great way to engage a lot of developers really quickly. They also are a great way to test that an API has enough power to get people from zero to working app in a day or a weekend.</p> <p>I see a few great times to do this:</p> <ul> <li><a href="https://dwebcamp.org/berlin-2026/" rel="nofollow ugc">DWeb Camp Berlin</a> in Berlin</li> <li><a href="https://fedicon.ca/" rel="nofollow ugc">Fedicon</a> 2026 🤞🏼 in Vancouver</li></ul>

Read more →
0

洪 民憙 (Hong Minhee) :nonbinary: shared the below article:

Why I use "ActivityPub API" or "Social API"

Evan Prodromou @evanp@ghost.evanp.me

One of the most interesting areas of exploration in the ActivityPub community right now is the ActivityPub API. Most people who know ActivityPub are familiar with its federation protocol, which lets social networking servers like Mastodon and Pixelfed share data between them. But there is another, closely-related feature in the same specification, called the "social API".

ActivityPub has five normative sections: 3 Objects, 4 Actors, 5 Collections, 6 Client-to-Server Interactions, and 7 Server-to-Server Interactions. 3, 4, and 5 provide a read-only interface to social data that is useful for both the federation protocol and the social API. It lets both clients and servers read information about users on the network, their feeds, and the things they make and share.

Section 6 is focused on the mechanism clients can use to create new activities, and the side-effects of those activities. "Activities" are the most important data structure in ActivityPub (which is why they're featured so prominently in the name!). They represent sentences or statements about things that happen on a social network, like "Christine created the image img123.jpg" or "Evan liked Christine's image img123.jpg" and "Amy shared Christine's image img123.jpg". Creating these statements is how clients can make things happen with ActivityPub.

Section 7 is focused on how and when servers can send these activities across the network to other servers. There are some side-effects that are laid out, but mostly they involve cache management.

So, here's the important point I want to make: the federation protocol which connects ActivityPub servers is defined in sections 3, 4, 5, and 7. The social API is defined in sections 3, 4, 5, and 6. But some people use "server-to-server" or "s2s" as a synonym for the federation protocol, even though "server to server interactions" only covers one section. Similarly, some people use "c2s" or "client-to-server" as a synonym for the social API, even if "client-to-server interactions" is only one section.

I prefer to use "social API" or "ActivityPub API" to refer to the entire part of ActivityPub that lets client apps talk to social servers. Here are some rough reasons why.

  • It's what the spec calls it. In the conformance section, we said that 'this specification defines two closely related and interacting protocols: A client to server protocol, or "Social API" [...] A server to server protocol, or "Federation Protocol"'. This was intentional; the names come from the Social Web Working Group charter deliverables. Making a Social API was a key goal of the group. The ActivityPub API satisfies that goal.
  • It's a term that all developers and many users are familiar with. People who've used mobile apps or third-party apps know what an API is and what it's for. If you use "c2s", it's not clear to most developers what you're even talking about.
  • It's accurate. The social API is a RESTful API that uses JSON, HTTP, and all the fun stuff that app developers are already familiar with.
  • It emphasizes what's already available. People often say that Mastodon does not implement the ActivityPub API. But it implements sections 3, 4, and 5 of the specification – it has to, in order to support the federation protocol. That's the entire read-only side of the API. All (almost all?) Fediverse servers support these parts of the spec, too. You can build a pretty OK read-only API client using what's already available from Mastodon and others; see https://acct.swf.pub/ for an example.
  • "c2s" doesn't cover the whole API. As I said above, only one section of the doc is called "Client-to-Server Interactions", and it doesn't cover the read-only side of the API.
  • "c2s" is insider jargon. c2s isn't a common term for RESTful APIs. It really isn't a common term at all; there are only a few protocol suites, like XMPP, that refer to the "c2s" and "s2s" part.

I think it's fine if others use "c2s" when talking about the API, or especially about section 6 of the ActivityPub spec. It's not going to cause any harm. But the Social Web Community Group task force on implementing the API is called the "ActivityPub API" task force. I think that's a good idea – it emphasizes the API. I intent to use this name and framing for the foreseeable future.

Read more →
0
0
0

よっこいし :saba:

e24737c612 (upstream/main) Replace `prettier` with `oxfmt` (#37893)
8e7c3973dc Remove conditional check for timeline data (#37922)
39ff07bc89 Only suggest `discoverable` accounts in collection account editor (#37920)
7eb4b907eb New Crowdin Translations (automated) (#37918)
2a9de97cb6 Use validation matchers for `UserEmailValidator` spec (#37908)
c118ff708f Merge collection settings into single editor page (#37916)
ed4787c1b1 Profile editing: Name and bio (#37907)
157583659a Use validation matchers for `UniqueUsernameValidator` spec (#37909)
40f92f3af8 Use validation matchers for `UnreservedUsernameValidator` spec (#37910)
e288bf6516 Show reported collections in moderation interface (#37898)
6f859364fb Update dependency rack to v3.2.5 (#37895)
238d0f8e1d Update dependency devise to v5.0.2 (#37903)
f48a299004 Use validation matchers for `UrlValidator` spec (#37911)
093528ef17 New Crowdin Translations (automated) (#37915)

0
0

V Praze pokračuje výměna osvětlení – sodíkové lampy nahrazují úspornější LED světla. Proti jejich zavádění se ale vymezuje část veřejnosti i odborníci. Proč? Nejen to se dozvíte se v dnešním dílu pořadu Vysvětleno s Lucií Neužilovou.

0
0
0
0
0
0
0
0
0
0
0
0
0