Srijan Choudhary

250 Followers
617 Following
51 Posts

Fediverse enabled website: https://srijan.ch

I've been developing software for more than 10 years, and leading software teams for the last 5 years. I've worked with several languages, but mostly use #Python and #Erlang these days, using #Emacs.

I'm interested in software team leadership, functional programming, distributed systems, artificial intelligence, and software infrastructure.

Previously at: https://fedi.srijan.dev/srijan https://fosstodon.org/@srijan, https://tilde.zone/@srijan

GitHubhttps://github.com/srijan
Websitehttps://srijan.ch/

A small #Emacs #OrgMode quality-of-life tweak. I often need to replace an org heading's title while preserving the original text in the body. The problem is that pressing enter on a heading inserts a line above the properties drawer, which breaks things.

Here's a function that moves the heading title into the body (below the properties drawer and metadata), and binds it to S-RET:

(defun my-org-demote-title-to-body () "Move the current heading's title into the body, below the metadata. Point returns to the heading for editing." (interactive) (org-back-to-heading t) (let* ((element (org-element-at-point)) (title (org-element-property :raw-value element))) (org-edit-headline "") (save-excursion (org-end-of-meta-data t) (insert title "\n")) (org-beginning-of-line))) (defun my-org-shift-return () "On a heading, demote title to body. In a table, copy down." (interactive) (cond ((org-at-heading-p) (my-org-demote-title-to-body)) ((org-at-table-p) (org-table-copy-down 1)) (t (org-return)))) (define-key org-mode-map (kbd "S-<return>") #'my-org-shift-return)
Srijan Choudhary's Articles and Notes Feed | Srijan Choudhary

Srijan Choudhary

In the Beginning there was nothing, which exploded.

Terry Pratchett, Lords and Ladies

#GNUTerryPratchett, #SpeakHisName, #Discworld

I love what’s achievable with Free Software.

I can sync reading progress across my e-reader with #koreader, my phone with #readest and I’ve now hacked together a way of syncing them with #emacs Nov mode. The code needs cleaning up a bit and I’ll put it on Codeberg soon.

I wasn't satisfied with the existing 'minimap.el' for #emacs. Hold my 🍺!

Here comes scrollpanel, a (hopefully/argueable) better minimap for #emacs.

https://seed.pipapo.org/nodes/seed.pipapo.org/rad:z2hyKqTqB77vt7UqsTgrqHkC83j8h

I don't know #elisp very well so I had to rely a bit on a coding agent, which was a pain. Finally it works for me now. Still needs some cleanup. When anyone is interested, try it out. Patches and help improving it would be greatly welcome.

On the sides I have been making a small health records app that stores data in #emacs #orgmode files and attachments. No cloud, subscription, or sharing of data with any third party provider, unless you explicitly do that by sharing your files.

It was primarily for personal uses and is not yet feature complete and the UX is not optimal, but is still usable in ways.

Here is the documentation https://docs.lepisma.xyz/harp/

F Droid builds are available here https://f-droid.org/packages/xyz.lepisma.harp in case you want to try it out and give feedback.

Index - Harp: Private Health Records

New blog "Keeping appointments from my Org agenda updated" https://davemq.github.io/2026/01/07/org-agenda-to-appt-timer.html

#emacs #org #orgmode

Keeping appointments from my Org agenda updated

Among many other things, Emacs’ Org mode manages tasks and allows you to easily see an agenda of tasks that are scheduled or approaching a deadline. Emacs also has an appointments system that shows scheduled appointments at various times ahead of time. Org provides org-agenda-to-appt to create appointments from your agenda items.

Dave’s Blog

Faced a failing disk in my raidz2 ZFS pool today.

Recovery was pretty simple:

  • Asked the service provider to replace the disk
  • Find new disk ID etc using:lsblk -o NAME,SIZE,MODEL,SERIAL,LABEL,FSTYPE ls -ltrh /dev/disk/by-id/ata-*
  • Resilver using:sudo zpool replace lake <old_disk_id> <new_disk_id>
  • Watch status using:watch zpool status -v
  • Re-silvering is still ongoing, but hopefully completes without issues. Will run a manual zpool scrub at the end to make sure everything is okay.

    For #emacs >= 31, I just learned that it's finally possible to hide all minor modes in the modeline with a single line and no dependencies!

    (setq mode-line-collapse-minor-modes '(not))

    For more info on what you can do with this see C-h v mode-line-collapse-minor-modes

    A small elisp snippet that I found useful. I often switch between terminals and Emacs, and they have slightly different behaviors for C-w. This makes it behave the same in Emacs as it does in bash/zsh/fish etc - deletes the last word. It retains the kill-region behavior if a region is actually selected.

    (defun kill-region-or-backward-word () "If the region is active and non-empty, call `kill-region'. Otherwise, call `backward-kill-word'." (interactive) (call-interactively (if (use-region-p) 'kill-region 'backward-kill-word))) (global-set-key (kbd "C-w") 'kill-region-or-backward-word)

    Ref: https://stackoverflow.com/questions/13844453/how-do-i-make-c-w-behave-the-same-as-bash

    How do I make C-w behave the same as bash?

    In bash when I press C-w it kills the word before the cursor. In emacs, it yanks the region but when there is no active region it kills forward. So I have to press M- to (backward-kill-word) How do I

    Stack Overflow
    (link: https://github.com/jsadusk/tramp-hlo text: tramp-hlo) looks interesting. Anything that can make tramp snappier is a good thing in my books.
    https://srijan.ch/notes/2025-12-09-002
    GitHub - jsadusk/tramp-hlo: High level operations as tramp handlers

    High level operations as tramp handlers. Contribute to jsadusk/tramp-hlo development by creating an account on GitHub.

    GitHub