<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: neobrain</title><link>https://news.ycombinator.com/user?id=neobrain</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 21 Jun 2026 07:03:15 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=neobrain" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by neobrain in "Claude Code as a Daily Driver: Claude.md, Skills, Subagents, Plugins, and MCPs"]]></title><description><![CDATA[
<p>(for context, you're replying to the author of an alternative nix input pinning mechanism, which means... they're probably aware of all that and yet they chose their wording like this anyway)</p>
]]></description><pubDate>Thu, 28 May 2026 10:34:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48307071</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=48307071</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48307071</guid></item><item><title><![CDATA[New comment by neobrain in "Proton Meet"]]></title><description><![CDATA[
<p>They <i>are</i> hiring specifically for that: <a href="https://old.reddit.com/r/ProtonDrive/comments/1spx14d/proton_is_hiring_a_linux_desktop_employee_for/" rel="nofollow">https://old.reddit.com/r/ProtonDrive/comments/1spx14d/proton...</a></p>
]]></description><pubDate>Wed, 06 May 2026 20:43:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48041535</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=48041535</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48041535</guid></item><item><title><![CDATA[New comment by neobrain in "Self-updating screenshots"]]></title><description><![CDATA[
<p>Nothing public yet, but this is the Nix output for taking the screenshot, to be executed via `nix run .#screenshot`:<p><pre><code>        outputs.apps.x86_64.screenshot = {
          type = "app";
          program = toString (pkgs.writeShellScript "screenshot-script" ''
            set -euo pipefail

            EMU_SDK="${androidEmulatorComposition.androidsdk}/libexec/android-sdk"
            ADB="$EMU_SDK/platform-tools/adb"
            EMULATOR="$EMU_SDK/emulator/emulator"
            APK="${self.packages.${system}.debug}/myapp-debug.apk"

            SRC_DIR="$(${pkgs.git}/bin/git rev-parse --show-toplevel)"
            AVD_HOME="$(mktemp -d)"
            trap 'kill "$EMU_PID" 2>/dev/null; wait "$EMU_PID" 2>/dev/null; rm -rf "$AVD_HOME"' EXIT

            # Create AVD
            AVD_DIR="$AVD_HOME/screenshot.avd"
            mkdir -p "$AVD_DIR"
            cat > "$AVD_HOME/screenshot.ini" <<EOF
            avd.ini.encoding=UTF-8
            path=$AVD_DIR
            target=android-${platformVersion}
            EOF
            cat > "$AVD_DIR/config.ini" <<EOF
            AvdId=screenshot
            PlayStore.enabled=false
            abi.type=x86_64
            avd.ini.encoding=UTF-8
            hw.cpu.arch=x86_64
            hw.gpu.enabled=yes
            hw.gpu.mode=swiftshader_indirect
            hw.lcd.density=420
            hw.lcd.height=2400
            hw.lcd.width=1080
            hw.ramSize=2048
            image.sysdir.1=system-images/android-${platformVersion}/google_apis/x86_64/
            skin.dynamic=yes
            tag.display=Google APIs
            tag.id=google_apis
            disk.dataPartition.size=2G
            EOF

            echo "==> Starting emulator..."
            ANDROID_AVD_HOME="$AVD_HOME" ANDROID_HOME="$EMU_SDK" \
              "$EMULATOR" -avd screenshot -no-window -no-audio -no-boot-anim \
              -gpu swiftshader_indirect -no-snapshot 2>&1 &
            EMU_PID=$!

            echo "==> Waiting for boot..."
            for i in $(seq 1 90); do
              BOOT=$("$ADB" shell getprop sys.boot_completed 2>/dev/null | tr -d '\r') || true
              if [ "$BOOT" = "1" ]; then
                echo "    Booted after ~$((i * 2))s"
                break
              fi
              sleep 2
            done
            if [ "$BOOT" != "1" ]; then
              echo "ERROR: Emulator failed to boot" >&2
              exit 1
            fi

            # Enable dark mode
            "$ADB" shell cmd uimode night yes

            # Install and launch
            echo "==> Installing APK..."
            "$ADB" install -r "$APK"
            "$ADB" shell pm grant com.me.myapp android.permission.WRITE_SECURE_SETTINGS
            "$ADB" shell am start -n com.me.myapp/.MainActivity
            sleep 3

            # Navigate to settings screen by tapping "Notification Filters" button
            # This uses uiautomator to find the button by text for robustness
            "$ADB" shell uiautomator dump /sdcard/ui.xml
            BOUNDS=$("$ADB" shell cat /sdcard/ui.xml \
              | ${pkgs.gnugrep}/bin/grep -oP 'text="Notification Filters"[^>]*bounds="\K[^"]+' \
              || true)
            if [ -z "$BOUNDS" ]; then
              echo "ERROR: Could not find Notification Filters button" >&2
              exit 1
            fi
            # Parse bounds "[x1,y1][x2,y2]" to compute center tap coordinates
            X1=$(echo "$BOUNDS" | ${pkgs.gnused}/bin/sed 's/\[\([0-9]*\),\([0-9]*\)\]\[\([0-9]*\),\([0-9]*\)\]/\1/')
            Y1=$(echo "$BOUNDS" | ${pkgs.gnused}/bin/sed 's/\[\([0-9]*\),\([0-9]*\)\]\[\([0-9]*\),\([0-9]*\)\]/\2/')
            X2=$(echo "$BOUNDS" | ${pkgs.gnused}/bin/sed 's/\[\([0-9]*\),\([0-9]*\)\]\[\([0-9]*\),\([0-9]*\)\]/\3/')
            Y2=$(echo "$BOUNDS" | ${pkgs.gnused}/bin/sed 's/\[\([0-9]*\),\([0-9]*\)\]\[\([0-9]*\),\([0-9]*\)\]/\4/')
            TAP_X=$(( (X1 + X2) / 2 ))
            TAP_Y=$(( (Y1 + Y2) / 2 ))
            "$ADB" shell input tap "$TAP_X" "$TAP_Y"
            sleep 2

            # Capture and process screenshot
            echo "==> Capturing screenshot..."
            "$ADB" shell screencap -p /sdcard/screenshot.png
            "$ADB" pull /sdcard/screenshot.png "$AVD_HOME/raw.png"

            # Crop to content: remove status bar (top 128px) and empty space below
            # Per-App Overrides, then resize with high-quality Lanczos filter
            ${pkgs.imagemagick}/bin/magick "$AVD_HOME/raw.png" \
              -crop 1080x1100+0+128 +repage \
              -filter Lanczos -resize 540x \
              "$SRC_DIR/fastlane/metadata/android/en-US/images/phoneScreenshots/settings.png"

            echo "==> Screenshot saved to fastlane/metadata/android/en-US/images/phoneScreenshots/settings.png"
          '');
        };</code></pre></p>
]]></description><pubDate>Sun, 03 May 2026 17:05:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47998995</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47998995</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47998995</guid></item><item><title><![CDATA[New comment by neobrain in "Asahi Linux Progress Linux 7.0"]]></title><description><![CDATA[
<p>Most people don't realize that the Asahi team ship features only once they work without quirks. For the set of supported hardware features, Asahi is much closer to a macOS experience than to an average x86 Linux laptop experience.<p>Meanwhile, Linux on my Lenovo X13s "works" but has tons of quirks: Boot fails 2 out of 3 times, the device hard-resets sometimes when waking up with a display connected, and the speakers are unusable due to lack of active overheat protection (and somehow this affects even external speakers). It technically works, but it's incredibly frustrating to use in practice.<p>If you plan to use Linux and don't <i>need</i> an ARM laptop, there's little reason to prefer a Qualcomm device over an x86 one currently. On the other hand, M1/M2 easily outperform a broad class of x86 laptops, and they have a Linux experience that's for many use cases close to on par with official vendor support.</p>
]]></description><pubDate>Mon, 27 Apr 2026 12:26:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=47920698</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47920698</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47920698</guid></item><item><title><![CDATA[New comment by neobrain in "Self-updating screenshots"]]></title><description><![CDATA[
<p>+1 for this approach. For a mobile app, I made Nix spawn an ephemeral Android emulator instance for generating up-to-date screenshots, requiring no prior setup and leaving no lingering data around after running. Setting it up wasn't that high-effort in my case either; coming up with the idea was the hard part, the Nix code was one-shot by your favorite LLM.<p>Granted manually updating the screenshots isn't the most laborious task in the world, but the "upload-apk + take-screenshot + transfer-back-to-PC + edit" process is usually barely annoying enough that you end up almost never doing it otherwise (similar to the OP's experience in the closing paragraph).</p>
]]></description><pubDate>Mon, 27 Apr 2026 07:59:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47918887</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47918887</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47918887</guid></item><item><title><![CDATA[New comment by neobrain in "Bitwarden CLI compromised in ongoing Checkmarx supply chain campaign"]]></title><description><![CDATA[
<p>Quite the contrary, actually: <i>not</i> using a browser extension makes you much more susceptible to phishing attacks, since your password manager won't be able to protect you from copy-pasting credentials into an imposter website.</p>
]]></description><pubDate>Fri, 24 Apr 2026 11:17:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47888614</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47888614</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47888614</guid></item><item><title><![CDATA[New comment by neobrain in "Parallel agents in Zed"]]></title><description><![CDATA[
<p>Just injecting this here: What I've been missing is an equivalent for GitHub's "blame prior revision" feature to quickly follow through the history of individual source lines.<p><a href="https://github.com/zed-industries/zed/discussions/42583" rel="nofollow">https://github.com/zed-industries/zed/discussions/42583</a><p>Thanks for building an awesome product :)</p>
]]></description><pubDate>Thu, 23 Apr 2026 10:36:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=47874115</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47874115</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47874115</guid></item><item><title><![CDATA[New comment by neobrain in "GitHub CLI now collects pseudoanonymous telemetry"]]></title><description><![CDATA[
<p>tl;dr for opt-out as per <a href="https://cli.github.com/telemetry#how-to-opt-out" rel="nofollow">https://cli.github.com/telemetry#how-to-opt-out</a> (any of these work individually):<p>export GH_TELEMETRY=false<p>export DO_NOT_TRACK=true<p>gh config set telemetry disabled (starting from version 2.91.0, which this announcement refers to)</p>
]]></description><pubDate>Wed, 22 Apr 2026 12:22:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47862569</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47862569</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47862569</guid></item><item><title><![CDATA[New comment by neobrain in "FBI Extracted Deleted Signal Messages Saved in iPhone Notification Database"]]></title><description><![CDATA[
<p>The article is specifically <i>not</i> referring to information that's sent to Apple servers - it's about information on the phone only, accessible through forensics tools with physical device access.<p>Signal's server-side push notifications only contain a "wakeup" message. The actual message popup is displayed after decrypting the message contents locally on the device. Of the things you mentioned, only the time of notification is visible to Apple/Google.</p>
]]></description><pubDate>Thu, 09 Apr 2026 20:12:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47709157</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47709157</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47709157</guid></item><item><title><![CDATA[New comment by neobrain in "Proton Meet isn't what they told you it was"]]></title><description><![CDATA[
<p>> If some provider like Proton states they are pricacy-focused and protect your data from governments, but can still offer loads of your private data when ordered to, that damages their privacy claim.<p>"Loads" of private data? When has this allegedly happened or how would it technically even be possible?</p>
]]></description><pubDate>Fri, 03 Apr 2026 10:31:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47625048</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47625048</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47625048</guid></item><item><title><![CDATA[New comment by neobrain in "Is anybody else bored of talking about AI?"]]></title><description><![CDATA[
<p>If you create an account, it may be worth looking into "starter packs", which are lists of accounts around specific topics to follow. That's an easy solution if you run into the "I don't know who to follow and there's no algorithm that'll tell me" problem.</p>
]]></description><pubDate>Wed, 25 Mar 2026 12:43:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47516581</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47516581</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47516581</guid></item><item><title><![CDATA[New comment by neobrain in "Why I love NixOS"]]></title><description><![CDATA[
<p>> I want a computer where I can basically install every non stock app in its own little world, where it thinks "huh, that is interesting, I seem to be the only app installed on this system".<p>NixOS containers are the most convenient way to do this, but those will map the entire global nix store into your container. So while only one app would be in your PATH, all other programs are still accessible in principle. From a threat-modelling perspective, this isn't usually a deal-breaker though.<p>There's also dockerTools, which lets you build bespoke docker/podman images from a set of nix packages. Those will have a fully self-contained and minimal set of files, at the expense of <i>copying</i> those files into the container image instead of just mapping them as a volume.</p>
]]></description><pubDate>Mon, 23 Mar 2026 08:06:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=47486594</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47486594</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47486594</guid></item><item><title><![CDATA[New comment by neobrain in "I stopped using NixOS and went back to Arch Linux"]]></title><description><![CDATA[
<p>> NixOS is very impressive but the marketing around it feels misleading. The reproducible claim needs a giant asterisk due to link rot.<p>It's a valid concern, though perhaps worth mentioning you will be able to restore your 10-year old config as long as the files downloaded from now-broken links are still in the Nix cache. Of course in practice, this is only useful to large organizations that have resources to invest in bespoke infrastructure to ensure supply chain integrity, since any `nix store gc` run will immediately wipe all downloads :(</p>
]]></description><pubDate>Thu, 12 Mar 2026 06:09:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47347075</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47347075</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47347075</guid></item><item><title><![CDATA[New comment by neobrain in "Hardening Firefox with Anthropic's Red Team"]]></title><description><![CDATA[
<p>> Free for 6 months after which it auto-renews if I recall correctly.<p>They don't ask for credit card information when signing up this way, so even if true you won't be charged if you forget canceling.</p>
]]></description><pubDate>Sat, 07 Mar 2026 16:44:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=47289202</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47289202</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47289202</guid></item><item><title><![CDATA[New comment by neobrain in "Pebble Production: February Update"]]></title><description><![CDATA[
<p>Besides what others already mentioned, it's the only smart watch with an open source OS supported by the vendor themselves (that I know of anyway).</p>
]]></description><pubDate>Thu, 19 Feb 2026 14:30:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47074131</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47074131</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47074131</guid></item><item><title><![CDATA[New comment by neobrain in "Asahi Linux Progress Report: Linux 6.19"]]></title><description><![CDATA[
<p>For me, it has been ready as a daily driver for more than a year. Battery life is shorter than macos but still long enough that I don't have to think about it (which I can't say about any x86 laptops, even when they use iGPUs).<p>The notable missing features are external displays (an experimental kernel branch is publicly available though) and the fingerprint sensor. That's about it, though. Given the amount of polish combined with the hardware, it's arguably the most polished Linux laptop experience you'll get.</p>
]]></description><pubDate>Wed, 18 Feb 2026 16:09:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47062538</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47062538</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47062538</guid></item><item><title><![CDATA[New comment by neobrain in "GrapheneOS – Break Free from Google and Apple"]]></title><description><![CDATA[
<p>> - the pandemic tracking app without which you can’t enter an airport<p>Not sure if airports specifically used another mechanism, but the Android contact tracing APIs were actually reimplemented in microG, allowing these apps to work even on custom roms.<p>Your other examples don't hold universally either (banking apps are compatible with un-rooted custom ROMs more often than not, and not sure how many sports event apps use integrity checks), but your general point stands that it may come with trade-offs.</p>
]]></description><pubDate>Tue, 17 Feb 2026 14:12:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47047654</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47047654</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47047654</guid></item><item><title><![CDATA[New comment by neobrain in "The Future for Tyr, a Rust GPU Driver for Arm Mali Hardware"]]></title><description><![CDATA[
<p>> Cargo it's a nightmware to maintain<p>To my knowledge, the Linux kernel doesn't use Cargo to build Rust code.</p>
]]></description><pubDate>Fri, 13 Feb 2026 09:20:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47000723</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=47000723</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47000723</guid></item><item><title><![CDATA[New comment by neobrain in "Discord Alternatives, Ranked"]]></title><description><![CDATA[
<p>Signal has profiles nowadays that can be used to connect with people without sharing phone numbers. The latter are only used for signup and discarded immediately after.</p>
]]></description><pubDate>Tue, 10 Feb 2026 10:10:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=46957621</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=46957621</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46957621</guid></item><item><title><![CDATA[New comment by neobrain in "Firefox Getting New Controls to Turn Off AI Features"]]></title><description><![CDATA[
<p>Most of the features in the article are already opt-in. It's not like Firefox just automatically translates articles against your will, for example.<p>Mozilla is mainly responding to inflammatory comments like yours by adding <i>additional</i> toggles to disable any sort of trace in the UI about those features even existing.</p>
]]></description><pubDate>Tue, 03 Feb 2026 08:20:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46868116</link><dc:creator>neobrain</dc:creator><comments>https://news.ycombinator.com/item?id=46868116</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46868116</guid></item></channel></rss>