My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker | aimilios My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker 12 Feb, 2026 I recently got a smart sleep mask from Kickstarter. I was not expecting to end up with the ability to read strangers’ brainwaves and send them electric impulses in their sleep. But here we are. The mask was from a small Chinese research company, very cool hardware — EEG brain monitoring, electrical muscle stimulation around the eyes, vibration, heating, audio. The app was still rough around the edges though and the mask kept disconnecting, so I asked Claude to try reverse-engineer the Bluetooth protocol and build me a simple web control panel instead. Bluetooth The first thing Claude did was scan for BLE (Bluetooth Low Energy) devices nearby. It found mine among 35 devices in range, connected, and mapped the interface — two data channels. One for sending commands, one for streaming data. Then it tried talking to it. Sent maybe a hundred different command patterns. Modbus frames, JSON, raw bytes, common headers. Unfortunately, the device said nothing back, the protocol was not a standard one. The app So Claude went after the app instead. Grabbed the Android APK, decompiled it with jadx. Turns out the app is built with Flutter, which is a bit of a problem for reverse engineering. Flutter compiles Dart source code into native ARM64 machine code — you can’t just read it back like normal Java Android apps. The actual business logic lives in a 9MB binary blob. But even compiled binaries have strings in them. Error messages, URLs, debug logs. Claude ran strings on the binary and this was the most productive step of the whole session. Among the thousands of lines of Flutter framework noise, it found: Hardcoded credentials for the company’s message broker (shared by every copy of the app) Cloud API endpoints All fifteen command builder function names (e.g. to set vibration, heating, electric stimulation, etc.) Protocol debug messages that revealed the packet structure — header, direction byte, command type, payload, footer We had the shape of the protocol. Still didn’t have the actual byte values though. Claude then used blutter , a tool specifically for decompiling Flutter’s compiled Dart snapshots. It reconstructs the functions with readable annotations. Claude figured out the encoding, and just read off every command byte from every function. Fifteen commands, fully mapped. It works Claude sent a six-byte query packet. The device came back with 153 bytes — model number, firmware version, serial number, all eight sensor channel configurations (EEG at 250Hz, respiration, 3-axis accelerometer, 3-axis gyroscope). Battery at 83%. Vibration control worked. Heating worked. EMS worked. Music worked. Claude built me a little web dashboard with sliders for everything. I was pretty happy with it. That could have been the end of the story. The server Remember the hardcoded credentials from earl

Source: Hacker News | Original Link

Amsterdam Compiler Kit

GitHub – davidgiven/ack: The Amsterdam Compiler Kit 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 davidgiven / ack Public Notifications You must be signed in to change notification settings Fork 77 Star 543 The Amsterdam Compiler Kit tack.sf.net 543 stars 77 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings davidgiven/ack default Branches Tags Go to file Code Open more actions menu Folders and files Name Name Last commit message Last commit date Latest commit History 8,536 Commits 8,536 Commits .github/ workflows .github/ workflows bin bin build build doc doc emtest emtest etc etc examples examples fast fast fcc fcc h h include/ _tail_mon include/ _tail_mon lang lang lib lib mach mach man man modules modules plat plat tests/ plat tests/ plat util util .clang-format .clang-format .distr .distr .drone.yml .drone.yml .gitattributes .gitattributes .hgignore .hgignore .travis.yml .travis.yml Action Action CHANGES CHANGES Copyright Copyright Makefile Makefile NEW NEW README README TODO TODO build.py build.py View all files Repository files navigation THE AMSTERDAM COMPILER KIT V6.2+ ================================ © 1987-2005 Vrije Universiteit, Amsterdam 2025-04-17 INTRODUCTION ============ The Amsterdam Compiler Kit is a complete compiler toolchain consisting of front end compilers for a number of different languages, code generators, support libraries, and all the tools necessary to go from source code to executable on any of the platforms it supports. SUPPORT ======= Languages: ANSI C, Pascal, Modula 2, Basic. K&R is supported via the ANSI C compiler. Platforms: cpm produces i80 CP/M .COM files em22 produces EM22 bytecode files linux386 produces ELF executables for PC Linux systems linux68k produces ELF executables for m68020 Linux systems linuxmips produces ELF executables for little-endian MIPS32r2 Linux systems linuxppc produces ELF executables for PowerPC Linux systems minix68k produces Minix executables for m68000 Minix systems msdos386 produces i386 MS-DOS 32-bit DPMI .EXE files msdos86 produces i86 MS-DOS .COM files osx386 produces i386 OSX MachO executables osxppc produces PowerPC OSX MachO executables pc86 produces bootable floppy disk images for 8086 PCs pdpv7 produces PDP/11 V7 Unix binaries rpi produces Raspberry Pi GPU binaries INSTALLATION ============ The version 5.0 build mechanism has been completely rewritten (twice). Installation ought to be fairly straightforward. It will build on Unixishes including Linux, OSX, and Windows using MSYS2 and mingw32. Requirements: – an ANSI C compiler. This defaults to gcc. You can change this by setting the CC make variable. – flex and yacc. – GNU make. – Lua (any version) with the lua-posix library installed. – Python 3.4 or above. – ab

Source: Hacker News | Original Link

Ooh.directory: a place to find good blogs that interest you

