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

Kartik Agaram šŸ•°ļø 2020-08-30 20:56:07

šŸ¦ micah 'lime with barcode' elizabeth: scaling feels like a core problem with computing. the desire to build a single system that encompasses the entire world is inherently bad

Kartik Agaram 2020-08-30 23:51:10

I don't follow your comment or what you're disagreeing with, and that makes me wonder if I understand the tweet. But IMO:

  • SaaS just going by the term doesn't have to encompass the entire world, and yet the examples of it we see around us are all trying to do that. Perhaps the problem is more the culture we're surrounded by, to maximize adoption and profit.

  • Selling native apps for single users can also fall into the same trap, but they don't have to. The scaling here isn't in the runtime behavior but the deployment and life-cycle management.

  • Open source also falls into this trap, with everyone trying to gain market-share by accreting features, shipping binaries, discouraging others from forking, etc.

Not sure if this clarifies or muddies things further..

Christopher Galtenberg 2020-08-31 01:11:02

I was just trying to grasp at the tweetā€™s meaning, and was taking a guess. I still donā€™t know. Apps are thinking too big?

You seem to get the authorā€™s meaning of ā€œencompass the worldā€ - so Iā€™ll just stand aside for othersā€™ conversation.

Konrad Hinsen 2020-08-31 07:25:33

Kartik Agaram What you are describing sounds more like a problem of today's attention economy than of scaling in the technical sense that I attribute to this term in computing. In a global attention economy, there is space only for a few well-known players in anything, be it tech, art, or whatever else.

Jack Rusher 2020-08-31 12:14:11

I'm also in the "not sure what the original tweet means" situation, but if I take it to be "having one giant Facebook for the whole world is maybe bad", then šŸ’Æ. But is that a "computing" problem or more of a human nature/network effect problem?

Kartik Agaram 2020-08-31 14:44:59

Yeah, we can probably improve on calling it 'scalability'. I see it as an aesthetics problem, and the urge for one single service provider feels like it stems from the same source as wanting to optimize the big-O and so on.

Stefan Lesser šŸ•°ļø 2020-08-29 15:01:25

I enjoyed reading this article by Greg Bryant about Christopher Alexanderā€™s connection to the software industry.

Donā€™t read this for the application ā€œGatemakerā€. Read this for a fascinating outsiderā€™s view on the software industry, systems design, and end-user programming.

Here are a few excerpts to whet your appetite (and/or get you upset enough) to embrace the rather long read (highlights mine):

The focus of the subsequent Software Patterns movement remained within the formal sciences, and so could not interpret CAā€™s work in the natural and human sciences: the application of human judgment using feeling, the smooth unfolding of natural geometry, and the task of helping people (programmers or users) to become more whole and alive. The criteria for ā€˜goodā€™ were so different, that everything was misconstrued, from ā€˜patternā€™ to ā€˜incrementalā€™. Again, they arenā€™t to blame: > this focus on abstraction, and the dismissal of feeling, and the reality beyond constructed formal systems, is endemic in the computer industry.> Today, Software Patterns proponents, like most successful computer people, are not even interested in this cavernous disparity.

Interchangeable parts make an adaptive natural structure impossible. Programming environments, including those inspired by patterns, push this ā€˜partsā€™ view, which hampers sensitivity and true novelty. > Itā€™s the worldview of the factory-builder, and these tools for mass-production logistics have little regard for people.>

When underlying code is considered different, and more important, the tendency is simply to trash hard-won efforts to improve the userā€™s experience.> This happens all the time in the industry, and Google is among those pushing the lunatic idea that we may not need people to create user interfaces.

This is a complete divergence from CAā€™s work, where the underlying structure is in harmony with human interaction. Computing is not ā€˜somehow differentā€™. It is still a human tool recruited for human purposes, and the principles still apply.

But it was hard to get computing folk to focus on the actual human effect of the program. In fact, they saw it, experienced it, momentarily agreed that it was surprising, but soon forgot it.

To be fair, they simply werenā€™t equipped to discuss what weā€™d accomplished. They were not natural scientists, nor activists. > They shared ā€˜pragmaticā€™ and fashionable industry viewpoints that make it nearly impossible for anyone to discover anything new or important about people & computers

The software patterns literature has no such research initiative. Instead, they focus on objects, properties, types, lists, titles and categories. > It looks like butterfly collecting, with no drive to build a theory with explanatory adequacy. Itā€™s Natural History instead of Natural Science.

