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
1

Hmmm.

Hey, if I wanted to plot a bunch of data points in three dimensions - x,y,z,colour, coords all positive, nothing more than that - what’s your favorite tool for that? I’d like to be able to pan and zoom around whatever I’m looking at.

0
0

People often think that a protocol is just the order of bits and fields and headers. But that shit is just the schema. You can have a bunch of well ordered bits and still manage to communicate absolutely nothing.

Protocols tell you how to do something in various situations in order to achieve orderly outcomes. Thus, a well-written communication protocol also tells you
how to communicate, and what that communication is meant to achieve. Since two clients have adopted the same protocol, it can be assumed they want to achieve the same goals.

A protocol is thus also a contract.

I mean that all seems super obvious and straight forward, but then you look at a lot of modern protocols and they focus a lot on schema and leave very little to figuring out goals and means. They want to be everything-protocols, which is just counter productive. A contract without known goals has no enforcement mechanism, and no way if anything but extremely broad terms have been met. Has my message had the desired affect? Do I need to send more, wait for more? Hard to know. It's fine if you just want to send bytes back and forth, but its shit when you're trying to create an ocean for applications since they don't know what is going to be achieved broadly, they have to negotiate individually (...which they could have done anyways without a protocol).

And that's why you see app A fighting with App B fighting with ... to figure out what each has done and how to read each other's specific interpretations and ideas. Frankly, It's a fuckin' mess. I understand that'd It'd probably create a lot of friction and slowdown to do it right, but its also kinda silly that applications often have to identify and negotiate with each other despite sharing the same protocol/version.

0

Today I had some time to play around with a esp32-c6 I had laying around. I wondered for a while now whether it would be possible to run Diesel on these micro controllers.
Turns out that this is possible for the SQLite backend with some adjustments to diesel and some of our dependencies :tada:

You still need to bring your own VFS to get this working.

I likely will upstream parts of these in the next days, so the next Diesel release might support this out of the box.

Command line output of flashing a ESP32-C6 via espflash and afterwards seeing Diesel queries appearing in the ouput.Source code for running an embedded Rust program creating a Sqlite Database connection via Diesel and executing several queries.

```rust

#[unsafe(no_mangle)]
extern "C" fn sqlite3_os_init() -> core::ffi::c_int {
    println!("Setup os");
    unsafe {
        crate::memory::install();
    }
    libsqlite3_sys::SQLITE_OK
}

#[esp_hal::main]
fn main() -> ! {
    let config = esp_hal::Config::default().with_cpu_clock(esp_hal::clock::CpuClock::max());
    let peripherals = esp_hal::init(config);

    println!("Firmware starting");

    esp_alloc::heap_allocator!(size: 100 * 1024);
    println!("Before sqlite");
    let mut conn = SqliteConnection::establish(":memory:").unwrap();
    conn.set_instrumentation(|event: diesel::connection::InstrumentationEvent<'_>| {
        println!("Execute query: {event:?}")
    });

    conn.batch_execute("CREATE TABLE users(id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL)")
        .unwrap();

    diesel::insert_into(users::table)
        .values([users::name.eq("John"), users::name.eq("Jane")])
        .execute(&mut conn)
        .unwrap();

    let delay = Delay::new();
    loop {
        let data = users::table
            .filter(users::name.eq("Jane"))
            .first::<(i32, String)>(&mut conn)
            .unwrap();
        println!("----");
        println!("Query data:");
        println!("Loaded user data: {} -> {}", data.0, data.1);
        println!("---");
        delay.delay_millis(500);
    }
}

```
0
1

@neilNeil Brown
The is more than just the protocol. Diaspora, for example, does not use it and yet belongs to the Fediverse and it is one of the oldest service in the Fediverse.
Fediverse means that instances federate. There are different services: Mastodon, Pixelfed, Diaspora, Friendica, etc. See image.
This diversity has grown bottom up and is also desired by many users of the services. However, there is an app that captures much accounts and displays it in one timeline on the app. This is the Fedilab app: fedilab.app/ @appsFedilab Apps

Since more people are coming to the Fediverse from commercial central platforms, there is often a desire to see everything with one account. For example, the topic was discussed intensively here (in German): mstdn.social/@bsi@social.bund.

Fediverse-Services in a tree with different protocols
source: https://axbom.com/fediverse/
0
0
0
0
0
0
0
0
0

the Android drama is exploding.

github.com/researchxxl/syncthi

@fdroidorgF-Droid at this point is being used to push out an app with sensitive permissions that's been taken over by an unknown individual who refuses to engage with its large community of users and developers.

I STRONGLY recommend disabling updates from Fdroid, if not uninstalling and manually installing 2.0.11.2, or installing the Google Play version which has a different maintainer.

this is extremely shady and it's just looking worse as time goes on. I'll link to the Syncthing forum thread from about where I left off last time in a subsequent post.

0
0
0
0
0
0
0
0
0
0
0

Speaking in mitigation today Adelheid Russenberger, 34, a history PhD student from London said:

“I believe that I acted morally and according to my conscience [. …] There is no justice in climate breakdown and without a stable climate no-one can live, let alone thrive. I climbed onto the gantry to try and prevent the government’s disastrous plans to licence more North Sea Oil and gas extraction – oil and gas that would have pushed us closer to lethal irreversible tipping points. I climbed on a gantry because I refused to ignore that basic moral principle of acting to protect life.”

In mitigation, Jane Touil, 59, a visually impaired former crown servant from Rochdale said:

“We are in an unprecedented situation. Yet the law says our protest was not justified. Not necessary. Not reasonable or proportionate. Disruption from flooding, extreme heat, extreme weather and wildfires is not a public nuisance. I am.