ooh.directory: a place to find good blogs that interest you Skip to content A collection of 2,380 blogs about every topic 🎨 Arts and media (905) Architecture Books Design Games Music 🧑‍💻 Computers, internet, tech (405) Hardware Internet Web development 🌍 Countries, states, towns, etc. (128) London UK USA 💰 Economics and business (72) BBC Economics Management 🎓 Education (37) ⚖ Government, politics and law (62) Law Military Politics 📚 Humanities (170) Futures Geography History Language 😀 Personal blogs (371) 💃 Recreation (248) Food & drink Sport & exercise Travel 🧪 Science (146) Earth science Mathematics Space 🧑‍🤝‍🧑 Society (54) Death & graves Psychogeography Religion ❓ Uncategorizable blogs (43) Completionist blogs 🎁 Four years old today! LIP SERVICE — Split Lip Magazine We’re a literary journal that’s totally bonkers-in-love with voice-driven writing, pop culture, and the kind of honesty that gets you right in the kidneys. 🇺🇸 More info Updated 4 days ago Now Playing: January 2026 Our January 2026 edition of Now Playing features love letters, a novella, and a limited series, all from our contributors!Lia HagenLately, I’ve been looking for queerness in women’s letters. In a slim collection of love … 🎂 Three years old today! maerk.xyz | Blog By Mark. More info Updated a month ago 01/24/26 Relevant audio. God, what a fucking banger. Comments are broken. Reply to this post via email. Recently added blogs Or see recently updated blogs Carol Peters poems 🇺🇸 More info Updated a month ago Jan 13 2026 the two gray squirrels might be puppet strungbound bound bound halt on two back feetnose at ice-furred snow survey stubbled fieldbound bound bound Molecular Design Controlling the behavior of compounds and materials by manipulation of molecular properties. More info Updated a month ago Hit to Lead best practice? I’m now in Trinidad and I’ll share a 180° panorama from Paramin where I walk for exercise. This district in Trinidad’s Northern Range is renowned for its agriculture and the most excellent produce is grown … One Starry Night A cozy constellation of stories, stardust, nostalgia, and chronic illness adventures. Still sparkling since 2001. By Sarah DiLullo. 🇺🇸 More info Updated 2 months ago Still Alive a Year Later Today marks one year since my rare cancer discovery. Since that diagnosis and massive life-threatening surgery, only my best friend, her daughter, my teenage son, and, to a lesser degree, my oldest son have given … Infinite Regress Clinical trials, cancer research, book reviews, coffee making, photography, and the like. By Miloš Miljković. 🇺🇸 More info Updated 20 hours ago 2026-02-13 22:14 🎙 A plug for the most recent ATP podcast special, After Apple. Yes, my frustration with the company has grown since reading about their dubious business practices and I typing this from Asahi Fedora to … Carlos Roldán • Blog Technology or anything else. By Carlos Roldán, researcher, entrepreneur and hobbyist. 🇪🇸 More info Updated 2 days ago Tensei: a telepo

Source: Hacker News | Original Link

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker | aimilios My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker 12 Feb, 2026 I recently got a smart sleep mask from Kickstarter. I was not expecting to end up with the ability to read strangers’ brainwaves and send them electric impulses in their sleep. But here we are. The mask was from a small Chinese research company, very cool hardware — EEG brain monitoring, electrical muscle stimulation around the eyes, vibration, heating, audio. The app was still rough around the edges though and the mask kept disconnecting, so I asked Claude to try reverse-engineer the Bluetooth protocol and build me a simple web control panel instead. Bluetooth The first thing Claude did was scan for BLE (Bluetooth Low Energy) devices nearby. It found mine among 35 devices in range, connected, and mapped the interface — two data channels. One for sending commands, one for streaming data. Then it tried talking to it. Sent maybe a hundred different command patterns. Modbus frames, JSON, raw bytes, common headers. Unfortunately, the device said nothing back, the protocol was not a standard one. The app So Claude went after the app instead. Grabbed the Android APK, decompiled it with jadx. Turns out the app is built with Flutter, which is a bit of a problem for reverse engineering. Flutter compiles Dart source code into native ARM64 machine code — you can’t just read it back like normal Java Android apps. The actual business logic lives in a 9MB binary blob. But even compiled binaries have strings in them. Error messages, URLs, debug logs. Claude ran strings on the binary and this was the most productive step of the whole session. Among the thousands of lines of Flutter framework noise, it found: Hardcoded credentials for the company’s message broker (shared by every copy of the app) Cloud API endpoints All fifteen command builder function names (e.g. to set vibration, heating, electric stimulation, etc.) Protocol debug messages that revealed the packet structure — header, direction byte, command type, payload, footer We had the shape of the protocol. Still didn’t have the actual byte values though. Claude then used blutter , a tool specifically for decompiling Flutter’s compiled Dart snapshots. It reconstructs the functions with readable annotations. Claude figured out the encoding, and just read off every command byte from every function. Fifteen commands, fully mapped. It works Claude sent a six-byte query packet. The device came back with 153 bytes — model number, firmware version, serial number, all eight sensor channel configurations (EEG at 250Hz, respiration, 3-axis accelerometer, 3-axis gyroscope). Battery at 83%. Vibration control worked. Heating worked. EMS worked. Music worked. Claude built me a little web dashboard with sliders for everything. I was pretty happy with it. That could have been the end of the story. The server Remember the hardcoded credentials from earl

Source: Hacker News | Original Link

Amsterdam Compiler Kit

GitHub – davidgiven/ack: The Amsterdam Compiler Kit 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 davidgiven / ack Public Notifications You must be signed in to change notification settings Fork 77 Star 543 The Amsterdam Compiler Kit tack.sf.net 543 stars 77 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings davidgiven/ack default Branches Tags Go to file Code Open more actions menu Folders and files Name Name Last commit message Last commit date Latest commit History 8,536 Commits 8,536 Commits .github/ workflows .github/ workflows bin bin build build doc doc emtest emtest etc etc examples examples fast fast fcc fcc h h include/ _tail_mon include/ _tail_mon lang lang lib lib mach mach man man modules modules plat plat tests/ plat tests/ plat util util .clang-format .clang-format .distr .distr .drone.yml .drone.yml .gitattributes .gitattributes .hgignore .hgignore .travis.yml .travis.yml Action Action CHANGES CHANGES Copyright Copyright Makefile Makefile NEW NEW README README TODO TODO build.py build.py View all files Repository files navigation THE AMSTERDAM COMPILER KIT V6.2+ ================================ © 1987-2005 Vrije Universiteit, Amsterdam 2025-04-17 INTRODUCTION ============ The Amsterdam Compiler Kit is a complete compiler toolchain consisting of front end compilers for a number of different languages, code generators, support libraries, and all the tools necessary to go from source code to executable on any of the platforms it supports. SUPPORT ======= Languages: ANSI C, Pascal, Modula 2, Basic. K&R is supported via the ANSI C compiler. Platforms: cpm produces i80 CP/M .COM files em22 produces EM22 bytecode files linux386 produces ELF executables for PC Linux systems linux68k produces ELF executables for m68020 Linux systems linuxmips produces ELF executables for little-endian MIPS32r2 Linux systems linuxppc produces ELF executables for PowerPC Linux systems minix68k produces Minix executables for m68000 Minix systems msdos386 produces i386 MS-DOS 32-bit DPMI .EXE files msdos86 produces i86 MS-DOS .COM files osx386 produces i386 OSX MachO executables osxppc produces PowerPC OSX MachO executables pc86 produces bootable floppy disk images for 8086 PCs pdpv7 produces PDP/11 V7 Unix binaries rpi produces Raspberry Pi GPU binaries INSTALLATION ============ The version 5.0 build mechanism has been completely rewritten (twice). Installation ought to be fairly straightforward. It will build on Unixishes including Linux, OSX, and Windows using MSYS2 and mingw32. Requirements: – an ANSI C compiler. This defaults to gcc. You can change this by setting the CC make variable. – flex and yacc. – GNU make. – Lua (any version) with the lua-posix library installed. – Python 3.4 or above. – ab

