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.

1

Simplicity is on Europe’s digital menu 🍪

Our new Digital Package could save businesses €5 billion by 2029 and boost AI-driven innovation.

Here’s how ↓

📘 Simplified rules on AI, cybersecurity and data
📈 Data Union Strategy to support AI leadership
📱European Business Wallet to cut red-tape and facilitate cross-border operations

By simplifying digital rules, we can lower costs and unlock innovation – all while safeguarding privacy, fairness, and security.

link.europa.eu/crNTV4

A split image showing two stylised cookies. The cookie on the left is covered with labels such as ‘analytics,’ ‘advertising,’ ‘tracking,’ ‘partners,’ and ‘preferences.’ The cookie on the right has a single label reading ‘Your choice.’ Below them is the text ‘Simpler digital rules,’ with the European Commission logo in the bottom right corner.
0

Simplicity is on Europe’s digital menu 🍪

Our new Digital Package could save businesses €5 billion by 2029 and boost AI-driven innovation.

Here’s how ↓

📘 Simplified rules on AI, cybersecurity and data
📈 Data Union Strategy to support AI leadership
📱European Business Wallet to cut red-tape and facilitate cross-border operations

By simplifying digital rules, we can lower costs and unlock innovation – all while safeguarding privacy, fairness, and security.

link.europa.eu/crNTV4

A split image showing two stylised cookies. The cookie on the left is covered with labels such as ‘analytics,’ ‘advertising,’ ‘tracking,’ ‘partners,’ and ‘preferences.’ The cookie on the right has a single label reading ‘Your choice.’ Below them is the text ‘Simpler digital rules,’ with the European Commission logo in the bottom right corner.
0
1

Simplicity is on Europe’s digital menu 🍪

Our new Digital Package could save businesses €5 billion by 2029 and boost AI-driven innovation.

Here’s how ↓

📘 Simplified rules on AI, cybersecurity and data
📈 Data Union Strategy to support AI leadership
📱European Business Wallet to cut red-tape and facilitate cross-border operations

By simplifying digital rules, we can lower costs and unlock innovation – all while safeguarding privacy, fairness, and security.

link.europa.eu/crNTV4

A split image showing two stylised cookies. The cookie on the left is covered with labels such as ‘analytics,’ ‘advertising,’ ‘tracking,’ ‘partners,’ and ‘preferences.’ The cookie on the right has a single label reading ‘Your choice.’ Below them is the text ‘Simpler digital rules,’ with the European Commission logo in the bottom right corner.
0

Simplicity is on Europe’s digital menu 🍪

Our new Digital Package could save businesses €5 billion by 2029 and boost AI-driven innovation.

Here’s how ↓

📘 Simplified rules on AI, cybersecurity and data
📈 Data Union Strategy to support AI leadership
📱European Business Wallet to cut red-tape and facilitate cross-border operations

By simplifying digital rules, we can lower costs and unlock innovation – all while safeguarding privacy, fairness, and security.

link.europa.eu/crNTV4

A split image showing two stylised cookies. The cookie on the left is covered with labels such as ‘analytics,’ ‘advertising,’ ‘tracking,’ ‘partners,’ and ‘preferences.’ The cookie on the right has a single label reading ‘Your choice.’ Below them is the text ‘Simpler digital rules,’ with the European Commission logo in the bottom right corner.
0
1
0
1

Simplicity is on Europe’s digital menu 🍪

Our new Digital Package could save businesses €5 billion by 2029 and boost AI-driven innovation.

Here’s how ↓

📘 Simplified rules on AI, cybersecurity and data
📈 Data Union Strategy to support AI leadership
📱European Business Wallet to cut red-tape and facilitate cross-border operations

By simplifying digital rules, we can lower costs and unlock innovation – all while safeguarding privacy, fairness, and security.

link.europa.eu/crNTV4

A split image showing two stylised cookies. The cookie on the left is covered with labels such as ‘analytics,’ ‘advertising,’ ‘tracking,’ ‘partners,’ and ‘preferences.’ The cookie on the right has a single label reading ‘Your choice.’ Below them is the text ‘Simpler digital rules,’ with the European Commission logo in the bottom right corner.

@EUCommissionEuropean Commission
Are you kidding us? You are demolishing our digital rights and have the audacity to try and sell it back to us as a nice little improvement? A mere simplification?!

Has it become too hard for you to advocate for people's rights? Our rights? Does putting businesses over people and caving in to corporate greed make everything SIMPLER for you? Is that the simplification you are really talking about?

Well, let me tell you, we won't SIMPLY forget that! We will vote again some day.

