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.

A deep dive into Apple’s .car file format

Every modern iOS, macOS, watchOS, and tvOS application uses Asset Catalogs to manage images, colors, icons, and other resources. When you build an app with Xcode, your .xcassets folders are compiled into binary .car files that ship with your application. Despite being a fundamental part of every Apple app, there is little to none official documentation ab

osnews.com/story/144416/a-deep

0

A deep dive into Apple’s .car file format

Every modern iOS, macOS, watchOS, and tvOS application uses Asset Catalogs to manage images, colors, icons, and other resources. When you build an app with Xcode, your .xcassets folders are compiled into binary .car files that ship with your application. Despite being a fundamental part of every Apple app, there is little to none official documentation ab

osnews.com/story/144416/a-deep

0

동계 올림픽 피겨 스케이팅 페어 프리, 미우라-기하라 조 경기는, 이게 금메달이 아니면 안 된다는 생각이 드는 퍼포먼스였다. 네이버 치지직에서 보실 수 있으니 한 번 보시길 권합니다. 기술, 표현, 감정 모두 역사에 남을 기록적인 경기.

0
0
1
0
0
1
0

im working on a decentralized software issues/pull requests thing that lives directly in git and works with all existing git hosts. it will work by running a command in your repo like

git todo web

which will open a local web server that serves a github/gitlab issues-like interface for you to use. you can take out new issues, comments on existing issues, etc.

theres a way to do this that runs in the browser without javascript. i know this is important to a lot of people. this whole thing becomes *a lot easier* to make and make extensible if i can use javascript though. so, a poll:

assuming such a thing is interesting to you in the first place, would you use it if it depended on javascript in the browser?

0

Sure, you've learned to feel at peace with the typos you find in your blog posts and your social media posts.

But have you tried the next level?
Trying to feel at peace with the typos you find in your git commit messages? 🫣

0
0
0
0
0

:mario_jump: accounts to follow:

