MagicLen Me

Xin-Rong Li

(Ron Li)

Born in 1993, I have been learning programming languages since 2008 and have expertise in developing websites, web services, specialized tools and Android applications. Moreover, I have become a heavy GNU/Linux user these days. In 2014, I established magiclen.org to share my knowledge and experience, and have written more than a thousand of articles related to various subjects.


Expe­rience

Webmaster of magiclen.org

magiclen.org
2014 – Present

Substitute Military Service at Taiwan Taoyuan International Airport

Aviation Police Bureau Security Agent
2015 – 2016

Webmaster of it-easy.tw

it-easy.tw
2008 – 2012

Education

National Taiwan University of Science and Technology

Bachelor's Degree, Computer Science & Information Engineering

Overall GPA is 3.89 / 4.00.

2011 – 2015

National Taichung Industrial High School

Department Of Computer Science
2008 – 2011

Certifi­cations

TOEIC 860 (L: 445, R: 415)

Educational Testing Service (ETS)

19015127

2019

LPIC-2

Linux Professional Institute (LPI)

msa48y42xg

Validate

Open Image

2019

Oracle Certified Professional, Java SE 8 Programmer

Oracle

227127085OCPJSE8

Validate

Open Image

2016

Oracle Certified Associate, Java SE 8 Programmer

Oracle

227127085OCAJSE8

Validate

Open Image

2016

LPIC-1

Linux Professional Institute (LPI)

3fyc8948ab

Validate

Open Image

2016

ITE Linux System Operation IT Expert

Computer Skills Foundation (CSF)

321160300000030

2016

TQC+ Java Programming Expert

Computer Skills Foundation (CSF)

111140600000

2014

Level B Technician for Computer Hardware Fabrication

Skill Evaluation Center of Workforce Development Agency

120-021063

2011

Level C Technician for Computer Hardware Fabrication

Skill Evaluation Center of Workforce Development Agency

120-173814

2010

GEPT (General English Proficiency Test) Elementary

The Language Training & Testing Center (LTTC)

E476009

2010

Level C Technician for Web Page Design

Skill Evaluation Center of Workforce Development Agency

173-103670

2009

Skills

Programming Languages
  • Experienced with: Rust, JavaScript
  • Familiar with: Java, C, PHP, Golang, Bash
Operating Systems
  • GNU/Linux, Android
Web Frameworks & Libraries & Packages
  • PHP: WordPress, phpBB
  • Node.js: Webpack, TypeScript, Express
  • Rust: Rocket
  • Golang: Echo
  • Front-end websites: jQuery, Bootstrap, Vue.js, Pug, Handlebars, Tera, Stylus, Sass
  • Web Servers: Nginx, Apache httpd
Databases
  • SQL: MySQL, SQLite
  • NoSQL: MongoDB, Redis
Natural Languages
  • Mandarin (native)
  • English (intermediate)
Other Skills
  • Computer hardware fabrication
  • Basic circuit design

Interests

  • Recitation of Chinese poems
  • Writing
  • Photographing
  • Jogging
  • Mountain climbing

Active Projects

unicode-blocks
Rust
This crate contains a list of all unicode blocks and provides some functions to search across them.

View The Article

2020
same-content
Rust
Determine whether data from different sources are the same.

View The Article

2020
paginator
Rust
This crate is used for generating pagination bar.

View The Article

2020
sorted-insert
Rust
This crate provides traits to insert elements to a sorted collection and keep the order.

View The Article

2020
html-auto-p
Rust
This library provides a function like wpautop in Wordpress. It uses a group of regex replaces used to identify text formatted with newlines and replace double line-breaks with HTML paragraph tags.

View The Article

2020
rocket-jwt-authorization
Rust
This crate provides a procedural macro to create request guards used for authorization.

View The Article

2020
html-escape
Rust
This library is for encoding/escaping special characters in HTML and decoding/unescaping HTML entities as well.

View The Article

