
From "2+2=4" to "2 2 + 4 =", reverse Polish notation, concatenative languages, Forth and its smaller siblings.

Tiny Great Languages: MOUSE (2024)
From "2+2=4" to "2 2 + 4 =", reverse Polish notation, concatenative languages, Forth and its smaller siblings.
Posted on lobsters: https://lobste.rs/s/apuviy
LeoMehraban/factor-lsp: A buggy lsp for factor
A buggy lsp for factor. Contribute to LeoMehraban/factor-lsp development by creating an account on GitHub.
Nix Developer Setup for Factor | toastal
Setting up an isolated Nix developer shell & basic environment for Factor, the concatenative programming language.
Mathematical Illustrations: A Manual of Geometry and PostScript (1996-2004)
Best Shuffle – Re: Factor
Dotenv (parsing) – Re: Factor
This was just posted on lobsters
I don't know how they picked the name for this new terminal, maybe it's a reference.
Tracking Dict – Re: Factor
A venture in writing a larger SPARK project.
Discussion on lobsters
Generic Type Syntax in Concatenative Languages | Discussion on Reddit
There was [a discussion](https://www.reddit.com/r/ProgrammingLanguages/comments/1l8r1sq/syntax_for_generic_types/) here recently about the best...
It is very good, and I am currently using it. I don't like its dependencies on GTK stuff, the developer is a little picky about what to support, and I dislike the +options
style. Other than that, 👍 .
Also great: Wezterm, Konsole, Rio. I'm excitedly following Rio's development, which has a much smaller dependency list, and hopping back and forth between it and Ghostty/Wezterm. But it's still got some things to iron out and features to develop.
GEORGE: A semi-translation programming scheme for DEUCE (1957 Manual)
From Wikipedia:
GEORGE (General Order Generator) is a programming language invented by Charles Leonard Hamblin in 1957. It was designed around a push-down pop-up stack for arithmetic operations, and employed reverse Polish notation. The language included loops, subroutines, conditionals, vectors, and matrices.
Implementing DOES> in Forth, the entire reason I started this mess
Discussion on lobsters: https://lobste.rs/s/w1ludh/implementing_does_forth_entire_reason_i
140 characters might not seem like much, but it's enough to implement an interpreter for a simple programming language. This post explains how.
bab=aaa, bbb=bb – Re: Factor
Discussion on lobsters: https://lobste.rs/s/3fzspa/implementing_forth
A bigger discussion on Hacker News: https://news.ycombinator.com/item?id=43751076
Discussion on lobsters too: https://lobste.rs/s/ydxus1/pipelining_might_be_my_favorite
It's been a while, but my clumsy adding of a comment to the buffer is unnecessary, given zle -M
, which will display a message outside of the buffer. So here's an updated version:
bash
# -- Run input if single line, otherwise insert newline -- # Key: enter # Credit: https://programming.dev/comment/2479198 .zle_accept-except-multiline () { if [[ $BUFFER != *$'\n'* ]] { zle .accept-line return } else { zle .self-insert-unmeta zle -M 'Use alt+enter to submit this multiline input' } } zle -N .zle_accept-except-multiline bindkey '^M' .zle_accept-except-multiline # Enter # -- Run input if multiline, otherwise insert newline -- # Key: alt+enter # Credit: https://programming.dev/comment/2479198 .zle_accept-only-multiline () { if [[ $BUFFER == *$'\n'* ]] { zle .accept-line } else { zle .self-insert-unmeta } } zle -N .zle_accept-only-multiline bindkey '^[^M' .zle_accept-only-multiline # Enter
Sure, but nox is the closer counterpart for in-venv-task definitions. List "sessions" with -l
, pick specific sessions to run with -s
.
python
import nox from nox.sessions import Session nox.options.reuse_existing_virtualenvs = True APP_NAME = 'logging_strict' @nox.session(python='3.12') def mypy(session: Session): """Static type checker (in strict mode)""" session.install('-U', 'mypy', '.') session.run('mypy', '-p', APP_NAME, *session.posargs)
Unfortunately it doesn't currently do any parallel runs, but if anyone wants to track/encourage/contribute in that regard, see nox#544.
As someone's new comments just brought me back to this post, I'll point out that these days there's another good option: uv run.
No, I don't use GHA locally, but the actions are defined to run the same things that I do run locally (e.g. invoke nox
). I try to keep the GHA-exclusive boilerplate to a minimum. Steps can be like:
undefined
- name: fetch code uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: allow-prereleases: true python-version: | 3.13 3.12 3.11 3.10 3.9 3.8 3.7 - run: pipx install nox - name: run ward tests in nox environment run: nox -s test test_without_toml combine_coverage --force-color env: PYTHONIOENCODING: utf-8 - name: upload coverage data uses: codecov/codecov-action@v4 with: files: ./coverage.json token: ${{ secrets.CODECOV_TOKEN }}
Sometimes if I want a higher level interface to tasks that run nox
or other things locally, I use taskipy
to define them in my pyproject.toml
, like:
undefined
[tool.taskipy.tasks] fmt = "nox -s fmt" lock = "nox -s lock" test = "nox -s test test_without_toml typecheck -p 3.12" docs = "nox -s render_readme render_api_docs"
If you choose to give Fedora a try, I recommend Ultramarine, which has more set up from the start, including their "Terrs" repository with more updated packages.
In no particular order.
Ah yes you can tell by the post title:
best linux terminal emulator
Oh, is that #4948?
For me: Wezterm. It does pretty much everything. I don't think Alacritty/Kitty etc. offer anything over it for my usage, and the developer is a pleasure to engage with.
Second place is Konsole -- it does a lot, is easy to configure, and obviously integrates nicely with KDE apps.
Honorable mention is Extraterm, which has been working on cool features for a long time, and is now Qt based.
Just note that the comment was inaccurate, in that their weird encryption is indeed open source at least.
I suggest trying this one for Zsh, over the more common one: https://github.com/zdharma-continuum/fast-syntax-highlighting
As someone else said, setting less' jump value is helpful.
Another tool I use, mostly for the zshall manpage, is https://github.com/kristopolous/mansnip
Thanks, yes, I use nox and github actions for automated environments and testing in my own projects, and tox instead of nox when it's someone else's project. But for ad hoc, local and interactive multiple environments, I don't.
If it didn’t bring something more to the table, besides speed, no one would care
I'm literally saying its speed in certain operations makes an appreciable difference in my workflows, especially when operating on tens of venvs at a time. I don't know why you want to fight me on my own experience.
I'm not telling anyone who doesn't want to use uv to do so. Someone asked about motivation, and I shared mine.
The convention
That's one convention. I don't like it, I prefer to keep my venvs elsewhere. One reason is that it makes it simpler to maintain multiple venvs for a single project, using a different Python version for each, if I ever want to. It shouldn't matter to anyone else, as it's my environment, not some aspect of the shared repo. If I ever needed it there for some reason, I could always ln -s $VIRTUAL_ENV .venv
.
Learn pyenv
I have used pyenv. It's fine. These days I use mise instead, which I prefer. But neither of them dictate how I create and store venvs.
Shell scripts within Python packages is depreciated
I don't understand if what you're referencing relates to my comment.
I have a pip-tools wrapper thing that now optionally uses uv instead. Aside from doing the pip-tools things faster, the main advantage I've found, and what really motivated me to support and recommend uv with it, is that uv creates new venvs MUCH faster than python's venv module, which is really annoyingly slow for that operation.