🏑


  1. Your company needs Junior devs
  2. The KekulΓ© Problem - Nautilus
  3. Suckerpinch
  4. MiniJinja: Learnings from Building a Template Engine in Rust | Armin Ronacher's Thoughts and Writings
  5. Code review antipatterns

  1. September 08, 2024
    1. πŸ”— hyprwm/Hyprland v0.43.0 release

      A new, big update 0.43.0 brought to you by Yours Truly.

      Many bugfixes, and new features, as always.

      Notes for packagers

      • Hyprland now requires C++26 support to build. gcc>=14 or clang>=18 will be needed.
      • Installable assets have moved to assets/install/. All pngs there should be installed to $PREFIX/share/hypr/

      New features:

      • IPC: Add config descriptions (#7377)
      • animations: add workspace in/out configs
      • config: Add a variable to prevent groups from merging after being dragged (#7650)
      • config: Add a window rule to render while unfocused (#7582)
      • config: Added default button mapping for xf86 keys (#7672)
      • config: add exec-shutdown for running commands on shutdown (#7683)
      • core: add option to control which window to focus on close (#7368)
      • cursormgr: add a new setting to sync gsettings (#7253)
      • env: Add HYPRLAND_NO_SD_VARS env condition (#7358)
      • hyprctl: add active and all to switchxkblayout
      • logs: Add file path to asset ERR log (#7336)
      • windowrules: add fullscreenstate field (#7466)
      • xwayland: add option to enable/disable xwayland (#7633)

      Fixes:

      • Fix crash reports having execute permission
      • Fix missing include needed by clang
      • build: Fix NO_XWAYLAND compilation (#7538)
      • config: add missing header for libc++ after 92744b5 (#7403)
      • config: fix explicit sync option warning (#7293)
      • config: fix uninitialized values with mode parsing
      • core: fix crash on monitor removed with gammaControl (#7601)
      • core: fix data race and a unsigned int rollover (#7278)
      • cursormgr: fix cursor gsettings on session change (#7295)
      • data-device: Fix selection mismatch when wlr resets primary selection (#7598)
      • decorations: fix manual resize not recalculating decos (#7323)
      • example/config: fix typo in default config (#7446)
      • gamma-control: fix crash on monitor disconnect (#7353)
      • helpers: fix: revert to signed arithmetic for cycling through workspaces (#7339)
      • hyprpm: Fix checking dependencies (#7504)
      • input: Fix disabling tap-to-click (#7304)
      • input: Fix modifier keys getting stuck if depressed during config reload (#7486)
      • install: Prepend ${DESTDIR} when creating hyprland symbolic link (fixes #7280). (#7281)
      • keybinds: Fix fullscreenState toggling behaviour (#7288)
      • keybinds: Fix syncFullscreen inconsistent with state when set by fullscreenState (#7343)
      • keybinds: fixup misused kb state
      • misc: fix some minor typos (#7530)
      • pointermgr: fix initial cursorwarp (#7286)
      • presentation-feedback: minor fixups
      • protocol: fix logm template checks
      • render: fixup format mismatch after leaving DS
      • renderer: minor direct scanout fixes (#7594)
      • screencopy: fix 10b format r/b flip
      • screencopy: fixup 10-bit sharing via shm on nvidia
      • sessionLock: fix misc:allow_session_lock_restore (#7511)
      • textinput: fix ime activation in some edge cases (#7660)
      • workspacerules: fix on-created-empty window focus (#7657)

      Other:

      • CI: clarify Nix CI jobs; disable on forked repositories
      • CI: disable stale workflow on forks (#7535)
      • CMake: drop duplicate -luuid after 5262292
      • CMake: drop unused deps after 016da23
      • CMakeLists: wayland.xml is in wayland-scanner pkgdatadir
      • Nix: exclude wayland-scanner until next staging merge
      • Nix: include xcursor regardless of xwayland
      • Nix: remove unused dependencies
      • README: Change image sources from vaxerski/Hyprland to hyprwm/Hyprland (#7315)
      • Revert "syncobj: wait for deadline instead of available"
      • Update aquamarine input in flake
      • compositor: update suspendstate on window move (#7396)
      • core: Include cstring whenever strncpy is used (#7267)
      • core: Move to C++26 and use native_handle to CLOEXEC the debug fd (#7219)
      • core: Preserve existing XDG_CURRENT_DESKTOP (#7347)
      • core: make most for loops use const references (#7527)
      • cursor: make inactive_timeout setting a float (#7268)
      • data-device: send dndFinished when dnd offer is destroyed while unfinished
      • eventloop: don't dispatch in enterLoop
      • examples: more systemd examples (#7409)
      • headers: set correct paths to header files (#7245)
      • hyprctl: avoid parsing string::npos on invalid cmd (#7544)
      • hyprpm, hyprctl: update shell completions
      • hyprpm, hyprctl: remove Makefiles
      • input: don't emit idle activity when calling simulateMouseMovement (#7649)
      • input: kb focus mouse focused window if unset (#7666)
      • input: move idle notify to input handlers (#7659)
      • input: try to refocus a focusable window when seat grabs are reset (#7669)
      • internal: introduce new types to avoid unsigned int rollover and signed int overflow (#7216)
      • internal: removed Herobrine
      • keybinds: refactor dispatchers to be better (#7331)
      • keybinds: release mods after sendshortcut (#7581)
      • layersurface: don't unref from monitor until dtor
      • layersurface: dont rollover on size_t (#7451)
      • layersurface: remove layer on destroy from monitor (#7457)
      • linux-dmabuf: allow on split-node systems
      • logs: don't get timezone every time logging (#7550)
      • meson: explicitly specify path for find(1) (#7590)
      • misc: Rename all instances of "emtpy" to "empty" (#7522)
      • misc: constify the remaining for loops (#7534)
      • monitor: avoid dangling references to old monitors being undestroyed
      • monitors: avoid crash on wayland output removal
      • output: dont cast enum out of range (#7448)
      • protocols: avoid crashing in drmlease (#7290)
      • protocols: destroy new xdgDialog protocol at right time (#7600)
      • protocols: refactor protocol logging to a macro (#7324)
      • renderbuffer: ensure framebuffer gets deleted (#7363)
      • renderer: better lockscreen dead behavior (#7574)
      • renderer: fade out windows on silent moves
      • renderer: pass custom modelines to aq
      • screencopy: nuke unused stuff
      • sessionLock: ensure sls focus in some edge cases (#7647)
      • shm: align size to stride (#7383)
      • syncobj: wait for deadline instead of available
      • textinput: don't deactivate ime if another ti is focused (#7617)
      • textinput: send deactivate to ime on destory ti (#7614)
      • window/xwayland: minor property cleanup
      • window: don't focus on activate if window isn't mapped yet
      • windows: support size with pseudo tiled
      • xcursor: handle file errors when loading xcursor themes (#7326)
      • xcursormgr: dont apply scale on gsettings (#7316)
      • xdg-dialog: implement new protocol
      • xwayland: deactivate xwayland focus if wayland is focused (#7458)
      • xwayland: update overrideRedirect on map and configure (#7575)
      • xwaylandmgr: minor refactor to activateSurface
      • xwm: don't mark selection events as succeeded
      • xwm: read atom name from xcb (#7546)

      Special Thanks

      Special thanks to these chads for donating, as always:

      • Xoores
      • taigrr
      • SomeMediocreGamer
      • Azelphur
      • ari-cake
      • alukortti
      • MasterHowToLearn
      • Theory_Lukas
      • maltbeverage
      • Plyply
      • Poor as shit
      • Milan
      • johndoe42
      • yyyyyyyan
      • seb
      • Cromat_tux
      • DaGaugl
      • Philipp Soldunov
      • nico
      • atomicptr
      • ircurry
      • normal
      • Mikey G
      • JPEG
      • Sven
      • neoney
      • Valentin MATHIEU
      • Morally2412
      • Enzi
      • Logno
      • Mihail
      • niraami
      • KelpShake

      MRs

      New Contributors

      Full Changelog : v0.42.0...v0.43.0

  2. September 07, 2024
    1. πŸ”— Register Spill Joy & Curiosity #6 rss

      I'm going to try something new again. This Register Spill consists of only the Joy & Curiosity section. Why? I want some writing time back for other side-projects, but I also think the writing might get better of it's not on a weekly schedule. I've also really enjoyed compiling a list of links, so let's focus on that for a while.

      • Somehow I ended up reading about Apple's Presto machines: machines that can update iPhones while they're still in the box. This again is an easy-to-miss sentence that only makes you pause when you really think about it. How do you update iPhones in boxes , while they're not even turned on? I found some more information here -- fascinating stuff.

      • This post by Tim O'Reilly (of animals-on-the-covers O'Reilly books) made the rounds this week and I re-read it -- again. It's one of the realest things I've ever read on building a company, a business. O'Reilly: "One of my big mistakes was to let people build products, or do marketing, without forcing them to understand the financial impact of their decisions. This is flying blind -- like turning them loose in an automobile without a speedometer or a fuel gauge." While reading, keep in mind that this is from 2013! Pre-ZIRP, if you will. And yet.

      • I'm going to reference this tweet in the future when someone asks whether it's worth learning or understanding something that one might not use in their day-to-day: "knowing about architecture means buildings are legible in a different way; knowing about plants and birds makes hikes more stimulating, playing music makes listening to it richer, etc"

      • Thanks to this Pragmatic Engineer post I re-read Joel Spolky's Things You Should Never Do - Part 1, the classic post in which he argues that one should never do a big rewrite. It's been a while since I last read it. This time, the following section jumped out at me: "Programmers are, in their hearts, architects, and the first thing they want to do when they get to a site is to bulldoze the place flat and build something grand. We're not excited by incremental renovation: tinkering, improving, planting flower beds." My immediate reaction was: but I love incremental renovation and tinkering and improving and tweaking and fiddling and listening to the engine!

      • Paul Graham published a new essay. It's called Founder Mode and I enjoyed it. What I found interesting: it seems to be yet another sign that the tide is shifting, that the previous 10 years are coming to a close. And every time I think about that tide, I wonder whether it will also take away the idea that it's worthwhile to emulate Google, even if you don't have a money fountain in your company.

      • Kent Beck published something in response to the Graham essay and that too is an interesting read. What stuck with me was something orthogonal to his main point, a small side-observation really. Beck writes about decisions by CEOs: "Each decision has 2 outputs. (1) The consequences of the decision itself. (2) A new organization more or less prepared to make the next decision." -- how interesting is that (2) point? What a lens to look through!

      • I was talking to a younger colleague this week about stock options and forwarded him the all-time classic about stock options by Julia Evans. I also realized that (1) I know quite a lot about stock options compared to, say, 5 years ago and (2) I bet that the single most-helpful thing I ever read on business and stock options was Phil Knight's memoir Shoe Dog.

      • Last week I was talking to Dave and I got lucky because we both realized Dave didn't know about the Qlobe: a quine (a program that prints itself) that prints itself as a globe and each time you run it (and thus print it) it rotates the globe. My recommendation to you: clone it from here, run it in the terminal, smile.

      As always and as we both know, you should subscribe here:

    2. πŸ”— astral-sh/uv 0.4.7 release

      Release Notes

      Enhancements

      • Add --no-emit-project and friends to uv export (#7110)
      • Add --output-file to uv export (#7109)
      • Prune unused source distributions from the cache in uv cache prune (#7112)
      • Take intersection of constraint and requirements hashes (#7108)

      Performance

      • Skip metadata fetch for --no-deps and pip sync (#7127)

      Bug fixes

      • Avoid panicking when encountering an invalid Python version during uv python list (#7131)
      • Write trailing newline to .python-version files (#7140)

      Install uv 0.4.7

      Install prebuilt binaries via shell script

      curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.4.7/uv-installer.sh | sh
      

      Install prebuilt binaries via powershell script

      powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.4.7/uv-installer.ps1 | iex"
      

      Download uv 0.4.7

      File | Platform | Checksum
      ---|---|---
      uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum
      uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum
      uv-i686-pc-windows-msvc.zip | x86 Windows | checksum
      uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum
      uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum
      uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum
      uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum
      uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum
      uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum
      uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum
      uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum
      uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum
      uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum
      uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum
      uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum
      uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum

  3. September 06, 2024
    1. πŸ”— @cxiao@infosec.exchange I have made an update to this thread about Rust panic location metadata in mastodon

      I have made an update to this thread about Rust panic location metadata in binaries, as well as to the associated blog post! I made a correction to my description of how developers can strip the panic location metadata from their binaries.

      The attached screenshot shows a binary that was built using the Rust compiler's unstable location-detail feature, which excludes panic location metadata from the final binary.

      Even using this feature isn't enough to strip all the location metadata, though; by default, Rust binaries statically link in a precompiled version of the standard library, which still contains the location metadata. Therefore, this binary was also built using Cargo's unstable build-std feature, which builds the Rust standard library from source, now with the location- detail flag specified during the compilation.

      See the updated Rust binaries without panic metadata section of my blog post, for more details!

      #rust #rustlang #ReverseEngineering #MalwareAnalysis

    2. πŸ”— News Minimalist US, UK, and EU finalize AI treaty + 3 more stories rss

      Today ChatGPT read 10051 top news stories. After removing previously covered events, there are 4 articles with a significance score over 5.8.

      [5.9] U.S. imposes export curbs on quantum and chip technologies to China β€”japantimes.co.jp

      The U.S. Department of Commerce has announced new export controls on technologies like quantum computing and semiconductors, citing national security concerns as China advances in the chip industry.

      The rules, effective globally, include exemptions for countries with similar controls. China’s semiconductor technology is reportedly just three years behind Taiwan's, prompting concerns over economic impacts and compliance from allies like South Korea and the Netherlands.

      [5.8] US, UK, and EU to sign AI standards treaty β€”Financial Times[$]

      The US, UK, and EU are set to sign a legally binding international treaty on AI, emphasizing human rights and democratic values.

      Drafted over two years by over 50 countries, the convention mandates accountability for harmful AI outcomes and ensures legal recourse for victims. The treaty opens for signatures on September 5, 2024, amid growing global efforts to regulate AI technologies.

      [5.8] UN calls for independent force to protect Sudanese civilians β€”ABC News

      UN-backed human rights investigators have called for the establishment of an "independent and impartial force" to protect civilians in Sudan, where conflict has displaced over 10 million people and resulted in at least 18,760 deaths since April last year.

      The report blames both the Sudanese army and the paramilitary Rapid Support Forces for war crimes, urging an arms embargo across the entire country amid widespread humanitarian crises.

      [5.8] Scientists urge international cooperation to regulate lunar resources β€”Space.com

      Scientists, led by lunar expert Clive Neal, are advocating for an International Lunar Resources Prospecting Campaign to evaluate the lunar south pole's resources, particularly water ice, crucial for life support and rocket fuel.

      Over 30 robotic lunar missions are planned by the decade's end, with participation from multiple nations. This collaboration aims to understand the moon's resources, coordinating data among various agencies, including NASA, China, and Russia.

      Highly covered news with significance over 5.3

      [5.7] First 100,000 doses of mpox vaccine reach Democratic Republic of Congo
      (Irish Examiner + 19)

      [5.6] China pledges $51 billion and 1 million jobs for Africa
      (nbcnews.com + 74)

      [5.3] AI startup Safe Superintelligence raises $1 billion in funding
      (cnbc.com + 11)

      Want to read more?

      See additional news on newsminimalist.com


      Thanks for reading and see you soon,

      Vadim


      Powered by beehiiv

    3. πŸ”— @trailofbits@infosec.exchange Jason An, a summer intern, upgraded Pwndbg with Binary Ninja integration and mastodon

      Jason An, a summer intern, upgraded Pwndbg with Binary Ninja integration and Go structure dumping, bringing an IDE-like experience to stripped binary analysis.
      https://buff.ly/3Xvcgwy

    4. πŸ”— @HexRaysSA@infosec.exchange Are you ready? We're revealing some of the exciting new features in IDA 9.0, mastodon

      Are you ready? We're revealing some of the exciting new features in IDA 9.0, launching on September 30th! πŸš€ First up: C++ Exceptions Support in the Decompiler. Learn why this feature is a game-changer 🌐 https://hex- rays.com/blog/unveiling-ida-pro-9-0-c-exceptions-support-in-the- decompiler/?utm_source=Social-Media- Post&utm_medium=Mastodon&utm_campaign=revealing-ida-9-0-try- catch

      #idapro #decompiler

    5. πŸ”— Jeremy Fielding (YouTube) How Regenerative Braking Works rss
    6. πŸ”— matklad Try to Fix It One Level Deeper rss

      Try to Fix It One Level Deeper Sep 6, 2024

      I had a productive day today! I did many different and unrelated things, but they all had the same unifying theme:

      There's a bug! And it is sort-of obvious how to fix it. But if you don't laser-focus on that, and try to perceive the surrounding context, it turns out that the bug is valuable, and it is pointing in the direction of a bigger related problem. So, instead of fixing the bug directly, a detour is warranted to close off the avenue for a class of bugs.

      Here are the examples!

      In the morning, my colleague pointed out that we are giving substandard error message for a pretty stressful situation when the database runs out of disk space. I went ahead and added appropriate log messages to make it clearer. But then I stopped for a moment and noticed that the problem is bigger -- we are missing an infrastructure for fatal errors, and NoSpaceLeft is just one of a kind. So I went ahead and added that along the way: #2289.

      Then, I was reviewing a PR by @martinconic which was fixing some typos, and noticed that it was also changing the formatting of our Go code. The latter is by far the biggest problem, as it is the sign that we somehow are not running gofmt during our CI, which I fixed in #2287.

      Then, there was a PR from yesterday, where we again had a not quite right log message. The cause was a confusion between two compile-time configuration parameters, which were close, but not quite identical. So, instead of fixing the error message I went ahead and made the two parameters exactly the same. But then my colleague noticed that I actually failed to fix it one level deeper in this case! Turns out, it is possible to remove this compile-time parametrization altogether, which I did in #2292.

      But these all were randomly-generated side quests. My intended story line for today was to refactor the piece of code I had trouble explaining (and understanding!) on yesterday's episode of Iron Beetle. To get into the groove, I decided to first refactor the code that calls the problematic piece of logic, as I noticed a couple of minor stylistic problems there. Of course, when doing that, I discovered that we have a bit of dead code, which luckily doesn't affect correctness, but does obscure the logic. While fixing that, I used one of my favorite Zig patterns: defer assert(postcondition);

      It of course failed in the simulator in a way postcondition checks tend to fail -- there was an unintended reentrancy in the code. So I slacked my colleague something like

      I thought myself to be so clever adding this assert, but now it fails and I have to fix it TT I think I'll just go and .next_tick the prefetch path. It feels like there should be a more elegant solution here, but I am not seeing it.

      But of course I can't just "go and .next_tick it", so here I am, trying to figure out how to encode a Duff's device in Zig pre-#8220, so as to make this class of issues much less likely.

    7. πŸ”— Kagi We moved mountains (of cotton) to deliver on our promise rss

      Dear Kagi Community, Remember those t-shirts we promised ( https://blog.kagi.com/celebrating-20k ) ? Well, hold onto your search bars, because they’re finally ready to ship! TL;DR: Kagi Store ( https://store.kagi.com ).

      ( https://store.kagi.com ) And let’s just say, the journey to get here was a bit more of an β€œadventure” than we originally planned.