2020
utf8-width
Rust
To determine the width of a UTF-8 character by providing its first byte.

View The Article

2020
random-number
Rust
Generate random numbers quickly.

View The Article

2020
lrc
Rust
A pure Rust implementation of LyRiCs which is a computer file format that synchronizes song lyrics with an audio file.

View The Article

2020
execute
Rust
This library is used for extending Command in order to execute programs more easily.

View The Article

2020
trim-in-place
Rust
This crate is used for extending String in order to do in-place trimming.

View The Article

2020
Nginx Cache Purge
Rust
An alternative way to do proxy_cache_purge or fastcgi_cache_purge for Nginx.

View The Article

2020
mprober-lib
Rust
This crate aims to quickly collect Linux system information including hostname, kernel version, uptime, RTC time, load average, CPU, memory, network interfaces, block devices and processes.

View The Article

2020
concat-with
Rust
While the concat! macro in std is useful to create a static string slice (&'static str) from literals, it cannot set a separator for those. This crate therefore provides another concat! macro to deal with that situation.

View The Article

2020
html-outliner
Rust
Outline HTML documents for better SEO.

View The Article

2020
Image Resizer
Rust
It helps you resize or just shrink images and sharpen them appropriately.

View The Article

2020
rocket-recaptcha-v3
Rust
This crate can help you use reCAPTCHA v3 (v2 is backward compatible) in your Rocket web application.

View The Article

2019
user-agent-parser
Rust
A parser to get the product, OS, device, cpu, and engine information from a user agent, inspired by https://github.com/faisalman/ua-parser-js and https://github.com/ua-parser/uap-core

View The Article

2019
educe
Rust
This crate provides procedural macros to help you implement Rust-built-in traits quickly.

View The Article

2019
debug-helper
Rust
This crate provides declarative macros to help you implement the Debug trait manually.

View The Article

2019
benchmarking
Rust
This crate can be used to execute something and measure the execution time. It does not output anything to screens and filesystems.

View The Article

2019
Favicon Generator
Rust
It helps you generate favicons with different formats and sizes.

View The Article

2019
rc-u8-reader
Rust
This crate provides RcU8Reader, RcRefCellU8Reader, ArcU8Reader and ArcMutexU8Reader structures to wrap Rc<T>, Rc<RefCell<T>>, Arc<T> and Arc<Mutex<T>> respectively where T is implemented AsRef<u8> in order to let them have the Read trait.

View The Article

2019
rocket-include-tera
Rust
This is a crate which provides macros tera_resources_initialize! and tera_response! to statically include Tera files from your Rust project and make them be the HTTP response sources quickly.

View The Article

2019
M Prober
Rust
JS
This program aims to collect Linux system information including hostname, kernel version, uptime, RTC time, load average, CPU, memory, network interfaces, block devices and processes. It can be used not only as a normal CLI tool, but also a web application with a front-end webpage and useful HTTP APIs.

View The Article

2019
rocket-simple-authorization
Rust
This crate provides a request guard builder used for authorization.

View The Article

2019
Image Interlacer
Rust
It helps you interlace an image or multiple images for web-page usage.

View The Article

2019
str-utils
Rust
This crate provides some traits to extend types which implement AsRef<[u8]> or AsRef<str>

View The Article

2019
cidr-utils
Rust
This crate provides data structures and functions to deal with IPv4 CIDRs and IPv6 CIDRs.

View The Article

2019
boyer-moore-magiclen
Rust
This crate can be used to search substrings in a string or search any sub-sequences in any sequence by using boyer-moore-magiclen (which is sometimes faster than boyer-moore and boyer-moore-horspool).

View The Article

2019
scanner-rust
Rust
This crate provides Java-like Scanners which can parse primitive types and strings using UTF-8 or ASCII.

View The Article

2019
bulls-and-cows
Rust
This crate provides a framework for building bulls-and-cows games (1A2B) for any data type and any stages.

View The Article

2019
zbar-rust
Rust
High-level and low-level ZBar binding for the Rust language.

View The Article

2018
XCompress
Rust
XCompress is a free file archiver utility on Linux, providing multi-format archiving to and extracting from ZIP, Z, GZIP, BZIP2, LZ, XZ, LZMA, 7ZIP, TAR, RAR and ZSTD.

View The Article

2018
whois-rust
Rust
This is a WHOIS client library for Rust, inspired by https://github.com/hjr265/node-whois

View The Article

2018
vcard
Rust
A pure Rust implementation of vCard based on RFC 6350.

View The Article

2018
validators
Rust
This is a library for validating and modeling user input.

View The Article

2018
url-prefix
Rust
This crate can be used to create URL prefix strings by inputting a protocol, a domain, a port number and a path without additional parsing.

View The Article

2018
tw2s
Rust
A simple tool for converting Traditional Chinese(TW) to Simple Chinese.

View The Article

2018
synchronized-writer
Rust
A tiny implement for synchronously writing data.

View The Article

2018
slash-formatter
Rust
This crate provides functions to deal with slashes and backslashes in strings.

View The Article

2018
Simple SSL with ACME and CloudFlare
Rust
Simple SSL with ACME and CloudFlare is a tool to simply apply SSL certificates by using OpenSSL and ACME via CloudFlare DNS.

View The Article

2018
ShortCrypt
Rust
JS
ShortCrypt is a very simple encryption library, which aims to encrypt any data into something random at first glance. Even if these data are similar, the ciphers are still pretty different. The most important thing is that a cipher is only 4 bits larger than its plaintext so that it is suitable for data used in an URL or a QR Code. Besides these, it is also an ideal candidate for serial number generation.

View The Article

2018
s2tw
Rust
A simple tool for converting Simple Chinese to Traditional Chinese(TW).

View The Article

2018
rocket-raw-response
Rust
This crate provides a response struct used for responding raw data.

View The Article

2018
rocket-multipart-form-data
Rust
This crate provides a multipart parser for the Rocket framework.

View The Article

2018
rocket-mongo-file-center-raw-response
Rust
This crate provides a response struct used for responding raw data from from the File Center on MongoDB with Etag cache.

View The Article

2018
rocket-mongo-file-center-download-response
Rust
This crate provides a response struct used for client downloading from the File Center on MongoDB.

View The Article

2018
rocket-json-response
Rust
This is a crate which provides JSONResponse and JSONResponseWithoutData structs to response JSON format data with an additional code integer value.

View The Article

2018
rocket-include-static-resources
Rust
This is a crate which provides macros static_resources_initialize! and static_response! to statically include files from your Rust project and make them be the HTTP response sources quickly.

View The Article

2018
rocket-include-handlebars
Rust
This is a crate which provides macros handlebars_resources_initialize! and handlebars_response! to statically include HBS (Handlebars) files from your Rust project and make them be the HTTP response sources quickly.

View The Article

2018
rocket-etag-if-none-match
Rust
This crate provides a request guard used for getting if-none-match header.

View The Article

2018
rocket-etagged-raw-response
Rust
This crate provides a response struct used for responding raw data with Etag cache.

View The Article

2018
rocket-download-response
Rust
This crate provides a response struct used for client downloading.

View The Article

2018
rocket-client-addr
Rust
This crate provides two request guards used for getting an IP address from a client.

View The Article

2018
rocket-cache-response
Rust
This crate provides a response struct used for HTTP cache control.

View The Article

2018
rocket-accept-language
Rust
This crate provides a request guard used for getting the accept-language header.

View The Article

2018
rc-writer
Rust
A tiny implement for writing data to a reference counted instance.

View The Article

2018
random-pick
Rust
Pick an element or elements from a slice or slices randomly by given weights.

View The Article

2018
qrcode-generator
Rust
This crate provides functions to generate QR Code matrices and images in RAW, PNG and SVG formats.

View The Article

2018
pipe-logger-lib
Rust
A library for storing, rotating, compressing process logs.

View The Article

2018
Pipe Logger
Rust
A tool for storing, rotating, compressing process logs.

View The Article

2018
path-dedot
Rust
This is a library for extending Path and PathBuf in order to parse the path which contains dots.

View The Article

2018
path-absolutize
Rust
This is a library for extending Path and PathBuf in order to get an absolute path and remove the containing dots.

View The Article

2018
passwords
Rust
This crate provides useful tools to generate multiple readable passwords, as well as analyze and score them.

View The Article

2018
opencc-rust
Rust
Open Chinese Convert (OpenCC) binding for the Rust language for conversion between Traditional Chinese and Simplified Chinese.

View The Article

2018
number-as
Rust
Extend primitive number types to make them have a number_as method.

View The Article

2018
mongo-file-center
Rust
This crate aims to build an easy-to-use and no-redundant file storage based on MongoDB.

View The Article

2018
Markdown to HTML Converter
Rust
Markdown to HTML Converter is a free tool for converting a Markdown file to a single HTML file with built-in CSS and JS.

View The Article

2018
map-to-javascript-html
Rust
This is a library for serializing a map to JavaScript code in HTML, usually for dynamically generating strings on web pages.

View The Article

2018
leveled-hash-map
Rust
LeveledHashMap is a structure to separate values into different levels with keys. Every key-value entry which is not at the top level has a parent key at the superior level. Keys at the same level are unique, no matter what parent keys they have.

View The Article

2018
lazy-static-include
Rust

This crate provides lazy_static_include_bytes and lazy_static_include_str macros to replace include_bytes and include_str macros.

lazy_static_include_bytes and lazy_static_include_str macros include data from files into the compiled executable binary file only when you are using the release profile. Be careful when you distribute your program.

View The Article

2018
json-gettext
Rust
This is a library for getting text from JSON usually for internationalization.

View The Article

2018
image-convert
Rust
This crate is a high level library using MagickWand (ImageMagick) for image identification, conversion, interlacing and high quality resizing.

View The Article

2018
html-minifier
Rust
This library can help you generate and minify your HTML code at the same time. It also supports to minify JS and CSS in <style>, <script> elements, and ignores the minification of <pre>, <code> and <textarea> elements.

View The Article

2018
FFmpeg Screen Recorder
Rust
This program is a gadget which helps you use FFmpeg to record your screen on Linux. The video record can be saved as a file, or be streamed via RTMP.

View The Article

2018
enum-ordinalize
Rust
This crates provides a procedural macro to let enums not only get its variants' ordinal but also be constructed from an ordinal.

View The Article

2018
easy-http-request
Rust
Easy to send HTTP/HTTPS requests.

View The Article

2018
crc-any
Rust
To compute CRC values by providing the length of bits, expression, reflection, an initial value and a final xor value. It has many built-in CRC functions.

View The Article

2018
chinese-number
Rust
Convert primitive numbers to Chinese numbers, or parse Chinese numbers to primitive numbers.

View The Article

2018
chinese-lunisolar-calendar
Rust
This library allows you to convert a date between the Lunisolar Calendar and the Solar Calendar, and to compute the weight of Ba Zi(八字). Moreover, it can convert a date to a Chinese text string and parse a Chinese text string to a date in Simple Chinese or Traditional Chinese.

View The Article

2018
byte-unit
Rust
A library for interaction with units of bytes.

View The Article

2018
bc
Rust
Use bc in the Rust Programming Language.

View The Article

2018
base64-url
Rust
Base64 encode, decode, escape and unescape for URL applications.

View The Article

2018
base64-stream
Rust
To encode/decode large data with the standard Base64 encoding.

View The Article

2018
alphanumeric-sort
Rust
This crate can help you sort order for files and folders whose names contain numerals.

View The Article

2018
node-qr-code
C
JS
Encode QR Code by using N-API on Node.js.

View The Article

2017
node-meminfo
C
JS
Get memory information on Node.js on Linux.

View The Article

2017
node-int64
C
JS
Use N-API to compute 64 bits integers on Node.js.

View The Article

2017
node-sysconf
C
JS
Get configurable system variables on Node.js.

View The Article

2017
node-crc
C
JS
To compute CRC values on Node.js by providing the length of bits, expression, reflection, an initial value and a final xor value. It has built-in CRC-8-ATM, CRC-8-CDMA, CRC-16-IBM, CRC16-CCITT, CRC-32-IEEE, CRC-32-C, CRC-64-ISO and CRC-64-ECMA functions.

View The Article

2017
fast-string-search
C
JS
Fast search substrings in a string on Node.js by using N-API and boyer-moore-magiclen.

View The Article

2017
node-int32
Rust
JS
Use Rust to compute 32-bit signed integers and wrap around at the boundary in Node.js.

View The Article

2017
node-stringbuilder
C
JS
An easy and fast in-memory string builder for Node.js.

View The Article

2017
AIO
JS
Golang
C/C++
Bash

AIO is a full-stack web framework for Node.js. The name of AIO means all-in-one and asynchronous I/O. It is based on the Express framework with many additional features. It encourages programmers to use async/await instead of callback or Promise in order to make the code more readable and more understandable.

For front end, it integrates Handlebars, Pug, Vue and Markdown as its HTML template engines, and it uses Stylus to compile CSS. It supports Babel to compile ES6+ JavaScript code to ES5 code automatically in order to make it executable on most of web browsers. It also supports Browsersync to let programmers who develop web pages be more efficient. There are some document viewers built-in in AIO to allow clients to view PDF or JSON documents on the web browsers and some built-in resources such as the jQuery library.

For back end, it supports not only HTTP/HTTPS 1.x but also HTTPS 2.0 and has a lot of high performance (programs written in C/C++/Golang) utilities (modules) for managing different situations. Also, it is easy to develop RESTful APIs with documents and tests on AIO. It has automatic cache systems and protection measures. For back-end management, it provides a log system and an elegant way to write CLI scripts with existing programs (libraries, modules, data models).

2017
EPC Master
Java
EPC Master is an EPC management system that can help users deal with huge EPC codes and bind them with other numbers.

Open Image

2017
Crypt Tool
Java
Crypt Tool is a JavaFX application which uses MagicCrypt to encrypt/decrypt text and files using DES and AES encryption algorithm.

View The Article

2016
Image Resizer Light
Java
Image Resizer Light is a JavaFX application which can load different images, resize these images and convert them into JPEG files in batches. When Image Resizer Light shrinks an image, it can also sharpen that image appropriately.

View The Article

2016
Words Transformer FX
Java
Words Transformer FX is a JavaFX application. It is a simple tool that you can easily establish your database to pair words together. You may use this application to translate texts from one language into another language and to make sure that your words in your context are consistent.

View The Article

2016
Five Chess X
Java
Five Chess X is a JavaFX application which is a single computer game of gobang. It supports the rules of Renju and also has a strong AI.

View The Article

Open Video

2016
MagicRandom
Java
MagicRandom is a Java library for producing random data. It is very convenient to get a random number or numbers array in a range and to pick one element from an array randomly.

View The Article

2016
Ant Text Creator
Java
You can convert any text to ant text or convert any ant text to original text.

View The Article

2016
ImageDifferencer
Java
ImageDifferencer is a Java program which can compute the difference between two images. It's a very simple implementation, which only has command line interface.

View The Article

2016
MagicImage
Java
MagicImage is a Java library for image processing. It can support many formats of images in Java programs and provide common functions to make adjustments to the image in post. After you finish adjusting your images, you can export them to many formats, too.

View The Article

2016
Text Hider
Java
You can quickly hide any text into another text composed of A-Z characters or recover it by String Hider.

View The Article

2016
Chromium Downloader FX
Java
Chromium Downloader FX is a JavaFX application, which can get the latest version number of Chromium and download it in a fast way.

View The Article

2015
PageFaultAlgorithm
Java
PageFaultAlgorithm is a Java program which can simulate memory page replacement. It's a very simple implementation, which only has command line interface.

View The Article

2015
FFmpeg CLI
Java
Bash
C
This is an application which can help you edit audio and video by using FFmpeg with Command Line Interface on Android devices.

View The Article

Open Video

2015
MagicLen
Java
Rust
Publish a wide variety of original articles, including programming languages, applications of websites, introduce of software and hardware, operating system, travel, interview, brainstorming problems, literature, experience, and works.

View The Article

Open Video

2015
MagicCommand
Java
MagicCommand is a Java library which is used for running any programs by commands.

View The Article

2015
IP Viewer
Java
Rust
See your public IP and test the speed and stability of your network connection in an easy way.

View The Article

2015
FetchIt - Socket File Transfer
Java
PHP
Obj-C
C
FetchIt aims to provide a convenience user interface, which allows users to finish all the settings of the files transferring quickly(within one minute). Moreover, it even has a PC version, thus, The fast files exchange between Android and Android or Android and PC is not impossible anymore! For MAC user, it has MAC OS and iOS version, too!
2015
Easy Barcode Scanner
Java
C
Easy Barcode Scanner is a simple barcode scanner based on zBar Reader. The zBar Reader is implemented by C code so that it has high performance. With zBar, Easy Barcode Scanner can support QR Code, EAN-8, EAN-13, UPC-E, UPC-A, ISBN-10, ISBN-13, Interleaved 2 of 5, DataBar, DataBar Expanded, Codabar, Code 39, Code 93、Code 128 and PDF417. In addition, Data Matrix is also supported via libdtmx.

View The Article

2014
The Best MP3 Voice Recorder
Java
C
The Best MP3 Voice Recorder is a very simple voice recorder. You don't need to do any settings. This application can help you record sound and music from your microphone and store them into a MP3 file with the best quality (320 kbps) or the very nearly best quality (~256kbps).

View The Article

Open Video

2014
MagicCrypt
Java
PHP
JS
Rust
MagicCrypt is a Java/PHP/NodeJS/Rust library to encrypt/decrpyt strings, files, or data, using Data Encryption Standard(DES) or Advanced Encryption Standard(AES) algorithms. It supports CBC block cipher mode, PKCS5 padding and 64, 128, 192 or 256-bits key length. If the encrypted data is a string, it will be formatted automatically to Base64.

View The Article

2014
MagicURLNetwork
Java
MagicURLNetwork is a Java library which supports JSON data transfer through networks. To make an URL connection, you only need to know what you want to do and choose an appropriate request method(GET, POST, PUT, HEAD…). You don't need to understand how HTTP, HTTPS and FTP work, and don't need to use any streaming library by yourself, too. You can easily implement a RESTful client program or file uploading/downloading program with this library.

View The Article

2014
MagicDialog
Java
MagicDialog is a Java library used for creating dialogs quickly in JavaFX applications. It supports alert(information, warning, confirmation, error) dialogs, input dialogs and choice dialogs. In addition, MagicDialog includes MagicAudioPlayer to produce sound when the dialog is shown.

View The Article

2014
MagicAudioPlayer
Java
MagicAudioPlayer is a Java library used for playing audio in Java programs including JavaFX application. It supports such uncompressed audio formats as WAV, AIFF, AU and raw PCM. Moreover, if you use it in your JavaFX application, it may also support compressed audio formats like MP3 and AAC.

View The Article

2014
File Verifier X
Java
File Verifier X can compute the checksum of a file with different algorithms and compare the checksum with the checksum of the original one to determine whether the file is the same as the original file. File Verifier X supports MD2, MD5, CRC32, SHA1, SHA224, SHA256, SHA384 and SHA512 algorithms. In addition to graphic interface, it can also work under command line interface.

View The Article

2014
StringHider
Java
MagicStringHider is a Java library which is used for hiding any string by converting it into another string composed of A-Z characters. The hidden string is not unique. One original string can be converted to different strings. but they can be recovered to the same original string. You can create your hidden string by adding any key to protect it from someone who has MagicStringHider library, too.

View The Article

2014
MagicSort
Java
MagicSort is a Java library used for sorting any object array by using iterative quick sort and selection sort when the array size is small. Moreover, it provides some useful built-in comparators for sorting strings and files. It can sort files by file types, but when the file types are the same, sort them by their file names.

View The Article

2014
magiclen.org
Rust
JS

MagicLen (magiclen.org) is a series of websites built with Rust. It has a wide variety of original articles on its main site including software (especially open-source software), Internet, websites, operating systems, programming languages, travels, expedition, humanistic geography, science, food, entertainment, art, literature, natural languages, military and puzzles.

The sub-sites list:

  • img.magiclen.org: It can display uploaded images classified according to folder names and generate HTML text for embedding each image.
  • file.magiclen.org: It can hide the real positions of files on the server and generate download pages for each files.
  • tool.magiclen.org: It provides some web pages with specific functions such as contact, link exchange and IP addresses fetching.
  • api.magiclen.org: It provides the APIs of MagicLen's web services.
  • url.magiclen.org: It can redirect a URL to another URL.
  • me.magiclen.org: It collates the webmaster's profile and also supports multi-languages.
  • cloud.magiclen.org: It provides many free cloud tools and also supports multi-languages.
  • phrases.magiclen.org: It is a English learning website mainly used for Chinese learners of English language to review the most common phrases and sentence patterns.

https://magiclen.org/

2014
Lyrics Converter
Java
Lyrics Converter is a MP3 dynamic lyrics conversion tool. It can help user import/export lyrics and photos into/from files.

View The Article

2014
MP3 Tag Library
Java
It supports ID3v1, ID3v2 and APEv2 mp3 tags.

View The Article

2014
JavaChineseCalendar
Java
Java Chinese Calendar is a Java library of Chinese (lunar) calendar. It can convert date between Gregorian calendar(also called Western calendar) and Chinese calendar. Also, it can compute the weight of Ba Zi.

View The Article

2013
Skiing Snowman
C#

In the wilderness of ice and snow, our lord commiserate this land, and he shines a ray of limelight. Like magic, the light gives this ground life.

There are four small snowmen, which wear hats of different color. They sing their own Christmas song to fight for lord's love and warm. That light is our lord's kindness of this world. That is life, and is future, too.

More importantly, that is the energy for eternal life. To live forever, snowmen will fight recklessly to grab the limelight, even push other snowman down.

Will they become the snowman that lord gives a true life to? It will up to you!

View The Article

Open Video

2013
Microsoft IME words data to Gcin
Java
It can be used for converting the words format of Microsoft IME to gcin.

View The Article

2013
Sudoku Game
Java
It is a Sudoku game. You can practice or challenge it.

View The Article

2012
TakeGhostCard
Java
TakeGhostCard is a Joker Poker game implemented in Java. It's a very simple implementation, which only has command line interface. In other words, it's a text-based game. But actually, it is not very simple to play, because Player in this game can be allowed to do some cheating tricks.

View The Article

2012
GuessNumber
Java
GuessNumber is a guess-the-number(1A2B) puzzle game implemented in Java. It's a very simple implementation, which only has command line interface. In other words, it's a text-based game.

View The Article

2011

Others

Electric Works
  • Smart Raspberry Pi Car: Use Raspberry Pi to manipulate the car's motors and LEDs driven by L293D and 7407 buffers. This car has a digital camera and the power source is a power bank. People can use applications on smartphones or computers to control this car to move forward, move backward, rotate, turn right/left, take pictures, flash turn signal, and even send some special commands to let this car do stunts.