@dolphinDolphin Emulator - Free open source GameCube/Wii emulator
@pretendoPretendo Network :bw_fix: - Free open source project to replace 3DS & Wii U servers
@NintendoMetro - Blog of videos, music, photos about Nintendo
@rfnpodcastRadio Free Nintendo - Long-running informal podcast about Nintendo
@pokemonFediverse Plays Pokemon - Interactive Pokemon game bot, play by voting in polls
@MrL314MrL314 💚 (#SMKDX) - Super Mario Kart expert, SNES hacker, co-creator of Super Mario Kart Deluxe
@crossingCrossing Corner :isabelle: - Animal Crossing news

🧵 1/3

0
2
0
0
0
0
0
0
0

Re: social.wake.st/@liaizon/116087 by @liaizonwakest ⁂ (I'd quote but Tusky still doesn't support it)

One thing that I really dislike about Fedi, at least in it's current form, is that it forces me to take on a quasi-policing type role (content moderation).

I wish there was more democratic tools for managing moderation. I don't even know what that'd look like, but I dislike that ACAB kind of includes me as long as the report button works the way it does.

0

A friend from elementary school achieved a certain amount of fame through his appearances on a popular game show. But now he's achieved real fame because a few days ago those game show appearances were themselves the subject of a question on a completely different game show.

0
0
0
0
0
0
2
0
0
0
0
0
1
0
0
0
0

This is something that probably sounds obvious to some folks and unhinged to others, but I think it’s worth saying anyway: “workers who don’t adopt AI will get left behind” is right-wing propaganda. It’s more than just a surface-level advertising message. It makes the unstated assumption that workers are all in a state of conflict, racing against one another in competition for acceptable employment. This is the literal opposite of class consciousness! All workers should be aiming for a world where we don’t have to fight each other to earn a chance at a decent life.

0
9
0

무당이들이 너무 크고 반짝이고 선명하고 진짜 탐스러워서 AI인 줄 알았는데 아닌 거같다 그리고 무당 벌레 (Ladybug)의 그룹 명사는 사랑스러움(Loveliness)라고 한다 A Loveliness of Ladybugs 하 좀 벅차는데

RE: https://bsky.app/profile/did:plc:23rykfqtezcnbq4k4jzvpkg3/post/3mf2hjmk6ws2g

0
0
0
0
1

Study: SARS-CoV-2 RNA found in 39% of hospital air samples during outbreaks, despite good ventilation.

"A team led by Kirby Institute researchers conducted air and surface sampling in the emergency department (ED) and intensive care unit (ICU) of a large metropolitan hospital in Sydney, Australia, during two COVID-19 waves between November 2023 and July 2024. Their testing found that 39% (20 of 51) of aerosol samples were positive for SARS-CoV-2 RNA."

Source: cidrap.umn.edu/covid-19/study-

Study: resmedjournal.com/article/S095

0
0
0

Toronto do you know about the Kotatsu Festival tr.jpf.go.jp/kotatsu2026/

This is a yearly free(!) film festival of Japanese movies and they always select amazing stuff

Not familiar with this year's lineup except the closer, Linda Linda Linda (2005), which is an absolute joy

I can't go this year but maybe you can

0
0
0

The website has a new banner on top to remind visitors that did not change course and will be locked-down in under 200 days.

If you care about the freedom to control your devices and care about the privacy of you data, please contact your representative and make your voice heard.

keepandroidopen.org/ (thanks @marcpruxMarc Prud'hommeaux) has the resources to guide you.

We know users will rarely visit the site so the Client(s) will get a banner soon too.

Thank you for your support!

0
59
1
1
0

rant, rust, lapce, we are not gui yet, code editors

every now and then, I have an idea that would require writing a tool with a GUI. having the rest of my stack written in Rust, I would obviously want to write the GUI in Rust as well. and then, evaluating the idea, I take a look at the ecosystem of Rust GUI libraries.

every now and then, I get pissed off at VS code (such as right now, for pegging all my CPUs both on the desktop and the remote server), and try replacing it with something else. something modern. I have grown used to the power of rust-analyzer and at the very least want a tool that integrates it and just works.

and so, every now and then I take a look at lapce and zed again. surely, an editor written in Rust should support my usecase well, as the authors would be expected to dogfood it. you may think the two paragraphs above are unrelated, but it appears that every serious GUI project in Rust ends up spawning its own GUI library. not a great sign.

and every time I get incredibly disappointed.

it’s fine. I can just keep using VS code. it’s winter, and its CPU usage helps keep me warm after all. and what’s a few seconds of LSP assist latency between friends.

it’s fine. I don’t need to make GUI tools, after all. looking at and writing raw coordinates is a perfectly servicable way of talking about rectangles with a computer. you can just look at the numbers and imagine the shape in your head. or if it’s really bad, I can just emit a giant <svg>. interactivity is a superfluous luxury.

and if I absolutely need to make a UI, I can just make my rust code spin up a socket, do some HTTP, and serve some HTML. maybe with javascript if things need to move. all the flexibility of the modern web platform at my disposal.

today’s attempt started by launching lapce on my desktop. it starts up pretty much immediately! blazingly fast is not just an empty slogan! and then it equally fast froze its entire UI hard within the first few seconds.

oh well. the desktop has an nvidia gpu, and quite an old one too. surely I cannot expect a modern UI framework to cooperate with nvidia.ko. let’s try on the laptop.

opened fast. didn’t freeze. pressed “connect to remote”, typed in the hostname, and it established the connection pretty much instantly. neat!

okay, time to actually open a project. click the obvious “open folder” button on top. uh. doesn’t do anything at all. try pressing elsewhere, double clicking, selecting the same option from the (incredibly sparse) menu. nothing. I have an open editor and I have absolutely no idea how to open a file.

in a flash of genius, I bring up the terminal (gives me a shell on the SSH host! nice!) and try typing lapce <directory>. it works! somehow the proxy intercepts the command, and spawns a new tab (this thing has a separate concept of top-level tabs?!? there’s no obvious way I can see of opening such from the UI itself. oh well). the project loads. success!

also, the rust plugin that I installed automatically spawns rust-analyzer. another success!

oh. it gives me a diagnostic. proc-macro server's api version (6) is newer than rust-analyzer's (4). no macro expansion for me. this is a bit of a problem, since I rely on a custom proc macro a lot. also, it somehow works with VS code.

rust-analyzer documentation claims that lapce works out of the box, but the rust plugin ships its own outdated copy of rust-analyzer. however, it is possible to override it in settings.

I go to the settings tab. I find the option in the obvious place. I run which rust-analyzer in a terminal and copy-paste the full path (in .local/bin) into the text box. Why is there not just a “use whatever is in the $PATH“ checkbox? oh well.

after I’m done typing in the box, I touch some other UI element. the path I just typed disappears. oops. well, maybe I pressed something stupid on the keyboard. I type it again. this time it doesn’t disappear. I close the settings and consider my work of changing the plugin configuration done.

I have no idea how to actually apply the setting. I decide to go to the plugin menu, and press “reload plugin”. it restarts rust-analyzer! that should do it.

it does not, in fact, do it. still the same mismatch. oh well, I restore the configuration back to its default while thinking how to diagnose the issue. however, I see the plugin has an update button. it seems I installed it a long time ago, on my previous attempt. I click it, and after a bit, I see the plugins version number double. oh my, that was old.

rust-analyzer restarts. I get a mismatch once again, but now the rust-analzyer’s claimed api version is 5 instead of 4! so this thing ignores my setting and runs its own rust-analyzer anyway!

in the meantime, I also look at other settings of the plugin. there’s not many of them, but it allows me to replace the “check” command with something else. I type in clippy into the textbox. I try pressing Tab to move on to the next input in the settings tab, which is some checkbox.

uhh. it completely ignores the Tab button. they just don’t implement the obvious way to navigate by keyboard? how am I supposed to use the settings tab without a mouse anyway?

I click on some random other setting textbox. the clippy I just typed disappears as a result. at the same time, the “rust-analyzer path” textbox reverts back to the path I have typed in there before and removed. WHAT.

I try a few more times to get the settings to the values I want. at some point, the value ends up somehow stuck at clipp and any attempt to change it gets reverted by the settings GUI. meanwhile, cargo is yelling at me that clipp is not a valid command.

sigh. okay, apparently I cannot expect UI frameworks to actually work in any way. but the settings page is not the core purpose of a code editor, the core purpose is editting code. so let’s give it one more chance.

I close lapce and edit its configuration in nvim. nvim may be rough around the edges and annoying in many ways, but I am reasonably sure it can edit a JSON and have it stay editted.

I start lapce again. rust-analyzer now loads, and the version mismatch is gone! so the fucker wasn’t even using my settings before at all. sigh.

however, rust-analyzer now gets stuck at Indexing: 4/289 (core) and hangs there. I attempt to click that string to see if I can check what’s going on, or request a restart, but it does nothing. I search the entire UI for any kind of diagnostics output or LSP server status, but there’s nothing.

I try to see if any LSP integration is actually working. my go-to-definition muscle memory doesn’t work, so I right-click an identifier. it brings up a context menu, and there’s a “Go To Definition” option. yay!

oh wait. pressing the right mouse button opens the context menu, but releasing it immediately closes it. this is a bit of a problem. I try to select an option while still holding the RMB, but there’s no effect. oops.

I sigh loudly and give up on the concept of using lapce. I like the concept of lapce. I like its nominal feature set. and I want to like lapce itself, but it just doesn’t work at all.

I guess it’s time to cover my nose to mask the stench of AI and try out Zed?

0
0
12
0
0