freetobeme · @freetobeme
8 followers · 25 posts · Server mastodon.vanlife.is

... a touch of romance, from 11th May 2023

a silken hand, a velvet glove,
come teach me all you know of love,
touch, with slowness, grasp me never,
I may make you stay forever

#mastoprompt #grasp #microfiction #smallstories

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
128 followers · 215 posts · Server functional.cafe

Of course the terminal version of is going to use colors for this, but I feel that Unicode alone is a fairly expressive medium

#grasp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
127 followers · 211 posts · Server functional.cafe

I never showed it to anyone, but my 'unit test' for drawing lines in the textual client of looks like this:

#grasp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
125 followers · 206 posts · Server functional.cafe

I've designed a notation for quotations in (and now all that's left to do is to implement it :D)

#grasp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
125 followers · 205 posts · Server functional.cafe

Yeey I will be showing a demo of during this year's European Lisp Symposium!

#grasp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
124 followers · 203 posts · Server functional.cafe

I have been continuing the march towards a usable version of , but a usable application is still beyond my reach.

As always when working with schedules, I feel that my work is behind the schedule.

I managed to provide some support for line comments and block comments (I have uploaded some screenshots earlier), and I'm still working on expression comments.

At some point I even began to stress out a bit, because I was hoping to have a usable version of GRASP ready for the European Lisp Symposium.

But I haven't heard any response from them, neither negative nor positive (even though it's already 3 days past their deadline).

I also notice that deadlines don't necessarily work well for me. Also, my current day job is fully remote, so I've been mostly working from home, which creates an abnormal condition for the development of GRASP, because so far, I've mostly been developing on my train to and from work. (On the positive side, I started going to the gym regularly 3 times a week.)

In either case, in addition to those comments, I also did something unexpected: I have implemented gesture drawing, which is like in the previous prototype, but which also works in the terminal client -- which I feel is a bit crazy (see the video below).

Anyway, I feel that letting the stress into the development of GRASP was a bad move. It is a fruit of my passion, and I enjoy developing it. I sometimes think about "the grand scheme", and I really can't wait to see it. Yet, there's still so much to do before the vision becomes clear.

On the other hand, as I look back, I am really happy with the progress that I made so far. Sure, there's still so much to be done, but a lot is done already...

#grasp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
124 followers · 203 posts · Server functional.cafe

@lispegistus I hope that one day will become a viable alternative to mobile apps.

When I started developing it, I also tried using Android Studio. It quickly turned out that I had to buy additional RAM, because 2GB wasn't enough even to start up.

And even with 4GB it was terribly slow.

Then I discovered a project called buildAPKs, which allowed me to build apps directly on my phone (in Termux), and I developed two iterations of GRASP entirely on my phone.

Currently I cross-develop GRASP on a laptop and on the phone (I can run it on the phone, in a windowing environment and in terminal), and I think that within a few months I should be able to develop GRASP in GRASP itself.

#grasp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
121 followers · 181 posts · Server functional.cafe

The terminal version of looks progressively more and more like some sort of ASCII art (or rather Unicode art? is that even a thing?)

#grasp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
119 followers · 173 posts · Server functional.cafe

I hold a strong belief that the future software archeologists are generally going to praise for its rather indiscriminate choice of fonts

#grasp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
118 followers · 171 posts · Server functional.cafe

As February is getting to an end, I decided to summarize another month of work on

The main task was polishing the keyboard editing experience. This is a task that I first attempted at the beginning of May 2022.

I remember how hard it was back then, and that the resulting code was incredibly tangled up.

However, it turned out that intermediating all document modifications through reified undoable operations helped to untangle that mess.

While there are still some bugs to be nailed down, and some small things to be improved, I at least reached the point where fixing those bugs seems fairly simple, so I'm not too worried about them.

I also managed to submit my demo paper to European Lisp Symposium, and now I can only wait for a whole month to receive a notification.

But of course I have plenty of other things to do.

My current goal is to bring GRASP to a usable form as soon as possible, which means that I need to
1. provide support for comments (i.e. line comments, block comments and expression comments)

2. provide support for quote, quasiquote, unquote and unquote-splicing

3. fix vertical keyboard arrow movement

4. support file opening and handling

5. support screen scrolling

6. support screen splitting

Overall, I'd like to be able to edit the GRASP source code in GRASP; ideally - before European Lisp Symposium.

Two other hallmarks of GRASP that I want to have, i.e. extension mechanism and gesture recognition - will probably have to wait.

However, I am thinking about implementing quotations and friends using the extension mechanism, so there's a chance that I'll be able to push it a little bit.

Also, gesture recognition is something that I've already done in the previous prototype of GRASP, so I'm not too worried about it.

