Fight for freedom. End in prison.

  • Switch ROM Format: XCI vs NSP

    Switch ROM Format: XCI vs NSP

    XCI files are dumped from physical Switch cartridges. Some top-selling Switch games, like BOTW and TOTK, are only available as cartridges. So you probably find XCI ROMs of these games. NSP files are extracted from Nintendo eShop downloads. Since cartridges usually cannot be updated, all updates and DLCs are in NSP format. Most indie games…

    Continue reading…

  • Fix Tomb Raider Crash on Linux

    Fix Tomb Raider Crash on Linux

    The latest Tomb Raider titles (Tomb Raider, Raise of the Tomb Raider, Shadow of the Tomb Raider) can crash on latest Linux distros. The reason is that nowadays, pipewire replaced pulseaudio as the default audio back-end. Install pulseaudio Tomb Raider games were ported to Linux when pipewire isn’t a thing yet. So they rely on…

    Continue reading…

  • Front-end Build Tools in 2023

    The Standard When we say a front-end build tool, we mean: Ready for production When we say a build tool is ready for production, we mean: Vite 4 Vite 4 is based on esbuild (written in Go) and Rollup. It adopts un-bundled dev server for faster HMR and bundled dependencies for faster cold booting. Vite…

    Continue reading…

  • Work As Front-end Developer In Finland

    Work As Front-end Developer In Finland

    This is only my own story. I hope you find something helpful. But be aware the information can be out-dated and a little subjective.

    Continue reading…

  • position: fix not working? Check transform

    In CSS, many position/layout properties are context-aware. For example, position: absolute; only works if the desired parent has position: related/absolute/fixed;. However, position: fixed; is very simple. It is always related to window, barely affected by parent container. But, I stuck in this small issue: transform:scale(1); position:fixed; right:10px; bottom:10px; This is strange, I have position: fixed;…

    Continue reading…

  • Integrate Crowdin To RetroArch

    RetroArch project uses *.h files to store translation strings. Here aren’t any tools to make the translation process easier. When source strings changed, you have to manually review the changes, locate and update translation strings. It is a hard work. As a big fan of RetroArch, I was thinking if it can be improved with…

    Continue reading…

  • HTML vs. JavaScript Input Validation

    If you want to validate a form input and so it only accepts integers, here is an easy way in HTML5: However, users can still type something invalid: In Firefox, you can basically type anything, like “fsielfs”. In Chrome, you can type numbers with dots, like “1..2.2.2”.

    Continue reading…

  • Create React WebExtension for Firefox and Chrome

    Create React WebExtension for Firefox and Chrome

    We will create a React app and turn it into a Firefox/Chrome extension.

    Continue reading…

  • Code Journey #11

    Highlights for the last month: HiDPI bug fixes and emulator packaging. KDE: Kompare HiDPI [patch] Filelight HiDPI [patch] KSysGuard HiDPI, except the sensor graphy [patch] Font manager HiDPI [patch] enablefont and disablefont icon for font manager [patch] KWallet HiDPI [patch] KWin HiDPI [patch] Krita splash screen HiDPI [patch] Kate/KonsolePart dual screen rendering issue [bug] [patch]…

    Continue reading…

  • openSUSE Conference 2019 @Nuremberg

    Participating openSUSE Conference is one of my dream. I always cannot find a time to do it until I made my mind to leave all other stuff. Thank my company for sponsoring my flight. I have visited Munich for many times. It is familiar place but the memory is so far and mixed with smiles…

    Continue reading…

有任何预订建议吗?