http://www.rainmagazine.com/archive/2014/gatemaker

William Taysom 2020-08-31 05:11:30

The pain of culture clash: not speaking remotely similar languages.

Konrad Hinsen 2020-08-31 08:27:17

Nitpicking: the criticism of fractals is a bit superficial. People working with fractals in science are well aware that a fractal is a mathematical idealization just like the infinitely small point of geometry. They do discuss the upper and lower limits of scaling behavior. Fractals remain a useful concept in spite of their limits. For examples, see Geoffrey West's book "Scale".

Stefan Lesser 2020-08-31 09:29:57

Konrad Hinsen Sounds like you didnā€™t come across the next paragraph in the article then. :-)

Konrad Hinsen 2020-08-31 18:43:05

Worse, I commented your excerpt before reading the whole article...

Jack Rusher šŸ•°ļø 2020-08-30 18:11:15

I really like this new AR work from Ryo Suzuki, et al.

https://ryosuzuki.org/realitysketch/

nicolas decoster 2020-08-31 09:12:35

I also like it a lot! And I would like to play with this... Does anyone know if there are some RealitySketch software/code somewhere?

nicolas decoster 2020-08-31 09:15:11

I would love to have this kind of interaction in a programming environment. I guess I will try to add it at some point in my future work.

Garth Goldwater 2020-08-31 14:50:59

this is the most exciting thing iā€™ve seen in AR

Jack Rusher 2020-08-31 12:25:31

Oleg dreams himself to something like Plan9:

This paper is an attempt to imagine what an OS would look like and how it would work if looking for a word 'foo' in > something>  and deleting/closing/stopping this something, -- be it a paragraph of text, a network connection, a subscribed newsgroup, a process -- would all require roughly the same sequence of mouse clicks or keystrokes, and would be understood and interpreted in the same spirit by the operating system.http://okmij.org/ftp/papers/DreamOSPaper.html

Chris Knott 2020-08-31 14:01:40

This reminds me of Joel Spolsky's blog Don't Let Architecture Astronauts Scare You.

The fact that there are three distinct English words "deleting/closing/stopping" suggests to me that users will have no trouble remembering and repeating these different actions.

An abstraction is useful when we want to operate at the level of the abstraction, across different implementations. How often are users going to want to delete a line of text at the same time as close a network connection or stop a process? Very, very rarely imo.


https://www.joelonsoftware.com/2001/04/21/dont-let-architecture-astronauts-scare-you/

When great thinkers think about problems, they start to see patterns. They look at the problem of people sending each other word-processor files, and then they look at the problem of people sending each other spreadsheets, and they realize that thereā€™s a general pattern: sending files. Thatā€™s one level of abstraction already. Then they go up one more level: people > send>  files, but web browsers also ā€œ> send> ā€ requests for web pages. And when you think about it, calling a method on an object is like sending a message to an object! Itā€™s the same thing again! Those are all > sending>  operations, so our clever thinker invents a new, higher, broader abstraction called > messaging> , but now itā€™s getting > really > vague and nobody really knows what theyā€™re talking about any more. Blah.

When you go too far up, abstraction-wise, you run out of oxygen. Sometimes smart thinkers just donā€™t know when to stop, and they create these absurd, all-encompassing, high-level pictures of the universe that are all good and fine, but donā€™t actually mean anything at all.

Stefan Lesser 2020-08-31 19:09:14

That excerpt should end with, ā€œand then they have truly become mathematicians.ā€

Andrew F 2020-08-31 20:19:49

Yeah, but our job as programming tool developers is precisely to climb that mountain and stop in the right place. That's how all our programming abstractions got started, starting with lambda. And while programming tool design is very similar to math on one side, it's very similar to OS design on the other, with both focusing on possible actions a user can take, specified in digital form, to accomplish a goal, plus all the overlap in runtime design.

Stefan Lesser 2020-08-31 20:54:43

Thereā€™s time for engineering and thereā€™s time for science. The key is to know when to use which.

Jack Rusher 2020-09-01 07:19:10

Chris Knott I can only surmise from this reply that you did not read the paper. Nonetheless, as a sign of good will, I made you some art inspired by the phrase "architecture astronaut"...

šŸ“· astronaut-2.png

