Adventures in Demo Making

I should just “blog” informally more often - so here goes. I’ve cobbled together a toolchain/asset-conditioning-pipeline of sorts for demoscene type stuff. My system is written in Scala on Gradle and functions by emitting C/++ and CMake files for Visual Studio. All of this produces a C/++11/14 and GLFW/GLAD/OpenGL4.3/4.5 executable that displays someone else’s ShaderToy project. Nothing revolutionary, but I’m after pretty-code that I can keep using rather than actual hard “street cred” quality demo results.

(Scala) Delay Run

I wrote a threading primitive and I’m very pleased with it. I plan to wrap all of my “save file” things in this, from now on. Delay Run This class acts as a sort of “once inactive for X do Y” pattern. In my design, I’m wrapping my save actions in it and triggering schedule() after practically every edit. The class is passed a delay: Long value to specify how long to actually wait - I’m using 1.

Gradlification of FlexDock

Some clever clogs made a snazzy tool called SciLab as another not-MatLab.1 Flex Dock is the framework that (I think) they developed for docking frames. It’s not in Maven Central so I’ve forked it and deployed it to my own repository. convert the build The actual conversion was embarrassingly easy since the gradle importer stuff really works for this sort of thing. As a matter of personal preference, I re-arranged the build scripts to be a single file but otherwise left them as-is.

Pi3 nGinx Reverse Proxy

So … you’ve got a Pi3 running as a Docker host with some services that you want your buddies to have access to. You could try and get them to SSH into your home network; just like you could type all your programs with a touchscreen. I’m going to use nGinx to setup a reverse-proxy from my real-Pi3 to various Docker containers based on URL rewriting. I’m doing something else (of course) I’m setting up (what I call) name-based-virtual-hosting.

GoGS on a Pi3 (via Docker)

I’ve been assembling a “full stack”1 for development that runs on my Pi3. This is all happening inside of [Docker][piDocker] containers which made cleanup redonkulously easy. Today I was looking at a source code management system; something of a “my own GitHub” which I can run on my own network.

Pipe Sink

I had an idea/desire for a “simple” template class that’d work as my OpenGL thread. A contemporary design for multi-threaded 3D games12 (or whatever) seems to be pooling work and processing it in whatever threads are available. IME OpenGL/GLFW are not re-entrant; Apple3 and GLFW4 explicitly states that it won’t work - so it seems safe to assume that I shouldn’t call functions from different threads. So to make a super-fast 3D game (or whatever) I need to do less work on the thread which is running OpenGL while allowing other threads to send it whatever work they please.

Pi3 NameCheap

This is a followup to a previous post because that one stopped working, now - this works. There’s not a lot of OC here, just clarity. NameCheap DynDNS on a Pi3 I use NameCheap (because they’re anti-SOPA) for DNS. The client program, ddclient, can connect to NameCheap. I’m using raspbian, so, first; run sudo apt-get install ddclient on your Pi find the dynamic DNS settings on NameCheap’s website

Replace SaMBa with WinSSHFS!

I connected my Windows desktop to our office file server using SSHFS rather than SaMBa. I am happy about that. For some reason one of our SaMBa systems got twitchy sometime last month. This is a problem since I’ve inherited a script that; I don’t yet understand runs on Windows (10?) exclusively reads data from \\foo\bar\project\user\project3\data\something paths Since I know that SSHFS already works, I’m setting that up as a substitue.

Pi3 DynDNS

This has been replaced Pi3 DynDNS I want to give my home’s Raspberry Pi3 a DNS name so that I can access it more easily. DNS and Dynamic IP Addresses The Domain Naming System is how those readable textual names like example.com become the actual IP Addresses like 127.0.0.1 that web pages, email, and everything else needs to work. Various groups allow people to register a domain (or subdomain) and specify the IP address of a computer that the domain should reffer to.

Single Header Bullet

https://github.com/g-pechorin/bullet2stripped What? I reduced Bullet 2.83 to a single C++ header file. Why? Largely to see if I could … hey - SQLite saw a 5% - 10% speed boost when they did this right? … oh - and to ease adoption I guess … maybe … How? I used a slightly complicated Scala script that I’m not interested in examining again … for now … Basically; I took the 2.