Flash Forever – Interceptor 2021

Recently, it turned out that Adobe Flash works quite stably under Wine. During a 4-hour stream, I made the game Interceptor 2021, which is a sequel to the game Interceptor 2020, written for the ZX Spectrum.

For those who are not in the know – the Flash technology provided interactivity on the web from 2000 to around 2015. Its shutdown was prompted by an open letter from Steve Jobs, in which he wrote that Flash should be consigned to history because it lagged on the iPhone. Since then, JS has become even more sluggish than Flash, and Flash itself has been wrapped in JS, making it possible to run it on anything thanks to the Ruffle player.

You can play it here:


Source code:

FatBoySize – disk usage information tool

FatBoySize – disk usage information tool, it shows directories, files sizes in terminal.
Supports any OS that support Python 3.

Usage: python3 fbs.py
Verbose mode 1: python3 fbs.py -v
Verbose mode 2: python3 fbs.py --version

Right now it works only for current terminal path.

Result example:
python3 ~/Sources/my/fatboysize/fbs.py
.local -> 145. GB
Downloads -> 103. GB
.cache -> 37.0 GB
.android -> 11.6 GB
Sources -> 8.63 GB

As you can see, directory Downloads is quite large.



KleyMoment – glue for script files tool

I present to you a utility for pasting script files – KleyMoment, also a reverse utility for pasting files back. The utility can be used to merge JavaScript files into one.
The tool is implemented in Python 3, has the simplest command line interface of the form:

python3 KleyMoment.py extension Files directory Containing Files output File

For example, recursively gluing js files from the scripts directory to the output.js file

python3 KleyMoment.py js scripts output.js

Also a utility for pasting files back AntiKleyMoment, accepts a glued file as input, for example:

python3 AntiKleyMoment.py output.js

https://gitlab.com/demensdeum/kleymoment /

Slowride Storage Benchmark Utility

Slowride – utility benchmark utility for block devices for POSIX operation systems with root access to /dev/sd*. You can check blocks read speed in terminal, set threshold for operations to diagnose problems with block device.
Command to perform 100mb blocks read of entire device with 2 seconds threshold:

sudo ./slowride /dev/sda 100 2000

Source Code


Swift 4.2.3 – Ubuntu 18.10

Here you can download Swift with libraries to run on Ubuntu 18.10. The latest available version on the Apple site is for Ubuntu 18.04. Based on the build from the official site with libraries from Ubuntu 18.04. +Example with PATH and LD_LIBRARY_PATH for the bash terminal:

Zakaz – declarative language

I present to your attention a pure declarative programming language – Zakaz. The main idea of the new language is that the application contains commands for execution, written in any form, which must be executed by the “performers”. If no “executor” can execute the command, the execution of the program is stopped. Applications are called technical specifications (tez) and must have the extension .tez. Zakaz syntax obliges to observe two rules:

  • Each command starts with a new line.
  • Each command must be in a human readable formal language

Hello World.tez example:

Show "Hello World" text on screen
Show "Zakaz 'tez' example" text on screen

Example that prints description and open http://demensdeum.com in Firefox browser

Show "Show website demo" text on screen
Show "You need Firefox installed on your system to run this 'tez', and it should be callable through \"system\" C function" text on screen
Show "Also there should be \"FirefoxPerformer\" assigned to Zakaz Runtime, please check manual for more information" text on screen
Show website with address "http://demensdeum.com" in Firefox

The above example must be run along with the FirefoxPerformer, which is able to handle the last command for displaying the site via Firefox

./ZakazRuntime openDemensdeumSite.tez FirefoxPerformer

To implement your “Performer”, you must implement it as a dynamic library using the abstract class ZakazRuntime :: Performer, and return it along with a smart pointer from the method of the global function createPerformer (). As an example, you can use the implementation of FirefoxPerformer.

Source Code