Chris Knott 2020-09-01 07:31:45

I read it, although perhaps I misunderstood it if you are suggesting this response is not relevant...?

Jack Rusher 2020-09-01 07:45:13

You said "How often are users going to want to delete a line of text at the same time as close a network connection or stop a process?"

He makes no suggestion that they would. Instead, he talks about using a conceptually similar framework for interacting with the many databases that are maintained by the operating system, which would mean that when one seeks to perform an action they would have less cognitive work to do in order to figure out how to complete their desired task.

This is in spirit similar to how Plan9 improves upon the Unix model by using the file API to interact with various system and non-system services.

Chris Knott 2020-09-01 09:40:44

I didn't mean to suggest that the author proposed that, that was my own thoughts on when such abstractions actually have practical use.

As in; when tested against my personal rule of thumb for whether an abstraction is a good idea, I don't believe these suggestions pass it.

Chris Knott 2020-09-01 09:49:51

I am assuming the original namers of, for example, files, folders and pipes, chose these names because they felt their behaviour was naturally analogous to physical files, folders and pipes. In the real world a notepad and a pipe are very different things. Nobody thinks "hmm, writing in this notebook is really the same operation as sending water down this pipe". This is not a useful thought for anyone to have.

To be clear, I am an architecture astronaut by nature, the aesthetic attraction of a unifying abstraction is very strong for me, but I don't believe it makes the system more practically useful. It's something I have tried to train myself to fight

Shalabh Chaturvedi šŸ•°ļø 2020-08-25 21:00:12

Jonathan Edwards recently uploaded the Subtext 1 demo (from 2005) to Vimeo. I hadn't been able to view it previously (thanks to Flash).

It has a lot of interesting takes - and most (all?) that I agree with. E.g. edit time name resolution, debugging by inspection, a concrete model of time, inline expansion of function calls, and more.

Check it out: https://vimeo.com/451278506

šŸ”— Subtext 1

Daniel Garcia 2020-08-31 20:30:24

Really cool video Shalabh Chaturvedi, thanks for sharing!

I really like this slide šŸ‘‡

Shalabh Chaturvedi 2020-08-31 23:43:46

Heh yeah I recommend all the videos on http://subtext-lang.org for other gems.

Aria Minaei 2020-08-31 20:50:48

There is a thread on HN: "https://news.ycombinator.com/item?id=24332418

I left a https://news.ycombinator.com/item?id=24334069 with a few ideas:

  • Emphasize synchronization over imperative API calls. Imperative APIs encourage data silos. They are the underlying technical part of the problem that Zapier and ITTT try to solve. See [0] and [1] for some ideas.
  • Allow users to submit "agents" rather than "requests." An agent is a small program given extremely limited resources (limited process/memory/runtime budget) that you can safely run on your server. It is a possible answer to many of the standards/protocols that wouldn't exist if frontends were running on the same machines as backends. [2]
  • Emphasize composition over integration. Functions compose (nest, recurse). Event emitters don't. As long as APIs are built to be integrated rather than composed, making them work together is a full-time or full-company job (eg. Zapier).
  • Make things immutable. Immutability allows APIs to "play" with one another without fear of setting off the nukes (ie. side effects). It's possible that this approach would make it so that integrating two APIs becomes a job for ML/AI rather than humans.

This is from my limited understanding of some of the ideas in FOC. What did I miss/misinterpret?

[0] https://github.com/braid-work/braid-spec

[1] https://writings.quilt.org/2014/05/12/distributed-systems-anhttps://writings.quilt.org/2014/05/12/distributed-systems-and-the-end-of-the-api/

[2] https://news.ycombinator.com/item?id=23900749

Cole Lawrence 2020-08-31 20:54:56

The most used languages don't support the real world, and especially not "functional" languages (without a lot of piping).

I believe that event emitters can potentially be composable, it just depends how you set them up. There are a lot of ideas in the data-oriented paradigm (often used in game dev) which have been by far the most composable approach to integrations, I've ever experienced.

Cole Lawrence 2020-08-31 20:56:24

I'm glossing over some assumptions being made about what an "event emitter" is, exactly, but in our case it's essentially something modifies a row in a shared DB, and something else was directly listening to that row to change. For example "when my postmates order arrives"

Cole Lawrence 2020-08-31 20:58:57

