• 42 Posts
  • 139 Comments
Joined 1 year ago
cake
Cake day: June 12th, 2023

help-circle
  • ono@lemmy.catoProgramming@programming.devSo You Think You Know Git? - FOSDEM 2024
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    edit-2
    7 months ago

    Mercurial has comparable features (though maybe not obvious to someone accustomed to git) without the usability problems that still plague git nearly two decades later. Hg’s interface was made with humans in mind. Git’s was made to cut you.

    (And it has cut so very many people that it’s consistently among the most popular topics in Q&A forums, and has even inspired comics.)

    Thankfully, git’s early cross-platform shortcomings were eventually fixed, so that’s at least some progress. I hope its UI and docs eventually get some love, too.




  • ono@lemmy.catoProgramming@programming.devCodeberg.org Opinions?
    link
    fedilink
    English
    arrow-up
    37
    ·
    edit-2
    7 months ago

    The interface is the best I know of, a lot like pre-Microsoft github. Especially important to me is that It doesn’t intercept my browser’s built-in shortcuts like github now does, or require javascript or bury things under submenus like gitlab does.

    The promise of federation is appealing, too.

    I plan to use it for new public projects, and might even move my old ones over.


  • ono@lemmy.catoProgramming@programming.devStrings do too many things
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    2
    ·
    edit-2
    7 months ago

    disallow list of known bad email providers.

    Imagine giving someone your phone number, and having them say you have to get a different one because they don’t like some of the digits in it.

    I have seen this nonsense more times than I care to remember. Please don’t build systems this way.

    If you’re trying to do bot detection or the like, use a different approach. Blacklisting email addresses based on domain or any other pattern does a poor job of it and creates an awful user experience.

    (And if it prevents people from using spam-fighting tools like forwarding services, then it’s directly user-hostile, and makes the world a worse place.)


  • ono@lemmy.catoProgramming@programming.devStrings do too many things
    link
    fedilink
    English
    arrow-up
    11
    ·
    edit-2
    7 months ago

    Checking MX in your application means you needlessly fail on transient outages, like when a DNS server is rebooting or a net link hiccups. When it happens, the error flag your app puts on the user’s email address is likely to confuse or frustrate them, will definitely waste their time, and may drive them away and/or generate support calls.

    Also, MX records are not required. Edit to clarify: So checking MX in your application means you fail 100% of the time on some perfectly valid email domains. Good luck to the users and support staff who have to troubleshoot that, because there’s nothing wrong with the email address or domain; the problem is your application doing something it should not.

    Better to just hand the verification message off to your mail server, which knows how to handle these things. You can flag the address if your outgoing mail server refuses to accept it.


  • ono@lemmy.catoProgramming@programming.devStrings do too many things
    link
    fedilink
    English
    arrow-up
    30
    arrow-down
    1
    ·
    edit-2
    7 months ago

    By the way, please don’t write regex to try to validate email addresses. Seriously.

    Amen.

    There are libraries for that; some of them are even good.

    Spoiler alert: Few of them are good, and those few are so simple that you might as well not use a library.

    The only way to correctly validate an email address is to send a message to it, and verify that it arrived.







  • Or by people formerly paying for their internet service with money that should have been going toward food or heat.

    Losing the $30 monthly discount could force families to choose between broadband and other necessities,

    Exactly.

    It’s also important to note that some ISPs created a low-cost service plan specifically for ACP. (It’s reasonable to assume this was possible in part because ACP handled income verification and eliminated the costs of individual billing and credit card payments.) That plan will likely disappear if ACP goes away, leaving poor people stuck paying a bill much higher than the program ever paid.





  • […continuing…]

    Development tools

    • The WineDump tool supports printing the contents of Windows registry files (REGF format), as well as printing data for both architectures in hybrid x86/ARM64 PE files.
    • The composable, default_overload, deprecated, and protected attributes are supported in the IDL compiler.
    • The libwine.so library is removed. It was no longer used, and deprecated since Wine 6.0. Winelib ELF applications that were built with Wine 5.0 or older will need a rebuild to run on Wine 9.0.

    Bundled libraries

    • The FluidSynth library version 2.3.3 is bundled and used for DirectMusic.
    • The math library of Musl version 1.2.3 is bundled and used for the math functions of the C runtime.
    • The Zydis library version is 4.0.0 is bundled and used for x86 disassembly support.
    • Vkd3d is updated to the upstream release 1.10.
    • Faudio is updated to the upstream release 23.12.
    • LDAP is updated to the upstream release 2.5.16.
    • LCMS2 is updated to the upstream release 2.15.
    • LibMPG123 is updated to the upstream release 1.32.2.
    • LibPng is updated to the upstream release 1.6.40.
    • LibTiff is updated to the upstream release 4.6.0.
    • LibXml2 is updated to the upstream release 2.11.5.
    • LibXslt is updated to the upstream release 1.1.38.
    • Zlib is updated to the upstream release 1.3.

    External dependencies

    • The Wayland client library, as well as the xkbcommon and xkbregistry libraries, are used when building the Wayland driver.
    • The PCSClite library is used for smart card support. On macOS, the PCSC framework can be used as an alternative to PCSClite.
    • For PE builds, a cross-compiler that supports .seh directives for exception handling is required on all platforms except i386.

  • ono@lemmy.catoLinux Gaming@lemmy.worldWine 9.0 is now available
    link
    fedilink
    English
    arrow-up
    8
    ·
    edit-2
    8 months ago

    The Wine team is proud to announce that the stable release Wine 9.0 is now available.

    This release represents a year of development effort and over 7,000 individual changes. It contains a large number of improvements that are listed below. The main highlights are the new WoW64 architecture and the experimental Wayland driver.

    The source is available at https://dl.winehq.org/wine/source/9.0/wine-9.0.tar.xz

    Binary packages for various distributions will be available from https://www.winehq.org/download

    You will find documentation on https://www.winehq.org/documentation

    Wine is available thanks to the work of many people. See the file AUTHORS for the complete list.

    What’s new in Wine 9.0

    WoW64

    • All transitions from Windows to Unix code go through the NT syscall interface. This is a major milestone that marks the completion of the multi-year re-architecturing work to convert modules to PE format and introduce a proper boundary between the Windows and Unix worlds.
    • All modules that call a Unix library contain WoW64 thunks to enable calling the 64-bit Unix library from 32-bit PE code. This means that it is possible to run 32-bit Windows applications on a purely 64-bit Unix installation. This is called the new WoW64 mode, as opposed to the old WoW64 mode where 32-bit applications run inside a 32-bit Unix process.
    • The new WoW64 mode is not yet enabled by default. It can be enabled by passing the --enable-archs=i386,x86_64 option to configure. This is expected to work for most applications, but there are still some limitations, in particular:
      • Lack of support for 16-bit code.
      • Reduced OpenGL performance and lack of ARB_buffer_storage extension support.
    • The new WoW64 mode finally allows 32-bit applications to run on recent macOS versions that removed support for 32-bit Unix processes.

    Wayland driver

    • There is an experimental Wayland graphics driver. It’s still a work in progress, but already implements many features, such as basic window management, multiple monitors, high-DPI scaling, relative motion events, and Vulkan support.

    • The Wayland driver is not yet enabled by default. It can be enabled through the HKCU\Software\Wine\Drivers registry key by running:

      wine reg.exe add HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland
      

      and then making sure that the DISPLAY environment variable is unset.

    ARM64

    • The completion of the PE/Unix separation means that it’s possible to run existing Windows binaries on ARM64.
    • The loader supports loading ARM64X and ARM64EC modules.
    • The 32-bit x86 emulation interface is implemented. No emulation library is provided with Wine at this point, but an external library that exports the interface can be used, by specifying its name in the HKLM\Software\Microsoft\Wow64\x86 registry key. The FEX emulator implements this interface when built as PE.
    • There is initial support for building Wine for the ARM64EC architecture, using an experimental LLVM toolchain. Once the toolchain is ready, this will be used to do a proper ARM64X build and enable 64-bit x86 emulation.

    Graphics

    • The PostScript driver is reimplemented to work from Windows-format spool files and avoid any direct calls from the Unix side.
    • WinRT theming supports a dark theme option, with a corresponding toggle in WineCfg.
    • The Vulkan driver supports up to version 1.3.272 of the Vulkan spec.
    • A number of GdiPlus functions are optimized for better graphics performance.

    Direct3D

    • The multi-threaded command stream sleeps instead of spinning when not processing rendering commands. This lowers power consumption in programs which do not occupy the command stream’s entire available bandwidth. Power consumption should be comparable to when the multi-threaded command stream is disabled.
    • Direct3D 10 effects support many more instructions.
    • Various optimizations have been made to core WineD3D and the Vulkan backend.
    • The Vulkan renderer properly validates that required features are supported by the underlying device, and reports the corresponding Direct3D feature level to the application.
    • D3DXFillTextureTX and D3DXFillCubeTextureTX are implemented.
    • The legacy OpenGL ARB shader backend supports shadow sampling via ARB_fragment_program_shadow.
    • The HLSL compiler supports matrix majority compilation flags.
    • D3DXLoadMeshHierarchyFromX and related functions support user data loading via ID3DXLoadUserData.

    Audio / Video

    • The foundation of several of the DirectMusic modules is implemented. Many tests are added to validate the behavior of the dmime sequencer and the dmsynth MIDI synthesizer.
    • DLS1 and DLS2 sound font loading is implemented, as well as SF2 format for compatibility with Linux standard MIDI sound fonts.
    • MIDI playback is implemented in dmsynth, with the integration of the software synthesizer from the FluidSynth library, and using DirectSound for audio output.
    • Doppler shift is supported in DirectSound.
    • The Indeo IV50 Video for Windows decoder is implemented.

    DirectShow

    • The Windows Media Video (WMV) decoder DirectX Media Object (DMO) is implemented.
    • The DirectShow Audio Capture filter is implemented.
    • The DirectShow MPEG‑1 Stream Splitter filter supports video and system streams as well as audio streams.
    • The DirectShow MPEG‑1 Video Decoder filter is implemented.

    Input devices

    • DirectInput action maps are implemented, improving compatibility with many old games that use this to map controller inputs to in-game actions.

    Desktop integration

    • URL/URI protocol associations are exported as URL handlers to the Linux desktop.
    • Monitor information like name and model id are retrieved from the physical monitor’s Extended Display Identification Data (EDID).
    • In full-screen desktop mode, the desktop window can be closed through the “Exit desktop” entry in the Start menu.

    Internationalization

    • IME implementation is improved, with better support for native Windows IME implementations. Many tests are added to validate the expected behavior of these custom IMEs.
    • Linux IME integration is improved, using over-the-spot or on-the-spot input styles whenever possible, and more accurate IME message sequences.
    • Locale data is generated from the Unicode CLDR database version 44. The following additional locales are supported: bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA, prg-PL, skr-PK, tyv-RU, vmw-MZ, xnr-IN, and za-CN.
    • The user interface is translated to Georgian, bringing the total of full translations to 16 languages, with partial translations to another 31 languages.
    • Unicode character tables are based on version 15.1.0 of the Unicode Standard.
    • The timezone data is generated from the IANA timezone database version 2023c.
    • Locales using a script name, like zh-Hans, are also supported on macOS.

    Kernel

    • The default Windows version for new prefixes is set to Windows 10.
    • Address space layout randomization (ASLR) is supported for modern PE binaries, to avoid issues with address space conflicts. Note that the selected load addresses are not yet properly randomized.
    • The Low Fragmentation Heap (LFH) is implemented for better memory allocation performance.
    • The virtual memory allocator supports memory placeholders, to allow applications to reserve virtual space.
    • The 64-bit loader and preloader are built as position-independent executables (PIE), to free up some of the 32-bit address space.
    • Stack unwinding works correctly across NT syscalls and user callbacks.

    Internet and networking

    • All builtin MSHTML objects are proper Gecko cycle collector participants.
    • Synchronous XMLHttpRequest mode is supported in MSHTML.
    • WeakMap object is implemented in JScript.
    • The Gecko engine is updated to version 2.47.4.
    • Network interface change notifications are implemented.

    Cryptography and security

    • Smart cards are supported in the Winscard dll, using the Unix PCSClite library.
    • Diffie-Hellman keys are supported in BCrypt.
    • The Negotiate security package is implemented.

    Mono / .NET

    • The Mono engine is updated to version 8.1.0.

    Builtin applications

    • The Wine Debugger (winedbg) uses the Zydis library for more accurate x86 disassembly.
    • WineCfg supports selecting old (pre-XP) Windows versions also in 64-bit prefixes, to enable using ancient applications with the new WoW64 mode.
    • All graphical builtin applications report errors with a message box instead of printing messages on the console.
    • The systeminfo application prints various data from the Windows Management Instrumentation database.
    • The klist application lists Kerberos tickets.
    • The taskkill application supports terminating child processes.
    • The start application supports a /machine option to select the architecture to use when running hybrid x86/ARM executables.
    • Most of the functionality of the tasklist application is implemented.
    • The findstr application provides basic functionality.

    […continued in a reply, due to Lemmy’s character limit…]




  • Your current approach of talking raw SMTP is likely to be more hassle than is worthwhile, and since the days of permissive SMTP servers are long gone, might not work at all.

    Since you appear to be using an Debian-based Linux distro, I suggest this approach:

    • If you don’t specifically need exim, consider replacing it with the lightweight dma package (DragonFly Mail Agent): apt install dma
    • Configure dma (or exim) to use your ISP’s SMTP server as a smart host. (Or the Gmail SMTP server if your ISP doesn’t provide one.)
    • Use the /usr/sbin/sendmail command (which comes with dma or exim) to send messages from your scripting language of choice.

    If you prefer to receive messages as SMS, note that most major mobile carriers maintain an email-to-sms gateway for this purpose. Some web searches will probably lead you to the one for your carrier. They usually accept email at an address like 123456789@sms-gateway.example.com


  • ono@lemmy.catoLinux Gaming@lemmy.worldDebian for Linux gaming?
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    8 months ago

    mileage may vary if you’re looking at cutting edge games, as driver updates can significantly boost performance in that case.

    If you’re playing games in Steam, Flatpak, or any other tool that provides its own runtime, the graphics driver updates that tend to affect performance (e.g. Mesa) don’t come from your base distro.

    (Unless maybe you have an Nvidia GPU and a distro that packages its proprietary drivers? I’m not sure in that case, since I quit Nvidia years ago.)


  • ono@lemmy.catoLinux Gaming@lemmy.worldDebian for Linux gaming?
    link
    fedilink
    English
    arrow-up
    23
    ·
    8 months ago

    Any reason why I shouldn’t just go with Debian + KDE and install Steam?

    No reason to avoid Debian unless you have hardware so very new that it requires the very latest kernel to operate.

    If you go with Debian Stable, you can enable Backports for a fairly recent kernel, currently 6.5.10. You could go with Testing or even Unstable if you’re addicted to upgrading as often as possible, but chances are you won’t need to.

    I’m gaming on Debian Stable with Steam in a flatpak. It works great, and is blissfully low maintenance.

    At some point, you’ll probably run into people claiming that Debian is bad for gaming performance because of “outdated” packages. In most cases, those people don’t know what they’re talking about. I suggest ignoring them unless they identify a specific performance issue that actually affects you.