Owner of https://lemmy.einval.net/
Mastodon: https://mastodon.social/@einval
Instance upgraded to v0.19.1
The local pict-rs database fails to migrate from v3 to v4 regardless of what I do so I've given up on it. This means all images uploaded prior to today are broken. This includes community icons, user avatars, etc.
Oh well.
Instance has been upgraded to v0.18.4
https://github.com/LemmyNet/lemmy/blob/main/RELEASES.md#lemmy-v0184-release-2023-08-08
I originally intended to apply this shortly after it was released about two weeks ago, but things ended up a little busy at home. Better late than never I suppose. Enjoy!
RIF. Ugh, what a shame.
I can't think of any one truly terrible episode I secretly enjoyed. I hate all of the episodes that were laser focused on Wesley Crusher, boy genius. If I had to pick a best of the worst from that pool I'd go with "The Game". 😀
I haven't had that happen to me yet, but it sounds annoying as hell. The "undetermined" language shouldn't exist. That needs be a silent default. The user should be able select their primary language with a drop-down menu. The combo box would still exist but it'd be completely optional.
In your case it'd be nice if the "Select Language" drop-down was automatically set to the community's default language. And maybe put a little red icon next to it when your language settings are incompatible.
Be careful with your language settings!
I unknowingly deselected "Undetermined" at some point and ended up missing out on a lot of posts for the past couple weeks.
I suspect this happened when I changed my account settings using my phone. And here I was thinking Lemmy died or something 😅.
To fix this for myself I highlighted "Undetermined", scrolled down, control+clicked "English", then hit "Save".
What I use on Linux:
- Vim
- GNU Make
- NASM (nasm.us)
NASM uses Intel assembly syntax. If you want to learn and use AT&T syntax you can use GNU Assembler (as
) provided by the bintutils
package instead.
How I use it:
Create a project
mkdir hello_world
cd hello_world
touch Makefile hello_world.asm
Write a Makefile
Note the indents below are supposed to be TAB characters, not spaces.
Makefile
all: hello_world
hello_world.o: hello_world.asm
nasm -o $@ -f elf32 -g $<
hello_world: hello_world.o
ld -m elf_i386 -g -o $@ $<
.PHONY: clean
clean:
rm -f hello_world *.o
Write a program
hello_world.asm
; Assemble as a 32-bit program
bits 32
; Constants
SYS_EXIT equ 1 ; Kernel system call: exit()
SYS_WRITE equ 4 ; Kernel system call: write()
FD_STDOUT equ 1 ; System file descriptor to write to
EXIT_SUCCESS equ 0
; Variable storage
section .data
msg: db "hello world from ", 0
msg_len: equ $-msg
linefeed: db 0xa ; '\n'
linefeed_len: equ $-linefeed
; Program storage
section .text
global _start
_start:
; Set up stack frame
push ebp
mov ebp, esp
; Set base pointer to argv[0]
add ebp, 8
; Write "hello world from " message to stdout
mov eax, SYS_WRITE
mov ebx, FD_STDOUT
mov ecx, msg
mov edx, msg_len
int 80h
; Get length of argv[0]
push dword [ebp]
call strlen
mov edx, eax
; Write the program execution path to stdout
mov eax, SYS_WRITE
mov ebx, FD_STDOUT
mov ecx, [ebp]
; edx length already set
int 80h
; Write new line character
mov eax, SYS_WRITE
mov ebx, FD_STDOUT
mov ecx, linefeed
mov edx, linefeed_len
int 80h
; End of stack frame
pop ebp
; End program
mov eax, SYS_EXIT
mov ebx, EXIT_SUCCESS
int 80h
strlen:
; Set up stack frame
push ebp
mov ebp, esp
; Set base pointer to the first argument on the stack
; strlen(buffer);
; ^
add ebp, 8
; Save registers we plan to write to
push ecx
push esi
; Clear string direction flag
; (i.e. lodsb will *increment* esi)
cld
; Zero counter
xor ecx, ecx
; Load address of buffer into the "source index" register
mov esi, [ebp]
.loop:
; Read byte from esi
; Store byte in eax
lodsb
; Loop until string NUL terminator
cmp eax, 0
je .return
; else: Increment counter and continue
inc ecx
jmp .loop
.return:
; Return string length in eax
mov eax, ecx
; Restore written registers
pop esi
pop ecx
; End stack frame
pop ebp
; Pop stack argument
; 32-bit word is 4 bytes. We had one argument.
ret 4 * 1
Compile and run
$ make
nasm -o hello_world.o -f elf32 -g hello_world.asm
ld -m elf_i386 -g -o hello_world hello_world.o
$ ./hello_world
hello world from ./hello_world
Adding a debug target to the makefile
Want to fire up your debugger immediately and break on the main entrypoint? No problem.
Makefile
gdb: hello_world
gdb -tui -ex 'b _start' -ex 'run' --args $<
Now you can clean the project, rebuild, and start a debugging session with one command...
$ make clean gdb
rm -f hello_world *.o
nasm -o hello_world.o -f elf32 -g hello_world.asm
ld -m elf_i386 -g -o hello_world hello_world.o
gdb -tui -ex 'b _start' -ex 'run' --args hello_world
# You're debugging the program in GDB now. Poof.
Instance has been upgraded to v0.18.1
Federation traffic has improved. I'm not seeing a constant stream of HTTP header expiry errors in the log anymore. 👍
I guess I'll start things off
I picked up assembly programming in 2015 after my son was born while on paternity leave. I needed something to keep my mind busy between changing diapers and feedings, or I was going to go insane.
I started off with the 6502 through reading old magazines from the 70s and 80s on archive.org (Compute! Magazine was rich with examples and how-to articles. RIP Jim Butterfield). I bought two functioning C64s from a local Ham Fest with the hope of diving into the real-deal head first, but with kids that's much harder than it sounds. I had to shelve the machines and settle for VICE.
After about a year of mucking around trying different things I decided to start reading through old Intel and AMD architecture documents (8088/6). Around that time I discovered the "emu8086" emulator and purchased a license so I could watch my code execute and effect the system in real time. I knew about "insight" for DOS, and tried it too, but for the time being the emulator was a much better visual learning tool.
Shortly thereafter I became interested in operating systems and how they worked under the hood (i.e. DOS). So my next goal was to write a bootloader based on the Intel spec documents, and a tiny real-mode OS capable of reacting to user input. Nothing fancy, however this track turned out to be very beneficial.
I started programming in basic when I was little, copying DATA lines out of books so I could play games, and eventually graduated to C when I was 12-ish. Despite being able to program (fairly well) for years, I lacked the formal education of my peers at work. Assembly really jumpstarted potential in me that I didn't even know existed, and actually pushed me to become a more thoughtful developer. I used to be afraid of gdb but now it's my bread and butter.
If you want to take a look at the "OS" you can find it here:
https://git.einval.net/user/jhunk/minos.git/
I also wrote a program for my son at one point, though it's incomplete:
https://git.einval.net/user/jhunk/learncolors.git/
einval.net itself was supposed to be a programming blog. Again though, with kids I just don't have the time or energy anymore. Oh well. Perhaps I'll get back into doing that in 10 years or so 😉
"Make it go, helmsman." 👉
Oh cool! I'll have to check it out. I love how people have been going back and reverse engineering old game engines lately.
Instance has been upgraded to v0.18.0
- Email verification for new users has been re-enabled
- Captcha is broken in this release so it has been disabled for now
So it begins...
As the CentOS Stream community grows and the enterprise software world tackles new dynamics, we want to sharpen our focus on CentOS Stream as the backbone of enterprise Linux innovation. We are continuing our investment in and increasing our commitment to CentOS Stream. CentOS Stream will now be the...
I guess the GPL protects them from litigation here because users can still access the sources.
The new TOS pretty much states that if you "abuse" your RH subscription by repackaging their SRPMs and releasing them in the wild their lawyers will flay you in the town square.
Can IBM/Red Hat really lay claim to the modifications/patches they've made to open source packages? What about all of the contributions RH has made to the kernel over the years? Is that not "theirs" too?
In the software packaging world you see maintainers using freely available patches from Debian, Fedora, and so on for their own distros. So what happens now if a patch is only available through Red Hat? Is it reasonable to assume you'll get sued because it came from one of their SRPM packages?
I just think it's messed up. If this was limited to RH's own software projects maybe I wouldn't care, but making folks pay for access to what's already free (and they didn't write from scratch internally) is shitty. Unless I'm totally mistaken a lot of what ends up in CentOS and RHEL is derived from changes contributed to Fedora using the free labor/time/energy of everyday RPM maintainers.
Makes me wonder how many times "Fuck u/spez" is repeated in that data dump.
BattleBit Remastered is a low-poly, massive multiplayer FPS, supporting 254 players per server. Battle on a near-fully destructible map with various vehicles!
I purchased BattleBit the other day for $15 USD and I am enjoying it so far. The community seems pleasant at the moment. The developer-run servers have strict rules against being an asshole and a zero tolerance for spam/racism/politics, so that's definitely a plus. I can play the game instead of muting people constantly.
If you're a fan of Battlefield (1 or 2) or Project Reality then BattleBit might be worth checking out. The pace is as fast or slow as you want it to be. If you prefer static defense -- go for it. If you want to run into the fray to drag incapacitated players from the field while tracers whiz by -- go right ahead. If you want to employ teamwork and tactics to capture objects -- no one will scoff at you.
Yeah, I think the story and voice acting saved this game from the fiery demise it rightfully deserved at launch. I wouldn't classify it as a timeless masterpiece but it does stick with you long after it ends. It'll be a few more years before it fades away or gets replaced by something else. You still have time. 🙂
Cyberpunk 2077 is getting new endings based on the Phantom Liberty expansion.
I'm one of those weirdos with several end-game saves on their hard drive for CP2077. If all of the Phantom Liberty quests are supposed to take place in the middle of the base game's story-line, it might be too easy going into it at level 50 with a maxed out skill tree and the best weapons in the game.
I haven't had a chance to sit down and read everything available yet but I sure hope they give the player another twenty or thirty levels to grind through.
It's a manual process. In theory an upgrade should be as easy as updating the image
tags for Lemmy and Lemmy UI in the docker-compose.yml
file, then taking everything down and praying it starts back up again.
I'm not sure how they're going to go about telling everyone they need to upgrade. Or I guess I'll wake up to an unfederated/dead instance with a massive error log at some point. 😂
Oh yeah, I've seen this too but only when I have multiple Lemmy instances open. When I posted "Death by user count" it told me I posted it to lemmy.einval.net through lemmy.ml's instance. I had to shift+ctrl+r to get it to show the correct pathway. Its definitely weird that session data is leaking around between logins. You'd think each cookie/session/socket would be totally unique.
I saw they've been working on ditching websockets in favor of a pure REST API. Hopefully this will stop when they release v18.0.
Death by user count?
The join-lemmy site no longer shows this instance's card because it's below the active user threshold. How are users supposed to find an instance that fits what they're looking for now?
This exists as well: https://github.com/maltfield/awesome-lemmy-instances
Doesn't this do more harm than good? I don't have time to promote and advertise. I really liked the idea that people could easily find this and join if they wanted to.
I'm not taking down the instance or anything. This serves as a "blog" if I'm the only one posting anything. I'm just a little disappointed that small or new instances aren't easily discoverable at a critical time when performance and uptime are kind of important.
People are flocking to Lemmy over the Reddit API debacle. By listing instances based on user count they're overloading and crashing the same old servers hourly (already), instead of treating instances like a federated decentralized network. I guess we'll see what happens come July...
Aliens: Dark Descent
YouTube Video
Click to view this content.
I want this game to be good but given the last couple flops set in the Alien universe my expectations are pretty low. Fireteam Elite, for example, is/was too arcadey for my taste and left solo players like me high and dry. I'm not a fan of random people showing up in my (what should be) single player game to "help" either. The third-person camera didn't do it for me in all of those tight corridors.
There isn't much information out there for a game about to go live in 9 days. Maybe that's for the best? Without a massive hype train catering to 12 years olds (flashy visuals, stupid character poses, loot boxes, etc) the development team might keep their jobs long enough post-launch to actually respond to player feedback and release meaningful patches, and implement quality of life changes.
My hope is that Dark Descent will be what Fireteam Elite should have been - a dark and gritty tactical game with XCOM-like game mechanics, set in an awful future where an evil mega-corporation aims to unleash a nearly unstoppable plague of seven foot tall bloodthirsty locusts on humanity. (Is that too much to ask for?)
Thanks! I saw nuget in my search results last night and didn't think to click on it. I've added it to the sidebar. Would you like to moderate the !csharp_programming community?
Yeah I really really wish the search feature was more robust. I'd love to see a !name
or even name
query immediately poll a cache of community names derived from all of the federated instances and show an auto-completed list. This feature appears to exist in the post editor, but nowhere else.
C# resources
@NormalPersonNumber3 I went ahead and created [email protected]. Is there a common place people go to obtain frameworks/libraries etc? I want to add some resources to the side bar.
I came across this on Wikipedia: https://github.com/Microsoft/dotnet/blob/main/dotnet-developer-projects.md
Is this good enough, or is there a preferred source out there?
Thanks for making this list.
Unfortunately it doesn't look like tags, labels, or any other form of categorization exists: https://github.com/LemmyNet/lemmy/issues/2946
When you create a community you define an immutable "Name" (the !name@[...]
) and a "Display Name" like:
- Name: pc_gaming
- Display Name: PC Gaming
I'm not sure I'd want to see free-form communities mimicking Reddit 1:1 here though. "TheWeeklyRoll" at a glance might be about drugs, Dungeons & Dragons (heh -- it is!), gambling, or bread. If only it was possible to set a short description separate from the sidebar that showed up in search results.
[email protected] - 10 subscribers - A Dungeons and Dragons themed web comic
I'd be totally fine with comic_[name] or comics_[author]. With that said it seems namespacing with underscores might be the only way to let people know what they're looking at.
Video Content
- media_[service]_[channel]
Where service might be peertube (pt), youtube (yt), odysee (od), dailymotion (dm), etc
Tabletop Gaming
- tabletop_gaming (generic chat)
- tabletop_gaming_[genre]
PC Gaming
- pc_gaming (generic chat)
- pc_gaming_[operating_system]
Retro Gaming
- retro_gaming (generic chat)
- retro_gaming_[device]
Software
- software_[product]
Programming (low-level)
- programming_[lang]
Development (high-level)
- devel_[topic]
Where topic might be a framework or library. But I think posting "Where can I find a good Tk tutorial?" to !programming_python or "How do I decompress a file with libz?" in !programming_c is perfectly fine. In the worst case the person can just cross-post to devel_[whatever-seems-right]
.
This scheme isn't perfect either. Some people might consider "ffxiv" worthy of its own namespace. Otherwise it'd end up with ridiculously long name like pc_gaming_ffxiv_{guides,clans,lore,...}
instead of simply ffxiv_{help,clans,lore,...}
. I'll have to sleep on it.
I want to keep this instance on-topic as much as possible though. That is to say that even if I like/enjoy something... If it doesn't fit the theme of the landing page's side bar it probably won't exist here as a local community.
Our .onion address
Greetings from Tor!
I came across LemmyNet/lemmy-docs#187 last night and decided to implement it on this server.
I'll probably write something up and contribute what I've done back to lemmy-docs
this evening assuming someone else doesn't beat me to it.
I beat Cyberpunk 2077 on Hard mode
Gameplay:
- 54 parts
- No commentary
- All main, side, cyberpsycho, and NCPD quests completed
- 77% achievements (GOG)
PC Specs:
- CPU: AMD Ryzen 7 5800X
- RAM: 32GB G.Skill DDR4-3200
- GPU: AMD Radeon RX 7900 XT
- HDD: Samsung 970 EVO Plus SSD 1TB
Mods:
^Installed just prior to recording #28^
-
High-Res Graphics Pack - MAXIMUM - https://next.nexusmods.com/cyberpunk2077/collections/g0tcm4 (+ all optional mods)
-
Use Your Cybernetic Eyes to Aim - https://www.nexusmods.com/cyberpunk2077/mods/6793
-
Metro System - https://www.nexusmods.com/cyberpunk2077/mods/3560
-
Cyber Vehicle Overhaul - https://www.nexusmods.com/cyberpunk2077/mods/3016
-
Cyberpunk Clothing Loot Overhaul - https://www.nexusmods.com/cyberpunk2077/mods/8013
----
My takeaway from this is that hard mode is hard in the beginning and enemies are absolute bullet sponges from start to finish.
Getting bullshit killed and running out of ammo constantly becomes tedious after a while. I'm not sure if its me or what. I feel like every encounter required several mag dumps just to kill a single guy. In that regard I have to say Cyberpsycho attacks win the "shittiest to fight" award. Sometimes they become immune to damage for reasons unknown. You really have to pay attention to the damage meter at the top of the screen, or risk prematurely wasting your entire inventory on a single crazy asshole.
During my first playthrough on normal I was a shotgun samurai through and through. However, sadly, even the best shotgun in the game can't keep up with the insane damage the various droids and gang members dole out at close range. Getting in close to splatter someone is a deathwish even if you spec out your character with full mitigation gear and select every skill under the shotgun skill tree.
If you're thinking about picking up or revisiting Cyberpunk 2077, don't bother with the higher difficulty settings. They add nothing to the game and have a tendency to break the immersion as you reload the same battle a dozen times because you got one-shot killed by a sniper from across town through five shipping containers.
Docker and Red Hat Universal Base Image woes
What made Red Hat think it was a good idea to bind containers to a docker hosts's /etc/rhsm
and /etc/pki
data?
I recently ran into a situation where a RHEL 7 docker host that's primarily used for continuous integration jobs couldn't use the ubi9/ubi
container image. Why? Because the host didn't have entitlements for RHEL 9.
After fiddling around with injecting RHEL 9 certs into the image I managed to enable the base repositories and a few extras, however that's about the time I realized this whole thing was an exercise in futility. Basic packages like createrepo_c
were completely missing and I wasn't able to figure out which RHN channel provided it. Why are they separating rpmdevtools
from createrepo_c
at the repository level anyway; what's the point?
I wasted a solid day sifting through the only relevant documentation Red Hat provides (for OpenShift, not Docker) before giving up and going with quay.io/centos/centos:stream9
.
After that I was back in business, building and distributing RPMs in about three minutes time.
Disabled email verification
einval's mail server is working correctly however the 0.17.3 release of Lemmy may have broken its builtin user verification system. Until that is confirmed fixed I'm making email registration optional.
You can still add an email address after signing up for an account, of course. I think this issue only pertains to new registrations.
Have you configured OpenDKIM correctly? This tutorial might give you an idea or two. Gmail won't relay mail unless its signed by your domain.
Yes. You can use an existing SMTP server (gmail [legacy app mode], yahoo, microsoft, etc). One thing to keep in mind -- if you decide to go that route don't use your personal account because the address might be exposed in the mail headers. Create a dedicated account and use that instead.
lemmy.hjson
email: {
smtp_server: "smtp.example.tld:[port]" # port 25, port 587, etc
smtp_login: "username"
smtp_password: "password"
smtp_from_address: "[email protected]" # or [email protected]
tls_type: "tls" # or starttls
}
Site is back up
My apologies to anyone that signed up between yesterday and today. I was trying to troubleshoot a problem with federation and ended up making things much worse. Unfortunately this required me to start entirely from scratch, but at least federation appears to be working correctly now.
I'm done messing around Lemmy's internals if you'd like to sign up again.