The key to this approach is that everything is talking together in the same "DB", and we're enforcing visibility. There was an interesting programming language just announced that goes in this direction: https://www.reddit.com/r/ProgrammingLanguages/comments/ik0w0q/tablam_a_experimental_relational_language/

Garth Goldwater 2020-08-31 21:30:35

I think at least one version of Eve also had a similar story going on

Garth Goldwater 2020-08-31 21:31:17

alsoā€”canā€™t you model event emitters with observers? which can be modeled with functional reactive programming? which can be implemented with pure functions? so you can compose in the same way?

Garth Goldwater 2020-08-31 21:31:58

I guess Iā€™m a bit fuzzy on the details of what separates/defines ā€œintegrationā€ vs ā€œcompositionā€

Cole Lawrence 2020-08-31 21:34:08

Garth Goldwater, yeah. Good point. I wonder if Aria Minaei meant something more specific.

integration vs composition: I'm not entirely sure. It makes me feel like composition is like swallowing the other service like a library, while integrations are the icons on your landing page.

Aria Minaei 2020-08-31 22:01:47

integration vs composition: I'm not entirely sure. It makes me feel like composition is like swallowing the other service like a library, while integrations are the icons on your landing page.That's how I picture it too.

An example of "integration-style" programming that I deal with often, is the Node.js-style https://nodejs.org/api/events.html#events_class_eventemitter where there isn't much of a principle in event ordering, concurrency, propogation, scheduling, etc, and the topology of dataflow is more emergent rather than explicitly designed and very hard to debug. It is still possible to compose things that use EventEmitters, but it's just not ergonomic.

The composable counterpart to EventEmitter would be an FRP-style Observables like those in https://rxjs.dev/guide/overview. Observables there are just generalizations over functions and get the benefit of functions, such as recursion and explicit scope.

Aria Minaei 2020-08-31 22:16:12

Another example of composition over integration (again from the JS world, sorry šŸ™‚) is React vs, say, jQuery.

In jQuery, there is a global namespace that is the DOM tree representing the HTML document, and interactivity is peppered on top of individual html elements, like: $('ul').reorderable() (this is supposed to turn all <ul> lists into lists that the user can re-order by drag/dropping their items).

But as soon as you need to nest two re-orderable lists, the code becomes quite awkward, especially if one list can create more lists inside itself. It is not impossible, just hacky.

Compare that with React, where a <ReorderableList> is just a component, which are themselves a generalization over functions. Suddenly it becomes easy to write and use nested lists like so: <ReorderableList>...<div><ReorderableList>....

Aria Minaei 2020-08-31 22:18:19

In integration, things have IDs that have to be book-kept. In composition, things are addressable through their position in the topology (parent can reference a child without having to assign a global ID to that child).

Aria Minaei 2020-08-31 22:19:40

