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

This is the thing, right?

When a _person_ does something absolutely inane and I call them on it, they will eventually stop doing the inane thing.

I worked with this guy a while back. He was junior, I was the tech lead on the project. I set the coding standards for it and he didn't like what I picked because it required a lot of work up front. It required docs on public methods, it required fairly high test coverage targets (both branch and instruction), it required following specific naming conventions and programming standards. I often would tell him to make his commits smaller.

No smaller than that.

Smaller still.

You couldn't just turn your brain off.

He fought me every step of the way, but eventually:

He learned and what's more, he began to internalize why I was doing it the way that I did.

Code reviews started flying by. It became _easy_.

AIs, even the really good ones, don't learn from this sort of process. Oh sure they have _memory_, but it is itself unreliable and subject to the same context window restrictions as everything else. They are by their nature ephemeral.

So there's a lot less incentive in me giving it a thorough review.

Unless it is my agent and my project.

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

When I first started working with , before existed, it felt like writing web apps in Perl and CGI in the late '90s. Interesting, even exciting—but never comfortable. That era where your business logic and your protocol plumbing were just… the same thing:

print "HTTP/1.1 200 OK"
print "Content-Type: text/html"
print
print "Hello, world!"

Decades of web development have given us layers of abstraction we now take for granted. Nobody hand-parses application/x-www-form-urlencoded query strings anymore. Nobody writes their own JSON codec, or manually constructs HTTP request/response messages. These things just aren't your problem when you're building an app.

ActivityPub development still feels like they are your problem. What do you do when the https://www.w3.org/ns/activitystreams#actor property comes in as a string instead of an array? What about when https://www.w3.org/ns/activitystreams#object is an embedded entity rather than a URI? How exactly do you implement HTTP Signatures? And wait—what's Linked Data Signatures, and do you need that too?

The real issue isn't that ActivityPub is complicated per se. It's that you can't get away with understanding it at a high level. You have to know it the way an implementor knows it—every edge case, every inconsistency in how different servers serialize JSON-LD, every signature scheme that exists in the wild. That's a lot to learn before you can even start thinking about your actual app. And when developers understandably cut corners on the protocol to focus on their product, it quietly becomes an interoperability problem for the whole ecosystem.

What I want ActivityPub development to feel like: you spend a day understanding the big picture, and then you just… build your app. That was the goal when I started Fedify, and honestly, we're not fully there yet. But it's where I want to get.

0
6
0
1
0
0
0
0

Today I was reading @b0rkJulia Evans 's comic about tar: wizardzines.com/comics/tar/?ut

When I learned how to use `tar` on Linux (probably ~20 years ago?) I learned that you don't need to memorize all the compression flags (`-z`, `-j`, `-J`, `-Z`) because tar auto-detects the compression format when extracting/listing.

This is handy because then I only have to learn the flag for my _favorite_ compression format when creating tarballs, and let the auto-detection figure it out for tarballs I receive.

I'm surprised the example in this comic uses the compression format when listing (`-tjvf`). Does that mean there's a version of `tar` in common usage that doesn't support auto-detection? Or is the auto-detection unreliable in some common circumstance? Or some third possibility I haven't thought of?

0
0
0

gender things, pronouns

My profile said she/they still, but I have realized for a while that I'm only ok with being called they/them by other queers or people who use they/them *generally* as a gender neutral pronoun very broadly. Seeing myself called "they" in an article, well, based on what I've written I can't fault anyone, but I've realized over time that "I'm she/her as in I'm a woman, but they/them as in fuck the gender binary"

I'm cool with "defaulting to they/them for everyone" but not with "defaulting to they/them just for trans people". I just don't trust someone who isn't also very clearly queer to be on board enough to use they/them for me especially if especially if it's not crystal clear they aren't doing the same for cis people

0
0
0
0

@evanEvan Prodromou
Hello my friend, how are you? I'm Asma from Gaza. Please help me, my brother is at risk of having his leg amputated and needs urgent surgery costing $500. Please donate $50 or any amount you can to save him 😭💔💔

We've raised $107 of our $500 goal. Let's join hands to raise the full amount. Please don't ignore us, my friends. 🍉🙏🙏
chuffed.org/project/152432-sav

0

I participated a bit in the process of when Bluesky was Jack Dorsey and Parag Agrawal's personal project. I also believe Jack and Parag were sincere about Bluesky as a decentralized social network protocol that Twitter would adopt, which is the directive that Bluesky was given as an organization.

When Jay Graber was awarded the position to lead Bluesky, I was not surprised. To me, Jay was the obvious choice to deliver what Bluesky was being directed, and I do think Jay is an excellent leader

There is also something which Bluesky gets right which the fediverse does not. I mentioned that Bluesky uses decentralization *techniques*, and the most important of those is content-addressing. This allows content to exist even when a server goes down.

This is a great decision and I have advocated that the fediverse do so as well. In fact several years ago I wrote a demo in @spritelyThe Spritely Institute's early days showing off how one could build a content-addressed ActivityPub in a spec-compatible way.

0
3
0

