I write code and play games and stuff. My old username from reddit and HN was already taken and I couldn’t think of anything else I wanted to be called so I just picked some random characters like this:

>>> import random
>>> ''.join([random.choice("abcdefghijklmnopqrstuvwxyz0123456789") for x in range(5)])
'e0qdk'

My avatar is a quick doodle made in KolourPaint. I might replace it later. Maybe.

日本語が少し分かるけど、下手です。

Alt: e0qdk@reddthat.com

  • 1 Post
  • 29 Comments
Joined 1 year ago
cake
Cake day: September 22nd, 2023

help-circle


  • It’s not a GUI library, but Jupyter was pretty much made for the kind of mathematical/scientific exploratory programming you’re interested in doing. It’s not the right tool for making finished products, but is intended for creating lab notebooks that contain executable code snippets, formatted text, and visual output together. Given your background experience and the libraries you like, it seems like it’d be right up your alley.



  • Can Z3 account for lost bits? Did it come up with just one solution?

    It gave me just one solution the way I asked for it. With additional constraints added to exclude the original solution, it also gives me a second solution – but the solution it produces is peculiar to my implementation and does not match your implementation. If you implemented exactly how the bits are supposed to end up in the result, you could probably find any other solutions that exist correctly, but I just did it in a quick and dirty way.

    This is (with a little clean up) what my code looked like:

    solver code
    #!/usr/bin/env python3
    
    import z3
    
    rand1 = 0.38203435111790895
    rand2 = 0.5012949781958014
    rand3 = 0.5278898433316499
    rand4 = 0.5114834443666041
    
    def xoshiro128ss(a,b,c,d):
        t = 0xFFFFFFFF & (b << 9)
        r = 0xFFFFFFFF & (b * 5)
        r = 0xFFFFFFFF & ((r << 7 | r >> 25) * 9)
        c = 0xFFFFFFFF & (c ^ a)
        d = 0xFFFFFFFF & (d ^ b)
        b = 0xFFFFFFFF & (b ^ c)
        a = 0xFFFFFFFF & (a ^ d)
        c = 0xFFFFFFFF & (c ^ t)
        d = 0xFFFFFFFF & (d << 11 | d >> 21)
        return r, (a, b, c, d)
    
    a,b,c,d = z3.BitVecs("a b c d", 64)
    nodiv_rand1, state = xoshiro128ss(a,b,c,d)
    nodiv_rand2, state = xoshiro128ss(*state)
    nodiv_rand3, state = xoshiro128ss(*state)
    nodiv_rand4, state = xoshiro128ss(*state)
    
    z3.solve(a >= 0, b >= 0, c >= 0, d >= 0,
      nodiv_rand1 == int(rand1*4294967296),
      nodiv_rand2 == int(rand2*4294967296),
      nodiv_rand3 == int(rand3*4294967296),
      nodiv_rand4 == int(rand4*4294967296)
      )
    
    

    I never heard about Z3

    If you’re not familiar with SMT solvers, they are a useful tool to have in your toolbox. Here are some links that may be of interest:

    Edit: Trying to fix formatting differences between kbin and lemmy
    Edit 2: Spoiler tags and code blocks don’t seem to play well together. I’ve got it mostly working on Lemmy (where I’m guessing most people will see the comment), but I don’t think I can fix it on kbin.


  • If I understand the problem correctly, this is the solution:

    solution

    a = 2299200278
    b = 2929959606
    c = 2585800174
    d = 3584110397

    I solved it with Z3. Took less than a second of computer time, and about an hour of my time – mostly spent trying to remember how the heck to use Z3 and then a little time debugging my initial program.


  • What I’d do is set up a simple website that uses a little JavaScript to rewrite the date and time into the page and periodically refresh an image under/next to it. Size the image to fit the remaining free space of however you set up the iPad, and then you can stick anything you want there (pictures/reminder text/whatever) with your favorite image editor. Upload a new image to the server when you want to change the note. The idea with an image is that it’s just really easy to do and keeps the amount of effort to redo layout to a minimum – just drag stuff around in your image editor and you’ll know it’ll all fit as expected as long as you don’t change the resolution (instead of needing to muck around with CSS and maybe breaking something if you can’t see the device to check that it displays correctly).

    There’s a couple issues to watch out for – e.g. what happens if the internet connection/server goes down, screen burn-in, keeping the browser from being closed/switched to another page, keeping it powered, etc. that might or might not matter depending on your particular circumstances. If you need to fix all that for your circumstances, it might be more trouble than just buying something purpose built… but getting a first pass DIY version working is trivial if you’re comfortable hosting a website.

    Edit: If some sample code that you can use as a starting point would be helpful, let me know.


  • My guess is that if browsers as we know them weren’t invented, HyperCard would’ve become the first browser eventually. No idea where things would progress from there or if it’d have been better or worse than the current clusterfuck. Maybe we’d all be talking about our “web stacks” instead of websites, and have various punny tools like “pile” and “chimney” and “staplr”. Perhaps PowerPoint would’ve turned into a browser to compete with it.

    If browsers were invented but JavaScript specifically was not, we’d probably all be programming sites in some VB variant like VBScript (although it might be called something different).


  • Didn’t the GDPR have a data portability rule requiring that sites provide users the ability to easily export their own data? Does that not apply to Lemmy for some reason – or, am I misremembering it? (I remember account data download being a big deal a while back on reddit, but it’s been a few years…)





  • No way is AI going to end capitalism.

    In the medium term we will end up with AI corporations. I already consider existing corporations to be human-based swarm intelligences – they’re made up of people but their overall large scale behavior is often surprising and we already anthropomorphize them as having will and characteristic behaviors separate from the people they’re made of. AI corporations are just the natural evolution of existing corporations as they continue down the path of automation. To the extent they copy the existing patterns of behavior, they will have the same general personality.

    Their primary motive will be maximizing profit since that’s the goal they will inherit from the existing structure. The exact nature of that depends on the exact corporation that’s been fully cyberized and different corporations will have different takes on it as a result. They are unlikely to give any more of a damn about individual people than existing corporations do since they will be based on the cyberization of existing structures, but they’re also unlikely to deliberately go out of their way to destroy humanity either. From the perspective of a corporation – AI-based or traditional – humanity is a useful resource that can be exploited; there isn’t much profit to be gained from wiping it out deliberately.

    Instead of working for the boss, you’ll be working for the bot – and other bots will be figuring out exactly how much they can extract from you in rent and bills and fees and things without the whole system crashing down.

    That might result in humanity getting wiped out accidentally; humanity has wiped out plenty of species due to greed and shortsightedness. I doubt it will be intentional if they do though.



  • I was getting 404 on /login itself for a while, and then finally got the login page after seeing this thread. Logging in at that point returned a 404 after submitting the login form – but it did actually succeed at logging in, it just didn’t redirect me correctly to the main page.

    After logging in, I’m still seeing tons of 50x errors. e.g. had to reload the “reply” link about a dozen times to get the comment submission form to show up; I think something is timing out when I get that sort of error. Maybe that’s part of what “For the next few hours, there might be issues with communication in the fediverse.” means in ernest’s message?

    I’m also seeing 404 when I go to https://kbin.social/newest?p=2 – which is rather strange since https://kbin.social/newest?p=3 works.


  • e0qdk@kbin.socialtoLinux Gaming@lemmy.mlSteam focused distros?
    link
    fedilink
    arrow-up
    8
    arrow-down
    1
    ·
    11 months ago

    If you want minimal effort to get a good Linux setup for Steam, just buy a SteamDeck. Get the dock if you want to use it like a regular computer or console with a wireless gamepad. I did that – hooked it up to my monitor, headphones, plugged in a mouse, keyboard, and my old XBox360 USB wireless dongle and it all just worked. I’ve got a few ideas for fun projects I want to try with it as a handheld and have written some software on it using desktop mode (little Python utility scripts for shuffling data around) but mostly I just use it like a gaming console; it works well for that.




  • e0qdk@kbin.socialtoLinux@lemmy.mlOpenGL version problem
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 year ago
    • GLFW is intended to be built with cmake.
    • After unzipping the source, make a build directory, and configure glfw3
    • ^^ I like using ccmake to do this interactively, but you can also just pass flags to cmake if you know what they are
    • You should build with GLFW_USE_WAYLAND and GLFW_USE_OSMESA turned off to get it to try to build against X11.
    • You will probably also want to turn off GLFW_BUILD_DOCS, GLFW_BUILD_EXAMPLES, GLFW_BUILD_TESTS
    • You can adjust CMAKE_INSTALL_PREFIX if you don’t want to use the /usr/local default install path.
    • After generating a Makefile, run make and make install
    • glfw3 generates a pkg-config compatible .pc file as part of its build process that lists flags needed for compilation and linking against the library. Normally, you’d just call pkg-config --cflags --libs --static glfw3 to get this info as part of your own build process (in a Makefile, for example) or else require glfw3 as part of a cmake-based build, but you can read what’s generated in there if that program is not available to you for some reason. In case it’s helpful for comparison, what I get with a custom build of the static library version of glfw3 installed into /usr/local on a slightly old version of Ubuntu is output like -I/usr/local/include -L/usr/local/lib -lglfw -lrt -lm -ldl -lX11 -lpthread -lxcb -lXau -lXdmcp but you may need something different for your particular configuration.

    Basically, something like this, probably, to do the compilation and get the flags to pass to g++:

    wget 'https://github.com/glfw/glfw/releases/download/3.3.8/glfw-3.3.8.zip'
    unzip glfw-3.3.8.zip
    mkdir build
    cd build
    cmake -D GLFW_BUILD_DOCS=OFF -D GLFW_BUILD_EXAMPLES=OFF -D GLFW_BUILD_TESTS=OFF -D GLFW_USE_OSMESA=OFF -D GLFW_USE_WAYLAND=OFF -D GLFW_VULKAN_STATIC=OFF ../glfw-3.3.8
    make
    make install
    
    pkg-config --cflags --libs --static glfw3
    
    

    If you want to just compile a single cpp file after building and install, you can do something like

    g++ main.cpp `pkg-config --cflags --libs --static glfw3` -lGL
    
    

  • I met a traveller from an antique land
    Who said: Two vast and trunkless legs of stone
    Stand in the desart. Near them, on the sand,
    Half sunk, a shattered visage lies, whose frown,
    And wrinkled lip, and sneer of cold command,
    Tell that its sculptor well those passions read
    Which yet survive, stamped on these lifeless things,
    The hand that mocked them and the heart that fed:
    And on the pedestal these words appear:
    “My name is Ozymandias, king of kings:
    Look on my works, ye Mighty, and despair!”
    Nothing beside remains. Round the decay
    Of that colossal wreck, boundless and bare
    The lone and level sands stretch far away.

    -- Percy Shelley, “Ozymandias”, 1819 edition
    (copied from Wikipedia)