Source: Hacker News | Original Link

Ooh.directory: a place to find good blogs that interest you

ooh.directory: a place to find good blogs that interest you Skip to content A collection of 2,380 blogs about every topic 🎨 Arts and media (905) Architecture Books Design Games Music 🧑‍💻 Computers, internet, tech (405) Hardware Internet Web development 🌍 Countries, states, towns, etc. (128) London UK USA 💰 Economics and business (72) BBC Economics Management 🎓 Education (37) ⚖ Government, politics and law (62) Law Military Politics 📚 Humanities (170) Futures Geography History Language 😀 Personal blogs (371) 💃 Recreation (248) Food & drink Sport & exercise Travel 🧪 Science (146) Earth science Mathematics Space 🧑‍🤝‍🧑 Society (54) Death & graves Psychogeography Religion ❓ Uncategorizable blogs (43) Completionist blogs 🎁 Four years old today! LIP SERVICE — Split Lip Magazine We’re a literary journal that’s totally bonkers-in-love with voice-driven writing, pop culture, and the kind of honesty that gets you right in the kidneys. 🇺🇸 More info Updated 4 days ago Now Playing: January 2026 Our January 2026 edition of Now Playing features love letters, a novella, and a limited series, all from our contributors!Lia HagenLately, I’ve been looking for queerness in women’s letters. In a slim collection of love … 🎂 Three years old today! maerk.xyz | Blog By Mark. More info Updated a month ago 01/24/26 Relevant audio. God, what a fucking banger. Comments are broken. Reply to this post via email. Recently added blogs Or see recently updated blogs Carol Peters poems 🇺🇸 More info Updated a month ago Jan 13 2026 the two gray squirrels might be puppet strungbound bound bound halt on two back feetnose at ice-furred snow survey stubbled fieldbound bound bound Molecular Design Controlling the behavior of compounds and materials by manipulation of molecular properties. More info Updated a month ago Hit to Lead best practice? I’m now in Trinidad and I’ll share a 180° panorama from Paramin where I walk for exercise. This district in Trinidad’s Northern Range is renowned for its agriculture and the most excellent produce is grown … One Starry Night A cozy constellation of stories, stardust, nostalgia, and chronic illness adventures. Still sparkling since 2001. By Sarah DiLullo. 🇺🇸 More info Updated 2 months ago Still Alive a Year Later Today marks one year since my rare cancer discovery. Since that diagnosis and massive life-threatening surgery, only my best friend, her daughter, my teenage son, and, to a lesser degree, my oldest son have given … Infinite Regress Clinical trials, cancer research, book reviews, coffee making, photography, and the like. By Miloš Miljković. 🇺🇸 More info Updated 20 hours ago 2026-02-13 22:14 🎙 A plug for the most recent ATP podcast special, After Apple. Yes, my frustration with the company has grown since reading about their dubious business practices and I typing this from Asahi Fedora to … Carlos Roldán • Blog Technology or anything else. By Carlos Roldán, researcher, entrepreneur and hobbyist. 🇪🇸 More info Updated 2 days ago Tensei: a telepo

Source: Hacker News | Original Link

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker | aimilios My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker 12 Feb, 2026 I recently got a smart sleep mask from Kickstarter. I was not expecting to end up with the ability to read strangers’ brainwaves and send them electric impulses in their sleep. But here we are. The mask was from a small Chinese research company, very cool hardware — EEG brain monitoring, electrical muscle stimulation around the eyes, vibration, heating, audio. The app was still rough around the edges though and the mask kept disconnecting, so I asked Claude to try reverse-engineer the Bluetooth protocol and build me a simple web control panel instead. Bluetooth The first thing Claude did was scan for BLE (Bluetooth Low Energy) devices nearby. It found mine among 35 devices in range, connected, and mapped the interface — two data channels. One for sending commands, one for streaming data. Then it tried talking to it. Sent maybe a hundred different command patterns. Modbus frames, JSON, raw bytes, common headers. Unfortunately, the device said nothing back, the protocol was not a standard one. The app So Claude went after the app instead. Grabbed the Android APK, decompiled it with jadx. Turns out the app is built with Flutter, which is a bit of a problem for reverse engineering. Flutter compiles Dart source code into native ARM64 machine code — you can’t just read it back like normal Java Android apps. The actual business logic lives in a 9MB binary blob. But even compiled binaries have strings in them. Error messages, URLs, debug logs. Claude ran strings on the binary and this was the most productive step of the whole session. Among the thousands of lines of Flutter framework noise, it found: Hardcoded credentials for the company’s message broker (shared by every copy of the app) Cloud API endpoints All fifteen command builder function names (e.g. to set vibration, heating, electric stimulation, etc.) Protocol debug messages that revealed the packet structure — header, direction byte, command type, payload, footer We had the shape of the protocol. Still didn’t have the actual byte values though. Claude then used blutter , a tool specifically for decompiling Flutter’s compiled Dart snapshots. It reconstructs the functions with readable annotations. Claude figured out the encoding, and just read off every command byte from every function. Fifteen commands, fully mapped. It works Claude sent a six-byte query packet. The device came back with 153 bytes — model number, firmware version, serial number, all eight sensor channel configurations (EEG at 250Hz, respiration, 3-axis accelerometer, 3-axis gyroscope). Battery at 83%. Vibration control worked. Heating worked. EMS worked. Music worked. Claude built me a little web dashboard with sliders for everything. I was pretty happy with it. That could have been the end of the story. The server Remember the hardcoded credentials from earl

Source: Hacker News | Original Link

Zig – io_uring and Grand Central Dispatch std.Io implementations landed

