Full-Stack Software Engineer @Microsoft · Self-Motivated Code Artist

Suzhou, China
Joined April 2022
好可爱的 ena 和 knd🥰
comission ena冲榜加油 画走好甜
2
40
22,471
最近会在一项工作上换着模型用,比如 5.6 Sol / 6.1 Sol / 6 Luna / DeepSeek V4.1 Flash 等,于是经常在 review 的时候想破口大骂这是哪个模型写的? 我需要一个 `codex blame`(
14
1
135
13,400
We have Omarchy running natively on my AYN Odin 2 Portal, and all the work is public! Nothing held back, PRs welcome, or take it and make it your own. 🎮🐧 Booting from internal UFS storage. Android userspace removed. No VM, no Android dual boot, and no microSD card involved in the installation. The project is omarchy-mobile-odin2 (github.com/TechLuddite/omarc…). Before the details: huge credit to @dhh (xitter.cf/dhh) and the Omarchy contributors, @simonschubert (xitter.cf/simonschubert) for omarchy-mobile/moarchy and the mobile keyboard, and the ROCKNIX and Pocknix communities for the handheld Linux work this builds on. Their work made this possible. Credits are right near the top of the README because they belong there. The goal is a usable Omarchy handheld: a native desktop, touch controls, configurable gamepad shortcuts, a game library, and eventually the wider Odin hardware working properly. This has been a hands-on, AI-assisted bring-up. I’m working with Codex, applying the evidence-and-verification approach from my SeeFix project: inspect the actual device, save the logs, check the hashes, use the camera when software access disappears, and distinguish a device that enumerates from hardware that actually works. We started with USB, the hardware buttons, and recovery/bootloader access. No SD card to take the usual removable-media route. Before replacing anything, we used Qualcomm EDL to capture the original base system, boot firmware and platform/calibration data. This is a base backup, rather than a clone of personal userdata. Seven image extents totaling 11.57 GiB, compressed to about 2.7 GiB; SHA256 checks, both GPT copies across all six UFS LUNs, 115 partition entries, and independent rereads of both ABL partitions and persist all passed. Restoration itself is still untested. Then came a Portal-specific Linux RAM bootstrap, USB networking and SSH, followed by the native Arch Linux ARM/Omarchy filesystem. We replaced Android userdata with a 512 MiB FAT32 boot volume and an ext4 root, preserving the preceding firmware/calibration partition entries. The former Android super partition became a read-only recovery filesystem with a second verified base-backup copy and native recovery images. The off-device backup remains the primary copy. The installed stack uses pinned Omarchy 4.0.3, Simon’s mobile adaptations, the ROCKNIX Portal kernel/device tree/modules/firmware, and ROCKNIX ABL 1.1.8. Host-side build tooling uses Docker/QEMU; the handheld itself boots its own Linux kernel and runs the ARM userspace directly. Getting a desktop on screen was only the beginning. The bootloader menu offered USB, SD and Auto, rather than the “Internal” option described elsewhere. Auto worked, but we also had to explicitly select AYN Odin 2 Portal in the loader’s device-model menu. Otherwise: “device model not set.” The screen initially came up upside down. Correcting display rotation still left touchscreen gestures rotated: a sideways swipe opened a panel that should respond to a vertical swipe. Matching the touchscreen transform to the display fixed that. The on-screen keyboard opens and dismisses, and I joined Wi-Fi directly from the handheld. A Qt 6.12 Color-name collision also made the pinned mobile shell’s bar disappear. A compatibility adjustment restored its colors, clock, network and battery indicators. Graphics are native too: EGL reports Freedreno FD740 and Vulkan reports Turnip Adreno 740. The panel is running at 120 Hz, rotated to landscape. Actual hardware rendering on the Portal. One of the biggest usability lessons was the gamepad mapper. A “press the keyboard shortcut you want” workflow is awkward when the device has no physical keyboard. So we adapted @pinku1 (xitter.cf/pinku1)’s Controller Control into a touch-focused Omarchy Gamepad Mapping fork: record a button or combo, pick an action from the live Omarchy shortcut catalog, then save. With more than 200 actions, that picker quickly needed search too. The mapper passes 52 tests on the ARM handheld, including 44 upstream tests. Home is assigned to Terminal. Rear paddles and the broader physical-controller checklist still need verification. The fork is public and linked from the main repo: omarchy-gamepad-mapping (github.com/TechLuddite/omarc…) @btsouth (xitter.cf/btsouth)’s Omakade 1.16.1 is also installed from the signed ARM64 repository and opens in the native Wayland desktop. Its optional guide overlay needs compatibility work with our pinned shell, so that part is disabled. Launching games is still a separate acceptance step. We also hit a serious boot-recovery hurdle after changes to the redundant boot chain. A microphone experiment’s reboot exposed it, but the loader rejected the unchanged, previously working boot image too. That mattered: the failure couldn’t simply be attributed to the new microphone routes. Stock slot-A AVB metadata still described the Android system we had removed. Replacing it with reviewed native metadata for the unlocked loader restored image acceptance. Then we hit a bug in our own recovery-image builder: FAT formatting on a host file defaulted to 512-byte sectors, while the Portal’s UFS exposes 4096-byte logical sectors. Linux refused to mount /boot. We recovered through the saved RAM bootstrap, read the installed journal, rebuilt the FAT image with 4096-byte sectors, and verified the full device readback after repair. Normal internal boot now reaches the desktop again. /boot mounts, Hyprland and the mobile shell run, USB SSH works, and systemd reports no failed services. Upstream qbootctl marked the verified slot A boot successful; both GPT copies across all six LUNs passed the follow-up checks, with only the expected success flags and checksums changed. We’ve also configured persistent, key-only user and root SSH over Wi-Fi, with local hostname discovery. Both logins passed while USB networking was disconnected in software, and root file-transfer round trips passed. Development and maintenance no longer depend on keeping the USB cable attached. The microphone is the main unresolved hardware problem. @peteonrails (xitter.cf/peteonrails)’ native ARM64 Voxtype build is installed, its release signature was verified, and a known speech file transcribes correctly in both the CLI and our touch-operated Microphone Check app. Live internal-microphone tests still produce no usable words. The strongest lead is the WCD codec’s digital-microphone routing over SoundWire. We have experimental device-tree/UCM work to investigate, but it is rolled back from the current working configuration. Back → dictation waits until actual voice capture passes. Noise processing can come afterward; first we need a working input signal. Cold power-cycle acceptance, alternate-slot recovery, audible speaker/headphone tests, Bluetooth pairing, USB peripherals, paddles, haptics, fan/LED behavior and real suspend/wake still need work. This is a documented bring-up checkpoint. The installation tooling is specific to the captured Portal layout. More shout-outs to the people and projects behind the README: @viperbjk (xitter.cf/viperbjk) for EDL tooling; @armbian (xitter.cf/armbian), Armada and the Renegade Project for related native Odin installation work; Caleb Connolly, linux-msm, @linuxfoundation (xitter.cf/linuxfoundation), @linaroorg (xitter.cf/linaroorg) and @collabora (xitter.cf/collabora) for Qualcomm boot/recovery work and guidance; AOSP for AVB tooling; @lcMenci (xitter.cf/lcMenci), @docker (xitter.cf/docker) and QEMU for the ARM build foundations. @Ayn_Loki (xitter.cf/Ayn_Loki) and the AYN UCM contributors, Teguh Sobirin, Philippe Simons and Luke Johnson for board, input and audio work. ROCKNIX and Shuuri Labs/Pocknix deserve another mention here too. And the foundations underneath all of it: Arch Linux ARM, Linux/V4L2, Mesa/Freedreno/Turnip, ALSA, @PipeWireP (xitter.cf/PipeWireP) and WirePlumber, @hyprwm (xitter.cf/hyprwm), @outfoxxedd (xitter.cf/outfoxxedd) and Quickshell, @qtproject (xitter.cf/qtproject), @GTKtoolkit (xitter.cf/GTKtoolkit)/PyGObject, @FFmpeg (xitter.cf/FFmpeg), BusyBox, OpenSSH, NetworkManager, Avahi, dosfstools and mtools. The main repo keeps the source revisions, original notices, installation/recovery tools, hardware checklist, failures and remaining gaps together. The mapper has its own fork and credits. Device images, credentials and raw captures stay private. I wanted Omarchy on the handheld I already own. Now it boots natively, the desktop is usable by touch, and we have a recovery record to build from. Next: work through the hardware, one verified result at a time. #Omarchy #Linux #AYNOdin2 #OpenSource
7
2
3
28
3,922
Menci 💖 retweeted
commission 感谢委托——!
2
206
1
1,378
8,908
menci 正在乘坐地铁「滨海快线」前往机场 请问 menci 要去机场的名字是?
14
52
5,260
MCP 是个客户端到服务端的协议,客户端运行在用户电脑上,也就是说你想声明自己是什么客户端就可以声明自己是什么客户端,老一辈工程师个个都会 Mozilla/5.0,现在的人连抄客户端都不会抄了吗…
Replying to @dsp_
Hey David, Gayani here from Figma. You're right that our remote MCP server only accepts clients on our supported list, and Pi isn't on it yet. You can see the current list in our MCP catalog at figma.com/mcp-catalog. If you'd like Pi considered for a future addition, please fill out this form: forms.gle/qSvUawwznWyoj8Go7.
8
1
56
11,334
因为 Telegram 的 GitHubBot 不能忽略非主线分支的 push 事件,所以我写了一个通用的 webhook filter 服务部署到 Workers 上来解决这个问题。它可以接受来自白名单 repo 的 webhook 事件,使用任意 JSONata 表达式过滤后,原样转发到原本的目标地址。 Made By Human github.com/Menci/webhook-fil…
19
1,207
无内鬼,来点 -ffast-math
在传统的 IEEE 754 标准下,由于浮点数加法不具备严格的结合律,编译器在优化时无法重新排序运算顺序,这曾导致 Rust 在处理简单的点积运算时,性能速度是 C++ 的八分之一。 ——— 好像还真是这么回事😅但是你不提出来我都没注意这回事
16
32
4,260
作为罗技老用户,支持开源!
OpenLogi has reached 10k stars in GitHub, thank you all
1
1
18
2,642
已加入时间线屏蔽词: deepseek harness dsh
6
1
75
4,832
今日说梦话
66
1
74
5,015
🤖 Made with AI
Unit tests: Passed ✅ | Integration tests: ⚡️💥
4
52
1
1,323
207,270
vibe coding 了几个月之后打字速度越来越快了
53
2
78
6,372
I love dynamic workflow
12
1,831
感觉现在的 agents 不稳定的一个原因是,对抗性不够强 比如,/goal 这种 stop hook 应该默认有才对——何时都应该有一个对抗者去告诉 agent 现在该不该停下 比如,每个 tool 都应该能 opt-in 一个「复核」的功能,不是 auto mode 这样管安全性,而是由对抗者根据规则指示 challenge 这个命令是否符合要求
40
1
31
4,761
Opus 5 在没有 /goal 的情况下几乎无法工作 (无论如何 prompt,它都会很容易出现「本轮已完成 XXXXX 接下来应该 YYYYY」停下来,或者干脆什么把要做的说出来但什么都不做,的情况) 有人遇到过类似的问题吗
9
1
19
4,621
:应该建一个网站叫 SlopHub 专门收录各种 AI slop 项目 我:那这个网站收录的第一个项目是不是就是它自己?
26
43
5,074
Menci 💖 retweeted
经常听到有人说, “我们人太少了,所以来不及 xxx,赶紧上吧” “太 rush 了,别 xxx 了,直接上” “我们是小公司,没必要那么讲究,直接上” 但我的理解恰恰相反,分享一个小故事 大一的时候,高级程序设计的老师推荐我们买显示器,然后说“如果你比较有钱,那就买二手的;如果你没钱,你就买全新的”,这与大家常规理解有点相反 老师说:“显示器坏掉的话,维修成本非常高。 如果你有钱,你买二手的,坏了就再买一个,你可以用自己的钱去承担这个风险; 如果你没钱,那你是承担不起这个维修风险的,那就买全新的,多花钱,用官方保修来替你承担这个风险” 我觉得这是那节课我学到最有意思的东西。 所以我在读书的时候,没啥钱,所有 apple 设备都会买 ac+,因为我承担不起我主力设备坏掉的风险。🤣而且学生党时间多,稍微有点问题都能去骚扰天才吧去修。(而且遇到过,屏幕连续三次出了问题,直接给我从 2016mbp,换新成 2019mbp。可惜当时 mbp 性能太差了,三年没啥提升) 现在自己有工资了,所有设备就不买 ac+ 了,自己能承担坏掉的风险,并且也没多少时间去大老远跑去维修 扯远了,回到最初的问题。 如果时间宽裕,或者团队大/资源多,是完全可以不验证上一些事情的,因为输得起。就像很多公司会内部赛马,或者上很多实验性项目。 但如果时间急迫,团队小/资源少,反而应该挤出一点时间去做验证,至少跑通 happy path。因为输不起,对很多小公司来说,一次重金投入的实验失败,基本等于倒闭 类似的 meta idea 在生活中用到的地方很多 - 我 出国/租车 基本都会买保险。同样是因为我不算有钱,我需要用保险替我承担风险 - 有钱人的豪车反而不会买保险。因为豪车太多且豪车保险贵,有钱人完全可以用自己的资金去承担风险。
95
46
15
525
55,457
Fable 5 一定是酸的
1
11
1,359