You are viewing archived messages.
Go here to search the history.

Dalton Banks 2022-06-29 17:32:42

here’s a question i’ve been chewing on in various forms; i’m interested both in responses and different ways the question may have been framed/answered before twitter.com/pixelflipping/status/1542195418670546945

🐦 Dalton Banks: how would CS be different if we described information in pixels, not bits?

Tony Worm 2022-06-29 17:41:51

what is a pixel if not bits?

Christopher Galtenberg 2022-06-29 17:49:13

Presumably everything would have implicit location, and also be considered relative to other information

Any physical characteristics available for free, like color and brightness, would be metadata that could take on vast new connotations

We'd presume all information was in a larger frame and context, and that itself had characteristics important to each pixel itself (whether the 'picture' was coherent or stochastic)

David Wilkinson (HASH) 2022-06-29 18:02:33

To clarify terms, by pixel you mean three arrays, one each for RGB, and a fourth containing X/Y co-ordinates on a 2D grid (which could be a screen, or presumably could be abstracted?) Or other things?

I’m not sure how other primitive things necessary to make this work in the fashion described, like neighbour calculations, would be crafted in pixel-terms, or if the “instead of bits” interpretation is a bit too limiting.

If you’re interested in computing on a spatial grid, in which cells can contain color information, though, you might find agent-based modeling frameworks an interesting place to start.

A lot of our basic example sims in HASH are around things like color passing: hash.ai/models?query=color&sort=relevance&page=1

Some docs at hash.ai/docs/simulation if you want to have a play. It’s all free, and mostly open

Tony Worm 2022-06-29 18:20:55

Don't all bits have a context through which they are interpreted? Pixels are no different and fall under this perspective, they are after all just bits. I just don't see how CS theory would work if bits were replaced with pixels, or how computation in silicon would work, because in the end, the bits are really an abstraction over the physics run in hardware

Dalton Banks 2022-06-29 18:57:26

@Tony Worm hence why either could serve as a base representation tool. however, although there’s no such thing as a purely ‘abstract’ bit, it sure feels that way based on how i’ve experienced CS. i think it’d be harder to hide the underlying physics (and other implicit contexts) with pixels.

Christopher Galtenberg haha speaking my language

@David Wilkinson (HASH) leaving the definition open ended, since there are many ways to approach it. but if pixels were the fundamental unit of information, i imagine the definition would have something to do with samples over space & time, with rgb sensors/displays as a special case. basically, in real systems, tensors (and tensor fields) are more fundamental than disembodied bits, and pixels (in the usual sense) carry a lot of that intuition for free. definitely a fan of the direction of HASH!

Jan Ruzicka 2022-06-30 19:20:50

What do you imagine under dynamic medium ? Is there the dynamic medium, or are there more of them? What aspects of it are the most important? What tools will be used to interact with it (what are the analogs of pencils)? In what respect is it a medium -what does it mediate, and between whom? What kind of literacy will it enable?

Personal Dynamic Media 2022-06-30 20:19:44

I consider a dynamic medium to be any medium for expressing ideas that can respond to actions or changes made by the recipient of the message.

This includes but is not limited to face-to-face conversations, spreadsheets, video games, text-based games, and most forms of simulation that the user can control or direct, such as physics or chemistry or biology simulations.

There are many of them.

You interact with them using whatever input and output devices the computer and the simulation support, including but not limited to keyboard, mouse, video, microphone, light pen, touchscreen, camera, game controller, VR headset, and position sensors.

It mediates any idea that one human wishes to communicate to another, and is especially useful for ideas that involve systems that change over time. For example, spreadsheets are often used to simulate and communicate information about projected earnings and expenses. One person creates a spreadsheet that embodies a certain model of how the organization works and certain predictions about what is likely to happen. They then give it to another person, who can explore the model and see what it predicts if different choices are made or different events occur in the near future.

What type of literacy it supports depends on the medium. Spreadsheets have probably done a lot to improve financial literacy. Video games have helped many people to understand how virtual combat systems work. (Whether or not that is useful information to know is beyond the scope of this comment.) Physics simulations help people to better understand Newtonian physics in an intuitive way, and to make fewer Aristotelian assumptions.

Ultimately, once we have a dynamic medium that anyone can use to express their ideas, meaning a personal dynamic medium, it may support deeper thinking about processes and systems in general.

Personally, although I don't think it will happen in our lifetime, I like to hope that it will ultimately make us smarter all the way around and help us to understand and solve our really big problems, like poverty, pollution, corruption, and war.

Daniel Krasner 2022-07-03 11:21:48

“Mojo of the thing is simulation ” - Alan Kay

Jan Ruzicka 2022-07-03 18:13:04

