Skip Navigation
Posts
73
Comments
252
Joined
2 yr. ago
Concatenative Programming @programming.dev
Andy @programming.dev

ebonnal/streamable: Pythonic Stream-like manipulation of iterables

Concatenative Programming @programming.dev
Andy @programming.dev

As usual, not my own post here.

Discussion on reddit

Concatenative Programming @programming.dev
Andy @programming.dev

I really don't know what to make of this.

Recent post on lobsters: https://lobste.rs/s/ctzngb/cosy

Concatenative Programming @programming.dev
Andy @programming.dev
Concatenative Programming @programming.dev
Andy @programming.dev

agsb/milliForth-6502: The smallest Forth real programming language for 6502. Based in milliForth for x86.

This popped up on Hacker News

https://news.ycombinator.com/item?id=43503897

Concatenative Programming @programming.dev
Andy @programming.dev
Concatenative Programming @programming.dev
Andy @programming.dev

Base256Emoji โ€“ Re: Factor

Concatenative Programming @programming.dev
Andy @programming.dev

RDAP โ€“ Re: Factor

Concatenative Programming @programming.dev
Andy @programming.dev

Sumerian and Reverse Polish, with notes on flattening trees

Concatenative Programming @programming.dev
Andy @programming.dev

gurgeous/vectro: rpn calculator for your terminal

Not my project, just sharing it.

Concatenative Programming @programming.dev
Andy @programming.dev
Concatenative Programming @programming.dev
Andy @programming.dev

lfnoise/sapf: Sound As Pure Form - a Forth-like language for audio synthesis using lazy lists and APL-like auto-mapping

Concatenative Programming @programming.dev
Andy @programming.dev

zeroflag/equinox: Forth Programming Language on Lua

Concatenative Programming @programming.dev
Andy @programming.dev
Concatenative Programming @programming.dev
Andy @programming.dev

Advanced Typechecking for Stack-Based Languages

Concatenative Programming @programming.dev
Andy @programming.dev

hex programming language

Concatenative Programming @programming.dev
Andy @programming.dev

BUND: concatenative language interpreter and shell

Concatenative Programming @programming.dev
Andy @programming.dev

BlagojeBlagojevic/blang: Fort like lang

Concatenative Programming @programming.dev
Andy @programming.dev

Copied from the release notes:

We're starting with a new release approach, these files will stay available permanently in contrast to the latest nightly.

We now recommend most users to stick to 0.0.0-alpha releases instead of nightly-latest.

This current release is based on commit a089cf2 from the 6th of January 2025. These files are identical to nightly-latest published on the 7th of January 2025.


EDIT: A whole lot more detail in the new 0.0.0-alpha2-rolling release

  • 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
    
      
  • Concatenative Programming @programming.dev
    Andy @programming.dev

    Tacit Talk: a podcast about programming languages, combinators, algorithms and more!

  • 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.

  • 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.

  • I use my own Zsh project (zpy) to manage venvs stored like ~/.local/share/venvs/HASH-OF-PROJECT-PATH/venv, so use zpy's vpy function to launch a script with its associated Python executable ad-hoc, or add a full path shebang to the script with zpy's vpyshebang function.

    vpy and vpyshebang in the docs

    If anyone else is a Zsh fan and has any questions, I'm more than happy to answer or demo.

  • CLI flow: run command, print output below

    TUI flow: navigate and interact with a layout that updates in place