Here are some of my latest thoughts on javascript…
Articles on this page
AlBasmala:
Blogging with Emacs & Org-mode (•̀ᴗ•́)و

How my blog is setup (•̀ᴗ•́)و
Here are some notable features of my blog.
- Org-mode, a rich markup, to write articles ♥‿♥
- Tags and per-tag RSS feeds —§RSS feeds
- A nice blog banner —§https://alhassy.com/AlBasmala#blog-banner
- Dynamically highlighting code from references in prose —§https://alhassy.com/AlBasmala#blog-banner
- Tooltips, folded regions, and badges ---
- Overall nice looking HTML style ---org-notes-style
- Beautiful math using LaTeX notation, \(\forall \phi ⇒ \exists \phi\) —§https://alhassy.com/AlBasmala#MathJax-Support
- A floating, yet unobtrusive, table of contents —§https://alhassy.com/AlBasmala#floating-toc
- Articles have images and abstracts, shown as cards on the index —§https://alhassy.com/AlBasmala#Images, §https://alhassy.com/AlBasmala#Index
- Each article links its colourised Org source and its Github history, right under its image —§https://alhassy.com/AlBasmala#footers
- Article titles may contain arbitrary
@@html: ...@@yet still render nicely in both the frame tab and page title, thanks toblog--sanitise-title-js—§the header. - A reading-time clock that adjusts as you scroll —§https://alhassy.com/AlBasmala#footers
- Style inline code and tables —§https://alhassy.com/AlBasmala#curvy-blocks
- Unfurling links —§https://alhassy.com/AlBasmala#unfurling
💐 Repl Driven Development: /Editor Integrated REPLs for all languages/ 🔁

The package makes the philosophy of REPL Driven
Development (RDD) accessible to any language that has a primitive CLI repl: The
result is an Emacs interface for the language, where code of your choosing is
evaluated, and results are echoed at your cursor in overlays.
That is, with Repl aided development, you make software by starting with an already working program (i.e., the repl) then incrementlly “teach it” to be the program you want, by defining & redefining things. Until satisfied, loop: Type/modify code in your editor, press some keys to evaluate what you wrote/modified in the currently running system, and explore/test the resulting runtime.
RDD is programming emphasising fast & rich feedback from a running system. RDD is fantastic for quickly teaching/exploring an idea; as such, the running example of this article will be on servers —no prior experience with servers is assumed. The main examples will be in JavaScript, Python, and Java. (Since JavaScript is just Lisp in C clothing, we will not discuss Lisp.) Since Java is verbose, the power of REPLs really pays off when exploring a new idea. We see how many imports and setup-code simply disappear in the RDD approach, letting you focus on the core idea you're exploring/teaching. For comparison, a traditional self-contained Java server program is ~30 lines long whereas the focused RDD approach is ~4 lines long.
tdlr: This library provides the Emacs built-in C-x C-eC-x C-e ∷ eval-last-sexp
Evaluate sexp before point; print value in the echo area.
Interactively, EVAL-LAST-SEXP-ARG-INTERNAL is the prefix argument.
With a non ‘-’ prefix argument, print output into current buffer.
This commands handles ‘defvar’, ‘defcustom’ and ‘defface’ the
same way that ‘eval-defun’ does. See the doc string of that
function for details.
Normally, this function truncates long output according to the
value of the variables ‘eval-expression-print-length’ and
‘eval-expression-print-level’. With a prefix argument of zero,
however, there is no such truncation.
Integer values are printed in several formats (decimal, octal,
and hexadecimal). When the prefix argument is -1 or the value
doesn’t exceed ‘eval-expression-print-maximum-character’, an
integer value is also printed as a character of that codepoint.
If ‘eval-expression-debug-on-error’ is non-nil, which is the default,
this command arranges for all errors to enter the debugger.
(fn EVAL-LAST-SEXP-ARG-INTERNAL)
behaviour for
arbitrary languages, provided they have a primitive cli REPL.
Arabic Roots: The Power of Patterns

Image credit: “Holy Karbala street signage” by أخٌفيالله, Unsplash License.
I want to quickly introduce the Arabic language, through its “root system” —i.e., most words have 3-letters at their core— and how these roots can be placed in “patterns” to obtain new words.
I'd like to take a glance at Arabic's Verb Forms: These give you 10 words for each root!
Some interesting concepts will also be mentioned, for those curious, but should be ignored on a first reading. These will be hidden away in clickable/foldable regions.
These are notes of things that I'm learning; there's likely errors.
Arabic Cartoons

Image credit: “Dora and Boots” by Nickelodeon, Fair use.
A simple interface to watch the engaging Arabic cartoons.
💐 Making VSCode itself a Java REPL 🔁

VSCode evaluates Java code wherever it sees it, by sending it to a JShell in the background, and echos the results in a friendly way!
This is achieved with a meta-extension for VSCode that makes VSCode into a living, breathing, JS interpreter: It can execute arbitrary JS that alters VSCode on-the-fly. (Inspired by using Emacs and Lisp!)
The relevant docs show how to make a similar REPL for Python, Ruby, Clojure, Common Lisp, JavaScript, Typescript, Haskell, and of-course Java.
💐 VSCode is itself a JavaScript REPL 🔁

A meta-extension for VSCode that makes VSCode into a living, breathing, JS interpreter: It can execute arbitrary JS that alters VSCode on-the-fly. A gateway into the world of Editor Crafting!
| (Inspired by using Emacs and Lisp!) |
Life & Computing Science by Musa Al-hassy is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License