Projects

2024

A multilingual spellchecker for Zim Desktop Wiki

A simple plug-in developed with Enchant to spell-check multilingual documents.

2023

Cransformer—cracking ciphers with Transformer

A deep learning experiment performed with PyTorch to crack historic substitution ciphers, including the world-famous Enigma.

Finalyse—a daily stock prices analysis system

An automated system that analyses the daily stock prices of 400+ companies listed on NYSE and Nasdaq, with a dashboard that displays and visualises the results.

The system fetches raw data from an API on a daily basis, and then performs a wide range of computation, including Pearson's R, moving averages, RSI, VaR, etc. It then stores computed data inside a MariaDB database. This part runs only once a day, managed by a systemd timer. The web server is implemented with Flask, consisting of a series of APIs that serve the front-end with data fetched from the database, which is a React app. The front-end is also responsible for visualising the data, using Plotly. The Flask part runs continuously behind an Apache reverse proxy, which also serves the web app.

Code and demo available on request.

SilverDict—a Web-based Alternative to GoldenDict

An open-source, cross-platform, scalable, extensible and feature-rich tool that allows users to consult electronic dictionaries in DSL, StarDict, and MDict formats. The tool includes a Python back-end, a React front-end, and a React Native mobile app, as well as associated Python modules coded in C++.

The back-end is implemented with the Flask framework, the core part being a custom Flask extension that acts as a universal dictionary shell and converts raw dictionary texts into uniformly-formatted HTML. Specialised modules are employed to deal with each format, and the ones for DSL and XDXF-formatted StarDict are written in C++ for performance reasons. Additionally, it could also perform morphological analysis and full-text search, aided by Hunspell and Xapian respectively. For the former, a specialised Python module is developed in C++, linking to libhunspell. Secondary functionalities also include diacritic-free transliteration for Greek and Arabic, as well as conversion between Simplified and Traditional Chinese.

The web UI is developed with the MUI component library, featuring a modern, sleek, and polished look and feel, in addition to a responsive, intuitive design. The React Native app shares much code with the web UI, and is only available for Android.

A rather slow demo is hosted on Python Anywhere.

2022

Padeniye—a Tetris clone with a powerful AI

This Tetris clone developed with SFML was perhaps crudely made in terms of UI and coding style, but its AI could beat that of KDE's clone by a very large margin. The AI merely calculates the best position and rotation for the current piece with a simple heuristic, without looking ahead, and then drops it.