Encyclopaedia Mundi (or UntitledThesisProject/UTP, which you will see in the code sparingly) is my Master of Fine Arts thesis work. You can fine more detail archived at VTechWorks: https://vtechworks.lib.vt.edu/handle/10919/103645. A short video documentation can be found at https://youtu.be/X5VTAI36Cc8 (audio at 2:26; you might want to turn the volume down).
Long story short, it is a digital experience that pretends to be a genuinely encyclopaedia software that someone rediscovered from a computer acquired from a yard sale. Instead of providing real encyclopaedia knowledge, the audience will gradually discover that the information provided does not make sense (either because the text itself is GPT-2 generated or the anachronistic nature). First and last paragraph are the first and second sentences from Wikipedia, while the majority of the content is generated by its server counterpart using GPT-2.
Be aware that security wasn't the first thing in my mind when working on this. Resorting to the Electron remote
module (which should be deprecated and possibly removed by now, thankfully), for one. Having to come up with the idea, paper and code by myself in a year, and the pandemic has definitely caused a lot of last minute changes (for one, it was supposed to be an exhibition, so the binary file would not be distributed). I would have spent some time to get it a lot more secure if there were more time.
Instead, a lot of efforts were devoted to create more realistic experience of a vintage software. For example, double clicking on the cyan Encyclopaedia Mundi icon above menubar will result in the software asking if the user want to quit; this is inherited from the Windows 3.1 (and possibly earlier) days where the close button hasn't been introduced. This isn't the default behaviour of frameless Electron apps so it has to be implemented.
To make the repo public, I have removed some fonts. I have previously purchased the fonts for personal use, so I will not be redistributing the binary as per licensing agreements. These files are src/bin/fonts/Mondwest/Mondwest-Bold.woff2
and src/bin/fonts/Mondwest/Mondwest-Regular.woff2
. The licenses of software that are used to make this project are included in LICENSES.md
, 'Supporting documents' at VTechWorks, as well as About > Licenses in the Encyclopaedia Mundi windows executable.
Once again, to kind authors of open source softwares used in Encyclopaedia Mundi and the contributors of Wikipedia, thank you. This project would not have been possible without you.
Just for funsies: be sure to check out About > Licenses in Encyclopaedia Mundi Windows executable.
Now, onto the original technical documentation for Encyclopaedia Mundi:
To compile Encyclopaedia Mundi, you will need git, Node.JS, Electron and yarn. Clone this repository and run yarn install
to install dependencies.
To compile a portable win32 binary, run yarn build
in the folder.
Desktop computer with x86-based CPU running Windows 10.
Desktop computer with x86-based CPU running Windows 10, with at least 300MB free hard disk space.
Per Google's documentation (this project uses Electron, which in turn uses Chromium):
To use Chrome Browser on Windows®, you'll need:
Windows 7, Windows 8, Windows 8.1, Windows 10 or later
An Intel Pentium 4 processor or later that's SSE3 capable
(Note that this project has only been tested on Windows 10.)
Flags will become available when global.allowCliFlags
is set to true
in src/main.js
before compiling the win32 binary.
--allow-devtools
: Application will be allowed to invoke Chromium DevTools with Ctrl-Shift-I keyboard shortcuts. Note that this flag does not affect <webview>
components inside the main window.
--allow-keyboard-shortcuts
: Application will now respond to previously ignored keyboard shortcuts: full screen (F11) and refresh (F5 or Ctrl-R).
--force-offline
: Application will always report CRC fault. In this application, 'CRC fault' is a way to indicate that it cannot reach the remote server (no internet connectivity, or the server is offline) without breaking the fourth wall — most people will just assume some technical difficulties has occurred. In reality, if the remote server is unreachable, it will report CRC fault at startup, and will not attempt to fetch article abstract from Wikipedia; instead, the user will only be able to choose from the preloaded contents from the sidebar. Using --ignore-startup-slowdown
implies that --force-offline
is set.
--ignore-offline-nags
: Application will not check if server is reachable. (CRC fault will never be reported.)
--ignore-startup-slowdown
: Application will ignore the artificial slowdown between the initial splashscreen and main user interface (around 7 seconds; randomly picked). Note that if this flag is set, the application will always think that it cannot reach remote server, regardless of your internet connectivity and server availability. Combine this flag with --ignore-offline-nags
to skip connectivity check.
This application is designed to be portable. To remove it from your computer, you can simply delete the executable file.
Technical details: Encyclopaedia Mundi extracts itself into a temporary folder and is removed shortly after closing the application. If you want to be thorough and ensure the temporary files are removed:
- Open Encyclopaedia Mundi, click on 'About' on the menu bar.
- In the About dialog, double click on the icon of Encyclopaedia Mundi. Note that this will change the OK button (rightmost button thside this dialog box) to Quit. In addition, the version number (second line) is also changed to a seemingly random string. This string is the name of the temporary folder for Encyclopaedia Mundi.
- Double click on the random string and it will open your local temporary folder (
C:\Users\%USERNAME%\AppData\Local\Temp
, whereas the%USERNAME%
is the name of your user account) in File Explorer, with a folder selected. Review the name of this folder, as it should be the same as the string in the About dialog in step 2. - Click on the Quit button in the about dialog to quit Encyclopaedia Mundi. You should notice that the highlighted folder in step 3 should disappear from the temporary folder within a few seconds.