Upgrade MediaWiki 1.27 to 1.39 and avoid “There is currently no text in this page” error

After upgrading MediaWiki from 1.31 (or earlier) to 1.35 (or later), some pages may lose their content, with an error message There is currently no text in this page. If a user tried to edit, it will print another error message The revision #0 of the page named "……" does not exist.

This article provides an upgrade path from 1.27 to 1.39 and avoids the issue.

Continue reading “Upgrade MediaWiki 1.27 to 1.39 and avoid “There is currently no text in this page” error”

Dynamic DNS using Route 53 and Lambda

This article illustrates how to use Route 53 and Lambda to setup single-tenant DDNS service, with code examples.

It’s technically possible to use a Python script as a DDNS client to update the DNS record on Route 53 directly. However, an AWS access key and secret access key need to be loaded to that node. If that node is compromised, other DNS records in that hosted zone may get tempered because IAM policy does not allow fine-grained permission on a single DNS record. The risk can be mitigated using AWS Lambda.

Continue reading “Dynamic DNS using Route 53 and Lambda”

Data integrity – why I choose Btrfs (silent data corruption)

Not every file system do data block checksumming. And the most popular one on Linux ecosystem – ext4 file system – is one of them. That means if there is a silent data corruption occur on the disk, it may not get noticed. The corrupted data may get backed up to the off-site storage device, and by time, the backup will get corrupted after it’s been replaced by up-to-date (corrupted) version. This is potentially dangerous if the data need to be stored for a long period of time.

Continue reading “Data integrity – why I choose Btrfs (silent data corruption)”