@Personal Dynamic Media Interesting...

What do you mean by "the ideas can respond to interactions of the recipient"? Does that mean that eg. the spreadsheet is the idea, or does that mean that there is an agent/mechanism that updates the ideas/facts? Would this agent itself be a kind of medium?

Personal Dynamic Media 2022-07-03 19:46:22

In the case of a spreadsheet, the spreadsheet software is the medium.

The idea is whatever you are encoding in a particular spreadsheet workbook using the medium. For example, your model of how finances work at your company and how they will be affected by your projections for income and expenses.

Responding to the recipient means after you give me your workbook containing your model and your projections, I can make changes and observe the results. I can ask "what if" questions by checking to see what happens if our earnings end up being 30% lower than you project, for example.

Jan Ruzicka 2022-07-03 20:33:11

@Personal Dynamic Media Would a video qualify as a dynamic medium? Certainly a spreadsheet has a richer interaction scheme; can one somehow measure the richness of interactions provided by the medium? For example, a spreadsheet that allows to "compute backwards" (set the result and observe the possible compatible input configurations) could be richer than a regular spreadsheet. Is there then a "maximally rich" dynamic medium?

Sergej Koščejev 2022-07-01 15:47:31

I'm looking for some pointers/articles/papers on abstractions for incremental computations. Something that describes a Computation that can compute a value on demand and has Dependencies and the value is invalidated when one of the Dependencies change... and a Computation can also be a Dependency of another computation. But more detailed and more rigorous. Has anybody ever seen such a thing?

Konrad Hinsen 2022-07-01 15:52:14

Would dataflow fit your requirement list? en.wikipedia.org/wiki/Dataflow

Chris Granger 2022-07-01 15:57:31

Things to look up: Adapton, Self adjusting computation, dataflow, Salsa (rust), Reactive programming/systems

Chris Granger 2022-07-01 15:58:10

glimmer is another such system, though more focused on the UI side

Jimmy Miller 2022-07-01 16:04:46

Jane street has a library called incremental based on works by Umut Acar.

blog.janestreet.com/introducing-incremental

ccs.neu.edu/home/amal/papers/impselfadj.pdf

I've found dissertations to be the best place to learn hard technical things. They are long. But almost always assume less prior knowledge and give you lots of references.

Sergej Koščejev 2022-07-01 16:09:59

Thank you all for all the pointers so far. I have a lot to look through 🙂

Tony Worm 2022-07-01 16:14:12

dagger.io can do this, built on BuildKit and CUE (cue/flow)

auto dependency detection and knows when inputs have changed and something needs to be rerun / recalced

🔗 dagger.io

Tony Worm 2022-07-01 16:14:36

It's a lot more than a devkit for CICD

Christopher Shank 2022-07-01 20:51:38

Branching off FRP, i would recommend a javascript libray like @vue/reactivity, solidjs, ect.

import {ref, computed} from ‘@vue/reactivity’



const count = ref(0)

const doubleCount = computed(() => count.value * 2)



console.log(count.value, doubleCount.value) // 0, 1



count.value++



console.log(count.value, doubleCount.value) // 1, 2
Tom Larkworthy 2022-07-01 22:19:16

observablehq.com notebooks are functional reactive graphs that do the correct thing when code changes (like spreadhseets). The runtime is open source: github.com/observablehq/runtime. An explanation of the execution is here: observablehq.com/@observablehq/how-observable-runs

Kartik Agaram 2022-07-01 22:45:51

Partial evaluation may also be relevant.

Chris Maughan 2022-07-02 08:01:07

Maya uses a Directed Acyclic Graph, I guess this is one implementation of DataFlow. In Maya’s system, nodes are invalidated when data is pushed onto connections on the node, and the dirty state is propagated to all dependent nodes. When connections are read, nodes are computed up the chain until the connection can be validated. Maya has an interesting design where nodes can also be part of a hierarchy (used to evaluate a scene graph for geometry transforms, etc.). Since I read about this ‘first’, a lot of my graph designs use a similar approach; it’s the first thing that made sense to me.

Sergej Koščejev 2022-07-02 08:14:03

Thank you all! I'm going to study Jane Street’s Incremental next, and I also found the “map” by Jamie Brandon very helpful.

My context is I want to prototype a system for storing DSL models in the form of ASTs and doing transformations on them (type checking, interpretation, etc.). I don’t think I will find an existing implementation I could directly reuse, but I hope to borrow ideas.

Sergej Koščejev 2022-07-02 16:42:28

Adapton looks like what I’m looking for, too.

André Terron 2022-07-03 16:03:11

I love this post: lord.io/spreadsheets

The "further reading" section at the bottom also has great pointers.