Skip to main content

Xmake: A great one-stop build system

This week I started a new project, to evaluate Haxe and Heaps as an alternative game development framework for my 2D retro indie game. As the first required step, I would like to build my own Hashlink virtual machine and make sure it runs on all gaming clients I plan to support. I had a rather painful experience with Cmake for two days, then I decided to use Xmake instead. It finally solved all my problem.

A workaround to build Zig projects without direct network connection

Motivation Starting from Zig 0.11.0, a new feature called build.zig.zon is introduced. It’s basically a package management system, that allows developer to define dependencies of projects. When running zig build command, it automatically reads build.zig.zon file, and download a package from remote URL, extracts package to local path, then set references of build path for zig compiler. I copied the file from zls as an example. We can see it depends on three packages, two from Github archive and one from Gist.

My Journey of Designing My Planning System

I’ve been looking for a good planning system since 2017, until recently I made my choice that appears to workable in the following two years or more. I’m thinking it worthy writing down to record my experiences. This is of great fun, and hopefully make it shareable with others. The challenge of tracking: a brief Before we jump into more details, let’s quickly summarize a pattern of my works. I work as a software development manager leading a team (~20 to 30 people), working in multiple projects in parallel.

Hugo Tips: Generate Full-Text RSS/Atom Feeds

Unless a blog writer want to drive traffic increase for their site, a full-text RSS/Atom output is usually more friendly to readers than summary. It allows feed aggregator (like Feed Wangler or FeedBin grab output without additional processing. Though it increases the size of RSS/Atom file, it’s generally not a big problem in current Internet bandwith. My site is built on Hugo. By default, Hugo generates output with summary only. But we can enable full-text output with a simple hack.

A closed look at data loss

We talked about data will always be loss, but it’s not always clear to everyone that when and where. Let’s take a pretty simple, 4-step scenario as an example. Below is a minimized service, which involves a set of web servers, running behind a load balancer. Every web server uploads their logs via FileBeat. The logs are then passed to a Logstash service to apply filtering. The filtered logs are then written to ElasticSearch for log search, visualization and monitoring.