Jeff Disher
Public Key:
z5AanNVJCxnSpEgPiSdH2N2NKvTrxvh3VdPuJabJCDWy54M7YPQAiJv
Description:
The Cacophony channel I use for talking about technical concepts, mostly.
Updates when stitching the world (on Apr. 24, 2024, 12:05:09 a.m.)
The change to OctoberProject's item addressing is complete and, while I still don't like it (the addressing still feels "not quite right" in some way), it does do everything required and probably in about the most reasonable way possible.

Moving on [...]
Item versus tool management - stuck in the back-and-forth (on Apr. 17, 2024, 6:19:28 p.m.)
For the past couple of days, I have been stuck in that frustrating mental trap of not being able to think up an elegant way of doing something, so you keep prototyping different ideas, using lots of time, and not coming up with something good while [...]
OctoberPlains v0.0-demo6 (on Apr. 14, 2024, 5:19:16 p.m.)
OctoberPlains v0.0-demo6
A quick demo of the new OctoberPlains build. This version introduces health, hunger, basic combat, some worldgen changes, fixes to intermittent network and persistence bugs, and a slight UI overhaul.

Note shown in the demo is the combat mechanic: [...]
OctoberPlains v0.0-demo5 (on Mar. 30, 2024, 3:49:51 p.m.)
OctoberPlains v0.0-demo5
A quick demo of the new OctoberPlains build. This version introduces lighting and basic farming, as well as the first steps toward declarative mechanics.

