an example would be handy right about now
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
author: "Willem van den Ende",
|
||||
tags: ~w(Emacs Examples),
|
||||
description: "Brian Marick once distributed stickers with 'An example would be handy right about now'. This is also handy in cases where writing a test is not directly obvious",
|
||||
published: false
|
||||
published: true
|
||||
}
|
||||
---
|
||||
|
||||
@@ -19,7 +19,11 @@ I have been muddling through, and was reminded I have that problem too. But then
|
||||
|
||||
[This post helpfully explains how to find the right function, and what to do](https://oxal.org/blog/powerful-emacs-hacks-image-markdown/). And I have a link to an image [in my previous post](https://willemvandenende.com/blog/engineering/enabling-a-local-model-to-explain-images-in-pidev) that will of course not show in `markdown-mode`. Staring at the screen for a while, it hit me.
|
||||
|
||||
## An example would be handy right about now
|
||||
# An example would be handy right about now
|
||||
----
|
||||
|
||||
[Brian Marick](http://www.exampler.com/about/) handed out stickers saying "An example would be handy right about now". I can read posts all day long, but modifying someones' (generated) code is probably going to end badly, without checking the output before and after.
|
||||
|
||||
|
||||
So I copied the image link, had a look at my directory structure, enabled images (yes, that is disabled by default. I guess a distraction-free writing environment requires the purity of no man-made images). And then still saw nothing, because I forgot the `static` part of the path. But this was quick iteration, no code or tests were harmed in the making of this example:
|
||||
|
||||
@@ -31,7 +35,7 @@ So I copied the image link, had a look at my directory structure, enabled images
|
||||
|
||||
Now I can go back to the joy of copy-paste-modifying the code from the blogpost with my very own path.
|
||||
|
||||
## A test would be handy right about now
|
||||
# A test would be handy right about now
|
||||
|
||||
I figured I could hack this path _only_ for my blog, and use a local configuration. After copy-pasting the code, it was time, for, _le sigh_ _modify_. I could let my animatronic rubber duck do it, but I have decided to better understand my emacs mods, so doing it by hand today.
|
||||
|
||||
@@ -39,12 +43,12 @@ There is a `substring` call that I don't need - my example shows that blog post
|
||||
|
||||
But I don't often write tests. And there was an error in it, so going straight to an emacs lisp file was too big a step.
|
||||
|
||||
## Taking a step back, literate programming to the rescue
|
||||
# Taking a step back, literate programming to the rescue?
|
||||
|
||||
In org mode I can have my function and a call for an example in a code block, and see the error right there. I had a 'wrong number of arguments' somewhere. But I can't understand the `ert-deftest` error message.
|
||||
|
||||
Another step back
|
||||
---
|
||||
==
|
||||
|
||||
Running the function in an org-mode code block worked. the function doesn't. I needed my rubber duck. Thank you dear reader.
|
||||
|
||||
@@ -52,12 +56,10 @@ I don't know why emacs' `ert-deftest` test framework needs so many keystrokes. I
|
||||
|
||||
The example code in the blogpost used `message`, so I added that to my emacs lisp file. Now I can evaluate the buffer with a changed function, and see the output (in the 'messages' buffer, and in the status line below)
|
||||
|
||||
For testing in Emacs, I put the actual image in this blogpost, until I could see it. I like this TDD state diagram, and am evolving it as I spike on
|
||||
|
||||

|
||||
|
||||
original
|
||||
|
||||

|
||||
|
||||
# And then it does not integrate
|
||||
|
||||
@@ -72,5 +74,13 @@ I put the hook definition inside a callback that gets run when the mode loads. W
|
||||
|
||||
If I do this by hand, yes. When I add a file named [dir-locals.el](https://wiki.migueldeoleiros.com/notes/20250117203949-local_emacs_configuration_per_directory) I can redefine global variables per mode. The file itself is a list of modes, and settings for each mode. It does not allow for defining new functions.
|
||||
|
||||
That is annoying. With [Pi.dev](Pi.dev) it is nice that I can start moldable development right in my codebase, and only extract to my machine or a published repository once I am a bit further and ready to generalise. I have an ugly hack in a file. I could move this ugly hack to my personal emacs repository, put the image prefix in a `.dir-locals.el` and at least it would automatically load. On my machine. I would like this to go with the blog source, so I can see images wherever I edit.
|
||||
That is annoying. With [Pi.dev](Pi.dev) it is nice that I can start [moldable development](https://medium.com/feenk/rewilding-software-engineering-900ca95ebc8c) right in my current project, and only extract to my machine or a published repository once I am a bit further and ready to generalise. I have an ugly hack in a file. I could move this ugly hack to my personal emacs repository, put the image prefix in a `.dir-locals.el` and at least it would automatically load. On my machine. I would like this to go with the blog source, so I can see images wherever I edit. I find it annoying to work on another machine and have to go and find I do not have something.
|
||||
|
||||
|
||||
# And that is why I write blog posts like this
|
||||
|
||||
Some of my blogposts seem to help other people, which was the stated aim, and it is nice to see that it works. The other one is to pay it forward, I managed to improve my blog writing workflow thanks to someone else's blogpost and am paying it forward. The pay-off after a few weeks seem to be that it is easier for me to find things back in my blog than on my machine(s). I have used my [instructions for setting up Pi.dev on a VPS](https://willemvandenende.com/blog/engineering/how-to-get-started-with-the-pi-coding-agent-on-a-vps) to remember how to set up open router on one of my machines, for instance.
|
||||
|
||||
[Backing up your work to the internet](https://lkml.iu.edu/hypermail/linux/kernel/9607.2/0292.html) is great. I hope you enjoyed this yak shaving adventure.
|
||||
|
||||
The rabbit hole of emacs is deep, but removing friction from my workflows is not that onerous. And I needed to tinker with a small bit of code to recover from developing a more conceptual talk and a new workshop.
|
||||
|
||||
Reference in New Issue
Block a user