Devlog ⚡ Zig Programming Language Download Learn News Source Join a Community ZSF Devlog Devlog This page contains a curated list of recent changes to main branch Zig. Also available as an RSS feed . This page contains entries for the year 2026 . Other years are available in the Devlog archive page . February 13, 2026 io_uring and Grand Central Dispatch std.Io implementations landed Author: Andrew Kelley As we approach the end of the 0.16.0 release cycle, Jacob has been hard at work, bringing std.Io.Evented up to speed with all the latest API changes: io_uring implementation Grand Central Dispatch implementation Both of these are based on userspace stack switching, sometimes called “fibers”, “stackful coroutines”, or “green threads”. They are now available to tinker with , by constructing one’s application using std.Io.Evented . They should be considered experimental because there is important followup work to be done before they can be used reliably and robustly: better error handling remove the logging diagnose the unexpected performance degradation when using IoMode.evented for the compiler a couple functions still unimplemented more test coverage is needed builtin function to tell you the maximum stack size of a given function to make these implementations practical to use when overcommit is off. With those caveats in mind, it seems we are indeed reaching the Promised Land, where Zig code can have Io implementations effortlessly swapped out: const std = @import ( “std” ) ; pub fn main ( init : std . process . Init . Minimal ) ! void { var debug_allocator : std . heap . DebugAllocator ( . { } ) = . init ; const gpa = debug_allocator . allocator ( ) ; var threaded : std . Io . Threaded = . init ( gpa , . { . argv0 = . init ( init . args ) , . environ = init . environ , } ) ; defer threaded . deinit ( ) ; const io = threaded . io ( ) ; return app ( io ) ; } fn app ( io : std . Io ) ! void { try std . Io . File . stdout ( ) . writeStreamingAll ( io , “Hello, World! \n ” ) ; } $ strace ./hello_threaded execve(“./hello_threaded”, [“./hello_threaded”], 0x7ffc1da88b20 /* 98 vars */) = 0 mmap(NULL, 262207, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f583f338000 arch_prctl(ARCH_SET_FS, 0x7f583f378018) = 0 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 prlimit64(0, RLIMIT_STACK, {rlim_cur=16384*1024, rlim_max=RLIM64_INFINITY}, NULL) = 0 sigaltstack({ss_sp=0x7f583f338000, ss_flags=0, ss_size=262144}, NULL) = 0 sched_getaffinity(0, 128, [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]) = 8 rt_sigaction(SIGIO, {sa_handler=0x1019d90, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x10328c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigaction(SIGPIPE, {sa_handler=0x1019d90, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x10328c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 writev(1, [{iov_base=”Hello, World!\n”, iov_len=14}], 1Hello, World! )

Source: Hacker News | Original Link

Ooh.directory: a place to find good blogs that interest you

ooh.directory: a place to find good blogs that interest you Skip to content A collection of 2,380 blogs about every topic 🎨 Arts and media (905) Architecture Books Design Games Music 🧑‍💻 Computers, internet, tech (405) Hardware Internet Web development 🌍 Countries, states, towns, etc. (128) London UK USA 💰 Economics and business (72) BBC Economics Management 🎓 Education (37) ⚖ Government, politics and law (62) Law Military Politics 📚 Humanities (170) Futures Geography History Language 😀 Personal blogs (371) 💃 Recreation (248) Food & drink Sport & exercise Travel 🧪 Science (146) Earth science Mathematics Space 🧑‍🤝‍🧑 Society (54) Death & graves Psychogeography Religion ❓ Uncategorizable blogs (43) Completionist blogs 🎁 Four years old today! LIP SERVICE — Split Lip Magazine We’re a literary journal that’s totally bonkers-in-love with voice-driven writing, pop culture, and the kind of honesty that gets you right in the kidneys. 🇺🇸 More info Updated 4 days ago Now Playing: January 2026 Our January 2026 edition of Now Playing features love letters, a novella, and a limited series, all from our contributors!Lia HagenLately, I’ve been looking for queerness in women’s letters. In a slim collection of love … 🎂 Three years old today! maerk.xyz | Blog By Mark. More info Updated a month ago 01/24/26 Relevant audio. God, what a fucking banger. Comments are broken. Reply to this post via email. Recently added blogs Or see recently updated blogs Carol Peters poems 🇺🇸 More info Updated a month ago Jan 13 2026 the two gray squirrels might be puppet strungbound bound bound halt on two back feetnose at ice-furred snow survey stubbled fieldbound bound bound Molecular Design Controlling the behavior of compounds and materials by manipulation of molecular properties. More info Updated a month ago Hit to Lead best practice? I’m now in Trinidad and I’ll share a 180° panorama from Paramin where I walk for exercise. This district in Trinidad’s Northern Range is renowned for its agriculture and the most excellent produce is grown … One Starry Night A cozy constellation of stories, stardust, nostalgia, and chronic illness adventures. Still sparkling since 2001. By Sarah DiLullo. 🇺🇸 More info Updated 2 months ago Still Alive a Year Later Today marks one year since my rare cancer discovery. Since that diagnosis and massive life-threatening surgery, only my best friend, her daughter, my teenage son, and, to a lesser degree, my oldest son have given … Infinite Regress Clinical trials, cancer research, book reviews, coffee making, photography, and the like. By Miloš Miljković. 🇺🇸 More info Updated 20 hours ago 2026-02-13 22:14 🎙 A plug for the most recent ATP podcast special, After Apple. Yes, my frustration with the company has grown since reading about their dubious business practices and I typing this from Asahi Fedora to … Carlos Roldán • Blog Technology or anything else. By Carlos Roldán, researcher, entrepreneur and hobbyist. 🇪🇸 More info Updated 2 days ago Tensei: a telepo

Source: Hacker News | Original Link

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker | aimilios My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker 12 Feb, 2026 I recently got a smart sleep mask from Kickstarter. I was not expecting to end up with the ability to read strangers’ brainwaves and send them electric impulses in their sleep. But here we are. The mask was from a small Chinese research company, very cool hardware — EEG brain monitoring, electrical muscle stimulation around the eyes, vibration, heating, audio. The app was still rough around the edges though and the mask kept disconnecting, so I asked Claude to try reverse-engineer the Bluetooth protocol and build me a simple web control panel instead. Bluetooth The first thing Claude did was scan for BLE (Bluetooth Low Energy) devices nearby. It found mine among 35 devices in range, connected, and mapped the interface — two data channels. One for sending commands, one for streaming data. Then it tried talking to it. Sent maybe a hundred different command patterns. Modbus frames, JSON, raw bytes, common headers. Unfortunately, the device said nothing back, the protocol was not a standard one. The app So Claude went after the app instead. Grabbed the Android APK, decompiled it with jadx. Turns out the app is built with Flutter, which is a bit of a problem for reverse engineering. Flutter compiles Dart source code into native ARM64 machine code — you can’t just read it back like normal Java Android apps. The actual business logic lives in a 9MB binary blob. But even compiled binaries have strings in them. Error messages, URLs, debug logs. Claude ran strings on the binary and this was the most productive step of the whole session. Among the thousands of lines of Flutter framework noise, it found: Hardcoded credentials for the company’s message broker (shared by every copy of the app) Cloud API endpoints All fifteen command builder function names (e.g. to set vibration, heating, electric stimulation, etc.) Protocol debug messages that revealed the packet structure — header, direction byte, command type, payload, footer We had the shape of the protocol. Still didn’t have the actual byte values though. Claude then used blutter , a tool specifically for decompiling Flutter’s compiled Dart snapshots. It reconstructs the functions with readable annotations. Claude figured out the encoding, and just read off every command byte from every function. Fifteen commands, fully mapped. It works Claude sent a six-byte query packet. The device came back with 153 bytes — model number, firmware version, serial number, all eight sensor channel configurations (EEG at 250Hz, respiration, 3-axis accelerometer, 3-axis gyroscope). Battery at 83%. Vibration control worked. Heating worked. EMS worked. Music worked. Claude built me a little web dashboard with sliders for everything. I was pretty happy with it. That could have been the end of the story. The server Remember the hardcoded credentials from earl

Source: Hacker News | Original Link

Zig – io_uring and Grand Central Dispatch std.Io implementations landed

Devlog ⚡ Zig Programming Language Download Learn News Source Join a Community ZSF Devlog Devlog This page contains a curated list of recent changes to main branch Zig. Also available as an RSS feed . This page contains entries for the year 2026 . Other years are available in the Devlog archive page . February 13, 2026 io_uring and Grand Central Dispatch std.Io implementations landed Author: Andrew Kelley As we approach the end of the 0.16.0 release cycle, Jacob has been hard at work, bringing std.Io.Evented up to speed with all the latest API changes: io_uring implementation Grand Central Dispatch implementation Both of these are based on userspace stack switching, sometimes called “fibers”, “stackful coroutines”, or “green threads”. They are now available to tinker with , by constructing one’s application using std.Io.Evented . They should be considered experimental because there is important followup work to be done before they can be used reliably and robustly: better error handling remove the logging diagnose the unexpected performance degradation when using IoMode.evented for the compiler a couple functions still unimplemented more test coverage is needed builtin function to tell you the maximum stack size of a given function to make these implementations practical to use when overcommit is off. With those caveats in mind, it seems we are indeed reaching the Promised Land, where Zig code can have Io implementations effortlessly swapped out: const std = @import ( “std” ) ; pub fn main ( init : std . process . Init . Minimal ) ! void { var debug_allocator : std . heap . DebugAllocator ( . { } ) = . init ; const gpa = debug_allocator . allocator ( ) ; var threaded : std . Io . Threaded = . init ( gpa , . { . argv0 = . init ( init . args ) , . environ = init . environ , } ) ; defer threaded . deinit ( ) ; const io = threaded . io ( ) ; return app ( io ) ; } fn app ( io : std . Io ) ! void { try std . Io . File . stdout ( ) . writeStreamingAll ( io , “Hello, World! \n ” ) ; } $ strace ./hello_threaded execve(“./hello_threaded”, [“./hello_threaded”], 0x7ffc1da88b20 /* 98 vars */) = 0 mmap(NULL, 262207, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f583f338000 arch_prctl(ARCH_SET_FS, 0x7f583f378018) = 0 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 prlimit64(0, RLIMIT_STACK, {rlim_cur=16384*1024, rlim_max=RLIM64_INFINITY}, NULL) = 0 sigaltstack({ss_sp=0x7f583f338000, ss_flags=0, ss_size=262144}, NULL) = 0 sched_getaffinity(0, 128, [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]) = 8 rt_sigaction(SIGIO, {sa_handler=0x1019d90, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x10328c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigaction(SIGPIPE, {sa_handler=0x1019d90, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x10328c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 writev(1, [{iov_base=”Hello, World!\n”, iov_len=14}], 1Hello, World! )

Source: Hacker News | Original Link

Ooh.directory: a place to find good blogs that interest you

ooh.directory: a place to find good blogs that interest you Skip to content A collection of 2,380 blogs about every topic 🎨 Arts and media (905) Architecture Books Design Games Music 🧑‍💻 Computers, internet, tech (405) Hardware Internet Web development 🌍 Countries, states, towns, etc. (128) London UK USA 💰 Economics and business (72) BBC Economics Management 🎓 Education (37) ⚖ Government, politics and law (62) Law Military Politics 📚 Humanities (170) Futures Geography History Language 😀 Personal blogs (371) 💃 Recreation (248) Food & drink Sport & exercise Travel 🧪 Science (146) Earth science Mathematics Space 🧑‍🤝‍🧑 Society (54) Death & graves Psychogeography Religion ❓ Uncategorizable blogs (43) Completionist blogs 🎁 Four years old today! LIP SERVICE — Split Lip Magazine We’re a literary journal that’s totally bonkers-in-love with voice-driven writing, pop culture, and the kind of honesty that gets you right in the kidneys. 🇺🇸 More info Updated 4 days ago Now Playing: January 2026 Our January 2026 edition of Now Playing features love letters, a novella, and a limited series, all from our contributors!Lia HagenLately, I’ve been looking for queerness in women’s letters. In a slim collection of love … 🎂 Three years old today! maerk.xyz | Blog By Mark. More info Updated a month ago 01/24/26 Relevant audio. God, what a fucking banger. Comments are broken. Reply to this post via email. Recently added blogs Or see recently updated blogs Carol Peters poems 🇺🇸 More info Updated a month ago Jan 13 2026 the two gray squirrels might be puppet strungbound bound bound halt on two back feetnose at ice-furred snow survey stubbled fieldbound bound bound Molecular Design Controlling the behavior of compounds and materials by manipulation of molecular properties. More info Updated a month ago Hit to Lead best practice? I’m now in Trinidad and I’ll share a 180° panorama from Paramin where I walk for exercise. This district in Trinidad’s Northern Range is renowned for its agriculture and the most excellent produce is grown … One Starry Night A cozy constellation of stories, stardust, nostalgia, and chronic illness adventures. Still sparkling since 2001. By Sarah DiLullo. 🇺🇸 More info Updated 2 months ago Still Alive a Year Later Today marks one year since my rare cancer discovery. Since that diagnosis and massive life-threatening surgery, only my best friend, her daughter, my teenage son, and, to a lesser degree, my oldest son have given … Infinite Regress Clinical trials, cancer research, book reviews, coffee making, photography, and the like. By Miloš Miljković. 🇺🇸 More info Updated 20 hours ago 2026-02-13 22:14 🎙 A plug for the most recent ATP podcast special, After Apple. Yes, my frustration with the company has grown since reading about their dubious business practices and I typing this from Asahi Fedora to … Carlos Roldán • Blog Technology or anything else. By Carlos Roldán, researcher, entrepreneur and hobbyist. 🇪🇸 More info Updated 2 days ago Tensei: a telepo

Source: Hacker News | Original Link

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker | aimilios My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker 12 Feb, 2026 I recently got a smart sleep mask from Kickstarter. I was not expecting to end up with the ability to read strangers’ brainwaves and send them electric impulses in their sleep. But here we are. The mask was from a small Chinese research company, very cool hardware — EEG brain monitoring, electrical muscle stimulation around the eyes, vibration, heating, audio. The app was still rough around the edges though and the mask kept disconnecting, so I asked Claude to try reverse-engineer the Bluetooth protocol and build me a simple web control panel instead. Bluetooth The first thing Claude did was scan for BLE (Bluetooth Low Energy) devices nearby. It found mine among 35 devices in range, connected, and mapped the interface — two data channels. One for sending commands, one for streaming data. Then it tried talking to it. Sent maybe a hundred different command patterns. Modbus frames, JSON, raw bytes, common headers. Unfortunately, the device said nothing back, the protocol was not a standard one. The app So Claude went after the app instead. Grabbed the Android APK, decompiled it with jadx. Turns out the app is built with Flutter, which is a bit of a problem for reverse engineering. Flutter compiles Dart source code into native ARM64 machine code — you can’t just read it back like normal Java Android apps. The actual business logic lives in a 9MB binary blob. But even compiled binaries have strings in them. Error messages, URLs, debug logs. Claude ran strings on the binary and this was the most productive step of the whole session. Among the thousands of lines of Flutter framework noise, it found: Hardcoded credentials for the company’s message broker (shared by every copy of the app) Cloud API endpoints All fifteen command builder function names (e.g. to set vibration, heating, electric stimulation, etc.) Protocol debug messages that revealed the packet structure — header, direction byte, command type, payload, footer We had the shape of the protocol. Still didn’t have the actual byte values though. Claude then used blutter , a tool specifically for decompiling Flutter’s compiled Dart snapshots. It reconstructs the functions with readable annotations. Claude figured out the encoding, and just read off every command byte from every function. Fifteen commands, fully mapped. It works Claude sent a six-byte query packet. The device came back with 153 bytes — model number, firmware version, serial number, all eight sensor channel configurations (EEG at 250Hz, respiration, 3-axis accelerometer, 3-axis gyroscope). Battery at 83%. Vibration control worked. Heating worked. EMS worked. Music worked. Claude built me a little web dashboard with sliders for everything. I was pretty happy with it. That could have been the end of the story. The server Remember the hardcoded credentials from earl

Source: Hacker News | Original Link

Zig – io_uring and Grand Central Dispatch std.Io implementations landed

Devlog ⚡ Zig Programming Language Download Learn News Source Join a Community ZSF Devlog Devlog This page contains a curated list of recent changes to main branch Zig. Also available as an RSS feed . This page contains entries for the year 2026 . Other years are available in the Devlog archive page . February 13, 2026 io_uring and Grand Central Dispatch std.Io implementations landed Author: Andrew Kelley As we approach the end of the 0.16.0 release cycle, Jacob has been hard at work, bringing std.Io.Evented up to speed with all the latest API changes: io_uring implementation Grand Central Dispatch implementation Both of these are based on userspace stack switching, sometimes called “fibers”, “stackful coroutines”, or “green threads”. They are now available to tinker with , by constructing one’s application using std.Io.Evented . They should be considered experimental because there is important followup work to be done before they can be used reliably and robustly: better error handling remove the logging diagnose the unexpected performance degradation when using IoMode.evented for the compiler a couple functions still unimplemented more test coverage is needed builtin function to tell you the maximum stack size of a given function to make these implementations practical to use when overcommit is off. With those caveats in mind, it seems we are indeed reaching the Promised Land, where Zig code can have Io implementations effortlessly swapped out: const std = @import ( “std” ) ; pub fn main ( init : std . process . Init . Minimal ) ! void { var debug_allocator : std . heap . DebugAllocator ( . { } ) = . init ; const gpa = debug_allocator . allocator ( ) ; var threaded : std . Io . Threaded = . init ( gpa , . { . argv0 = . init ( init . args ) , . environ = init . environ , } ) ; defer threaded . deinit ( ) ; const io = threaded . io ( ) ; return app ( io ) ; } fn app ( io : std . Io ) ! void { try std . Io . File . stdout ( ) . writeStreamingAll ( io , “Hello, World! \n ” ) ; } $ strace ./hello_threaded execve(“./hello_threaded”, [“./hello_threaded”], 0x7ffc1da88b20 /* 98 vars */) = 0 mmap(NULL, 262207, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f583f338000 arch_prctl(ARCH_SET_FS, 0x7f583f378018) = 0 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 prlimit64(0, RLIMIT_STACK, {rlim_cur=16384*1024, rlim_max=RLIM64_INFINITY}, NULL) = 0 sigaltstack({ss_sp=0x7f583f338000, ss_flags=0, ss_size=262144}, NULL) = 0 sched_getaffinity(0, 128, [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]) = 8 rt_sigaction(SIGIO, {sa_handler=0x1019d90, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x10328c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigaction(SIGPIPE, {sa_handler=0x1019d90, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x10328c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 writev(1, [{iov_base=”Hello, World!\n”, iov_len=14}], 1Hello, World! )

Source: Hacker News | Original Link

Ooh.directory: a place to find good blogs that interest you

ooh.directory: a place to find good blogs that interest you Skip to content A collection of 2,380 blogs about every topic 🎨 Arts and media (905) Architecture Books Design Games Music 🧑‍💻 Computers, internet, tech (405) Hardware Internet Web development 🌍 Countries, states, towns, etc. (128) London UK USA 💰 Economics and business (72) BBC Economics Management 🎓 Education (37) ⚖ Government, politics and law (62) Law Military Politics 📚 Humanities (170) Futures Geography History Language 😀 Personal blogs (371) 💃 Recreation (248) Food & drink Sport & exercise Travel 🧪 Science (146) Earth science Mathematics Space 🧑‍🤝‍🧑 Society (54) Death & graves Psychogeography Religion ❓ Uncategorizable blogs (43) Completionist blogs 🎁 Four years old today! LIP SERVICE — Split Lip Magazine We’re a literary journal that’s totally bonkers-in-love with voice-driven writing, pop culture, and the kind of honesty that gets you right in the kidneys. 🇺🇸 More info Updated 4 days ago Now Playing: January 2026 Our January 2026 edition of Now Playing features love letters, a novella, and a limited series, all from our contributors!Lia HagenLately, I’ve been looking for queerness in women’s letters. In a slim collection of love … 🎂 Three years old today! maerk.xyz | Blog By Mark. More info Updated a month ago 01/24/26 Relevant audio. God, what a fucking banger. Comments are broken. Reply to this post via email. Recently added blogs Or see recently updated blogs Carol Peters poems 🇺🇸 More info Updated a month ago Jan 13 2026 the two gray squirrels might be puppet strungbound bound bound halt on two back feetnose at ice-furred snow survey stubbled fieldbound bound bound Molecular Design Controlling the behavior of compounds and materials by manipulation of molecular properties. More info Updated a month ago Hit to Lead best practice? I’m now in Trinidad and I’ll share a 180° panorama from Paramin where I walk for exercise. This district in Trinidad’s Northern Range is renowned for its agriculture and the most excellent produce is grown … One Starry Night A cozy constellation of stories, stardust, nostalgia, and chronic illness adventures. Still sparkling since 2001. By Sarah DiLullo. 🇺🇸 More info Updated 2 months ago Still Alive a Year Later Today marks one year since my rare cancer discovery. Since that diagnosis and massive life-threatening surgery, only my best friend, her daughter, my teenage son, and, to a lesser degree, my oldest son have given … Infinite Regress Clinical trials, cancer research, book reviews, coffee making, photography, and the like. By Miloš Miljković. 🇺🇸 More info Updated 20 hours ago 2026-02-13 22:14 🎙 A plug for the most recent ATP podcast special, After Apple. Yes, my frustration with the company has grown since reading about their dubious business practices and I typing this from Asahi Fedora to … Carlos Roldán • Blog Technology or anything else. By Carlos Roldán, researcher, entrepreneur and hobbyist. 🇪🇸 More info Updated 2 days ago Tensei: a telepo

Source: Hacker News | Original Link

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker | aimilios My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker 12 Feb, 2026 I recently got a smart sleep mask from Kickstarter. I was not expecting to end up with the ability to read strangers’ brainwaves and send them electric impulses in their sleep. But here we are. The mask was from a small Chinese research company, very cool hardware — EEG brain monitoring, electrical muscle stimulation around the eyes, vibration, heating, audio. The app was still rough around the edges though and the mask kept disconnecting, so I asked Claude to try reverse-engineer the Bluetooth protocol and build me a simple web control panel instead. Bluetooth The first thing Claude did was scan for BLE (Bluetooth Low Energy) devices nearby. It found mine among 35 devices in range, connected, and mapped the interface — two data channels. One for sending commands, one for streaming data. Then it tried talking to it. Sent maybe a hundred different command patterns. Modbus frames, JSON, raw bytes, common headers. Unfortunately, the device said nothing back, the protocol was not a standard one. The app So Claude went after the app instead. Grabbed the Android APK, decompiled it with jadx. Turns out the app is built with Flutter, which is a bit of a problem for reverse engineering. Flutter compiles Dart source code into native ARM64 machine code — you can’t just read it back like normal Java Android apps. The actual business logic lives in a 9MB binary blob. But even compiled binaries have strings in them. Error messages, URLs, debug logs. Claude ran strings on the binary and this was the most productive step of the whole session. Among the thousands of lines of Flutter framework noise, it found: Hardcoded credentials for the company’s message broker (shared by every copy of the app) Cloud API endpoints All fifteen command builder function names (e.g. to set vibration, heating, electric stimulation, etc.) Protocol debug messages that revealed the packet structure — header, direction byte, command type, payload, footer We had the shape of the protocol. Still didn’t have the actual byte values though. Claude then used blutter , a tool specifically for decompiling Flutter’s compiled Dart snapshots. It reconstructs the functions with readable annotations. Claude figured out the encoding, and just read off every command byte from every function. Fifteen commands, fully mapped. It works Claude sent a six-byte query packet. The device came back with 153 bytes — model number, firmware version, serial number, all eight sensor channel configurations (EEG at 250Hz, respiration, 3-axis accelerometer, 3-axis gyroscope). Battery at 83%. Vibration control worked. Heating worked. EMS worked. Music worked. Claude built me a little web dashboard with sliders for everything. I was pretty happy with it. That could have been the end of the story. The server Remember the hardcoded credentials from earl

Source: Hacker News | Original Link

Zig – io_uring and Grand Central Dispatch std.Io implementations landed

Devlog ⚡ Zig Programming Language Download Learn News Source Join a Community ZSF Devlog Devlog This page contains a curated list of recent changes to main branch Zig. Also available as an RSS feed . This page contains entries for the year 2026 . Other years are available in the Devlog archive page . February 13, 2026 io_uring and Grand Central Dispatch std.Io implementations landed Author: Andrew Kelley As we approach the end of the 0.16.0 release cycle, Jacob has been hard at work, bringing std.Io.Evented up to speed with all the latest API changes: io_uring implementation Grand Central Dispatch implementation Both of these are based on userspace stack switching, sometimes called “fibers”, “stackful coroutines”, or “green threads”. They are now available to tinker with , by constructing one’s application using std.Io.Evented . They should be considered experimental because there is important followup work to be done before they can be used reliably and robustly: better error handling remove the logging diagnose the unexpected performance degradation when using IoMode.evented for the compiler a couple functions still unimplemented more test coverage is needed builtin function to tell you the maximum stack size of a given function to make these implementations practical to use when overcommit is off. With those caveats in mind, it seems we are indeed reaching the Promised Land, where Zig code can have Io implementations effortlessly swapped out: const std = @import ( “std” ) ; pub fn main ( init : std . process . Init . Minimal ) ! void { var debug_allocator : std . heap . DebugAllocator ( . { } ) = . init ; const gpa = debug_allocator . allocator ( ) ; var threaded : std . Io . Threaded = . init ( gpa , . { . argv0 = . init ( init . args ) , . environ = init . environ , } ) ; defer threaded . deinit ( ) ; const io = threaded . io ( ) ; return app ( io ) ; } fn app ( io : std . Io ) ! void { try std . Io . File . stdout ( ) . writeStreamingAll ( io , “Hello, World! \n ” ) ; } $ strace ./hello_threaded execve(“./hello_threaded”, [“./hello_threaded”], 0x7ffc1da88b20 /* 98 vars */) = 0 mmap(NULL, 262207, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f583f338000 arch_prctl(ARCH_SET_FS, 0x7f583f378018) = 0 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 prlimit64(0, RLIMIT_STACK, {rlim_cur=16384*1024, rlim_max=RLIM64_INFINITY}, NULL) = 0 sigaltstack({ss_sp=0x7f583f338000, ss_flags=0, ss_size=262144}, NULL) = 0 sched_getaffinity(0, 128, [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]) = 8 rt_sigaction(SIGIO, {sa_handler=0x1019d90, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x10328c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigaction(SIGPIPE, {sa_handler=0x1019d90, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x10328c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 writev(1, [{iov_base=”Hello, World!\n”, iov_len=14}], 1Hello, World! )

Source: Hacker News | Original Link

Ooh.directory: a place to find good blogs that interest you

ooh.directory: a place to find good blogs that interest you Skip to content A collection of 2,380 blogs about every topic 🎨 Arts and media (905) Architecture Books Design Games Music 🧑‍💻 Computers, internet, tech (405) Hardware Internet Web development 🌍 Countries, states, towns, etc. (128) London UK USA 💰 Economics and business (72) BBC Economics Management 🎓 Education (37) ⚖ Government, politics and law (62) Law Military Politics 📚 Humanities (170) Futures Geography History Language 😀 Personal blogs (371) 💃 Recreation (248) Food & drink Sport & exercise Travel 🧪 Science (146) Earth science Mathematics Space 🧑‍🤝‍🧑 Society (54) Death & graves Psychogeography Religion ❓ Uncategorizable blogs (43) Completionist blogs 🎁 Four years old today! LIP SERVICE — Split Lip Magazine We’re a literary journal that’s totally bonkers-in-love with voice-driven writing, pop culture, and the kind of honesty that gets you right in the kidneys. 🇺🇸 More info Updated 4 days ago Now Playing: January 2026 Our January 2026 edition of Now Playing features love letters, a novella, and a limited series, all from our contributors!Lia HagenLately, I’ve been looking for queerness in women’s letters. In a slim collection of love … 🎂 Three years old today! maerk.xyz | Blog By Mark. More info Updated a month ago 01/24/26 Relevant audio. God, what a fucking banger. Comments are broken. Reply to this post via email. Recently added blogs Or see recently updated blogs Carol Peters poems 🇺🇸 More info Updated a month ago Jan 13 2026 the two gray squirrels might be puppet strungbound bound bound halt on two back feetnose at ice-furred snow survey stubbled fieldbound bound bound Molecular Design Controlling the behavior of compounds and materials by manipulation of molecular properties. More info Updated a month ago Hit to Lead best practice? I’m now in Trinidad and I’ll share a 180° panorama from Paramin where I walk for exercise. This district in Trinidad’s Northern Range is renowned for its agriculture and the most excellent produce is grown … One Starry Night A cozy constellation of stories, stardust, nostalgia, and chronic illness adventures. Still sparkling since 2001. By Sarah DiLullo. 🇺🇸 More info Updated 2 months ago Still Alive a Year Later Today marks one year since my rare cancer discovery. Since that diagnosis and massive life-threatening surgery, only my best friend, her daughter, my teenage son, and, to a lesser degree, my oldest son have given … Infinite Regress Clinical trials, cancer research, book reviews, coffee making, photography, and the like. By Miloš Miljković. 🇺🇸 More info Updated 20 hours ago 2026-02-13 22:14 🎙 A plug for the most recent ATP podcast special, After Apple. Yes, my frustration with the company has grown since reading about their dubious business practices and I typing this from Asahi Fedora to … Carlos Roldán • Blog Technology or anything else. By Carlos Roldán, researcher, entrepreneur and hobbyist. 🇪🇸 More info Updated 2 days ago Tensei: a telepo

Source: Hacker News | Original Link

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker

My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker | aimilios My smart sleep mask broadcasts users’ brainwaves to an open MQTT broker 12 Feb, 2026 I recently got a smart sleep mask from Kickstarter. I was not expecting to end up with the ability to read strangers’ brainwaves and send them electric impulses in their sleep. But here we are. The mask was from a small Chinese research company, very cool hardware — EEG brain monitoring, electrical muscle stimulation around the eyes, vibration, heating, audio. The app was still rough around the edges though and the mask kept disconnecting, so I asked Claude to try reverse-engineer the Bluetooth protocol and build me a simple web control panel instead. Bluetooth The first thing Claude did was scan for BLE (Bluetooth Low Energy) devices nearby. It found mine among 35 devices in range, connected, and mapped the interface — two data channels. One for sending commands, one for streaming data. Then it tried talking to it. Sent maybe a hundred different command patterns. Modbus frames, JSON, raw bytes, common headers. Unfortunately, the device said nothing back, the protocol was not a standard one. The app So Claude went after the app instead. Grabbed the Android APK, decompiled it with jadx. Turns out the app is built with Flutter, which is a bit of a problem for reverse engineering. Flutter compiles Dart source code into native ARM64 machine code — you can’t just read it back like normal Java Android apps. The actual business logic lives in a 9MB binary blob. But even compiled binaries have strings in them. Error messages, URLs, debug logs. Claude ran strings on the binary and this was the most productive step of the whole session. Among the thousands of lines of Flutter framework noise, it found: Hardcoded credentials for the company’s message broker (shared by every copy of the app) Cloud API endpoints All fifteen command builder function names (e.g. to set vibration, heating, electric stimulation, etc.) Protocol debug messages that revealed the packet structure — header, direction byte, command type, payload, footer We had the shape of the protocol. Still didn’t have the actual byte values though. Claude then used blutter , a tool specifically for decompiling Flutter’s compiled Dart snapshots. It reconstructs the functions with readable annotations. Claude figured out the encoding, and just read off every command byte from every function. Fifteen commands, fully mapped. It works Claude sent a six-byte query packet. The device came back with 153 bytes — model number, firmware version, serial number, all eight sensor channel configurations (EEG at 250Hz, respiration, 3-axis accelerometer, 3-axis gyroscope). Battery at 83%. Vibration control worked. Heating worked. EMS worked. Music worked. Claude built me a little web dashboard with sliders for everything. I was pretty happy with it. That could have been the end of the story. The server Remember the hardcoded credentials from earl

Source: Hacker News | Original Link

Show HN: Sameshi – a ~1200 Elo chess engine that fits within 2KB

GitHub – datavorous/sameshi: a ~1200 Elo chess engine that fits within 2KB 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 datavorous / sameshi Public Notifications You must be signed in to change notification settings Fork 0 Star 63 a ~1200 Elo chess engine that fits within 2KB 63 stars 0 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings datavorous/sameshi master Branches Tags Go to file Code Open more actions menu Folders and files Name Name Last commit message Last commit date Latest commit History 14 Commits 14 Commits .gitignore .gitignore Makefile Makefile README.md README.md main.c main.c sameshi.h sameshi.h View all files Repository files navigation sameshi Watch Demo Video A minimal chess engine supporting a constrained subset of the game. sameshi.h : 1.95 KB core 120 cell mailbox board negamax search alpha beta pruning material only eval capture first move ordering full legal move validation (check / mate / stalemate) Note not implemented: castling, en passant, promotion, repetition, 50-move rule. strength ~1170 Elo (95% CI: 1110-1225) 240 games vs stockfish (1320-1600 levels) fixed depth 5, constrained rules, max 60 plies. About a ~1200 Elo chess engine that fits within 2KB Topics chess-engine chess demoscene Resources Readme Uh oh! There was an error while loading. Please reload this page . Activity Stars 63 stars Watchers 0 watching Forks 0 forks Report repository Languages C 93.5% Makefile 6.5% You can’t perform that action at this time.

Source: Hacker News | Original Link