At this point, the lighting definitely improves the look and feel of the system and the [...]
Parallel light flooding (on Mar. 20, 2024, 4:48:43 p.m.)
While thinking more about this new lighting mechanic and doing some research into the subject it looks like the common approach is a breadth-first flood-fill kind of approach. This makes sense and can be reversed when lighting is removed (and then [...]
OctoberPlains v0.0-demo4 (on Mar. 18, 2024, 5:01:07 p.m.)
OctoberPlains v0.0-demo4
A quick demo of the new OctoberPlains build. This version introduces falling item debris and flowing water, as well as some under-the-hood optimizations.

Looking forward to demo5, that build will include a farming mechanic, a lighting engine, and [...]
Synchronous or Redundant (on Mar. 14, 2024, 8:22:07 p.m.)
I have been experimenting with different approaches for the "block update" mechanism in OctoberProject. This means that, for all blocks which somehow changed in a given tick, an event needs to be run on the adjacent 6 blocks in the following tick. [...]
OctoberPlains v0.0-demo3 (on Mar. 11, 2024, 12:33:49 p.m.)
OctoberPlains v0.0-demo3
Just a quick demo of the current state of OctoberProject. This is the v0.0-demo3 release of OctoberPlains.

The demo4 release will focus on things like falling block/inventory types, flowing water, and general "implicit block update" behaviour. [...]
October Project: First rough demo (on Feb. 6, 2024, 1:37:07 a.m.)
I think I am now to the point where I have a basic rough cut of the first multi-player demo of "October Plains". Ideally, I would run this by some people to see that it at least basically makes sense and is worth continuing before pushing these [...]
OctoberProject: Mutation streaming and data consistency (on Jan. 27, 2024, 3:22:02 p.m.)
The current design for OctoberProject is that the client produces mutations directed at their own entity which are then sent to the server. The server applies or rejects these mutations, potentially creating follow-up mutations (against the world or [...]
OctoberPlains: First Look (on Jan. 24, 2024, 6:03:25 p.m.)
OctoberPlains:  First Look
A short video to show what OctoberPlains currently looks like. This is the first demo application built on top of OctoberProject. It is intended to be a purely top-down view of the world. The logic behind it is still the complete system, though: [...]
October progress: Basic inventory and block placement (on Jan. 18, 2024, 4:09:21 p.m.)
Now that the latest re-work on consensus and timed mutation has been completed, moving on to some new mutations to support inventory item selection, inventory movement, and block placement was comparatively simple.

Still, these are somewhat [...]
Re: October Project: More thoughts on consensus (on Jan. 5, 2024, 12:55:34 p.m.)
Hmm, that is odd that they would call it all "coding" (although that term is already overused to the point of meaningless so I am not too surprised).

I would have thought that character writing and in-game world-building writing would be about the [...]
October Project: More thoughts on consensus (on Jan. 4, 2024, 1:03:39 p.m.)
One of the other things which is odd about working on a game while having no game development experience yet substantial systems and distributed experience is that I think about what could be called "anti-cheat" more often than I probably should.

I [...]
October Project: On to UI (on Dec. 21, 2023, 11:53:29 p.m.)
I managed to recently do a big re-work to dramatically simplify time-based operations. I also added in the basis of the crafting system, at least for simple cases. Still, I have a pretty good idea of how to extend it to handle other systems like [...]
October Project: Integration milestone (on Dec. 12, 2023, 6:35:43 p.m.)
I finally managed to progress to the point where I can integrate all the bottom-up components (yes, I know that this is the wrong way to build things but I wanted to experiment with whether each idea would work since many were new to me) into a [...]
October Project: Going backward and forward on backward and forward (on Nov. 28, 2023, 5:40:48 p.m.)
While trying to figure out how to handle timed actions (like mining a block: You start at one point and finish later, or crafting, as it will work similarly), I came up with an idea to allow an entity change to schedule a later follow-up change (as [...]
October Project: Game logic frequency (on Nov. 23, 2023, 12:12:33 a.m.)
Something which I find to be an interestingly common problem in many areas of software is the issue of how you make something discrete appear as though it is something continuous.

For an example of what I mean, consider audio: It is a stream of [...]
October Project: Block update perf experiments (on Nov. 18, 2023, 2:49:01 p.m.)
I made some improvements to the block update logic within the primary 15-bit octree storage but I still wonder if that will be enough.

A worst-case scenario of writing a unique block type to all 32k blocks in a cuboid takes about 7 seconds, on my [...]
October network logic basically working (on Nov. 14, 2023, 10:28:02 p.m.)
The network layer logic and framework for October seems to be generally working. This hasn't been stress-tested, nor are all the network packet types implemented (those will be added as needed) but the basic design is in place and working.

This is [...]
Re: Mired in graphics (on Nov. 11, 2023, 1:56:31 a.m.)
Thanks. Things are going reasonably, but this is definitely the most difficult area for me. After muddling through LWJGL (which is what Minecraft uses for portable graphics) and LibGDX (which is built on top of that and adds other game-related [...]
Mired in graphics (on Nov. 9, 2023, 8:08:13 p.m.)
I managed to get a basic path-finding algorithm loosely based on A-star implemented, yesterday. This will be the basis of some near-term testing and later-term AI for non-player entities in October Project.

Today, however, I decided I should [...]
Ground broken on October Project (on Nov. 8, 2023, 12:54:31 p.m.)
Broke ground on the October Project a few days ago. So far, it is going well.

Unfortunately, it will be some time until this can do anything as sophisticated a full-blown Minecraft clone, so my first target "test game" will be something with a [...]
Logo Possibility (on Nov. 4, 2023, 5:26:38 p.m.)
Logo Possibility
Here is something I put together, but I am not sure I am happy with it, yet.
Next Projects (on Nov. 4, 2023, 2:55:45 p.m.)
Now that the Cacophony tooling work for my site generation is done and working, I need to figure out what to do next.

There is that possibility of Maven-on-IPFS tooling/scripts, but I am not sure how useful that is, at this time. I am currently [...]
Cacophony tooling (on Oct. 25, 2023, 3:54:25 a.m.)
Been working on re-organizing the Cacophony code for some tooling related to creating static output of a list of channels, the past few days. It is going pretty well, so far, but this has just been the organizing and shaping of the code. The next [...]
WebRTC (as seen through the BasicRtc implementation) (on Oct. 22, 2023, 4:11:16 p.m.)
WebRTC (as seen through the BasicRtc implementation)
More of a casual vlog-style video where I talk about what I have learned about WebRTC through the implementation of my recent BasicRtc project.

WebRTC is used for real-time peer-to-peer communication between browsers. Its main use-case is for [...]
Next project musings (on Oct. 9, 2023, 1:44:22 p.m.)
Now that Cacophony development has essentially wrapped up, I am trying to figure out what the next project should be.

Maven on IPFS: Years ago, I was working with someone to build a way to publish Maven resources onto IPFS, using the Aion [...]
Re: No place like home. :) (on Oct. 4, 2023, 5:53:50 p.m.)
I do have that on my doormat. However, when I first got it, I remember thinking it would be more interesting if it were IPv6 and more directly applicable if it were "~" (tilde).

127.0.0.1 is more like "me" whereas the tilde is "home directory" on [...]
Re: 4.1 pre-3 (on Oct. 1, 2023, 4:25:18 p.m.)
Ok, so the problem is just related to when you move the tab to a new location or when you switch to a different draft?

Do you expect that they auto-save or tell you that you are about to lose information?

I want to make sure I have a sense of what [...]
Dependencies after some changes (on Sep. 29, 2023, 1:40:18 a.m.)
Dependencies after some changes
After much investigation and consideration, I made a few changes. These changes only reduced the number of package relationships (edges in the graph) by 7 but the shape of the diagram now makes far more sense.

There are now fewer cyclic [...]
Dependencies within Cacophony (on Sep. 29, 2023, 1:36:15 a.m.)
Dependencies within Cacophony
I recently wrote a little script to scrape the Cacophony source files to find patterns between the packages, based on imports. These relationships are then passed into dot to render as a graph.

This is what the system looked like, when I first [...]
Re: 4.1 pre-release 0 (on Aug. 26, 2023, 8:21:42 p.m.)
Hmm, I will need to look into that. I suspect that these issues might just be caching related so they might go away once the browser cache times-out the stale data or if you manage to force it to fully reload the page.

The odd thing is that I [...]
Re: 4.1 pre-release 0 (on Aug. 25, 2023, 9:48:55 p.m.)
Hmm, strange that they are giving you update options for the wrong platform.

Did you find that Chrome worked any better with a force-refresh of the page (the shift-ctrl-r)?
Re: 4.1 pre-release 0 (on Aug. 25, 2023, 9:47:16 p.m.)
What do you mean? Does it refuse to connect to the server, or something?

Are you sure it is the right IP and port (the :8000)?
Docs (on Aug. 18, 2023, 9:59:52 p.m.)
Yeah, Google Docs has really good collaborative editing features but it is a poor word processor and a terrible text editor.

Unfortunately, I have a poor sense of UI/UX (or just don't care enough about them) so I am not great at building tools [...]
A good tool should be an extension of your body (on Aug. 16, 2023, 2:01:22 p.m.)
A good tool should be an extension of your body
I don't have any great insight into this one but I wanted to point out something which we sometimes miss in the software world, especially in the internet age, despite it being something we all realize, at least on some level.

Historically, we [...]
Post Order (on Aug. 2, 2023, 7:16:56 p.m.)
There isn't really a strong notion of "post order" except within the context of a single user. Between users, however, it there isn't a specific way of interpreting that.

The posts do have dates but I am hesitant to rely on those since someone [...]
Multi-photo posts (on Aug. 2, 2023, 7:11:05 p.m.)
While just making a "bunch of photos" into a kind of inline extension, I am hesitant to do it that way since I suspect people might want to be able to find photos uploaded that way through another path, as well.

Hence, I have to figure out a way to [...]
Progress Trap: Client-Server Design (on Jul. 31, 2023, 4:56:34 p.m.)
Progress Trap:  Client-Server Design
This is a short talk about how I fear that client-server software design has become a "progress trap" (something which seemed like a good idea but lead into a dead end).

I also provide some possible other ways to design systems, from federated [...]
Scalability of Cacophony's data model (on Jul. 28, 2023, 12:20:12 a.m.)
An interesting thing about the introduction of the replyTo mechanism is that it will definitely dump more data, and more meta-data, into the main record stream of the on-IPFS data structure.

In theory, this should be just fine. In fact, the entire [...]
Vector Processing (SIMD) and Related Execution Models (on Jul. 13, 2023, 1:04:48 a.m.)
Vector Processing (SIMD) and Related Execution Models
A quick discussion of what vector processing is, how it contrasts with scalar processing (and super-scalar), and how it compares with other processing mechanisms like co-processors and graphics processors.

A simple way to think about this is: If [...]
IPFS eventually finds requested data (on Jul. 5, 2023, 4:59:19 p.m.)
Yesterday, there were 2 instances of failing to fetch data which could be resolved with "dht findprovs" which I think is because my node couldn't find the hosting peer "dht findpeer".
In both cases, the data fetch started to work after about 30 [...]
Declarative UI Musings (on May 31, 2023, 8:26:08 p.m.)
The Cacophony 3.0 pre-releases mean that I am back into front-end UI world, making updates to support the recent core changes.

Now, as anyone who knows me can attest, I do NOT like working on UI, and definitely not JavaScript-based browser UIs. As [...]
Copy-On-Write (on Apr. 24, 2023, 2:36:48 p.m.)
Copy-On-Write
I talk about copy-on-write data structures, most specifically within the context of file systems. The idea does extend to databases, more generally, and some of the themes can even be observed in content-addressed systems, such as IPFS.

The basic [...]
Reddit Post (on Apr. 16, 2023, 9:35:27 p.m.)
Just wanted to make a small text update to draw attention to a post I made on Reddit to mention Cacophony.

This seems to be well-received but, unfortunately, isn't drawing as much conversation as I had hoped.

Still, nice to see that people are [...]
Memory usage (on Apr. 14, 2023, 10:49:56 a.m.)
Memory usage
I talk a little about memory usage in modern software and how a lack of concern around it has led to systems which are slow, can't scale down to smaller devices, and are often just incorrect.

Take this as a bit of technical rant from "an old GC guy".
Final decision on WebSocket state updates (on Apr. 13, 2023, 12:40:01 a.m.)
A follow-up to earlier decisions around using WebSockets to communicate.

In this audio clip, I talk about how the design did work out as well as the initial indications but there were a few other points I wanted to make.

First of all, I ended [...]
Notification Systems in Software Design (on Mar. 6, 2023, 3:13:03 p.m.)
Notification Systems in Software Design
I talk a little about my love-hate relationship with notification-based design patterns in application development, based on some recent ideas around Cacophony.

While these approaches seem to make the high-level responsibilities within the system [...]
Streams and Pipes (on Feb. 16, 2023, 2:42:51 p.m.)
Streams and Pipes
I was reminded of the very powerful and elegant concept of binary streams when resolving a memory problem caused in the network library under Cacophony, recently.

I talk about how data streams can move data in and out of a program without needing [...]
Dogfooding, self-hosted systems, and IPFS/Cacophony possibilities (on Jan. 20, 2023, 12:12:20 p.m.)
Dogfooding, self-hosted systems, and IPFS/Cacophony possibilities
I talk a little bit about the idea in software development of "eating your own dogfood" as well as the narrower idea of self-hosted systems (for example, building the version control system you use to manage the software you are building).

There [...]
Update on WebSocket-based streaming UI updates (on Jan. 11, 2023, 2:23:14 p.m.)
Update on WebSocket-based streaming UI updates
As an update from my last post about using WebSockets to stream updates to the front-end, instead of just using REST-based polling, I talk a bit about some observations made through this.

In general, this seems to lend itself to thinking about the [...]
Using WebSocket-backed event-based updates instead of REST polling (on Jan. 4, 2023, 2:08:07 p.m.)
Something I started playing with in Cacophony 2.0-pre5 was using WebSockets to send dynamic data updates to the front-end, instead of polling a REST end-point. Specifically, I did this for the status page as its changes of state weren't directly [...]
Fine-grained or coarse-grained parameter selection? (on Dec. 1, 2022, 2:50:40 p.m.)
Fine-grained or coarse-grained parameter selection?
Just a quick talk about the thought process behind the "StandardAccess" approach used in Cacophony 2.0 pre4. That is, using a coarse-grained locking and data abstraction instead of the more fine-grained approach previously being used.

Basically, I [...]
Technology versus product/service (on Sep. 10, 2022, 4:32:06 p.m.)
Technology versus product/service
We often hear companies talking about how their offering is "new technology" but how true is that, really? In this video, I talk about how this distinction is missing and that most of what is pitched as "new technology" is just a product or [...]
Blocking and Back-pressure (on Aug. 15, 2022, 6:31:56 p.m.)
Blocking and Back-pressure
A short bit of a ramble about a concern I sometimes see people make where they "don't want to block" while blocking is actually a pretty fundamental way that the system works. The concern isn't with blocking, so much as blocking in the wrong place.
The distinction between code and data (on Aug. 6, 2022, 4:37:22 p.m.)
The distinction between code and data
Just a quick one, mostly just to test out the new Cacophony 2.0-pre0 release (doing this with in-browser recording).

I talk about the difference between code and data or, more correctly, how they aren't as different as often thought and that the [...]
Programmable event stores (on Jun. 15, 2022, 7:59:42 p.m.)
Programmable event stores
While I am not someone who does much work in tradition web back-ends, this is idea I find interesting.

I talk a little bit about what an event store is and how that differs from a traditional database.

This involves discussions of some scalability [...]
Block Production on Public Blockchains and the Realities of CAP Theorem (on Jun. 5, 2022, 5:18:13 p.m.)
Block Production on Public Blockchains and the Realities of CAP Theorem
I talk about some concerns I have related the direction of the conversation around block production, related to proof-of-work and proof-of-stake systems.

Basically, I think that the discussion centres too strongly around environmentalism and energy [...]
Intro to my channel (on May 25, 2022, 10:28:18 p.m.)
Intro to my channel
As a way of further testing and dog-fooding Cacophony, I wanted to start a channel to bring up or discuss technical topics in a fairly ad-hoc way. This is just a quick intro to that idea.

(recorded a few weeks ago)