Joined May 2008
Maybe one of the issues with graph visualizations (GV) is that each edge type is an extra dimension. At the same time, we are not that good at multidimensional recognition. My business partner sometimes suggests creating additional GVs for our complex workflows and relationships between our clients within the system. Whilst I am usually resistant, I propose simple list presentations and context-bound panel presentations. When you think you want a GV, you really think about "seeing the things in a large picture" from the top. But when you finally see it, it's hard to comprehend. You're looking for better context, but instead, you lose the context. Because it is large. Or, if it is not that large, you don't need it anyway. A somewhat useful GV may lie in the interactivity of such a UI in a way that, when you, let's say, click on a node, it transforms into a useful flatter structure or one-directional sub-graph or tree to help with understanding (1) configuration-time structures and (2) run-time events/operations. This transformation should happen immediately; otherwise, these small operations would drain your brain instead of helping.
22
Two mutually convertible, computationally equivalent formalisms - combinatory logic and lambda calculus - have only one operator: “apply”. We can find a minimal set of primitive combinators to achieve Turing completeness in applicative environment, such as I,K,S-basis or I,B,C,S-basis. On top of them, people invent different abstract machines with interesting characteristics to experiment with and to study their behavior. Similarly, we may define another system: a graph with only one operator - “Infer”. This operator mutates the graph based on predefined rules. It is possible to define a minimal set of primitive rules to achieve Turing completeness on a graph. Math formalism: rule is a span of morphisms in the category of graphs, then approaches like double-pushout (DPO) and single-pushout (SPO). Practical (and widely implemented): RDF graphs and SPARQL CONSTRUCT (and we insert the resulting triples back into the graph) or simply implementation-dependent rule engines. Since graphs are convertible into matrices and back (analogy to the relationship between combinatory logic and lambda calculus), we may define these rules in matrices. Framework: Matrix Graph Grammars (MGG). Moving to practical implementation. The entire system consists of 2 main functions: Infer and I/O. Infer only gets the graph and updates it. No side effects. Therefore, regardless of how it works, it is a pure function. Internally, it applies all defined rules recursively, again and again, until there are no new changes in the graph. Then pass the graph to I/O. It outputs based on the graph content and writes into it based on input. Atomically, of course. Then back to Infer, repeat. 2 main problems. Infer: excessive computational complexity. I/O: obvious desire to make it reactive-style, which (1) greatly increases the general complexity of the program: reactive is generally bad for I/O; (2) need to pass the graph back to Infer on every, let's say, click, but Infer is expensive. Some (partial) solutions. Infer: define more "rich" rules. The richer the rules are (instead of the minimum primitives), the faster it would be, because of fewer iterations within a single Infer pass. Add optimization rules when they are needed. I/O: avoid reactive style, i.e., a component itself is responsible for keeping its local state synchronized with the main state (the graph) bidirectionally. Fck... there is just no easy way for the I/O part. But the idea is, of course, that you can build abstract machines, on paper, like combinatory logic and lambda calculus, using graphs or matrices + rules. Not the real ones.
1
33
1. SLIME/Swank maintainers changed defstruct 'compilation-result (added return-type slot). 2. I've updated SLIME from MELPA. 3. One of the libs I use requires Swank in its ASDF definition. So when I load that system, it compiles and loads swank from the Quicklisp distribution. 4. Now struct is built from the definition from Quicklisp, but 'compilation-result function was loaded before (if I understand correctly), from MELPA's swank, signaling the error on loading that system. (It doesn't prevent the system from working; it only affects reporting in Emacs.) 5. Hmm... since I'm lazy, I've miserably put a link to MELPA's one into the quicklisp/local-projects.🤡 6. As a result, I would need to update this link on each update of the Emacs package. Of course, the right way is the other way around, loading stable SLIME into Emacs from the Quicklisp distribution. But... next time.
1
1
54
Yeah, initially Emacs loads swank, bypassing ASDF at all: (asdf:registered-systems). Which is quite understandable and reasonable.
26
LyX is one of the most beautiful, useful, high-quality, no-bullshit apps ever created. Anki is another one.
1
1
88
This new era started with the paper "Attention is all you need", and yet attention (your human one) is the most valuable thing and the productivity bottleneck: the energy and ability to focus.
1
37
The problem with AI talk is that it immediately burns all the oxygen out of engineering discussions, making them pretty meaningless.
56
Both right-wing and left-wing discourses are full of information bubbles with lies and fakes. The right-wing agenda is known for its fakes, and these fakes are usually petty, small, and about everyday life. On the other side, leftists think globally, and they tend to push global fakes, false and destructive ideas.
222
A little bit of Erik Naggum archeology. comp.lang.lisp, Nov 9, 1997. TO: Hasita Shah >>> I am a student who has been asked to prepare a report on limitations of Lisp. However, I have never used Lisp before and cannot get reference material on it here in Kenya. <<< I suggest you report the limitations of your teacher's pedagogical skills to whoever has the authority to fire him and refund any expenditures you may have accumulated.
313
Why are GNOME's official wallpapers always that ugly (and KDE's ones are usually gorgeous). Always. All these years.
196
`let`, but with primitive "introspection" logging. Stupid and simple, but handy when building large chains of API requests to 3rd party services.
196
Is that Stockholm syndrome... I use Emacs even on the Clockwork uConsole handheld. And I find it pretty handy there. Once Emacs is configured the way I like, I feel at home. Or put it in another way: if it runs Emacs, then it's a full-fledged computer.
208
Instead of colonizing Kupiansk, Pokrovsk, or whatever Ukrainian shetholes are, Russians could spend the same amount of money (if not less), with the same casualties (if not less) to colonize Mars. 1. You have infinite resources. 2. You have a large space industry. Partially outdated, stagnating, but still large, with a lot of experience and expertise. 3. You have hundreds of thousands of brave idiots who want to be heroes, make money, and are ready to die for The Greatness of The Nation. 4. Send them in cheap spacecrafts. Send a lot of cheap spacecrafts with heroes and resources. Some of them die, some of them will become martians. 5. Humanity will thank you.
1
265
Terminal for Boomers, Telegram for Zoomers. You don't need it. Let me introduce OpenClown🤡: an agentic orchestration platform that connects to your X (formerly Twitter) account. Just post your prompts on X, and OpenClown will do amazing things on your local machine. You don't even need prompts: other people can do that, commenting on your X post. Setup is dead easy: post all your API keys and passwords on X (formerly Twitter), and AI will figure out everything else.
1
319
The beginning of 2026 feels like it's a room full of elephants, and you are a pathetic little man trying to find a spot.
1
224
1. I'm used to keeping Xterm open with Tmux in it. In StumpWM, it has become a habit to switch to it with a key combination `C-t x`. Xterm itself is easily customizable, nothing excessive, no frames/menus titlebars. Tmux is good at juggling all these windows and panes. The only trouble with this setup is the clipboard: it's kinda complicated story. 2. Recently, I started to try terminal emulators in Emacs (in addition to Eshell) and eventually settled on `ansi-term`. I'm already accustomed to switching between char and line modes with `C-c C-j` and `C-c C-k` when working with embedded systems in `serial-term`, so for me, it's pretty handy. The only problem with ansi-term is that it's slow and it's not as advanced as it could be. 3. Then finally upgraded my Fedora. 4. So, Fedora 43 is now pushing some new junk into the terminal. Both `term` and `ansi-term` show long trash before the prompt, no escaping. 5. Eventually, I switched to Emacs's `vterm`. And, it turns out that vterm is great. It's a really full-pledged terminal emulator in Emacs.
1
237
* fix: need to use LET instead of SETQ for default-directory here so that the dynamic variable will be bound correctly. There's a weird mess about buffers / directory tracking. In Common Lisp it would be obvious to use LET, but not in Emacs Lisp.
1
111
Two sci-fi movies left something deep in me. Both have unique and unmatched aesthetics. True Art. I can watch them over and over again and get pleasure. I think both are among the best sci-fi movies ever. One is "Immortal" (2004) by Enki Bilal - very underrated by the general public. Another is the classic 1982 Blade Runner.
1
322
whenever I'm watching a video where folks configure linux or emacs, it shows me that ad about procrastination
1
579