My initial ~/.vimrc
for #vim after 3-4 years of using #neovim:
filetype plugin indent on
syntax enable
let g:mapleader = ","
set autoindent
set autoread
set formatoptions+=j
set guifont=MesloLGM\ Nerd\ Font\ Mono\ 12
set hidden
set history=500
set hlsearch
set listchars=tab:→\ ,trail:•,extends:›,precedes:‹,nbsp:␣,eol:↲
set nobackup
set nonumber
set noswapfile
set nowrap
set path+=**
set scrolloff=1
set showbreak=↪\
set showmatch
set sidescroll=1
set smarttab
set tags=./tags;/
set termguicolors
nnoremap <silent> <C-l> :nohl<C-R>=has('diff')?'<Bar>diffupdate':''<CR><CR><C-L>
nnoremap <silent> <leader>lcd :lcd %:p:h<CR>:pwd<CR>
nnoremap <silent> <leader>n :set number!<CR>
if !empty(globpath(&rtp, 'autoload/plug.vim'))
call plug#begin()
Plug 'ap/vim-buftabline', { 'as': 'buftabline' }
Plug 'dracula/vim', { 'as': 'dracula' }
Plug 'editorconfig/editorconfig-vim', { 'as': 'editorconfig' }
Plug 'kaarmu/typst.vim', { 'as': 'typst' }
Plug 'tpope/vim-commentary', { 'as': 'commentary' }
Plug 'vim-scripts/git_patch_tags.vim', { 'as': 'git_patch_tags' }
call plug#end()
endif
silent! colorscheme dracula
It’s quite short but does pretty much what I would ever want from a text editor:
$ wc -l .vimrc
42 .vimrc
The OpenAI ChatGPT app on macOS is not sandboxed and stores all the conversations in **plain-text** in a non-protected location:
~/Library/Application\ Support/com.openai.chat/conversations-{uuid}/
So basically any other running app / process / malware can read all your ChatGPT conversations without any permission prompt:
Generally speaking, C is pretty straightforward. It takes about 20 days to learn 80% of it, and then no more than 20 years to cover the remaining 20%
This is still IMHO a strong merit in #GNOME #Evolution, when having multiple identities.
In my case, I use a sub-address (RFC 5233) for bouncing kernel.org but it shares the account with my personal email address. Identities map to envelope addresses, and based on that msmtp
will pick the correct SMTP server.
msmtp
also allows to share SMTP configuration with #Git. E.g. for a freshly cloned repository, I might for instance:
git config from "Jarkko Sakkinen <jarkko@kernel.org>"
git config sendemail.envelopeSender "jarkko@kernel.org"
git config sendemail.sendmailCmd "/usr/bin/env msmtp"
track i did early winter. after that not much time for music but hopefully during my holiday i have some time to finish a few tracks :-) https://soundcloud.com/dopeda/robottien-siivouspaiva
Migrated from #neovim back to #vim after several years of use because:
neovim-remote
is required. Vim has full local IPC workflow builtin.#Ghostbusters use #ESP32 chips for their "ghost extracting machine". That's for sure an ESP32 DevkitC board from #Espressif on the #GhostbustersFrozenEmpire movie!
I love these kind of details in pictures. Like for example in Tron Legacy when you can see the output from a Unix history command, or a guy using emacs.
Do you know about more examples like these?
Equality, respect, freedom are at the heart of our Union 💜💚💛 ❤️
This Saturday, #EuroPride will culminate with the Pride Parade in Thessaloniki 🇬🇷, marking the end of #PrideMonth – a month of celebration and activism.
But our work to promote equality, inclusivity and respect for all, continues beyond this month.
Today and every day, let's build together a world where love knows no borders, and everyone can live freely and authentically.
Our LGBTIQ Equality Strategy: https://europa.eu/!y3Qk9m
I started my personal fork of NNN called ZZZ, i.e. i pushed the blocks 90 degress ;-)
https://codeberg.org/jarkko/zzz
I’m not a fan of forks but the upstream seems to be quite broken in terms of pragmatic decision making so it would take me probably literally years to get anything changed over there.
I pushed my sorting code for inverse selection over there too: https://codeberg.org/jarkko/zzz/commit/f6904ae23f4a785ceb6412b19575d690d1dcc191
Release plan:
s/NNN_/ZZZ_/
(i.e. allow both to be installed)build.zig
replacing Makefile
but other than that zero Zig code.I don’t even feel like that I’m actually making a fork here because the current upstream has forks as a features given patches/
;-)
ALE (Asynchronous Lint Engine) is a plugin providing linting (syntax checking and semantic errors) in NeoVim 0.6.0+ and Vim 8.0+ while you edit your text files, and acts as a Vim Language Server Protocol client.
I put my old Unprivileged #Nix notes to Medium so that I won’t loose them by mistake: https://medium.com/@jarkko.sakkinen/unprivileged-nix-2c9f06b99f8e
I.e. how to get a fresh and most recent userland to any remote Linux system that you have SSH access to when exactly two contraints are met:
Or to put in other words: Nix Home Manager without NixOS recipe…
crates.io celebrates its 10 year anniversary today! 🎉
On 2014-06-25 Alex Crichton created the initial commit in the crates.io git repository: https://github.com/rust-lang/crates.io/commit/54cfc8d
A lot has happened since then, and the current crates.io team would like to say "thank you!" to all current and former contributors to crates.io and the ecosystem around it! 🤗
If #Radare2 vs #Rizin makes no sense to you, perhaps #Python will. It is pretty solid tool for driving #Capstone :-)
Transcript:
raw = open('/home/jarkko/work/nnn/nnn', 'rb')
from elftools.elf.elffile import ELFFile
elf = ELFFile(raw)
symtab = {s.name: s for s in (elf.get_section_by_name('.symtab')).iter_symbols()}
sym = symtab.get('move_cursor')
addr = sym['st_value']
size = sym['st_size']
text = elf.get_section_by_name('.text')
offset = addr - text['sh_addr'] + text['sh_offset']
raw.seek(offset)
payload = raw.read(size)
from capstone import Cs, CS_ARCH_ARM64, CS_MODE_ARM)
disasm = Cs(CS_ARCH_ARM64, CS_MODE_ARM)
for opcode in disasm.disasm(payload, addr):
print(f"0x{opcode.address:x}:\t{opcode.mnemonic}\t{opcode.op_str}")
Just got a bit familiar this. The main benefits are obviously:
objdump
)I find this super fascinating!
After reading #Ueber’s post about their use of #Zig, I tried it to random C and C++ projects:
export CC="zig cc"
export CXX="zig c++"
make
At least for relatively small projects such as nnn
this seems to result working results. Still quite impressive. Next iteration would to replace Makefile
with build.rs
.
Also one tool that I like, ncdu
, has successfully executed such conversion: https://dev.yorhel.nl/ncdu
I think I’ll try Linux with tinyconfig
next by using this hacky script as basis next:
#!/usr/bin/env bash
set -e
make defconfig
scripts/config --set-str CONFIG_INITRAMFS_SOURCE "initramfs.txt"
yes '' | make oldconfig
cat > initramfs.txt << EOF
dir /dev 755 0 0
nod /dev/console 644 0 0 c 5 1
nod /dev/loop0 644 0 0 b 7 0
dir /bin 755 1000 1000
slink /bin/sh busybox 777 0 0
file /bin/busybox initramfs/busybox 755 0 0
dir /proc 755 0 0
dir /sys 755 0 0
dir /mnt 755 0 0
file /init initramfs/init.sh 755 0 0
EOF
mkdir initramfs
curl -sSf https://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/busybox-static-1.36.1-r25.apk | tar zx --strip-components 1
cp busybox.static initramfs/busybox
cat > initramfs/init.sh << EOF
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
sh
EOF
It is from my old’ish post: https://social.kernel.org/notice/AgzHqrYFGplZuYr3gG
PipeWire 1.2 Released With Async Processing, Explicit Sync & Other Features
PipeWire 1.2 was christened today as the latest major feature update to this solution common to the modern Linux desktop for managing audio/video streams...
https://www.phoronix.com/news/PipeWire-1.2-Released