“The law will not save us. I have always tried to live and act according to my conscience. I call on everyone in this courtroom and in this country to do the same. Politicians will not make the change we need, but we can”

1/3

juststopoil.org/2025/12/05/fou

0
0
0
0
0
0
0

Looooooooong overdue but now that is stable I feel confident enough in it as a long term solution that I am finally doing it. I am deleting everything in Google Photos today. Long overdue.

Also, the deleting process stinks. You have to do it manually from the webUI bit by bit. Anti-user behavior. I guess that shouldn't be a surprise.

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

Gruppe D des hofft Ihr hattet einen stressfreien Samstag...

Kurze Vorstellungen:
Die Kaki (Persimmon), auch genannt Chinesische Quitte oder "Götterspeise", ist die süße, orangefarbene, einer Tomate ähnelnde Frucht des Kakibaums. Sharon ist eine Unterart.
Zur Zuckermelone gehören u.a. "Netzmelone" und Galiamelone, beide entsprechend nicht extra im Turnier.

Achtung: In der Gruppenphase finden 2 Abstimmungen am Tag statt, Start um 08:00 Uhr und 20 Uhr, je 24 h lang

0
0
0
0

today in sidetrail.app improvements: - perf fixes, fewer navigation stalls - fixed overflows on mobile - fixed taps on mobile - actual masonry (on desktop) - home algo boosts fresh trails - better keyboard nav thanks to everyone for testing it and creating your first trails!

screenshot to the homepage
0
0

Actually speaking of nostalgia I have found it funny watching the nostalgia event horizon shift. When I was a kid it was the 50s/60s, then the 80s, and then my generation got annoying about the 90s. Recently saw a post about "Christmas used to be fun" with a photo timestamped 2012. Basically yesterday!

0
1
1

I just played around upgrading a FreeBSD 14.3p6 VM to 15.0-RELEASE via FreeBSD-base.
I still have not figured out how to do that with the official repos, but after building packages locally i was able to upgrade the boot environment and reboot in a working installation!

Has anyone got this working with the official base repo?

If anyone is interested, here are my notes about upgrading locally (Notes in picture alt for copy paste).

Create Boot Env and mount it
```
bectl create 15.0
mkdir /mnt/upgrade
bectl mount 15.0 /mnt/upgrade
```
Change pkg configuration `/mnt/upgrade/usr/local/etc/pkg/repos/FreeBSD-base.conf` to local repo
```
FreeBSD-base: {
  url: "http://local.ip/${ABI}/15.0",
  enabled: yes
}
```
and comment out FreeBSD-base from /mnt/upgrade/etc/pkg/FreeBSD.conf
Install FreeBSD-pkg-bootstrap, as mentioned in the [release notes](https://www.freebsd.org/releases/15.0R/relnotes/)
```
env ABI=FreeBSD:15:amd64 IGNORE_OSVERSION=yes pkg -c /mnt/upgrade/ install -r FreeBSD-base FreeBSD-pkg-bootstrap
```
Then upgrade the base packages
```
env ABI=FreeBSD:15:amd64 IGNORE_OSVERSION=yes pkg -c /mnt/upgrade/ upgrade -r FreeBSD-base
```
Check, if FreeBSD-set-base is installed:
```
env ABI=FreeBSD:15:amd64 IGNORE_OSVERSION=yes pkg -c /mnt/upgrade/ install -r FreeBSD-base FreeBSD-set-base
```

upgrade all other packages
```
env ABI=FreeBSD:15:amd64 IGNORE_OSVERSION=yes pkg -c /mnt/upgrade/ upgrade
```

Temporarily activate boot env and reboot
```
bectl activate -t 15.0
shutdown -r now
```
0

Key Takeaways

  • 🚀 Missile Knowledge—Knows where it is at all times
  • 🤔 Rationale—It knows this because it knows where it isn't
  • 🧪 Synthesis—By subtracting where it is from where it isn't, or where it isn't from where it is (whichever is greater) it achieves a difference, or deviation.
0

apropos nothing my favourite recipe app seems to be having a sale paprikaapp.com/blog/2025/11/17

(obviously nobody is paying me to say this, I've just been using it happily to store all of my recipes for years and it's like a $3 one-time payment if the sale's still on. It'll automatically extract a recipe from any website and I find it does a great job. I do not use the grocery/menu planning features.)

0

@neilNeil Brown
The is more than just the protocol. Diaspora, for example, does not use it and yet belongs to the Fediverse and it is one of the oldest service in the Fediverse.
Fediverse means that instances federate. There are different services: Mastodon, Pixelfed, Diaspora, Friendica, etc. See image.
This diversity has grown bottom up and is also desired by many users of the services. However, there is an app that captures much accounts and displays it in one timeline on the app. This is the Fedilab app: fedilab.app/ @appsFedilab Apps

Since more people are coming to the Fediverse from commercial central platforms, there is often a desire to see everything with one account. For example, the topic was discussed intensively here (in German): mstdn.social/@bsi@social.bund.

Fediverse-Services in a tree with different protocols
source: https://axbom.com/fediverse/
0
0

Something I considered for my "listening to" thread but rejected…

Ceci intéressera particulièrement les francophones.

Here is a video where a musician who built a table into a composite noise instrument made of contact mics, solenoids, crackleboxes, and guitar pedals does a series of short performances and explains his system in French. I'm skipping it for the thread because it's many sketches rather than one "song". But if you speak French I bet this is great:

youtube.com/watch?v=M0SU7C1uwJQ

0
0

The other day @simonSimon Willison was talking about how cool it was that he could finally vibe code from his phone and I’m still not sure if it was a bit, or a cry for help, or what.

Yeah, I’d also love to have the unreliable machine work from a place that’s always active near me and which also sucks for reviewing correctness.

0