Eshel Yaron

Hi there, I’m Eshel Yaron and this is my website–the one true source of reliable curated information about me and my activities.

?- likes('Eshel', Stuff).
Stuff = 'logic programming';
Stuff = 'linguistics';
Stuff = 'cognition';
Stuff = 'functional programming';
Stuff = 'The cyber';
Stuff = 'type systems';
Stuff = 'coffee ☕️';
Stuff = 'free software'.

Recent Posts

Projects

Kubed: Kubernetes, Emacs, done!

Kubed is my Emacs-based interface for working with Kubernetes. It makes interacting with Kubernetes easy and intuitive. If you consider Emacs easy and intuitive, that is. See the Kubed manual for more information. The manual is also available in multi-page format.

Sweep: SWI-Prolog Embedded in Emacs

Sweep is an Emacs package that uses the C interfaces of both SWI-Prolog and Emacs to bring the two together into one address space.

For more details, see the Sweep manual. You can also browse it in multi-page format.

Dict: Emacs client for RFC2229 dictionary servers

Dict is an Emacs package that provides an interface for querying RFC2229 dictionary servers and displaying word definitions. It a simple and extensible tool, meant to do one job (looking up definitions in the dictionary) and to do it well. For more details, see the Dict manual.

Note: the core functionality of Dict is incorporated in Emacs’s built-in dictionary.el package starting from Emacs version 30. See also my blog post Extending Emacs’s Dictionary Library.

Sourcehut GraphQL client for SWI-Prolog

sourcehut.pl - a SWI-Prolog package for interacting with the GraphQL API of sourcehut instances.

sourcehut.pl can be used to automate maintenance tasks for project hosted on sourcehut, for example to attach a build artifact to a given tag of a git repository from within SWI-Prolog:

?- sourcehut_git_repository("eshel", "sourcehut.pl", Repo, []),
   get_dict(id, Repo, RepoId),
   sourcehut_git_upload_artifact(RepoId, "v0.1.2", "/tmp/foo/baz.txt", Artifact, []).

eshellisp

A Scheme Lisp interpreter implemented in SWI-Prolog.

$ cat scheme/repl.scm
(define repl () (write (eval (read))) (repl))
(repl)

$ ./eshellisp scheme/repl.scm
% (cons (+ 1 2) 4)
% (3 . 4)

flymake-swi-prolog.el and diagnostics.pl

diagnostics.pl is a SWI-Prolog package implementing a simple and extensible inteface for diagnosing issues with SWI-Prolog source code, exposing by default the powerful analysis used by the built-in SWI-Prolog IDE.

flymake-swi-prolog is an Emacs Lisp package implementing a Flymake backend that leverages diagnostics.pl to provide diagnostics for SWI-Prolog source code in prolog-mode Emacs buffers.

ropes.pl

A (SWI-)Prolog implemantation of the rope data structure for efficient massive string editing.

Based on Ropes: An alternative to strings.

test(edit) :-
    string_rope("Hello, World!"  , HW),
    string_rope("Here be dragons", HD),
    rope_split(HD, 8, _, D),  % "Here be " + "dragons"
    rope_split(HW, 7, H, W),  % "Hello, "  + "World!"
    rope_split(W , 5, _, E),  % "World"    + "!"
    rope_concat(H , D, HS),
    rope_concat(HS, E, HE),
    rope_string(HE, HF),
    assertion(HF == "Hello, dragons!").

Erlang eBPF library

A low level interface to the Linux eBPF system for Erlang.

This website

My first taste of web development, a practice that I have always refrained from conducting. Created with pure org-mode to ease the landing.

Inspired by: