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

Peter van Hardenberg 🕰️ 2020-07-18 00:17:52

This week in the Cambria project we're sharing the state of our lens language which is inspired by Pierce's work at UPenn but intended for (eventual) production usage: https://inkandswitch.github.io/cambria/weekly-updates/week-5-6/

nicolas decoster 2020-07-23 13:41:31

Thanks for sharing! It is very interesting. 🙂 At some it is quite sure that I will have to do things like that.

Kartik Agaram 2020-07-26 20:59:01

Great demo video!

Sol Bekic 🕰️ 2020-07-15 11:02:15

I've been working on editor integration for the alv livecoding language, and finally have something worth showing. Alv scripts being a bunch of stateful pieces, seeing that state feels like a gamechanger to me, even more than I originally anticipated. I feel like this single demo clip might now show what alv is about better than my attempts at communicating it verbally or textually; maybe those who have followed along with my (few) videos in #C0120A3L30R or the other posts can confirm or deny that?

https://twitter.com/S0lll0s/status/1283349999213051904

🐦 s-ol: #alv + @AtomEditor = 🖤

Now with toggle-able widgets for various kinds of expressions :)

https://alv.s-ol.nu

Sol Bekic 2020-07-23 21:02:55

Charlie Roberts I will take a look at CodeMirror. Did you write about the visual editor for Gibber somewhere? I did a quick search on articles to reference to compare with Gibber's editor, and I found two of your papers on Gibber, but they don't seem to mention it (at first glance).

Charlie Roberts 2020-07-24 09:13:19

Sol Bekic yeah, there’s a few references that touch on this. The best is probably an interactive web essay that I presented at SPLASH in 2018: https://charlieroberts.github.io/annotationsAndVisualizations/index.html

Charlie Roberts 2020-07-24 09:20:05

Works best in Chrome. There’s a bibliography at the bottom of that essay that has links to more references. The 2015 NIME paper was the first description of the work and also discusses some other features that are kinda fun, like using font characteristics to convey signal information. The journal paper is basically a short artist statement about using these annotations in performance… happy to send it to you (and anyone else) if you don’t have access and want a copy.

Tudor Girba 2020-07-24 06:24:33

Glamorous Toolkit is now beta: https://gtoolkit.com

We wrote a summary of what this entails here: https://blog.feenk.com/glamorous-toolkit-v0-7-1214-beta-2uv9ne4vyynvcv08kcm07cihz/

Kartik Agaram 2020-07-24 15:58:30

I just downloaded it and am going through the tour. It put me in a blank page and I have to click the burger menu on the bottom right everytime I want to switch pages. Is there some other way that I'm missing? Thank you!

Tudor Girba 2020-07-24 17:19:51

There are arrows on the right / left

Kartik Agaram 2020-07-24 17:42:35

I did see those but they seemed greyed out and I couldn't click them. But I'll check again in a few hours. Thanks!

Tudor Girba 2020-07-24 18:13:14

yes, we need to make them respond to hover

Kartik Agaram 2020-07-24 23:54:01

Oh you're right! I guess I never actually tried clicking on them. Thank you!

Doug Moen 2020-07-25 00:57:42

Windows support is good news. Is 3D graphics support in the roadmap?

Tudor Girba 2020-07-25 06:29:30

Thank you for trying Kartik Agaram 🙂

Tudor Girba 2020-07-25 06:29:49

Doug Moen what specifically do you mean by 3D graphics support?

Doug Moen 2020-07-25 15:02:38

You've said that it is possible to use GT as an IDE for programming languages other than Smalltalk. My language, Curv, is a DSL for constructing interactive 2D and 3D animations. So I am investigating whether it is possible to use GT as an IDE for Curv.

One requirement is to be able to inspect Curv values (eg, inspect the value of a variable). A value in Curv may be an interactive 3D animation. I would also like to be able to construct documentation for Curv using GT, and embed Curv interactive animations within this documentation, in the manner of "explorable explanations" or "The Book of Shaders".

So the basic requirement is to be able to embed interactive 3D graphics directly in a GT window or document, rather than use a Pharo plugin that invokes the operating system to open a separate 3D graphics window outside of Pharo.

Performance is also important. I need to use the GPU to render 3D graphics to get sufficient performance for interactive frame rates. I don't want interaction to be laggy, so I'd prefer to get the pixels from the GPU frame buffer into the Pharo window in the most direct way possible.

Is support for this something you would like to see in GT in the future? If so, do you have a preferred technical approach for how you would like to get there?

Tudor Girba 2020-07-26 11:42:57

Doug Moen Excellent use case!

First, about supporting other languages (or combination of languages). Indeed, that is exactly what GT is primarily conceived for. If you have a grammar, adopting it in an editor is straightforward. Connecting to the runtime will take a bit more work, but it is certainly possible already.