(though topology doesn't need to be hierarchical in a composition).

Cole Lawrence 2020-08-31 22:21:25

Aria Minaei, are you familiar with using data-oriented programming? Esp that used in game development with entity-component-systems?

Aria Minaei 2020-08-31 22:22:02

In a composition, the lifecycle of things is again managed by the topology. If a thing is no longer needed, it is removed, similar to how values on a function call stack get freed after the function is done running.

In react, componentWillUnmount() gets called. In refcounting, some sort of object.free() gets called.

Aria Minaei 2020-08-31 22:24:20

are you familiar with using data-oriented programming? Esp that used in game development with entity-component-systems?@Cole Lawrence Haven't used ECS in anything bigger than a toy, so not very familiar.

Cole Lawrence 2020-08-31 22:26:42

You might find this sort of intro to ECS interesting. It's not super Rust heavy, so the concepts are the focus https://www.youtube.com/watch?v=aKLntZcp27M

Cole Lawrence 2020-08-31 22:29:13

Essentially, data oriented tech is all about the state of the world is accessible by all systems, and each system will look at the data in the world to make a decision to make an update or not based on what they see. Kinda like the https://en.wikipedia.org/wiki/Blackboard_(design_pattern).

But, in this way each system can be written in a pure functional way with effects coming into the top of the funnel

Aria Minaei 2020-08-31 22:30:16

You might find this sort of intro to ECS interesting.@Cole Lawrence Thank you! I was actually building another ECS toy yesterday and looking for a good intro.

Jack Rusher 2020-09-01 15:13:02

I've been thinking for awhile of writing something about the historical user interfaces that aren't much talked about (i.e. not the Alto -> Mac -> Windows lineage). In this instance, I decided to do a "tweet storm" instead of a blog post to see if that would be a more effective way to get the ideas into the world. As this is probably of interest to the community, I thought I should link to it here as well. The entrance to this particular Garden of Forking Paths:

https://twitter.com/jackrusher/status/1300737671497691136?s=20

šŸ¦ āø˜Jack Rusherā€½: I've been thinking about roads not taken lately, wondering whether we should revisit some of them... https://pbs.twimg.com/media/Eg0l3uGXsAAD_Aa.png

Chris Granger 2020-09-01 16:10:32

I love going back and looking at this stuff, and Iā€™ve been thinking a lot about what a modern text-focused interface would be like. It feels like thereā€™s a bunch of neat stuff we should be able to do now that just wouldnā€™t have been feasible at the time. Itā€™s especially interesting to imagine using something like GPT-3 to get the interface to react to you much more naturally than it would otherwise.

Chris Granger 2020-09-01 16:11:50

Jack Rusher you mentioned you worked on lifestreams! Iā€™d love to hear more about what you learned in that experience. It was the primary model we wanted for history and search for Eve, we just never got to the point where it was time to invest in it.

Jack Rusher 2020-09-01 19:21:34

Chris Granger Not on Lifestreams, but rather on a similar system in the context of a startup a long time ago. That was what led me to write the first purpose-built Semantic Web-style Triplestore. The sort of "global personal assistant" was scraping data from email, contacts, appointments, browsing, &c, and storing everything it learnt in a per user TripleStore to allow inferences, lookup, and so on. There was a temporal aspect to the data which allowed one to make "what was that website I visited about topic X within the last week?" sort of queries.

Jack Rusher 2020-09-01 19:43:25

One reason these things are salient for me is that my computing path was unusual: I went from little 8-bit micros directly to Unix machines (first terminals, then workstations) in the mid-80s. Consequently, my formative history with GUIs included oddities like NeWS, X, Plan9, NeXTSTEP, and a couple kinds of Lisp Machine, but mostly did not include Macs or PCs.

Garth Goldwater 2020-09-01 23:27:34

Jack Rusher your ā€œsimilar systemā€ to lifestreams is an accurate description of at least four separate projects in this communityā€”if you have any write ups or talks or posts about that experience anywhere lots of us would read or watch with interest!

Jack Rusher 2020-09-02 07:54:55

The only surviving artifact from that project is a paper I delivered to the W3C in '02 or '03 about the TripleStore implementation. OTOH, my personal knowledge management system is basically a more advanced version of many of those ideas, and I already plan to do some show-and-tell about that when I can fence off enough time to do it properly.

Christopher Galtenberg 2020-09-02 17:47:34

šŸ¦ Gary Bernhardt: "No code" sounds like "we will represent complex logical operations without a symbolic representation." I expect it to result things that are, in fact, symbolic representations (so code) but awkwardly obscured enough to not look like code, just like the last n attempts at this.

Andrew Carr 2020-09-02 19:55:21

I've always liked the term "low code", even though it essentially suffers from the same failing. It better communicates what a service is trying to do.

My favorite example is Excel, the world's most valuable programming language, but it does always feel like coding which I think is important

yoshiki 2020-09-03 01:15:29

imo this isn't a very sophisticated take on the topic. The label is so wide and being applied to so many things, it's kind of meaningless to discuss without specific examples. Critique of the hype and broadness of the label itself might be useful in the context of a wider analysis but this doesn't have that either.

Jack Rusher 2020-09-03 07:16:35

yoshiki Perhaps I was being too generous, but I took it to be precisely a criticism of the most extreme claims (and thus hype center) around these systems.

Don Abrams 2020-09-03 07:33:51

Nosyntaxerrors doesn't have the same ring to it

nicolas decoster 2020-09-03 09:12:26

I agree this kind of tweets from popular people help reframe the actual meaning or goals. My feeling is that Gary only reminds that some people hope that nocode systems will hide all complexity, which is not possible when you design, well, complex system.

Tor 2020-09-02 20:01:14

It seems to be pretty popular to create ā€œfantasy consolesā€, ie something like an emulator but for made-up 8-bit game consoles. Pico-8 is probably the most known one, but hereā€™s a long list: https://paladin-t.github.io/fantasy/

But are there any *fantasy operating systemsā€? Ie not so game-oriented, more exploring alternate history ideas for say WIMP-style OSes, preferably serious enough that you could make ā€œrealā€ software for it.

Jack Rusher 2020-09-03 07:20:29

Many people run old, simple operating systems in emulators or sometimes directly on hardware. For example, my friends at Hundred Rabbits are currently using Plan9 on a Raspberry Pi as their primary development system:

https://twitter.com/hundredrabbits/status/1290361357888417793?s=20

šŸ¦ IOOā ›: We're starting to target the #plan9 operating system, Devine is collecting a bunch of notes over at: https://wiki.xxiivv.com/site/plan9.html https://pbs.twimg.com/media/EehIhCJVoAAUcuY.png

šŸ“· https://pbs.twimg.com/media/EehIk3dU0AA1hLS.png

šŸ“· https://pbs.twimg.com/media/EehIohpUwAEtPF_.png

William Taysom 2020-09-04 13:35:20

There are definitely some who still use Plan9, and its editor Sam.

William Taysom 2020-09-04 13:35:39

Guess there are Amiga folks too.

Kartik Agaram 2020-09-04 16:23:15

A poignant story from 1994:

https://user.eng.umd.edu/~blj/funny/requium.html

It gets me to reflect that I'd have dismissed it 10 years ago, focusing on the superficial complaints and utterly missing the deeper complaint: of a community of astronomers losing something that used to work.

Jack Rusher 2020-09-04 19:43:49

VMS had a great deal going for it. Just as one example, files were named in a conventional way, like FOO.TXT, but with an extra piece of metadata at the end: FOO.TXT;1. Whenever one changed a file it would create a new file with the number at the end incremented: FOO.TXT;2. A directory listing would show all versions. One could open any version by including the version metadata in the filename, and opening a file without a specific version number would just open the most recent version. One could also delete specific versions as desired while keeping other versions around, like a simple revision control mechanism built into the filesystem.

Other things, like fault tolerant clustering, load shedding, disk quotas, and so on, also worked very well. TBF, there are many reasons one might consider the victory of Unix over VMS a worse-is-better thing.

OTOH, the VMS C compiler was terrible (leading me to write hundreds of thousands of lines of VAX Pascal) and the command line language (DCL) lacked the grace of using pipes under Unix.

Roben Kleene 2020-09-04 18:01:27

I came across this quote on Twitter: "In short, predicting the future of technology is easy: just look at what's already failed, and assume that somebody will eventually make a version that actually works." (attributed to a "departing Bernstein analyst"). Any thoughts? Is something already having been tried and failed an indication that it's a bad idea, a good idea, or neither? https://twitter.com/modestproposal1/status/1300483246699020294

Christopher Galtenberg 2020-09-04 18:18:32

Electric cars in the 1930s and Segway "failed", but now battery tech is forefront - failure is manifold, mostly due to a scale factor

Ray Imber 2020-09-04 18:47:18

Probably because it was on HN recently, https://www.popularmechanics.com/science/a33896110/tiny-nuclear-reactor-government-approval/ comes to mind. I think there are a class of technologies for which this is true. It's a case of incremental improvement vs. fundamental new understanding.

The former is much more common because it's "easier to reach in the search space." I think this is another way to state "failure is manifold" from Christopher Galtenberg's comment.

I don't think all future technology can be predicted this way. There is a class of technological evolution that breaks out of such local optima. Using the nuclear example again, the shift from combustion to "understanding and harnessing of the atom", was such an event.

Kartik Agaram 2020-09-04 20:50:47

Marc Andreessen a few years back: "there are no bad ideas, only bad timing."

https://a16z.com/2020/01/30/neighbor

https://samypesse.gitbook.io/pmarca-notes/ideastiming

Jack Rusher 2020-09-06 09:00:54

A 1990 video by Brad Myers offers two hours (!) of screen recordings of the user interface affordances of various historical GUIs, including PARC's Bravo (1974), various Smalltalks, Interlisp-D, Star (1981), Cedar (1982) Symbolics, NeXT, &c.

https://vimeo.com/61556918

šŸ”— all-the-widgets

Christopher Galtenberg 2020-09-06 17:48:07

The plane and teleporter of the ā€œalternate reality kitā€ at 9:20 is magical