Droneship. Study in the style of thisnorthernboy.
In November 2015 Nick Szabo gave a talk on the history of the blockchain which was dense with useful ideas.
Here are some notes I took on his talk:
-
Philosophical inspiration to Cypherpunks who invented Cryptocurrency:
- Ayn Rand: Galt's Gulch - independence from corrupt institutions.
- Tim May: "protect yourself with cryptography" (cyber Galt's Gulch.)
- Friederich Hayek: Institutions of property, contracts, money are actually important to human freedom.
-
Use computer science to minimize vulnerability to strangers.
-
Non-violently enforce the good services of institutions.
-
"Try to secure as much as possible" not just communication.
-
Cryptography: only secures communications from 3rd parties.
-
David Chaum: let's apply this to money too.
-
Centralization problem remained in digital cash startups.
-
Bad assumptions in computer security: trusted third parties like certificate authorities are secure.
-
Trusted third parties are security holes.
-
Centralization is insecure.
-
E.g. Communists were able to get stranglehold with just control of railroads, newspapers, radio.
-
Gold is insecure
- Spanish looted Aztec gold, pirates looted Spanish gold.
- Part of end of gold standard was German U-boat threat to British gold transportation.
- Franklin Roosevelt's government confiscated gold.
- In modern times xray machines detect gold easily.
-
Decentralization per computer science is much more automated & secure than traditional security.
-
CS decentralization can only replace small fraction of traditional security but with very high cost savings.
-
Traditional security isn't the protocol itself, requires strong external law enforcement.
-
Computer security can be secure across national borders instead of siloed inside jurisdictions.
-
Cryptocurrency helps solve this through decentralization.
-
Separation of duties: several independent people to perform a task to get it done.
-
Each node as independent as possible.
-
E.g. crude measure of independence: geographic diversity of nodes.
-
Number of nodes is only a proxy measure of decentralization.
-
Smart contract:
- Long lived process or "distributed app".
- Acts like a contract.
- Performance, verification etc.
- Generally 2 parties + blockchain (replacing TPP).
-
Wet code = traditional law. Dry code = smart contract.
-
Law is subjective, enforced with coercion, flexible, highly evolved.
-
Smart contracts are mathematically rigorous, cryptographically enforced, rigid, very new.
-
Law is jurisdicionally siloed, and expensive to execute.
-
Smart contracts are super-national & independent and low cost.
-
Seals in clay/wax were important when writing was invented: signature + tamper evident.
-
Modern seals at e.g. crime scenes: sealing door, evidence bag with numeric identifier.
-
Blockchain can keep secure log with both semantics (serial number) and proof of evidence (photo hash).
-
Put proof of evidence on blockchain as well as semantic reference for contract code to interface with.
-
Can secure physical spaces with same mechanism.
-
Proplets: blockchain can tell them which keys have which capabilities.
- For almost any valuable property that can be controlled digitally
- Example: Auto-repo collateral upon contract breach.
- Example: creditors without access to offshore oil rig used as collateral.
-
Recent project:
- Trust minimized token: secure property titles, colored coins. Securing transfer of ownership.
- Trust minimized cash flows (dividends, coupons, etc).
-
Idea: social networks for blockchains. Execute payment swaps & smart contracts after linking social accounts together.
-
Let's try to think about security more broadly instead of only encryption.
-
Let's try to protect everything that's important to us, without centralization.
Recently I've been hacking on a game engine for infinitelives called px3d.
It's built on top of ClojureScript, Blender, and Three.js and it runs in the browser.
One feature I'm particularly happy with is the live-reloading of Blender assets into the game. You hit "save" in Blender and the updates appear in the running game a second later - no need to re-compile or re-load the game.
The way this works is with a background script which watches the assets.blend
file. It re-builds the assets.glb
whenever it is modified, and writes the hash of the file into assets.cljs
. Figwheel pushes changes to the compiled cljs files whenever they change, and there is another bit of code which tells three.js to re-load assets.glb
if the hash has changed.
Infinitelives
Infinitelives is the vehicle me and my buddy Crispin use to make games and tooling, mostly for gamejams. The gamejam format is great because it is time-boxed, which means we can periodically do this self-indulgent thing we enjoy without taking too much family or work time.
Gamejams are typically only 48 hours long and so we have learned some good techniques for shipping working code under extreme constraints. A hardcore economy of time, resources, and scope is required.
ClojureScript & Figwheel are perfect for this with their hot-loading of modified code. I built the tight Blender re-load integration for the same reason. Hand drawn graphics consume a lot of time during jams and this should help us really level up on the content side of things.
If you'd like to find out when we release games and new tools you can sign up to our release notifications on the infinitelives home page or follow us on Twitter.
If you liked this you might also like my Roguelike game web template which you can get on itch.io. Thanks for supporting my work!
For some time I have been looking for a writing solution with the following properties:
- Lets me review and make minor edits on my phone.
- Is synched to my laptop where I can write longer form.
- Supports simple markup such as Markdown.
- Supports attachments and images.
- Is Free & Open Source Software and can be self-hosted.
The solution is Joplin.
It's a wonderful piece of software. There are apps for all of the usual platforms, including a direct link to the Android apk, which is a blessing if you are somebody who opts out of using Google services.
Some other things which are great about Joplin:
- You can edit notes in an external editor.
- You can paste images directly into your document.
- It imports and exports many formats including Markdown.
- It can export individual articles to PDF.
- Its native export format "JEX" is a simple tar file.
- Its native data store is on-disk.
- Sync is optional and very easy to set up.
- Sync uses the widely supported webdav protocol.
Joplin Sync
I got sync between my devices working quickly by using Piku to deploy a simple webdav server to my Piku VPS. If you want to do this yourself, check out the latter repository and then push it to Piku as follows:
git remote add piku piku@MYSERVER.NET:webdav
git push piku master
piku config:set NGINX_SERVER_NAME=WEBDAV.SOMEDOMAIN.NET PASSWORDS="username:password username2:password2 ..." FOLDERS="/joplin:/home/piku/joplin"
After that is up and running you can configure Joplin sync by selecting "webdav" on each device and then enter the URL WEBDAV.SOMEDOMAIN.NET/joplin/
and the username:password
pair you specified above.
I wrote this post with Joplin.