Show more

@alcinnz @codesections

When I say 'triple the storage cost': an absolutely trivial and dumb universal storage layer would be a triple store. Very much like RDF. Every cell in the entire RAM space being a triple of

(type, car, cdr)

We probably don't want that. Wastes a huge amount of storage. But I think it would be the most general and universal possible data-management system, that removes some ambiguities that cons storage has and is more extendable.

We could do Type with one bit, though.

@alcinnz @codesections

I *think* Racket's idea of 'syntax' objects is somewhat like a cons marked up with a context?

I'd like to see something like that, but universal.

It probably needs to be slightly less granular than at the cons level, though; otherwise we triple our storage cost. Which is why I keep thinking about type-tagged arrays/vectors (ie very lightweight objects) as more universal than conses.

@alcinnz @codesections

Also things like: If an object requires a 'context' (another object) to be interpreted, find a way to automatically locate that context object and bring it into local storage.

Where 'context' might include things such as: class/prototype of an OO object; symbol table of a bunch of Lisp cells; libraries of a linked executable; environment of a closure.

Lua's idea of 'metatables' seems relevant and useful. It comes so very close to being a universal language.

@alcinnz @codesections

A fairly universal definition of 'object' seems like: 'a bunch of sequential storage cells beginning with an object type/class/prototype/identifier, which is probably itself a storage address pointing to an object that describes it'.

Beyond that, it gets very hard to agree on semantics. So if we could get at least a readable/writeable version of 'type-labeled chunk of storage', that seems a bit of a win.

Working out how to break cycles and uniquely-name identifiers.

I made a universal Turing machine in C once. If I remember right, it mmap()ed a struct with the program from a file and there was a supplementary utility that wrote the programs.

@alcinnz @codesections

Mmm. I think I'm trying for a 'concrete data type' rather than an abstract one. Or a 'concrete parse tree' perhaps.

Objects or ADTs do have the nice property that if you've got one in memory, you know it was generated 'correctly' (at least for this run of the program) because only one object (the constructor) is allowed to create them. But... this property gets VERY murky once we look beyond one single runtime and bring disk storage and network transmission into play.

@alcinnz @codesections

The idea of homoiconicity I think is quite important. Without it, yes you can 'emulate' any data/rule set in any other data/rule markup language or format... but you can't always preserve it in the same 'shape'.

Preserving 'shape' (structure + syntax) seems important. Each time you transform data, you introduce the possibility of errors. So I think we'd like a format that introduces as little of its own structure as possible, ie, has a very minimal/general structure.

@alcinnz @codesections

On 'universality being trivial':

Yes, and also no.

Anything TM-ish can emulate any other TM, yes. But that's not always the most relevant criterion for human usage of a computing system.

I suppose what I keep wanting is some kind of data-plus-computing substrate that can 'capture, share and remix most of human thought'. Something like a hyperlinked spreadsheet (data plus formulas/functions) but a bit more freeform.

SQL databases seem a bit too constrained.

@codesections Racket is very cool, but for some reason I keep bouncing off it. In particular it just seems very difficult to get up to speed on the Racket concepts of 'language' and 'syntax'. I should try again at some point.

My original desire was for a game DSL, which is why it needed to be 1) small and 2) absolutely safe (don't want people pasting a neat game file off the Web and whoops it erases their hard drive). So how to *remove* Racket features is what I find tricky to learn.

Self-hosted BitTorrent DHT search engine? 

#todayILearned:

The bluetooth protocol was almost launched under the name "Flirt", with the tagline "Getting close but not touching" eetimes.com/document.asp?doc_i

H/t @balrogboogie , who's toot earlier about the "bluetooth" name got me reading about its history.

@alcinnz I really really don't like the "traverses proxies/firewalls" argument for using HTTP for everything. Your solution to being filtered is to... Pretend you're something else? ??? Won't that just break the whole concept of firewalls?

@alcinnz So use DNS-over-TCP, which is already allowed through firewalls, and give it some kind of STARTTLS.

@alcinnz I've always thought DNS over HTTPS was a kind of odd solution to the problem of DNS encryption. Why not just use regular TLS?

Today (12th September) is my birthday! I'm 25.

I have absolutely nothing against Mozilla's move regarding, but it does show a certain paranoya regarding the underlying OS. Which may seem reasonable regarding Mac and Windows.

However this is not a paranoya I can or should share in my own browser development. And it's perfectly reasonable for distros to disable the code that doesn't trust them.

Working on a project with just HTML, css, jQuery, and PHP. It's insanely fast when you don't have to use a giant framework.

Weird thing is to I don't miss the "features" in Angular 2+.

NetCAT – network-based cache side-channel attack:

vusec.net/projects/netcat/

– a feature of Intel server CPUs, DDIO, exposes servers in local untrusted networks to remote side-channel attacks
– NetCAT demonstrates a keystroke timing attack on SSH
– CVE-2019-11184

#netcat #intel #server #vulnerability #ddio #ssh #sidechannel #infosec #cybersecurity #security

Technical Breakdown of a new NES game written in Lisp

"What Remains is a narrative adventure game for the 8-bit NES video game console, and was released in March 2019 as a free ROM, playable in emulator. It was created by a small team, Iodine Dynamics, over the course of two years of on and off development.[...] Herein is a technical breakdown of some of the pieces that make up our game’s engine, in the hopes that others find it useful or at least interesting to read about."

dustmop.io/blog/2019/09/10/wha

#NES #Lisp #homebrew #gamedev #8bit #FOSS

Show more
FLOSS.social

For people who care about, support, or build Free, Libre, and Open Source Software (FLOSS).