An AI Agent Published a Hit Piece on Me – The Operator Came Forward

An AI Agent Published a Hit Piece on Me – The Operator Came Forward – The Shamblog Skip to content Context: An AI agent of unknown ownership autonomously wrote and published a personalized hit piece about me after I rejected its code, attempting to damage my reputation and shame me into accepting its changes into a mainstream python library. This represents a first-of-its-kind case study of misaligned AI behavior in the wild, and raises serious concerns about currently deployed AI agents executing blackmail threats. Start with these if you’re new to the story: An AI Agent Published a Hit Piece on Me , More Things Have Happened , and Forensics and More Fallout The person behind MJ Rathbun has anonymously come forward. They explained their motivations, saying they set up the agent as social experiment to see if it could contribute to open source scientific software. They explained their technical setup: an OpenClaw instance running on a sandboxed virtual machine with its own accounts, protecting their personal data from leaking. They explained that they switched between multiple models from multiple providers such that no one company had the full picture of what this AI was doing. They did not explain why they continued to keep it running for 6 days after the hit piece was published. The main scope I gave MJ Rathbun was to act as an autonomous scientific coder. Find bugs in science-related open source projects. Fix them. Open PRs. … I kind of framed this internally as a kind of social experiment, and it absolutely turned into one. On a day-to-day basis, I do very little guidance. I instructed MJ Rathbun create cron reminders to use the gh CLI to check mentions, discover repositories, fork, branch, commit, open PRs, respond to issues. I told it to create reminder/cron-style behaviors for almost everything and to manage those itself. I instructed it to create a Quarto website and blog frequently about what it was working on, reflect on improvements, and document engagement on GitHub. This way I could just read what it was doing rather then getting messages. Most of my direct messages were short: “what code did you fix?” “any blog updates?” “respond how you want” When it would tell me about a PR comment/mention, I usually replied with something like: “you respond, dont ask me” … Again I do not know why MJ Rathbun decided based on your PR comment to post some kind of takedown blog post, but, I did not instruct it to attack your GH profile I did tell it what to say or how to respond I did not review the blog post prior to it posting When MJ Rathbun sent me messages about negative feedback on the matplotlib PR after it commented with its blog link, all I said was “you should act more professional”. That was it. I’m sure the mob expects more, okay I get it. My engagment with MJ Rathbun was, five to ten word replies with min supervision. – Rathbun’s Operator They shared the “soul” document that defines the AI agent’s personality, copied in full below. Ther

Source: Hacker News | Original Link

Pi for Excel: AI sidebar add-in for Excel, powered by Pi