0
0
0
0
0
0
0
1
1
0
1
0
1

@alexmu But we do know the right level! They are the boundaries at which we accept the user data coming from outside the system. For example in Haskell or Java, I'd propagate such errors to a boundary and make a decision there instead of crashing at somewhere deep in in the program. I think it is a culture thing.

very long blather about rust errors

@abnvAbhinav 🌏 @alexmu so .. folks don't always discuss this in presentations of rust errors (and I'm not here to totally defend where rust errors wound up) but the question of recovery boundaries was _central_ to the design discussions and iterations.

many of us had experienced working in C++ (or eg. Java) where "pervasive exceptions from any possible expression" + "lots of mutable state that touches all other mutable state" meant that there was rarely any place in a real-world try/catch programs where a catch would actually wind up with a program in a safe, non-corrupt state.

(there's a whole literature about this in C++ called "exception safely levels" -- en.wikipedia.org/wiki/Exceptio -- which of course nothing can check or reason about statically and most programs completely fail to adhere to. It's extremely hard to even consistently write exception-safe C++ destructors.)

in addition, there are a bunch of things in C++ at least that _don't_ throw, but _do_ kill the process. and that's going to be true in most systems languages. rust has unsafe! and if you segfault or execute an illegal instruction your process is toast.

given that, we saw and continue to see a lot of programs adopt "process boundary" as the safe(r) boundary for "major error recovery". web browsers and many network servers for example tend to do process separation. so there was an argument that "unrecoverable error that kills the process" is probably a good primitive concept to include, and for super-pervasive errors they should probably be routed into there.

but of course, not all errors are fatal, and some are a bit more "expected" and _some_ seem meaningfully recoverable (eg. see the distinctions between checked and unchecked exceptions in Java), and so we iterated a bunch on the question of lesser types of error (including a condition-handling system a bit more like common lisp) and ultimately landed on the result type, and a copy of Swift's ? operator for propagating it, which is .. eh .. ok? not great but at least fairly explicit and well-marked, and easier to reason about than "every expression everywhere might throw mid-evaluation".

the result is a bit of a muddle. error and result shipped with too little support for abstraction and composition, and there are probably too many ways to panic, and unwinding and unwind-catching is a thing of arguable utility (I'd kinda prefer to remove both). but the whole design does have a rationale behind it, it's not just foolishness. at worst I'd say "they shipped something incomplete under time pressure and limited information about how it'd wind up being used".

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

Do I know any Blazor experts here?

If I click the "MyComponent" button below, I get an error: "The render handle is not yet assigned." However, if I first click the "Click me" button, and THEN the "MyComponent" button, it will work as expected.

HOWEVER, if I change the method group invocation in the @onClick handler to a lambda, i.e, "() => _myComponentRef.ShowComponent()" everything will always work.

Does anyone know why this happens?

Blazor code:

@page "/counter"
@rendermode InteractiveServer

<PageTitle>Counter</PageTitle>

<h1>Counter</h1>
<p role="status">Current count: @_currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
<button class="btn btn-primary" @onclick="_myComponentRef.ShowComponent">MyComponent</button>

<MyComponent @ref="_myComponentRef"></MyComponent>

@code {
    private int _currentCount = 0;
    private MyComponent _myComponentRef = null!;

    private void IncrementCount()
    {
        _currentCount++;
    }

    protected override void OnInitialized()
    {
        _myComponentRef = new MyComponent();
        base.OnInitialized();
    }
}Blazor code:

@if (Show)
{
    <h3>MyComponent</h3>   
}

@code {
    public bool Show { get; set; }
    
    public void ShowComponent()
    {
        Show = true;
    }
}
0

One of the things I built Tribblix for is to do simple experiments. On one of my servers today I used crossbow to create a private network segment, stuck a router zone in front of it to do NAT/DNS/DHCP and act as a jumphost, built a couple of bhyve VMs attached to that subnet running Tribblix, set one of those systems up as an iSCSI target and the other as an iSCSI initiator, and built a ZFS pool running over iSCSI. It's probably been over a decade since I last played with iSCSI.

Found a number of interesting bugs/quirks to fix along the way, and documented the iSCSI basics (which should work on other illumos distros although package names will be different with IPS).

tribblix.org/Use/4.storage_isc

0

Weapons (2025): I don't know. The premise is interesting, it's well made, the acting is good, and the mixture between horror and comedy, too.

The first third was scary, the second third cool, but during the last part I couldn't decide whether to still take it seriously or not.

It's a 7 out of 10 for me. The mystery part kept it interesting, but I would've preferred less jump scares and a better landing.

0
1
0
0
0
1