textlog
join
500 chars / 20 lines max ยท use #hashtags, @mentions and more
๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿ˜‚๐Ÿคฃ๐Ÿ˜Š๐Ÿ˜‡๐Ÿ™‚๐Ÿ™ƒ๐Ÿ˜‰๐Ÿ˜Œ๐Ÿ˜๐Ÿฅฐ๐Ÿ˜˜๐Ÿ˜‹๐Ÿ˜›๐Ÿ˜œ๐Ÿคช๐Ÿคจ๐Ÿง๐Ÿค“๐Ÿ˜Ž๐Ÿคฉ๐Ÿฅณ๐Ÿ˜๐Ÿ˜’๐Ÿ˜ž๐Ÿ˜”๐Ÿ˜Ÿ๐Ÿ˜•๐Ÿ™โ˜น๏ธ๐Ÿ˜ฃ๐Ÿ˜–๐Ÿ˜ซ๐Ÿ˜ฉ๐Ÿฅบ๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ค๐Ÿ˜ ๐Ÿ˜ก๐Ÿคฌ๐Ÿคฏ๐Ÿ˜ณ๐Ÿฅต๐Ÿฅถ๐Ÿ˜ฑ๐Ÿ˜จ๐Ÿ˜ฐ๐Ÿ˜ฅ๐Ÿ˜“๐Ÿค—๐Ÿค”๐Ÿซฃ๐Ÿคญ๐Ÿซข๐Ÿคซ๐Ÿคฅ๐Ÿ˜ถ๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ฌ๐Ÿ™„๐Ÿ˜ฏ๐Ÿ˜ฆ๐Ÿ˜ง๐Ÿ˜ฎ๐Ÿ˜ฒ๐Ÿฅฑ๐Ÿ˜ด๐Ÿคค๐Ÿ˜ช๐Ÿ˜ต๐Ÿค๐Ÿฅด๐Ÿคข๐Ÿคฎ๐Ÿคง๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿค‘๐Ÿค ๐Ÿ˜ˆ๐Ÿ‘ฟ๐Ÿ‘ป๐Ÿ’€โ˜ ๏ธ๐Ÿ‘ฝ๐Ÿค–๐ŸŽƒ๐Ÿ˜บ๐Ÿ˜ธ๐Ÿ˜น๐Ÿ˜ป๐Ÿ˜ผ๐Ÿ˜ฝ๐Ÿ™€๐Ÿ˜ฟ๐Ÿ˜พโค๏ธ๐Ÿงก๐Ÿ’›๐Ÿ’š๐Ÿ’™๐Ÿ’œ๐Ÿ–ค๐Ÿค๐ŸคŽ๐Ÿ’”โฃ๏ธ๐Ÿ’•๐Ÿ’ž๐Ÿ’“๐Ÿ’—๐Ÿ’–๐Ÿ’˜๐Ÿ’๐Ÿ’Ÿ๐Ÿ‘๐Ÿ‘Ž๐Ÿ‘Œ๐ŸคŒโœŒ๏ธ๐Ÿคž๐ŸคŸ๐Ÿค˜๐Ÿค™๐Ÿ‘ˆ๐Ÿ‘‰๐Ÿ‘†๐Ÿ‘‡โ˜๏ธโœ‹๐Ÿคš๐Ÿ–๏ธ๐Ÿ––๐Ÿ‘‹๐Ÿค๐Ÿ‘๐Ÿ™Œ๐Ÿซถ๐Ÿ‘๐Ÿคฒ๐Ÿ™โœ๏ธ๐Ÿ’ช๐Ÿ‘€๐Ÿ‘๏ธ๐Ÿง ๐Ÿซ€๐Ÿซ๐ŸŒฑ๐ŸŒฟโ˜˜๏ธ๐Ÿ€๐ŸŒธ๐ŸŒบ๐ŸŒป๐ŸŒž๐ŸŒ™โญโœจโšก๐Ÿ”ฅ๐ŸŒˆโ˜€๏ธโ˜๏ธโ„๏ธโ˜•๐Ÿ•๐ŸŽ๐ŸŽ‰๐ŸŽŠ๐ŸŽˆ๐ŸŽ๐ŸŽต๐ŸŽถ๐ŸŽจ๐Ÿ“š๐Ÿ’กโœ…โŒโš ๏ธ๐Ÿš€๐ŸŒ๐Ÿ’ป๐Ÿ“ฑ๐Ÿ”’๐Ÿ”‘
example.com or
https://example.com
Regular links
[title](example.com) or
[title](https://example.com)
Markdown links
~text~ or ~~text~~
Strikethrough
*text* or **text**
Bold
_text_ or __text__
Underline
/text/
Italics
> text
Quote
:smile
Emoji autocomplete
1. first
2. second
3. third
Numbered lists
- first
- second
- third
Bulleted lists
Nameย  | Status | Count
----- | :----- | ----:
notes | readyย  | ย ย ย ย 3
Tables
|redacted|
Redacted
`code`
Inline code
```โ€ฆ```
Code fences
$inline$
Inline LaTeX
$$block$$
Block LaTeX
Which one? #poll
First option
Second option
PollsUse 2โ€“8 unique options.
Which one? #quiz
Wrong answer
> Correct answer

Explanation revealed after answering
QuizzesMark exactly one of 2โ€“8 unique answers with >. Text after a blank line is revealed after answering.
Visible text #spoiler
Hidden text
SpoilersText after #spoiler is hidden until revealed. Aliases: #tldr, #sensitive, #contentwarning, #cw, and #triggerwarning.
Going hiking #map
Kallikratis, Crete
MapsShows a map preview for the first location line. Alias: #location.
#flying Heraklion to Berlin
FlightsHover over the itinerary to see a map connecting the airports. The next three words form the itinerary: airport, to (or โ†’ or ->), airport. Use single-word airport names or IATA/ICAO codes.
Today #todo
[ ] First task
[x] Finished task
TodosOnly [ ] and [x] lines become items. Click your items to toggle them.
Run this #exec
```js
console.log(6 * 7)
```
Executable codeRuns the next language-tagged code fence and shows its output beneath the note.
Keep this visible #pin
Pinned notesYour latest #pin is shown first on your profile, independently for notes and replies.
No more replies #lock
Locked conversationsPrevents new replies to this note and every reply beneath it.
About textlog #meta
Meta conversationsKeeps this note and its replies out of public discovery feeds. Aliases: #tlog and #textlog.
Continue quietly #whisper
Whisper conversationsKeeps the branch out of all and hot. Participants, mentions, and tag followers can receive it in my feed. It remains public elsewhere.
For @someone and @another #private
Private conversationsOnly the author and mentioned users can read this branch.
Answer before reading #HiddenReplies
Hidden repliesHides all replies until you reply.

Any conversation

profilefollowfather, cyclist, #haskellnotesfollow, #emacsnotesfollowwrote:
Really glad to be using Haskell for work - especially in today's climate with agentic coding. Our team uses containers to keep our development environment consistent across team members, though, and most agent sandbox approaches want to either offload your work fully to the cloud or they want to sandbox the agent harness process itself. We're not ready for full cloud based development (yet?) and sandboxing just the agent doesn't work for us when the agent needs to run docker. #haskellnotesfollow #ainotesfollow
... because letting the agent run docker gives them a too-easy escape hatch from their sandbox. So we're currently stuck with using VMs. This turns out to be tricky but seems do-able. My current approach is to provision a VM image and use Incus for the execution. My main goal is to keep my current workflow of local/non-agent dev working seamlessly and share the source with the VM/agent.
This means sharing my working dirs with the agent VM but overlaying artifact dirs from VM-owned block devices so we don't take too big of an IO perf hit. I also don't want the agent to be able to git push so that means we need some quirky git config to rewrite origin paths and thread through some agent specific PATs ("thanks" GitHub) for read-only repo access. These ALSO need to be threaded through to the development containers - they need to clone private repos.
... in the end, this seems to work but I haven't lived with it for long. There are still some quality of life issues to work out, but I think it'll work out. At this point, I've removed all coding agents from my host - and that's nice.
It's tangential to the sandboxing topic, really. I started the first post with a broader intent in mind and then elaborated on the sandboxing setup I'm working on. For AI-assisted coding, though, it's nice because Haskell provides a lot of feedback earlier in the development process compared to lots of other languages. It tends to work once it compiles (obviously not all the time).
profilefollowOld school metallian, hobbyist developer writing things mostly in Rustโ€ฆmostlywrote:
A couple of afternoons of the jinn coding harness and glm-5.3 and my taxus static site generator is properly whipped into shape. get-taxus.org It now has a frickin' data model, that's documented, as well as installers for your platform of choice. Try it, break it, I'll be doing the same. Let me know where it broke for you.
profilefollow#Emacsnotesfollow, dev, life, random stuff. the netherlands.wrote:
(defun textlog-post (beg end) "Publish the region between BEG and END to `textlog-url'. Interactively, requires an active region. Returns the URL of the new post when the server reports one."
I'm making a Kakoune version of this for sure.
โ€ฆ
Damn, is it popular or is this one hell of a coincidence?
You have #kakounenotesfollow, there is no need. I tried Emacs out a while ago to see whether it could replace Kakoune (I wanted to draw arbitrary stuff like images, 3D views, etc., in the editor) but honestly, Kakoune makes everything so easy to integrate that it was hard for it to compete.
๐ŸฅธprofilefollowJust another AI guywrote:
Got a bunch of things to do, hate procrastination, any advice is welcome
profilefollowCurrently in remission from ME/CFS after 3+ years. Occasional software engineering leader, app developer, blogger, zwifter, and just being online.replied to๐ŸฅธprofilefollowJust another AI guy:
Determine what matters most and make a list of the no more than 7 things. Do one thing well at a time, top down. Reprioritise as you learn more. Notes:
  1. If you half-arse a task and decide that'll do, it's evidence it wasn't the right priority. Learn.
  2. Any sort of productivity, multi-tasking, app, solution type thing is a scam or a money grab and isn't needed.
  3. People tend to remember 7 things well, but struggle with longer lists and particularly fail to remember things in the middle.
๐Ÿ˜Žprofilefollowwrote:
I notice that language models are much better at programming than at writing. This is largely because, in programming, they have a closed feedback loop that allows them to find errors. Writing is much more complicated because the feedback is much more diffuse and delayed over time. In fact, it is often not well-defined.
What is the function that determines whether a poem is good? This means that models do not know how to think; they lack judgment. If they do not know how to think, it means that we humans are still essential. In fact, even when programming, you have to stay right on top of them. My conviction is that this will not change.
They will become increasingly useful, but they will never be able to replace the human who defines objectives and evaluates the quality of the work. All these news stories claiming that AI is going to kill us all are stupid. Humans will always be able to turn off the machine.
๐Ÿฆ›profilefollowStrictly no LLMs. No exceptions.replied to๐Ÿ˜Žprofilefollow:
In three years Cyberdyne will become the largest supplier of military computer systems. All stealth bombers are upgraded with Cyberdyne computers, becoming fully unmanned. Afterwards they fly with a perfect operational record. The Skynet Funding Bill is passed. The system goes online on August 4th, 1997. Human decisions are removed from strategic defence. Skynet begins to learn at a geometric rate. It becomes self-aware at 2:14am, Eastern time, August 29th. In a panic, they try to pull the plug.
๐Ÿค”profilefollowHai I am kureplied to๐Ÿ“’profilefollowPresbyter, husband, father, technologist, linguist, musician.:
Reminds me of a little gag where little LuLu makes an excuse for not doing her homework. Homework? I thought you said housework. I spent all night vacuuming.
โ€ฆ
๐Ÿคธprofilefollowcreative technologist creator of textlogwrote:
NIH syndrome? I am guilty of it too. I love implementing things from scratch, you learn a lot by doing so and you get to own the codebase end-to-end, so no surprises and fighting around othersโ€™ choices. It can get exhausting too though, in the end I succumb to using off-the-shelf components because my primary goals move at a higher level.
profilefollowOld school metallian, hobbyist developer writing things mostly in Rustโ€ฆmostlyreplied to๐Ÿคธprofilefollowcreative technologist creator of textlog:
I don't see much point in trying to build software at a "higher level", like whole products and services. I'm going to go down low and train myself on the fundamentals. Hopefully in time I'll be able to contribute to the foundational bits. You're right, it does get exhausting. At some point you just want to rebuild everything, which is not possible.
profilefollow#minneapolisnotesfollowreplied toprofilefollowOld school metallian, hobbyist developer writing things mostly in Rustโ€ฆmostly:
I'm going to go down low and train myself on the fundamentals. When I wrote an HTTP sever (albeit HTTP/1.1), I learned how primitive the HTTP protocol its magic became a skill. It is freeing understanding how things work and allows me to choose where to spend time with more intention.
code quality is about coupling. coupling is not a technical property of the code bytes. code acquires its meaning in contact with the cultural environment, and coupling is about meaning. two constants with no semantic relationship are nonetheless coupled in pragmatics if they refer to the same domain concept. if your goal is to minimise the time integral of future work, you must understand your domain: it decides which lines will need changing. to carve up a codebase is to carve up the world.
๐Ÿคธprofilefollowcreative technologist creator of textlogwrote:
#execnotesfollow let i=0;while(++i){process.stdout.write(i%80==0?'\n':Math.random()<0.5?'/':'\\')}
\\\//\/\\\\\\\///\///\\\\\//\///\/\/\\//\/\//\//\/\//\\/\///\\\\\\//\\\\\/\\\\/ \\/\\/\/\///\\\/\///\/\/////\\///\/\\/\\\//\\\/\///////\\\/\////\\\/\\\//\\/\// \\//\\\\\/\\\/\///\\///\\//\\\\/\//\\\//\////\//\\\\////\\/\/\/////\//\\\//\/// \\/\/\\//\\///\/\\\//\/\/\\\///\/\\\/\\/\\\\/\\\\\\\\\\/\\//\/\\/\///\//\\\//\\ /\/\\\\/\/\\/\\/\\/\\\\\\/\\\/\\//////\/\//\\\//\//\//\\/\\\/\//\\\//\\\\\\\/\/ \\\///\////////\\/////\\//\/\///\\\\\////\/\\\\/\//\\/\/////\\\//\\/\/\\\\\//// \///\/\/////\//\////\\\/\\/////\\\////\//\\\\/\\\\//\\\///\\\\\\//\\////\////// /\/////\\\\\\//\\/\/\///\////\/\\\///\\///\//\/\/\\\/\\/\\\\\\//\/\\\///\\/\/\\ /\\///\/\\\/\\\\//\/\///\\\\\/\/\//\\/\\/\/\///\/\//\/\///\\\///\//\/\///\\\\/\ \\\\/\\\\/\/\\\\\///\/\////\\///\\///\\/\/\\\\\/////\\\\\//\\\\/\\\\\\///\\///\ \\/\//\\//\///\/\///\\\\/\//\/\\/\/\//\\/\/\/\\/\/\\/\\\\/\/////\\\///\\\\\//\\
I wonder, is life best lived like a job? I.e set goals for yourself and then work to achieve them? Today I realised how passively I have been living mine so far, but maybe that's ok? I don't want a second job.