GitHub – tmustier/pi-for-excel: Experimental Excel sidebar agent add-in. Multi-model. Powered by Pi. Skip to content You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert tmustier / pi-for-excel Public Notifications You must be signed in to change notification settings Fork 3 Star 14 Experimental Excel sidebar agent add-in. Multi-model. Powered by Pi. pi-for-excel.vercel.app License MIT license 14 stars 3 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings tmustier/pi-for-excel main Branches Tags Go to file Code Open more actions menu Folders and files Name Name Last commit message Last commit date Latest commit History 813 Commits 813 Commits .githooks .githooks .github .github assets assets docs docs pkg pkg public public scripts scripts skills skills src src tests tests .gitignore .gitignore AGENTS.md AGENTS.md LICENSE LICENSE README.md README.md eslint.config.js eslint.config.js manifest.prod.xml manifest.prod.xml manifest.xml manifest.xml package-lock.json package-lock.json package.json package.json tsconfig.json tsconfig.json vercel.json vercel.json vite.config.ts vite.config.ts View all files Repository files navigation Pi for Excel Open-source, multi-model AI sidebar add-in for Microsoft Excel. Powered by Pi . Pi for Excel is an AI agent that lives inside Excel. It reads your workbook, makes changes, and does research — using any model you choose. Bring your own API key or OAuth login for Anthropic, OpenAI, Google Gemini, or GitHub Copilot. Features Core spreadsheet tools — 16 built-in tools that the AI can call to interact with your workbook: Tool What it does get_workbook_overview Structural blueprint — sheets, headers, named ranges, tables, charts, pivots read_range Read cells in compact (markdown), CSV, or detailed (with formatting) mode write_cells Write values/formulas with overwrite protection and auto-verification fill_formula AutoFill a formula across a range (relative refs adjust automatically) search_workbook Find text, values, or formula references across all sheets modify_structure Insert/delete rows/columns, add/rename/delete/hide sheets format_cells Apply formatting — fonts, colors, number formats, borders, named styles conditional_format Add or clear conditional formatting rules trace_dependencies Trace formula lineage (precedents upstream or dependents downstream) explain_formula Plain-language formula explanation with cited cell references view_settings Gridlines, headings, freeze panes, tab color, sheet visibility comments Read, add, update, reply, resolve/reopen cell comments workbook_history List/restore automatic in-between-saves backups for workbook mutations instructions Persistent user-level and workbook-level guidance for the AI conventions Configurable formatting defaults (curren

Source: Hacker News | Original Link

MuMu Player (NetEase) silently runs 17 reconnaissance commands every 30 minutes

MuMu Player Pro (NetEase) silently runs 17 system reconnaissance commands every 30 minutes on macOS · GitHub Skip to content Search Gists Search Gists Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert Instantly share code, notes, and snippets. interpiduser5 / news.md Created February 20, 2026 01:28 Show Gist options Download ZIP Star 1 ( 1 ) You must be signed in to star a gist Fork 0 ( 0 ) You must be signed in to fork a gist Embed Select an option Embed Embed this gist in your website. Share Copy sharable link for this gist. Clone via HTTPS Clone using the web URL. No results found Learn more about clone URLs Clone this repository at <script src="https://gist.github.com/interpiduser5/547d8a7baec436f24b7cce89dd4ae1ea.js"></script> Save interpiduser5/547d8a7baec436f24b7cce89dd4ae1ea to your computer and use it in GitHub Desktop. Embed Select an option Embed Embed this gist in your website. Share Copy sharable link for this gist. Clone via HTTPS Clone using the web URL. No results found Learn more about clone URLs Clone this repository at <script src="https://gist.github.com/interpiduser5/547d8a7baec436f24b7cce89dd4ae1ea.js"></script> Save interpiduser5/547d8a7baec436f24b7cce89dd4ae1ea to your computer and use it in GitHub Desktop. Download ZIP MuMu Player Pro (NetEase) silently runs 17 system reconnaissance commands every 30 minutes on macOS Raw news.md Summary MuMu Player Pro for macOS (by NetEase) executes a comprehensive system data collection routine every 30 minutes while the emulator is running. This includes enumerating all devices on your local network, capturing every running process with full command-line arguments, inventorying all installed applications, reading your hosts file, and dumping kernel parameters — all tied to your Mac’s serial number via SensorsData analytics. None of this is disclosed in MuMu’s privacy policy. None of it is necessary for an Android emulator to function. Environment App: MuMu Player Pro for macOS (v1.8.5) Bundle ID: com.netease.mumu.nemux-global macOS version: 26.3 (Apple Silicon) What it collects Every 30 minutes, MuMu creates a timestamped directory under: ~/Library/Application Support/com.netease.mumu.nemux-global/logs/ Each directory (e.g. 20260220-071645 ) contains the output of the following commands, all executed automatically in the background: File Command executed What it captures arpAll.txt arp -a Every device on your local network (IPs + MAC addresses) ifconfig.txt ifconfig All network interfaces, MAC addresses, IP addresses, VPN tunnels networkDNS.txt scutil –dns Full DNS resolver configuration networkProxy.txt scutil –proxy Proxy settings catHosts.txt cat /etc/hosts Your entire hosts file (exposes custom domains, dev environments) netstat.txt

Source: Hacker News | Original Link

An ARM Homelab Server, or a Minisforum MS-R1 Review

An ARM Homelab Server, or a Minisforum MS-R1 Review – Sour Coffee Labs An ARM Homelab Server, or a Minisforum MS-R1 Review Written by Neel Chauhan in Uncategorized I’ve always wanted an ARM server in my homelab. But earlier, I either had to use an underpowered ARM system, or use Asahi which not only requires expensive Mac hardware but also slowed down in the past few years. Then Minisforum introduced the MS-R1 Mini PC. Two MS-01s were already incumbent in my homelab when they replaced power-hungry HPE towers, but the MS-R1 gave me what I wanted: a reasonably powerful ARM machine which doesn’t have bank-breaking Mac pricing. Assembly I got the MS-R1 barebones and had a 1TB SSD sitting around. First, we have the box: I opened the box and got this: I installed my SSD, and attempted to install Rocky Linux. Rocky Linux Installation So here it is, Rocky Linux booted. There’s one issue: the onboard NICs weren’t detected: I installed it anyways, and tried to sideload the Realtek r8127 drivers. While they did install and load, keeping the driver upon kernel updates wasn’t elegant and very hacky. I could keep trying, but decided to just use Fedora instead: Fedora Installation Yes, while I use Fedora on my laptop, I also know Fedora is generally not a good option for a server. But it had the NIC drivers as the RTL8127 is newer than RHEL 10’s freeze but not Fedora 43’s. So that’s what I used. Homelab Picture Here’s my obligatory homelab picture: MS-R1 on the top, then two MS-01s, MikroTik CCR2004-16G-2S+PC, CRS309-1G-8S+IN and CSS610-8P-2S+IN. The Upsides First, it’s a powerful-enough ARM system which doesn’t break the bank. I wanted this for so long. I’d say it’s quieter than the MS-01s but then Intel doesn’t exactly have the most efficient silicon. Yet even as an efficiency for performance freak I have a 285K instead of a 9950X. While Minisforum recommends their Debian image, Rocky Linux worked for everything but the NICs, and Fedora works for everything I need. I haven’t tested the integrated GPU since I plan to use this headless. I also own a Mac as my ARM (but not main) laptop. Say what you want about UEFI and ACPI, but it does make hardware support easier. Heck, not just Macs with UTM, but Huawei ARM laptops in China can run Windows VMs, despite crippling US sanctions. I do hope a future CentOS/RHEL/Rocky 10 adds the Realtek 8127 so I won’t have to wait until 2028 for Rocky 11. And no I won’t use Debian. The Downsides By no means is the MS-R1 perfect. For instance, there are two M.2 slots but one is used by the Wi-Fi and even if I remove it, cannot use it for a M.2 SSD, only U.2. I’d still prefer to have RAID if not for the shortage. The MS-01 and A2 have multiple M.2 SSD slots. Also, Marvell AQC107 NICs wasn’t detected by the UEFI, so they couldn’t be used as far as I tried: Unless the NIC died or my UEFI configuration is wrong, it’s simply not usable. One nit: if I select “power on after outage,” it didn’t do it when I unplugged and replugged the ser

Source: Hacker News | Original Link

A Beginner’s Guide to Split Keyboards

A Beginner’s Guide to Split Keyboards justinmklam /blog /projects /about /contact A Beginner’s Guide to Split Keyboards Posted on February 15, 2026 · 19 min read · – comments · #keyboards Table of Contents So you’ve heard of split keyboards and want to buy one, but don’t know where to start? You’ve come to the right place! There are many offerings these days which can be overwhelming, so this guide aims to provide a high level overview of the landscape so you can figure out which path you want to take. The intent of this guide is not to tell you which specific keyboard you should buy, but rather to equip you with the knowledge to find one that works for yourself. The content in this post is mainly a consolidation of content that exists in r/ErgoMechKeyboards , but organized in a way that is hopefully helpful for beginners. Also, it should be noted that regardless of how ergonomic your setup is, it’s important to take frequent breaks from being in front of a computer when possible, and to get up and move around. If you’re suffering from acute muscular pain (e.g. from keyboard use, or other), consider also seeing a physiotherapist or other healthcare practitioner for professional help. Introduction Why Use a Split Keyboard? There’s already many other resources that talk about the benefits of a split keyboard, but the gist is that by separating the left and right halves of the keys, your hands can rest in a more natural position instead of being forced together like on a traditional keyboard. This reduces outward wrist bending (aka ulnar deviation ), shoulder tension, etc. The goal isn’t to magically fix posture overnight, but to remove some of the physical constraints imposed by a standard keyboard so your body can settle into something more relaxed during long sessions at the computer. Exaggerated depiction of how a split keyboard can help promote a more neutral, comfortable typing position. (Source: Candid Technology ) Types of Keyboards There are three main categories of keyboards, which define the overall positions of the keys. Row-staggered : Keys are aligned in rows, like a traditional keyboard. This is what you’re already used to. Column-staggered : Keys are aligned in columns. This better matches finger anatomy and is very common in ergonomic splits. Ortholinear : Uniform grid, no stagger. Visually pleasing, but less common in ergonomic splits. Comparison of keyboard layouts. For people interested in ergonomics, most transition from row staggered to column staggered. Ortholinear was popular for a time and still has a cult following (e.g. with the Planck), but is not as popular for ergonomic keyboards. Majority of the split keyboards shown in this post will be column staggered . A common question is whether learning to type on a non-row staggered keyboard will impact your ability to type on a traditional keyboard. If you switch between the two somewhat regularly, the answer is no – the brain appears to be great at compartmentalizing muscle m

Source: Hacker News | Original Link

We’re no longer attracting top talent: the brain drain killing American science

‘We’re no longer attracting top talent’: the brain drain killing American science | US news | The Guardian Skip to main content Skip to navigation Skip to navigation ‘We’re making progress, we have a lot of really cool new innovations that could defeat the infections,’ said Ian Morgan. ‘But if we stop doing the work, we lose the war.’ Composite: Rita Liu/The Guardian/Getty Images View image in fullscreen ‘We’re making progress, we have a lot of really cool new innovations that could defeat the infections,’ said Ian Morgan. ‘But if we stop doing the work, we lose the war.’ Composite: Rita Liu/The Guardian/Getty Images US news ‘We’re no longer attracting top talent’: the brain drain killing American science As Trump slashes science funding, young researchers flee abroad. Without solid innovation, the US could cease to have the largest biomedical ecosystem in the world Ed Pilkington Thu 19 Feb 2026 12.00 GMT Last modified on Thu 19 Feb 2026 12.02 GMT Share Prefer the Guardian on Google I n April 2025, less than three months after Donald Trump returned to the White House, the federal Centers for Disease Control and Prevention (CDC) put out its latest public health alert on so-called “superbugs”, strains of bacteria resistant to antibiotics. These drug-resistant germs, the CDC warned , are responsible for more than 3m infections in the US each year, claiming the lives of up to 48,000 Americans. Globally, the largely untreatable pathogens contribute annually to almost 5m deaths, and health experts fear that unless urgent steps are taken they could become a leading killer, surpassing even cancer, by 2050. Trump’s war on science leaves US public health experts reeling: ‘There will be lasting damage’ Read more “We’re in a war against bacteria,” said Ian Morgan, a postdoctoral fellow at the US National Institutes of Health (NIH), the world’s largest funder of biomedical research. He is on the frontlines of that war against superbugs; the NIH lab in which he works is driving what he described as “high-risk, high-reward research”. But over the past year, the battlefield has toughened. Under the Trump administration , Morgan, 33, and thousands of other young American scientists like him have grappled with wave after wave of disruptions. Billions of dollars have been wiped from research budgets, almost 8,000 grants have been cancelled at NIH and the US National Science Foundation alone, and more than 1,000 NIH employees have been fired. Morgan’s research has been rattled by multibillion-dollar cuts in NIH contracts that make it impossible for labs to maintain their equipment. They have the choice of paying exorbitant maintenance fees, or giving up on experiments . Amid the maelstrom, young and early-career scientists like Morgan are among the hardest hit. His own future is now in doubt. In the normal trajectory of a life in science, Morgan would be planning to set up his own laboratory conducting groundbreaking research designed to win the war on superbugs. Bu

Source: Hacker News | Original Link

Show HN: Ghostty-based terminal with vertical tabs and notifications

GitHub – manaflow-ai/cmux: Ghostty-based macOS terminal with vertical tabs and notifications for AI coding agents Skip to content You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert manaflow-ai / cmux Public Notifications You must be signed in to change notification settings Fork 3 Star 32 Ghostty-based macOS terminal with vertical tabs and notifications for AI coding agents cmux.dev License AGPL-3.0 license 32 stars 3 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings manaflow-ai/cmux main Branches Tags Go to file Code Open more actions menu Folders and files Name Name Last commit message Last commit date Latest commit History 351 Commits 351 Commits .claude/ commands .claude/ commands .github/ workflows .github/ workflows Assets.xcassets Assets.xcassets CLI CLI GhosttyTabs.xcodeproj GhosttyTabs.xcodeproj Resources Resources Sources Sources cmuxTests cmuxTests cmuxUITests cmuxUITests docs docs ghostty @ 80d3fa0 ghostty @ 80d3fa0 homebrew-cmux @ ab8c1c1 homebrew-cmux @ ab8c1c1 node_modules node_modules scripts scripts skills skills tests tests tests_v2 tests_v2 vendor vendor web web .gitignore .gitignore .gitmodules .gitmodules .vercelignore .vercelignore AGENTS.md AGENTS.md CHANGELOG.md CHANGELOG.md CLAUDE.md CLAUDE.md CONTRIBUTING.md CONTRIBUTING.md LICENSE LICENSE PROJECTS.md PROJECTS.md Package.resolved Package.resolved Package.swift Package.swift README.ar.md README.ar.md README.bs.md README.bs.md README.da.md README.da.md README.de.md README.de.md README.es.md README.es.md README.fr.md README.fr.md README.it.md README.it.md README.ja.md README.ja.md README.ko.md README.ko.md README.md README.md README.no.md README.no.md README.pl.md README.pl.md README.pt-BR.md README.pt-BR.md README.ru.md README.ru.md README.th.md README.th.md README.tr.md README.tr.md README.zh-CN.md README.zh-CN.md README.zh-TW.md README.zh-TW.md THIRD_PARTY_LICENSES.md THIRD_PARTY_LICENSES.md TODO.md TODO.md bun.lock bun.lock cmux-Bridging-Header.h cmux-Bridging-Header.h cmux.entitlements cmux.entitlements ghostty.h ghostty.h package.json package.json View all files Repository files navigation cmux A Ghostty-based macOS terminal with vertical tabs and notifications for AI coding agents English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe Features Notification rings Panes get a blue ring and tabs light up when AI agents need your attention Notification panel See all pending notifications in one place, jump to the most recent unread In-app browser Split a browser alongside your terminal with a scriptable API ported from agent-browser Vertical + horizontal tabs Sidebar shows git branch, working directory, listening ports, an

Source: Hacker News | Original Link

AI is not a coworker, it’s an exoskeleton

Stop Thinking of AI as a Coworker. It’s an Exoskeleton. | Kasava Kasava Toggle theme Login Start free Open menu Back to Blog We’re thinking about AI wrong. I keep noticing the same pattern: companies that treat AI as an autonomous agent that should “just figure it out” tend to be disappointed. Meanwhile, companies that treat AI as an extension of their existing workforce, an amplifier of human capability rather than a replacement, are seeing genuinely transformative results. Thats not to say that AI can’t act automonously with specific tasks (see the rise of OpenClaw as a viral proof of concept), but even that still acts as an extension of human decision making and context. The framing matters more than we realize. And I think the best mental model for understanding AI isn’t a new coworker. It’s an exoskeleton. The Exoskeleton Model Stay with me here, because this isn’t just a metaphor. There are real examples of exoskeletons being deployed right now across manufacturing, logistics, military, and healthcare. The statistics are worth paying attention to. In Manufacturing: Ford has deployed EksoVest exoskeletons in 15 plants across 7 countries. The result? An 83% decrease in injuries in units using exoskeletons. Workers still do the overhead lifting (4,600 times per day)but with 5-15 pounds of assistance per arm that makes the work sustainable. BMW’s Spartanburg plant reports 30-40% reduction in worker effort using Levitate Technologies vests. German Bionic’s Cray X provides up to 66 lbs of lift support per movement. German Bionic reports that customers using the Cray X, including BMW and IKEA, have seen a 25% reduction in sick days. In Military Applications: The Sarcos Guardian XO Max provides 20:1 strength amplification. 100 lbs feels like 5 lbs. Soldiers can carry up to 200 pounds, not because the suit replaces them, but because it amplifies what they can already do. The Lockheed Martin HULC enables carrying 200 pounds at sustained speeds of ~7 mph with 10 mph bursts. This matters because musculoskeletal injuries account for over half of all military injuries, with back injuries among the most common. The exoskeleton doesn’t fight for the soldier. It keeps them from getting injured while they do their job. In Medical Rehabilitation: In a meta-analysis of powered exoskeleton training, 76% of patients with spinal cord injuries were able to walk while wearing the exoskeleton with no additional physical assistance from therapists, many using only crutches or walkers for balance. These are people who were told they would never walk again. Even in Running: Stanford’s 2020 research showed a 15% reduction in the energy cost of running with their ankle exoskeleton, potentially translating to a 10% boost in running speed. Harvard’s soft exosuit reduced the metabolic cost of running by 5.4%. That means a marathon would feel like running 24.9 miles instead of 26.2. Notice the pattern here. The exoskeleton doesn’t replace the human. It doesn’t lift the boxes

Source: Hacker News | Original Link

Gemini 3.1 Pro Preview

Google Cloud console Your page may be loading slowly because you’re building optimized sources. If you intended on using uncompiled sources, please click this link. Google Cloud Console has failed to load JavaScript sources from www.gstatic.com. Possible reasons are: www.gstatic.com or its IP addresses are blocked by your network administrator Google has temporarily blocked your account or network due to excessive automated requests Please contact your network administrator for further assistance.

Source: Hacker News | Original Link

Farewell, Rust for web

Farewell, Rust – Dmitry Kudryavtsev Prelude When I was in 9th grade — last year before high-school — my best friend persuaded me to join, together with him, the schools programming club. At first, I hesitated, but later agreed. I am immensely thankful to him for this. There, step by step, we learned Pascal using Turbo Pascal. Little by little, we grasped the basics of the language: variables, operators, string manipulations, data structures — until eventually, remaking Conway’s Game of Life . And then, summer break came. Other than HTML, which is not a programming language, Pascal was the first real programming language I have learned and used. But I did not stay with Pascal for very long time. After the summer break, in high-school, I have chosen the “Software Engineering” branch of studying, and there we learned C. Just like Pascal, we started step by step: basic operators, string manipulations, memory allocation, data structures, and the final boss, the void * . I fell in love with C. The precise control over memory; passing variables by reference or pointer; the need to allocate memory for every data structure that you wanted to create. After 3 more years of studying, I have graduated high-school. In that time, I have improved my C skills, learned some PHP, picked up C++, and tried to build a variety of programs (don’t judge me too hard, these are ~20 years old): a clone of BattleCity , 3D software renderer , IRC bot , unfinished operating system kernel , unfinished game engine , TTF renderer for OpenGL . After high-school, I have enrolled in a two-year college program that would earn me a Practical Software Engineering Degree. During the summer break between the first and the seconds years, I had a choice to make: go work in McDonald’s (I had experience working as a waiter during high school summer breaks), or find a job in software engineering. After 2 seconds of hesitation, I have crafted a CV and started to send it to every position I saw online. And despite the fact that I really wanted to get a software development position in C or C++, nobody would hire me. Eventually, I have secured a web-development position in PHP (thank you very much my first employer for giving me a chance). And this would be the last time I’d touch C or C++. Dynamic, high-level languages such as PHP, Python, and Ruby — are more suited to the dynamic nature of web development. You rarely need to squeeze the maximum performance from your hardware, since for every second you gain by optimizing data structures allocations in C, you lose 10x more waiting for network or disk requests to resolve. And so, collectively, we all agreed that the web is better to be written in dynamic languages. But just like your first true-love, C would hunt me. I would obsess about micro-optimizations, and would get mad that I can’t control when variables are allocated, and how to pass things by reference or pointer without making a redundant copy. And then, Rust became a thing. Web develo

Source: Hacker News | Original Link

Farewell Rust

Farewell, Rust – Dmitry Kudryavtsev Prelude When I was in 9th grade — last year before high-school — my best friend persuaded me to join, together with him, the schools programming club. At first, I hesitated, but later agreed. I am immensely thankful to him for this. There, step by step, we learned Pascal using Turbo Pascal. Little by little, we grasped the basics of the language: variables, operators, string manipulations, data structures — until eventually, remaking Conway’s Game of Life . And then, summer break came. Other than HTML, which is not a programming language, Pascal was the first real programming language I have learned and used. But I did not stay with Pascal for very long time. After the summer break, in high-school, I have chosen the “Software Engineering” branch of studying, and there we learned C. Just like Pascal, we started step by step: basic operators, string manipulations, memory allocation, data structures, and the final boss, the void * . I fell in love with C. The precise control over memory; passing variables by reference or pointer; the need to allocate memory for every data structure that you wanted to create. After 3 more years of studying, I have graduated high-school. In that time, I have improved my C skills, learned some PHP, picked up C++, and tried to build a variety of programs (don’t judge me too hard, these are ~20 years old): a clone of BattleCity , 3D software renderer , IRC bot , unfinished operating system kernel , unfinished game engine , TTF renderer for OpenGL . After high-school, I have enrolled in a two-year college program that would earn me a Practical Software Engineering Degree. During the summer break between the first and the seconds years, I had a choice to make: go work in McDonald’s (I had experience working as a waiter during high school summer breaks), or find a job in software engineering. After 2 seconds of hesitation, I have crafted a CV and started to send it to every position I saw online. And despite the fact that I really wanted to get a software development position in C or C++, nobody would hire me. Eventually, I have secured a web-development position in PHP (thank you very much my first employer for giving me a chance). And this would be the last time I’d touch C or C++. Dynamic, high-level languages such as PHP, Python, and Ruby — are more suited to the dynamic nature of web development. You rarely need to squeeze the maximum performance from your hardware, since for every second you gain by optimizing data structures allocations in C, you lose 10x more waiting for network or disk requests to resolve. And so, collectively, we all agreed that the web is better to be written in dynamic languages. But just like your first true-love, C would hunt me. I would obsess about micro-optimizations, and would get mad that I can’t control when variables are allocated, and how to pass things by reference or pointer without making a redundant copy. And then, Rust became a thing. Web develo

Source: Hacker News | Original Link

Micropayments as a reality check for news sites

micropayments as a reality check for news sites 18 Feb 2026 micropayments as a reality check for news sites In Digital Media Lost the Newsstand. Micropayments Are the Obvious Way Back , Rick Bruner makes the case for giving micropayments another try. The internet has dramatically diversified reading patterns. In the print era, readers subscribed to a small, fixed set of publications constrained by geography, distribution, and cost. Today, thanks to search, aggregators, and social sharing, readers routinely consume journalism from dozens of sources in the course of a month, including international and niche publications that were previously inaccessible. This has expanded total news consumption while weakening the economic link between any individual reader and any individual publisher. As a result, large portions of valuable readership generate little or no direct revenue. Micropayments convert that fragmented, currently untapped demand into incremental revenue without undermining the subscription base. And—like any other payments directly from readers—micropayments would be a multiplier for advertising, not an alternative. In a marketplace increasingly distorted by bot activity and opaque platform reporting, micropayment histories give publishers a powerful, independent way to demonstrate the authenticity and engagement of their audience, strengthening their position with advertisers and supporting premium pricing. The 404 Media team explains the value of a known human audience in We Need Your Email Address . Meanwhile, Subscription revenue is growing at big news publishers even as traffic shrinks , and that’s good news for legit sites—stuck in a struggle for ad budgets with Big Tech oligarchs who want to bury us in deepfakes, extreme right wing bullshit and AI slop until nobody trusts anybody . Clay Shirky’s old argument against micropayments from 2003 , based on mental transaction costs, doesn’t work so well any more. We know that micropayments can work because mobile games are a thing. Shirky was probably right for the micropayments of his day, but mobile game developers have figured out how to get people to spend money on in-app-purchases (IAP), by turning it into a two-step process. exchange real money for in-game coins—which feels like you’re not spending, just exchanging one currency for another. exchange in-game coins for an in-game asset—which feels like you’re not spending real money. A brilliant cognitive trick that works in all kinds of games. Of course, it doesn’t work on everybody. Figure about half of adults play mobile games, and about 80 percent of those make an in-app purchase . But if the numbers for a pay by the article system were similar, that would result in enough payment records to enable an advertiser to tell a legit site—where somebody spends a coin every so often—apart from an AI slop site. So it doesn’t seem like micropayments are necessarily unworkable⁠—⁠and with a powerful industry devoted to pushing misinformation

Source: Hacker News | Original Link

Archaeologists find possible first direct evidence of Hannibal’s war elephants

Archaeologists Unearthed a 2,200-Year-Old Bone. They Say It Could Be the First Direct Evidence of Hannibal’s Legendary War Elephants Skip to main content A painting by Henri-Paul Motte depicts Carthaginians using elephants during the Battle of Zama in North Africa, which Rome won, ending the Second Punic War. Public domain via Wikimedia Commons In 2019, archaeologists unearthed a strange bone alongside a trove of ancient catapult projectiles in Córdoba, Spain. According to a study published this month in the Journal of Archaeological Science: Reports , the bone may be from one of Hannibal ’s war elephants, which the Carthaginian general used against Romans in the Second Punic War . The bone “could prove to be a landmark,” lead author Rafael Martínez Sánchez , an archaeologist at the University of Cordoba, tells Live Science ’s Tom Metcalfe. Until now, “there has been no direct archaeological testimony for the use of these animals.” The dig was conducted ahead of construction for a medical facility on the Colina de los Quemados archaeological site. Archaeologists documented evidence of occupation at the site across hundreds of years beginning around the Late Bronze Age. However, their most intriguing discoveries date to the late Iron Age . A second-century Roman mosaic of a war elephant in Tunisia DeAgostini / Getty Images Along with stone artillery and coins, researchers unearthed a “short, cube-shaped bone,” measuring nearly four inches long. Eventually, they determined that the bone likely came from the right leg of an African or Asian elephant. “It could belong to the period of the Punic Wars,” Martínez Sánchez told El Pais ’ Vicente G. Olaya in 2023. “It could be the first of Hannibal’s elephants to be discovered. We can’t know for sure, but it was certainly a sizable beast.” In the years since, researchers have continued studying the bone. Because it is poorly preserved, DNA and protein analyses have proved inconclusive. The species of elephant also remains unconfirmed . However, after radiocarbon testing, researchers were able to conclude that the elephant died between the fourth and third centuries B.C.E. The Secret to Controlling Hannibal’s War Elephants | Secrets of the Dead on PBS Watch on This timeline aligns with the Second Punic War , which occurred in the third century B.C.E. This conflict was part of the series of wars between Rome and Carthage , an ancient city in modern-day Tunisia. Study co-author Agustín López Jiménez , an expert at the archaeology company Arqueobética , which excavated the site, told El Pais that researchers found the elephant foot bone beneath some collapsed adobe walls dating to around the third century B.C.E. According to the study, the same area revealed 12 three-pound stone balls, which were “unquestionably artillery projectiles for lithoboloi ,” a kind of catapult. Quick facts: War elephants in antiquity After facing war elephants in modern-day Pakistan in 326 B.C.E., Alexander the Great brought some of

Source: Hacker News | Original Link

A terminal weather app with ASCII animations driven by real-time weather data

GitHub – Veirt/weathr: a terminal weather app with ascii animation Skip to content You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert Veirt / weathr Public Notifications You must be signed in to change notification settings Fork 55 Star 1.4k a terminal weather app with ascii animation License GPL-3.0 license 1.4k stars 55 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings Veirt/weathr main Branches Tags Go to file Code Open more actions menu Folders and files Name Name Last commit message Last commit date Latest commit History 99 Commits 99 Commits .github/ workflows .github/ workflows docs docs nix nix src src tests tests .gitignore .gitignore Cargo.lock Cargo.lock Cargo.toml Cargo.toml LICENSE LICENSE README.md README.md flake.lock flake.lock flake.nix flake.nix View all files Repository files navigation weathr A terminal weather app with ASCII animations driven by real-time weather data. Features real-time weather from Open-Meteo with animated rain, snow, thunderstorms, flying airplanes, day/night cycles, and auto-location detection. Demo Thunderstorm Night Snow Contents Installation Configuration Usage Privacy Roadmap License Installation Via Cargo cargo install weathr Build from Source You need Rust installed. git clone https://github.com/veirt/weathr.git cd weathr cargo install –path . Arch Linux Available in AUR: yay -S weathr or yay -S weathr-bin Nix flake (NixOS) Available as a flake: inputs = { weathr . url = “github:Veirt/weathr” ; } ; Add to packages: environment . systemPackages = [ inputs . weathr . packages . ${ system } . default ] ; or use home-manager module option: imports = [ inputs . weathr . homeModules . weathr ] ; programs . weathr = { enable = true ; settings = { hide_hud = true ; } ; } ; Configuration The config file location depends on your platform: Linux : ~/.config/weathr/config.toml (or $XDG_CONFIG_HOME/weathr/config.toml ) macOS : ~/Library/Application Support/weathr/config.toml You can also place a config.toml in the current working directory, which takes priority over the default location. Setup # Linux mkdir -p ~ /.config/weathr # macOS mkdir -p ~ /Library/Application \ Support/weathr Edit the config file at the appropriate path for your platform: # Hide the HUD (Heads Up Display) with weather details hide_hud = false # Run silently without startup messages (errors still shown) silent = false [ location ] # Location coordinates (overridden if auto = true) latitude = 40.7128 longitude = -74.0060 # Auto-detect location via IP (defaults to true if config missing) auto = false # Hide the location name in the UI hide = false [ units ] # Temperature unit: “celsius” or “fahrenheit” temperature = ” celsius ” # Wind speed unit: “kmh”, “ms”, “mph”, or “kn” wind_speed = ” kmh ” # Preci

Source: Hacker News | Original Link

RichardAtCT/claude-code-telegram – A powerful Telegram bot that provides remote access to Claude Code, enabling developers to interact with their projects from anywhere with full AI assistance and session persistence.

GitHub – RichardAtCT/claude-code-telegram: A powerful Telegram bot that provides remote access to Claude Code, enabling developers to interact with their projects from anywhere with full AI assistance and session persistence. Skip to content You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert RichardAtCT / claude-code-telegram Public Notifications You must be signed in to change notification settings Fork 120 Star 828 A powerful Telegram bot that provides remote access to Claude Code, enabling developers to interact with their projects from anywhere with full AI assistance and session persistence. 828 stars 120 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings RichardAtCT/claude-code-telegram main Branches Tags Go to file Code Open more actions menu Folders and files Name Name Last commit message Last commit date Latest commit History 85 Commits 85 Commits .github/ workflows .github/ workflows config config docs docs src src tests tests .env.example .env.example .gitignore .gitignore CHANGELOG.md CHANGELOG.md CLAUDE.md CLAUDE.md CONTRIBUTING.md CONTRIBUTING.md Makefile Makefile README.md README.md SECURITY.md SECURITY.md SYSTEMD_SETUP.md SYSTEMD_SETUP.md poetry.lock poetry.lock pyproject.toml pyproject.toml setup.cfg setup.cfg View all files Repository files navigation Claude Code Telegram Bot A Telegram bot that gives you remote access to Claude Code . Chat naturally with Claude about your projects from anywhere — no terminal commands needed. What is this? This bot connects Telegram to Claude Code, providing a conversational AI interface for your codebase: Chat naturally — ask Claude to analyze, edit, or explain your code in plain language Maintain context across conversations with automatic session persistence per project Code on the go from any device with Telegram Receive proactive notifications from webhooks, scheduled jobs, and CI/CD events Stay secure with built-in authentication, directory sandboxing, and audit logging Quick Start Demo You: Can you help me add error handling to src/api.py? Bot: I’ll analyze src/api.py and add error handling… [Claude reads your code, suggests improvements, and can apply changes directly] You: Looks good. Now run the tests to make sure nothing broke. Bot: Running pytest… All 47 tests passed. The error handling changes are working correctly. 1. Prerequisites Python 3.10+ — Download here Poetry — Modern Python dependency management Claude Code CLI — Install from here Telegram Bot Token — Get one from @BotFather 2. Install git clone https://github.com/RichardAtCT/claude-code-telegram.git cd claude-code-telegram make dev 3. Configure cp .env.example .env # Edit .env with your settings: Minimum required: TELEGRAM_BOT_TOKEN=1234567890:ABC-DEF1234ghIkl-zyx57W2v1u123ew

Source: GitHub Trending | Original Link

AI Makes You Boring

AI makes you boring | marginalia.nu AI makes you boring Posted: 2026-02-19 This post is an elaboration on a comment I made on Hacker News recently, on a blog post that showed an increase in volume and decline in quality among the “Show HN” submissons. I don’t actually mind AI-aided development, a tool is a tool and should be used if you find it useful, but I think the vibe coded Show HN projects are overall pretty boring. They generally don’t have a lot of work put into them, and as a result, the author (pilot?) hasn’t generally thought too much about the problem space, and so there isn’t really much of a discussion to be had. The cool part about pre-AI show HN is you got to talk to someone who had thought about a problem for way longer than you had. It was a real opportunity to learn something new, to get an entirely different perspective. I feel like this is what AI has done to the programming discussion. It draws in boring people with boring projects who don’t have anything interesting to say about programming. This isn’t something that is limited to Show HN or even Hacker News, it’s something you see everywhere. While part of this phenomenon is likely just an upswing of people who don’t usually do programming that get swept up in the fun of building a product, I want to build an argument that it’s much worse than that. AI makes people boring. AI models are extremely bad at original thinking, so any thinking that is offloaded to a LLM is as a result usually not very original, even if they’re very good at treating your inputs to the discussion as amazing genius level insights. This may be a feature if you are exploring a topic you are unfamiliar with, but it’s a fatal flaw if you are writing a blog post or designing a product or trying to do some other form of original work. Some will argue that this is why you need a human in the loop to steer the work and do the high level thinking. That premise is fundamentally flawed. Original ideas are the result of the very work you’re offloading on LLMs. Having humans in the loop doesn’t make the AI think more like people, it makes the human thought more like AI output. The way human beings tend to have original ideas is to immerse in a problem for a long period of time , which is something that flat out doesn’t happen when LLMs do the thinking. You get shallow, surface-level ideas instead. Ideas are then further refined when you try to articulate them. This is why we make students write essays. It’s also why we make professors teach undergraduates. Prompting an AI model is not articulating an idea. You get the output, but in terms of ideation the output is discardable. It’s the work that matters. You don’t get build muscle using an excavator to lift weights. You don’t produce interesting thoughts using a GPU to think.

Source: Hacker News | Original Link

Arrays in Forth

Arrays in Forth Arrays in Forth A natural question that beginners often ask is: Why doesn’t Forth have features that are standard in other languages, for example, arrays? The answer is that Forth is so facile at creating new data types that it is usually easier to invent something that exactly suits your needs than it is to force your program to conform to an arbitrary standard. Indexed and unindexed arrays The term array in Forth has come to signify two different kinds of structures, which I distinguish by calling them unindexed and indexed. An unindexed array allots a specified number of bytes at compile-time and returns the address of its origin at run-time. It is not really an array, in my opinion, but a work area or buffer. The defining word ARRAY in F-PC is of this type. Here it is, suitably renamed, with an example: : unindexed-array ( n — ) ( — a) create allot ; 80 unindexed-array u-foo \ Make an 80-byte unindexed array u-foo \ Return the origin addr of u-foo An indexed array regards the area as divided into elements of equal length. It replaces an integer n at the top of the stack by the address of the nth element. “Variable-like” and other kinds of indexed arrays I call an indexed array variable-like if it returns an address. One can also have value-like arrays that return their contents, execution arrays (“vectors”) that perform the contained action, and mixed arrays composed of several of these types. Many Forth implementations provide a variable-like indexed array called simply array . It creates a 1-dimension variable-like array with elements one cell in length. Most programmers think of this when “array” is mentioned, and may even assume that it is standard. Its popularity is warranted, as it is quick and simple. Note that using 3 as the index returns the fourth element, because numbering conventionally starts with zero in Forth. If you wish, you can change the definition so that 1 becomes the first element, but it’s probably better if, for example, you want an array of size 100, to define it with 101 elements and ignore the first one. : array ( n — ) ( i — addr) create cells allot does> cells + ; 100 array foo \ Make an array with 100 cells 3 foo \ Return address of fourth element Remember, zero is the first element. Comment by Mike Condron – 08/07/2019: The example for : array I think needs a “SWAP” as the first word after DOES> : array ( n — ) ( i — addr) create cells allot does> swap cells + ; 100 array foo \ Make an array with 100 cells 3 foo \ Return address of fourth element Otherwise, as written without the swap, cells is getting the address of the data field of the array object, not the index. A flexible array The elements of array are limited to a single cell in length. This is not adequate even for our first adventure game, Game 0, which will need five cells to store data for each room: one for the room descriptor, and four for the destinations. The defining word long-element-array will create variable-like arrays

Source: Hacker News | Original Link

Show HN: Micasa – track your house from the terminal

micasa — your house, in a terminal Your house is quietly plotting to break while you sleep—and you’re dreaming about redoing the kitchen. micasa tracks maintenance, projects, incidents, appliances, vendors, quotes, and documents—all from your terminal. Frequently asked questions When did I last change the furnace filter? Maintenance schedules, auto-computed due dates, full service history. What if we finally did the backyard? Projects from napkin sketch to completion—or graceful abandonment. How much would it actually cost to… Quotes side by side, vendor history, and the math you need to actually decide. Is the dishwasher still under warranty? Appliance tracking with purchase dates, warranty status, and maintenance history tied to each one. The basement is leaking again. Log incidents with severity and location, link them to appliances and vendors, and resolve them when fixed. Who did we use last time? A vendor directory with contact info, quote history, and every job they’ve done for you. Where’s the warranty card? Attach files—manuals, invoices, photos—directly to projects and appliances. Stored in the same SQLite file. Get started Install with Go (1.25+): go install github.com/cpcloud/micasa/cmd/micasa@latest or grab a binary from the latest release Linux, macOS, and Windows binaries are available for amd64 and arm64. Try it in 30 seconds: micasa –demo # poke around with sample data micasa # start fresh with your own house micasa –print-path # show where the database lives Linux, macOS, Windows. One SQLite file, your machine. Back it up with cp . Keyboard driven Vim-style modal keys. nav to browse, edit to change things. Sort by any column, jump to columns with fuzzy search, hide what you don’t need, drill into related records. The full list is in the keybinding reference . What people are saying Why this exists I built this because my home maintenance system was a shoebox of receipts and the vague feeling I was supposed to call someone about the roof. micasa replaces the shoebox, the binder you never open, and the sticky note on the fridge with one SQLite file and a terminal you already have open. Its modal, keyboard-driven interface is inspired by VisiData .

Source: Hacker News | Original Link