Skip Navigation
einval einval @lemmy.einval.net

Owner of https://lemmy.einval.net/

Mastodon: https://mastodon.social/@einval

Posts 19
Comments 17
Announcements @lemmy.einval.net einval @lemmy.einval.net

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.

0
Announcements @lemmy.einval.net einval @lemmy.einval.net

Instance has been upgraded to v0.18.5

Went well. No issues to report.

0
Announcements @lemmy.einval.net einval @lemmy.einval.net

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!

0
General @lemmy.einval.net einval @lemmy.einval.net

Instance has been upgraded to v0.18.3

https://github.com/LemmyNet/lemmy/blob/main/RELEASES.md

👍

0
What movies are worth rewatching?
  • Aliens: Special Edition

  • Be careful with your language settings!
  • Hell yeah. No problem!

  • Favorite Terrible Episode?
  • 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". 😀

  • Be careful with your language settings!
  • 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.

  • General @lemmy.einval.net einval @lemmy.einval.net

    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".

    5
    What's good setup for learning assembly on linux?
  • What I use on Linux:

    1. Vim
    2. GNU Make
    3. 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.
    
  • Announcements @lemmy.einval.net einval @lemmy.einval.net

    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. 👍

    0
    x86 Assembly @lemmy.einval.net einval @lemmy.einval.net

    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 😉

    0
    Diablo 1 Open Source Port DevilutionX updates to version 1.5
  • Oh cool! I'll have to check it out. I love how people have been going back and reverse engineering old game engines lately.

  • Announcements @lemmy.einval.net einval @lemmy.einval.net

    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
    0
    Systems Administration (Linux) @lemmy.einval.net einval @lemmy.einval.net

    So it begins...

    www.redhat.com Furthering the evolution of CentOS Stream

    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...

    Furthering the evolution of CentOS Stream

    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.

    0
    Reddit confirms BlackCat gang pinched some data
  • Makes me wonder how many times "Fuck u/spez" is repeated in that data dump.

  • PC Gaming @lemmy.einval.net einval @lemmy.einval.net
    store.steampowered.com BattleBit Remastered on Steam

    BattleBit Remastered is a low-poly, massive multiplayer FPS, supporting 254 players per server. Battle on a near-fully destructible map with various vehicles!

    BattleBit Remastered on Steam

    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.

    !Server MOTD

    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.

    0
    CDPR Confirms ‘Cyberpunk 2077: Phantom Liberty’ Unlocks New Endings
  • 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. 🙂

  • PC Gaming @lemmy.einval.net einval @lemmy.einval.net
    www.forbes.com CDPR Confirms ‘Cyberpunk 2077: Phantom Liberty’ Unlocks New Endings

    Cyberpunk 2077 is getting new endings based on the Phantom Liberty expansion.

    CDPR Confirms ‘Cyberpunk 2077: Phantom Liberty’ Unlocks New Endings

    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.

    2
    Bug in UI
  • 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. 😂

  • Bug in UI
  • 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.

  • General @lemmy.einval.net einval @lemmy.einval.net

    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...

    4
    PC Gaming @lemmy.einval.net einval @lemmy.einval.net

    Aliens: Dark Descent

    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?)

    0
    C# resources
  • 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?

  • Community Ideas / Places that I subscribed to elsewhere
  • 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.

  • General @lemmy.einval.net einval @lemmy.einval.net

    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?

    3
    Community Ideas / Places that I subscribed to elsewhere
  • 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.

  • Announcements @lemmy.einval.net einval @lemmy.einval.net

    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.

    0
    PC Gaming @lemmy.einval.net einval @lemmy.einval.net

    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.

    0
    Systems Administration (Linux) @lemmy.einval.net einval @lemmy.einval.net

    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.

    0
    Announcements @lemmy.einval.net einval @lemmy.einval.net

    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.

    0
    Issues with emails not verified
  • 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.

  • Issues with emails not verified
  • 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
    }
    
  • Announcements @lemmy.einval.net einval @lemmy.einval.net

    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.

    0