Furthermore, I think Bluesky is providing something valuable: a lot of people are trying to leave X-Twitter *right now* because it has become a completely toxic place.

The fact that Bluesky's team has managed to scale to receive such users is incredible, nearly feeling miraculous.

On the fediverse we also see a lot of accusations of Bluesky being owned by Jack Dorsey, and this isn't true. My understanding is that Jay performed an impressive amount of negotiation to allow Bluesky to receive funding independently.

These days Jack Dorsey is instead focusing on Nostr, which I can only describe as "a sequel to Secure Scuttlebutt with extremely bad vibes where bitcoin people talk about bitcoin"

0
9
0
0

Now you're hitting the point in this thread where some of you may be thinking "aha! this is where Christine is saying that the fediverse/activitypub are awesome and atproto is terrible!"

you have NO IDEA HOW MUCH I CRITICIZE THE FEDIVERSE ALL THE TIME, I do it all the time, and will later here

0
2
0

As said, tens of thousands of people are self-hosting *today*. Fediverse software doesn't just scale up, it scales *down*.

GotoSocial is cheap enough on resources where you can run it for family and friends on a raspberry pi or spare laptop you have sitting around.

0

Remember that the idea of "fully self-hosting" on Bluesky/ATProto at this point is primarily abstract; nobody is really doing it. But of course there's a place where tens of thousands of people are running their own servers for millions of users, and that's the fediverse/ActivityPub.

0
3
0

And before we make it any further can I say that I watched a nice medley of David Bowie and Cher singing, and it was so lovely youtube.com/watch?v=KPlN8RBP-Ws

@mlemwebDr. Morgan Lemmer-Webber said "of course it's very heteronormative despite having two queer coded icons on the stage and ISN'T THAT THE WAY I guess

0

But where was I? Oh yes. We had talked about why PDS'es aren't enough (blog/google analogy), relative costs of hosting things on ATProto vs ActivityPub, etc etc

But we haven't gotten into the really interesting parts which are the structural analysis stuff, so let's move onto that

0

Now you may be saying, "Christine, this is really unfair, because you're looking at ActivityPub servers which are only dealing with a small amount of the network, what if it were an ActivityPub mega-node? What are the costs THEN huh?" and "What if we hosted just PART of ATProto?"

What then INDEED

0
0
7
0

But here's the other thing. People have trouble with the fediverse! All those decentralization decisions get in the way, my god, you've got to choose a server, search doesn't work well (actually it could but it's a cultural thing, different topic), and worst of all:

Sometimes you DON'T SEE REPLIES!

0

The thing you often get seen thrown around is "it's amazing, I had no idea a decentralized protocol could just work like that! How on earth did they solve that in a decentralized system and so FAST too!"

It's simple: all those things "just work" because Bluesky is centralized.

0

Here's my definition of federation:

> Federation: a technical approach to communication architecture which achieves decentralization by many independent nodes cooperating and communicating to be a unified whole, with no node holding more power than the responsibility or communication of its parts.

0
1
0
0
1
0

Maybe there is another way to achieve federation, but it's about the power dynamics. It's a technical immersion of power dynamics, the flow and interchange of cooperation between many parts.

So you may say, well, doesn't ATProto have that? After all, messages flow through the different parts!

0
5
0

So let me introduce two models of communication which we can use to analyze these two systems. It's important!

- Fediverse/ActivityPub: "message passing"
- Bluesky/ATProto: "shared heap"

Okay, cool, terms established, let's talk about them and why they matter because they matter A LOT

0
2
0

It's true that sometimes users click over to a thread and see some replies but not all on their instance's UI. There's things that could be done to improve it, but it's sometimes mildly confusing, but not so bad, and you can click over typically to see whatever else is happening, and people learn to

0

On top of "message passing" we will build "publish-subscribe" as a second-layer abstraction

"Your ideas are interesting and I'd like to subscribe to your newsletter."

You send me a letter saying you'd like to hear the things I have to say, okay, you're part of the reader list. That's how it works.

0

But to Bluesky's credit, Twitter's DMs aren't decentralized either! And getting and shipping something that works, now for the influx of Twitter users, again... I am sympathetic

Bluesky's team is doing an INCREDIBLE JOB in that way of scaling to meet the incoming stream of Twitter refugees

0

On that note, again, I am not reading the replies right now because I am (a) afraid to and (b) I'm never gonna finish this and we are a bit over HALFWAY THROUGH the analysis but I have this fear that EVERYONE is mad at me, Bluesky fans, fediverse fans

I am trying to be analytical. I am trying!!!

0
0
0
0

I have returned, with tea

I am still not reading notifications. Well, I have seen a few fly by on the fediverse which is blipping and blooping nonstop in the Mastodon UI so people are clearly reading it there

Bluesky says "30+". How big is the +?? I will resist temptation to look and assume "31"

0

Before we get into the next section, earlier I left an easter egg, which you could reply to and say "I found the easter egg" or something

Now you can put 2 eggs

I 2 was once an egg

(Look I specifically transitioned so I could never be accused of making dad jokes again so that does not qualify)

0
3
0