There's 7 weeks left until the Symposium, and I'm curious how far I'll manage to get. (I think that the points 4, 5 and 6 should be fairly straightforward - because I also managed to implement them in the previous prototype. Point 3 will require at least a week, point 1 - two weeks or so. I am a bit concerned about point 2, but even if it takes more than 3 weeks, I think that the deadline might still be realistic. In either case, being accepted to ELS would certainly boost my motivation.)

#grasp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
118 followers · 171 posts · Server functional.cafe

@pureevil I don't feel like that's an adequate narrative.

I wrote the earlier versions of in with absolutely no tests, which initially gave me velocity to explore things.

But those Java prototypes were ultimately throw-away -- mostly because they were written in Java, but also because there were no tests.

Now that I'm working on "the final version", I use Kawa Scheme. And a part of my "test suite" looks like this:

github.com/panicz/grasp/blob/m

These tests help in two ways. They help me develop my code systematically (and of course give some sense of security when I refactor my code), but they also provide "evidence" for particular operations, so that the person reading the code can imagine how these operations work without studying their definitions (which would be much harder).

Studying the tests is a good place to start when you're new to the code base.

Now, theoretically is a dynamically typed language, but Kawa extends it with a roughly Java-like type system.

And I'm really grateful for that.

Without type annotations, everything is considered to be of java.lang.Object type. Type annotations allow me to convey more information. They are also typechecked, which sometimes helps, even though it's not 100% reliable.

But I can make type signatures even more expressive by writing macros that expand to java.lang.Object: I can include useful information in type signatures, even though the compiler (or rather macro expander) throws most of that information away. This may not be perfect (I dream that one day @edwinb will come and implement a more expressive and more reliable type system for Kawa), but it's still useful.

Lastly, I piggybacked on Kawa's type system and Scheme macros to define the first decent record system for Scheme in the history of human kind.

I have used it, among other things, to implement the undo mechanism in GRASP. I honestly think it's beautiful: I define a set of operations, and each operation has its inverse:

github.com/panicz/grasp/blob/m

Contrast this with the way undo is implemented in (where both Emacs is untyped, and Emacs buffers are unstructured):

github.com/emacs-mirror/emacs/

Look how all the type information is encoded in the comments, which is both more verbose and more error prone.

In either case, I feel that both types and tests are valuable tools, but they serve different purposes.

#grasp #typesvstests #emacs #java #scheme #lisp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
112 followers · 144 posts · Server functional.cafe

This is the closest thing to crazy I have ever seen...

&Drop

#grasp #lisp #terminal #drag

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
111 followers · 143 posts · Server functional.cafe

Wow I just realized that the input system that I implemented for also happens to be a parser!

#grasp #lisp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
109 followers · 128 posts · Server functional.cafe

I just ran into the dissertation of Michael Eisenberg, describing "Bochser, An Integrated Scheme Programming System", and I initially thought that it will turn out to be very similar to (or actually the other way around) - but that didn't turn out to be the case.

boxer-project.github.io/boxer-

#grasp

Last updated 1 year ago

Panicz Maciej Godek · @PaniczGodek
107 followers · 116 posts · Server functional.cafe

@juliana

my temporary answer is

(defun kill-whitespace-or-sexp ()
(interactive "*")
(save-excursion
(save-restriction
(save-match-data
(if (string-match "[ \t\r\n]" (string (char-after)))
(progn
(re-search-forward "[ \t\r\n]+" nil t)
(replace-match "" nil nil))
(kill-sexp))))))