Second, related to rendering. Indeed, we moved the rendering to be based on compositing render layers which allows us to split the scene and send it to either CPUs or GPUs. The goal here is indeed to host other renderings. The underlying rendering is based on Skia. We already use this mechanism to have parts of the drawing do not even get into the Pharo image. For example, a picture goes directly through Skia and get composed into the larger scene.

So, the plumbing should be in place.

Doug Moen 2020-07-26 13:28:18

@Tudor Girba I want to understand how rendering works in GT.

Currently, I use OpenGL. I obtain an OpenGL context from the operating system's window manager (Linux, MacOS, Windows), and render my scene to the GPU frame buffer associated with that context. All desktop operating systems now use compositing window managers that allow clients to render graphics into GPU framebuffers. These buffers are then composited within the GPU by the window manager. Crucially, it is not necessary to copy the contents of a Curv GPU framebuffer into CPU memory and then back into the GPU on every frame. All pixel data stays in the GPU.

So, I hope that GT has or will have the same architecture. I can ask GT for an OpenGL context, then render animated graphics into that context in a loop that runs 60 times per second within my code, and my GPU framebuffer is composited with other framebuffers within the GPU to construct the image that appears in a Pharo window. There is also a queue of input events (mouse, keyboard) that my render loop (written in C++) can read while animating some interactive graphics.

Tudor Girba 2020-07-26 13:33:15

That’s exactly what I wanted to describe above. This is already the architecture of GT.

Doug Moen 2020-07-26 19:25:54

Thanks, that sounds promising. Apple will probably drop support for OpenGL next year and force people to use Metal. I am thinking about migrating from OpenGL to Google's Dawn library, which implements the WebGPU API on many platforms. This would mean that I would be using Metal on MacOS, DX12 on Windows and probably Vulkan or maybe OpenGL on Linux. And that means I would need the ability to ask GT for Metal, DX12 and Vulkan rendering contexts. Is that a problem? Are you limited by the GPU API support in Skia?

Mariano Guerra 2020-07-24 12:51:35

☀🌑

Chris Maughan 2020-07-24 13:08:57

Dark for the win 🙂 But I think maybe these icons need a refresh for dark mode; I find the white a bit jarring in that mode.

📷 image.png

Mariano Guerra 2020-07-24 13:12:50

yes, the -light classes are two "light", will see what I can do

Mariano Guerra 2020-07-24 13:13:02

maybe gray, but that color usually means "disabled"

Chris Maughan 2020-07-24 13:16:56

I'd probably make the backgrounds 'dark' or the same black, but change the icon graphic to use a lighter color, or a even dark-friendly colors

Chris Maughan 2020-07-24 13:17:30

📷 image.png

Chris Maughan 2020-07-24 13:17:53

That's what Microsoft does in VC ^

Mariano Guerra 2020-07-24 13:20:29

makes sense, light on light theme blends with the background, the same should happen on dark theme

Chris Maughan 2020-07-24 13:25:31

🙂 Nice

Chris Maughan 2020-07-24 13:27:35

Are you using FontAwesome for your icons?

Chris Maughan 2020-07-24 13:28:55

Reason I ask, they look a little soft round the edges; like they are bitmaps and not vectors. Might just be how you captured them though.

Mariano Guerra 2020-07-24 13:41:48

glyphicons, I'm using the svgs, so maybe the browser or the compression

Garth Goldwater 2020-07-24 14:14:09

slack is really bad about preserving image quality in my experience

Will Crichton 2020-07-25 00:24:47

I’m writing a paper for the Human Aspects of Types and Reasoning Assistants workshop (https://2020.splashcon.org/home/hatra-2020#Call-for-Papers) about what makes ownership in Rust challenging to use. For example, how incompleteness of static analysis makes it hard to interpret type errors as the fault of the user or the compiler. I’d love to get feedback on:

  • Does the process of interpreting a type error make sense? Does it ring true to your own experience (in Rust or other languages?)
  • Did you learn something new? Does this paper help you understand/frame the usability challenges about Rust specifically, or potentially a different language?
Garth Goldwater 2020-07-26 00:58:14
  • you should have line numbers printed next to the code if you’re going to reference code by line number—there’s some ambiguity in the motivating example as to whether “line 1” means let mut v = or let x =.
  • i’m kind of a dumbass about rust, so more code comments would be helpful for people who (like me) haven’t bothered to learn the syntax (depends on your intended audience)
  • it might be helpful to reference some of the literature on programming education specifically dealing with (i think they’re referred to as) cognitive schemas (sorry i can’t find the paper i’m thinking of atm)
  • this seems like the type of thing language designers should absolutely be thinking about. i don’t know much about rust and haven’t learned about the borrow checker but this seems like a pretty solid intro
Will Crichton 2020-07-26 19:58:29

Thanks Garth Goldwater! That’s all super helpful feedback.

Kartik Agaram 2020-07-26 20:32:02

4 pages in, and I've already had half a dozen "aha"s. 👍 👍