News for hackers. Stuff that matters.

lqs_

Show HN: A Linux clone in TypeScript, hidden in an IDE for kids

https://akicode.com/en

akicode is a coding app for kids that runs and single-steps Python and C++ entirely in your browser. No server or account needed.Underneath is a Linux clone written in TypeScript, and real Linux programs run on it unmodified, including gdb behind the Debug button.Just for fun, you can also open the Linux terminal: xeyes and xcalc open real X11 windows, and there is even a...

( Read More... | no comments | on HN )
I'm working on something similar: https://akicode.com

Python and C++ both run in the browser, with a single-step debugger. Python has turtle and matplotlib (both interactive, not static images), and C++ has full STL. There's also a Linux terminal with redis-server/redis-cli built in, all running locally in your tab, not on a remote VM.

It's free and needs no sign-up, so give it a try.

Agreed, ND proxy shouldn't be normalized. But the hack is the same whether it's automated or not; the difference is whether users get working IPv6 or give up because it's too hard to set up. The latter is worse: if users give up on IPv6, ISPs may conclude they needn't provide IPv6 at all, let alone delegated prefixes. I'm thinking of logging a warning whenever the fallback kicks in, suggesting users ask their ISP for PD.

You're right about RFC 7278, I misread it. It only describes a routed setup, moving the /64 to the LAN. So on point-to-point WANs I'll do exactly that, and use ND proxy only when the /64 is on-link on a broadcast WAN.

Things are improving, though. In Japan, NTT's newer 10G service delegates a /56 by default; only the older 1G service without a phone subscription is stuck with a single /64.

Fixed. It now runs correctly and the Shift key works.
Right now, the file system and the registry are virtual. They are stored in the browser using IndexedDB. When a program reads or writes files or registry data, it goes to this virtual storage, not the real system.

For performance, the CPU is fully emulated in plain TypeScript. It does not use WASM or JIT yet. It is still fast enough to run simple programs from about 30 years ago. In the future, JIT optimization may be added to improve speed.

100% written by Claude Code.
It is fixed and fully playable now! Board rendering, mouse input, and the About dialog all work.
DOS interrupt support is still limited. Running SHELL would essentially require implementing a full MS-DOS COMMAND.COM, which is a significant undertaking.
I actually contributed to retrowin32 to get Solitaire running there. Back then the only AI tool available was Copilot, and it took me several days just to get the main window showing, without menus or dialogs.

The current state of RetroTick was achieved in less than one hour using Claude Code.

Hidden feature: right-click any executable and select "View Resources" to browse its embedded resources like icons, bitmaps, dialogs, and version info. It even supports viewing Delphi forms (though Delphi programs can't actually run yet). Think of it as a browser-based Resource Hacker or eXeScope.
Ha — even the README itself was written by AI, including that very sentence. Funny times indeed.
RetroTick's CPU emulation is actually slower than JIT-based emulators. It feels fast because the Win32 API calls are native JavaScript, not emulated system calls.
Win16 GDI support is still pretty incomplete. There's a lot of work left to do there.
The missing colors are likely due to some texture bugs in the OpenGL implementation. As for URL-based launching, that's definitely on the roadmap, but I want to reach broader EXE compatibility first.
Sim Theme Park is probably too modern and complex for the current state of RetroTick, unfortunately.
Thanks! I'm actually familiar with retrowin32. I even contributed a few commits to get Solitaire running in it. But Rust has a steep learning curve for me.
Notepad from Windows 2000 should launch now, though it's rendered as a simple textarea without full functionality. The file system API still needs a lot of work.
Just added keyboard shortcut support. Ctrl+Shift+F10 should work now!