(global-set-key (kbd "M-<delete>") 'kill-whitespace-or-sexp)

my target answer is (which is not Emacs, even though its name doesn't make any reference to it not being Emacs)

#grasp

Last updated 2 years ago

Panicz Maciej Godek · @PaniczGodek
101 followers · 111 posts · Server functional.cafe

Dear Fediverse,

I have a software design problem.

As some of you may know, I'm working on a structural (non-textual) editor for called

GRASP is implemented in Kawa Scheme, so in addition to "just being a Lisp program", it uses Java's object model, which Kawa exposes to programmers.

The representation of documents in GRASP is a bit elaborate: they are implemented as (sort of special) cons cells that can contain other cons cells, Atoms (which can resolve to things like symbols, numbers, etc.) and Text (which resolves to string).

However, I also needed to store some information about whitespace and comments contained in the document.

I chose to use weak key hash tables indexed with the cons cells to store that information, and so I have five tables:

pre-head-space
post-head-space
pre-tail-space
post-tail-space
dotted?

The first four of them return a special Space object, which is a compact representation of spaces (and possibly comments, but that's not relevant right now)

Now, I'm currently working on keyboard editing. The rules of keyboard editing are meant to resemble normal editing text, and it feels quite natural so far - but they are fairly difficult to describe, so it takes time.

Yesterday I made a refactor: I made Atoms and Text implement the same interface, that I have called "Textual". It includes operations like insert-char! or delete-char!.

Now, I am considering whether to make Space also implement that interface. However, the caveat is that the only characters that would be acceptable for Space are #\space and #\newline.

So the question is whether:
- I should make Space implement the Textual interface but make assertions inside the insert-char! that the character belongs to the desired class?
- or should I just have a separate path for editing Space?

This question is more about programmers' expectations regarding interfaces, than it is about finding the "right" technical solution, so I made a poll.

Please help me making it reach other programmers.

#scheme #grasp

Last updated 2 years ago

Panicz Maciej Godek · @PaniczGodek
98 followers · 92 posts · Server functional.cafe

Since the January of 2023 is getting to an end, I wanted to summarize this month's work on

Not much happened -- certainly less that I would want to.

I did manage to create a unifying layer of keyboard binding support on all three clients (i.e. Android, desktop and terminal). There's also a common initialization file executed by all the clients.

I also managed to implement a prelininary version of keyboard editing. The code is a bit ugly and still requires a lot of work (e.g. to integrate it with the "undo" mechanism - which roughly works for the drag&drop mechanism), but if you don't go astray or run into an irritating bug, it feels fairly smooth.

Here's what it looks like in the Android client:

youtube.com/shorts/vjHyoyiPcOA

and here's the terminal client:

youtube.com/shorts/VzJB1wHymM8

The desktop client looks roughly like the Android one, so I spared a recording.

I hope that within the upcomming two weeks, I will manage to polish the code to behave flawlessly.

My most immediate goal is to develop GRASP to the point where I'd be able to use it to develop itself. There's still a lot of work to be done:
- I need to support comments, quasiquote syntax and some Kawa's extensions to Scheme syntax
- I need to improve handling of vertical arrows, because now it's an ugly hack
- I need to implement things like view scrolling, or loading and saving files

My second goal - specifically for the February - is to write a submission about GRASP to the European Lisp Symposium (because of the deadline, which is February 26).

Since it's going to take place in April, I feel that there's a chance that by that time the thing might be usable.

The things that I fear can be missing are:
- the extension mechanism (which is crucial to the concept of GRASP)
- the gesture interface (like the one from the prototype shown on 2020 ICFP's Scheme Workshop - but extensible from within the editor itself)
- particular extensions (I have a few ideas, but I feel that it's too early to be focusing on them)

#grasp

Last updated 2 years ago

Nieuws | NU.nl · @NunlRSS
2944 followers · 3414 posts · Server mastodon.nl

๐—”๐—ฝ๐—ฝ๐˜€ ๐˜ƒ๐—ฎ๐—ป ๐—ฑ๐—ฒ ๐˜„๐—ฒ๐—ฒ๐—ธ: ๐—ก๐—ฒ๐˜๐—ณ๐—น๐—ถ๐˜… ๐—ธ๐—ฟ๐—ถ๐—ท๐—ด๐˜ ๐—ฒ๐—ฒ๐—ป ๐—บ๐—ฎ๐—ธ๐—ฒ-๐—ผ๐˜ƒ๐—ฒ๐—ฟ

De Netflix-app krijgt een make-over en de eerste functies van Grip komen naar de ABN AMRO-app. Dit zijn de apps van de week.

nu.nl/tech/6247616/apps-van-de

#abnamro #grasp #netflix #nunl #nieuws

Last updated 2 years ago

Albert Cardona · @albertcardona
1537 followers · 1082 posts · Server mathstodon.xyz

@cyrilpedia Interesting, and strange that the manuscript on inducing synapse formation with foreign adhesion molecules [1] doesn't mention GRASP (GFP reconstitution across synaptic partners) [2] which essentially does the same thingโ€“strong bounds across membranes of two cells and which is suspected (or known?) to induce synapse formation or prevent their pruning.

[1] Hale et al. 2022 pnas.org/doi/10.1073/pnas.2215
[2] Feinberg et al. 2008 sciencedirect.com/science/arti

#grasp #neuroscience

Last updated 2 years ago

Panicz Maciej Godek · @PaniczGodek
77 followers · 62 posts · Server functional.cafe

@sanchayan I kinda liked this article, because it (unwillingly) seemed to explain some fundamental assumptions behind .

I wouldn't dare to write anything like this myself - at least not before the release of GRASP, but also because there are aspects of Emacs that I deeply respect.

(That being said, once GRASP is released, I do plan to submit a talk to FOSDEM, titled "sudo killall -9 emacs")

#grasp

Last updated 2 years ago