RSSAmplifier

Blog

Peter Stuifzand

Recent content on Peter Stuifzand

peterstuifzand.nlRSS feed ↗478 posts

Latest posts

Don't Use AI for Writing

Writing is a useful skill to develop. It can help you discover what you think,
develop judgment, and become a critical thinker. Writing can also be pleasurable
in itself. You can feel the ownership of the results of your writing. 
 AI is there as a sharp contrast to us as beginners of writing. The ease with
which AI generates plausible and polished text is attractive. The pressure…

Doing Things Badly


 If a thing is worth doing, it is worth doing badly. 
– G.K. Chesterton 
 This quote shows that we need room to do things badly. 
 I read this quote in a book about writing essays. So I thought how am I going to
brainstorm about this idea. I opened TLdraw and wrote the quote in a rectangle.
My next thought was to use a different tool, with which I could brainstorm…

Questions for Notes

I want to get more value from my Zettelkasten. When you see the notes as being
part of a tree, then there are three directions to go: Up, Down, and Horizontal.
Each direction has way to get more value by finding the questions and answers
related to the current card. 
 Down is the easiest way to go. When you go down this means that you ask a
question about the current card. Then…

Splitting Notes Branches

Splitting branches of notes too high up, makes installing notes more difficult. 
 Problem 
 I have a branch “1050 Critical Thinking” and the card has a definition. If I
want to add another definition for critical thinking, I need to create a card
“1050A Critical Thinking” with the new definition. 
 Now I need to think about installing new cards in the…

My top-down method for expanding notes

Ever stare at your notes and wonder how to develop them further? I was reading
 The Pyramid Principle and it clicked for me. The book mentions the
top-down approach for writing articles. You start with the main idea and then
build up the argument. It seems to me that the Zettelkasten is also a good fit
for this approach. 
 The Pyramid Principle uses inductive arguments. This…

Semantic versioning is outnumbered by inherent conflict

We version our code with Semantic versioning . Semantic
versioning adds structure and rules for working with versions. Semantic
versioning promises to solve the dependency hell problem. According to the
website, dependency hell is that sometimes dependencies are specified too
loosely, compatibility is assumed with too many future versions. When the
dependency is too strict, you…

Why I procrastinate by thinking about frameworks instead of sharing my opinions

When I take notes, I look at how I work and the workflows. I try to find how to
take more and better notes. This makes me feel productive and competent. But
this meta-work is also what keeps me safe. Why do I keep choosing meta-work
over real work? 
 When I’m productive on the safe meta-level, I avoid the risks of the practical
level. When I form and publish my opinions I…

How to transform your notes from dead storage to thinking partner

People take notes to remember and learn from what they read. They highlight the
sections that interest them and comment on those notes. However, even when we
take notes about our opinions about these highlights, we find ourselves with a
big box of notes that don’t add to our lives. The notes exist as dead storage
and gather dust. 
 How to prevent your notes from gathering…

AI attribution undermines professional accountability

AI tools like ChatGPT, Claude, and Gemini have changed how developers solve
problems. We use them to debug complex issues, explore architectural patterns,
and generate boilerplate code. These tools have become as much part of our
workflow as Stack Overflow or documentation searches once were. 
 However, a troubling pattern has emerged in how we present AI-assisted…

Writing in Zettelkasten

I read the book The Pyramid Principle by Barbara Minto and specifically a
section about how build to a pyramid structure from the bottom-up. She says that
starting from the bottom-up is more difficult. I think that it is more difficult
to start from the bottom, because you don’t have the raw materials. 
 The raw materials the ideas to build the structure. When you instead…

My First Til

TIL how to use Gemini to write a template for TIL. It was possible, but I didn’t get the result I wanted.
So in the end I used the templates from the other sections.

Counter, Tensor and View

The succ function can be called prod(max) times. The function can also be
written with a carry or overflow “bit”. Then when i == len(counter) the return
value should be counter, True . The return value of the last line,
 counter, False . 
 def succ ( counter , max ): 
 i = 0 
 counter [ i ] += 1 
 while counter [ i ] == max [ i ]: 
 counter [ i ] = 0…

Hundred Year App

In the video Build the Hundred-Year Web Service with htmx Alexander
Petros talks about how to build a hundred-year web service. He talks about how
when you want to build, use and maintain a web app in a hundred, you should not
have to ask permission to deploy your app. 
 I saw this video a few weeks after my apps were removed from Google Play Store.
I had not made the changes…

Category of 3 bit binary numbers

Objects are three bit binary numbers. Morphisms exists when you can flip some
bits from 1 to 0 (but not the other way around). 
 digraph G {

'000';
'001';
'010';
'011';

'100';
'101';
'110';
'111';

'001' -> '000';
'010' -> '000';
'100' -> '000';

'011' -> '001';
'011' -> '010';

'111' -> '101';
'111' ->…

Streaming AI with htmx

Below is a simplified chat bubble for an conversation with an LLM. &#xA; This template is written in Templ and uses htmx to fill the&#xA;chat bubble with incoming content. The incoming content is sent with SSE using&#xA;the v2 version r3labs/sse Server&#xA;Sent Events server. This version supports SplitData which makes it easier to&#xA;sent the HTML for htmx. Adding a <span></span> around every…

Embeddings Similarity Search

For a simple note-taking application I wanted to try out embeddings and&#xA;similarity search to find similar notes based on the content. In this post I&#xA;will show how you how to use the&#xA; gonum.org/v1/gonum/blas/blas32 &#xA;package to calculate with embeddings. &#xA; Get your embeddings &#xA; When I started I used the OpenAI embeddings and saved these in the sqlite&#xA;database with the…

Deleting in Note Taking Apps

It seems I&rsquo;m sentimental. I have difficulties with Archiving or Deleting&#xA;documents from the Readwise Reader Inbox. I&rsquo;m always looking at the conflicts in&#xA;my live. and this seems to be one of them. &#xA; The problem in Readwise Reader is that I want&#xA;to remove, or archive documents. But sometimes these documents contain something&#xA;that I want to act on. If I Archive a…

Apply TOC to highlighting, note-taking and knowledge gaps

The last few weeks I have been looking at Theory of Constrains (TOC). Today I&#xA;noticed that with note-taking there is this conflict between just taking notes&#xA;and taking notes to solve problems. &#xA; TOC is a management philosophy that emphasizes the identification and management&#xA;of constraints that hinder an organization&rsquo;s ability to achieve its goals.&#xA;Instead of…

Proconcloud method

Necessity assumptions &#xA; Why is it necessary? &#xA; &#xA; Our attention is limited . &#xA; There is a gap between how well we make decisions and how well we can&#xA;make decisions. &#xA; We want to make better decisions to be able to live a meaningful life. &#xA; &#xA; Strategy &#xA; What for? &#xA; We want to avoid the following 5 decision mistakes. &#xA; &#xA; Waste your limited attention…

Strategy and tactics

The template &#xA; Title &#xA; The title of the strategy (and tactic). &#xA; Necessary assumptions &#xA; Why is this necessary? &#xA; Strategy &#xA; What for? &#xA; Parallel assumptions &#xA; Why is it possible? Why is it difficult? &#xA; Tactic &#xA; How? &#xA; Sufficiency assumptions &#xA; Why is sufficient? &#xA; Resources &#xA; &#xA; The TOC approach to Strategy and Tactics &#xA;by Eli…

Goal tree color scheme

A nice way to use the goal tree is to use a color scheme to show which goals are&#xA;already fulfilled and which are not. A schema that can be used is red, orange,&#xA;green. &#xA; &#xA; &#xA; &#xA; color &#xA; when &#xA; &#xA; &#xA; &#xA; &#xA; Red &#xA; The condition is not fulfilled &#xA; &#xA; &#xA; Orange &#xA; The condition is partially fulfilled &#xA; &#xA; &#xA; Green &#xA; The condition…

Goal Tree

A Goal Tree consists of nodes and arrows. The nodes are your goals, critical&#xA;success factors and necessary conditions. The arrows are the logical&#xA;connections. These arrows connect goals with the sub goals. &#xA; An arrow can be read as &ldquo;In order to have X, we must have Y&rdquo;. In a small&#xA;diagram, this looks like: X ← Y . &#xA; You start with the Goal. The Critical Success…

Improve a Goal tree

To improve a Goal tree , you need to examine the&#xA;items in the tree. Using a technique similar to five why&rsquo;s you can improve the&#xA;goal tree. &#xA; Ask the question: why do you need it? &#xA; Example: garden shed &#xA; Let&rsquo;s look at the goal of &ldquo;Garden shed&rdquo;. Why do I need a garden shed? Because I&#xA;need to store my garden tools. Why do I need to store my tools? I…

Tasks and notes

In Jira, an issue is a task and a note at the same time. The issue is a place to&#xA;focus the information to the point where you can complete some piece of work.

Four obstacles to thinking clearly

These are four obstacles to clear thinking. &#xA; Reality is complex &#xA; &#xA; Reality is complex and you need complex solutions to solve problems. &#xA; Eli Goldratt defined the Principle of Inherit Simplicity. This means that&#xA;reality is inheritly simple. Because of this simplicity, conflicts can be&#xA;resolved using the following steps. &#xA; &#xA; Clarify the conflict &#xA; Surface the…

Conflicts

The Theory of Constraints talks a lot about conflicts. Conflicts are what keeps&#xA;us from becoming better. On part to becoming better at TOC is to know when you&#xA;are in a conflict. There are certain words that can help you to notice a&#xA;conflict. &#xA; TOC often talks about the large conflicts. These are the conflicts that most&#xA;people have a problem with. When you dissolve these…

Hugo and Tailwind

This current website is built with Hugo. I wanted to try to build my own theme&#xA;with Tailwind. With Hugo it is not very easy to use Tailwind. The biggest&#xA;problem I found was that Hugo does not reload CSS with livereload.

Current Reality Tree

The Current Reality Tree is a sufficiency tree shows (part of) the current&#xA;situation of a system. It is used to model how causes and effects lead to&#xA;certain undesirable effects (UDE). The arrows in the tree show which cause leads&#xA;to which effect. &#xA; When there multiple arrows from a cause to an effect, then each cause creates&#xA;the effect by itself. Removing one of the causes will…

Compatibility of Markdown in Logseq

These are some of my thoughts about Markdown in Logseq. In this note I try to&#xA;find the assumptions behind the conflict. &#xA; This is thinking I did on my and is not associated with how Logseq will work now&#xA;or in the future, this also does not represent goals of the Logseq team. This is&#xA;what I think the goals could be. &#xA; The conflict &#xA; &#xA;&#xA; &#xA; &#xA; Goal tree&#xA;…

Logseq show brackets setting creates a conflict

With a setting, a conflict between two options becomes a choice (or compromise)&#xA;for the user, instead of a situation to be solved by the designer. The conflict&#xA;itself has not been evaporated. &#xA; The checkbox to show or hide brackets in Logseq is an&#xA;example of this. I use Logseq as an example, because it is the software that I&#xA;use daily and like a lot. &#xA; The conflict &#xA;…

An easy method I learned for first time users to start using Logseq for real

I often see people searching for the perfect structure or method to use a tool&#xA;like Logseq. You don&rsquo;t need that. You only need a simple structure and the will&#xA;and habit to fill daily notes pages. Logseq does not need much structure to&#xA;become useful. And when you use it more, it becomes even more useful. &#xA; The daily note page makes Logseq powerful without the need for much…

CRDT Tree Algorithm

I found a piece of code and algorithm that makes it possible to collaborate&#xA;online on tree structures. I have been using Logseq &#xA;for the last few months and this algorithm seems to be a way to make&#xA;collaboration on an outliner possible. &#xA; Evan Wallace described this&#xA;algorithm . The page&#xA;also includes a demo application. I have rewritten this demo application to&#xA; Go and…

Switch to Netlify

I started with Digital Ocean apps yesterday to try out a new static website. I&#xA;found that it is not possible by default to have redirects. So I switched the&#xA;platform to Netlify. It is possible to add redirects there.

Using Hugo to generate my website

In the beginning my website blog was generated with a Ruby app, that I wrote&#xA;myself. Later I rewrote that app in Perl. It used the same file structure.&#xA;Today I converted my files to a Hugo site, by copying the&#xA;files and adding YAML front matter. With Perl this is really easy. See&#xA; convert.pl . &#xA; The index.yaml contains the title and date of the blog posts. Each $doc…

Year in review: 2019

I was always interested in the Year in Review posts from people. It looks like it is&#xA;something that you can&rsquo;t create after the fact. You need to keep some&#xA;notes, and perhaps log data about the things you did. Some people keep count&#xA;of the number of emails sent and received or kilometers traveled. After the&#xA;fact, these kinds of details are rather hard to come by. &#xA; To make…

Ekster: a microsub server

Ekster is a Microsub server. As far as I know Ekster was&#xA;the second implementation of a Microsub server. &#xA; Microsub is a protocol for feed reader applications. Ekster fetches web pages&#xA;and feeds and gathers the entries into channels. A channel contains multiple&#xA;feeds, these feeds are combined into a timeline. &#xA; Ekster can find entries from pages that are marked up with…

A tour of my Indieweb projects

Earlier this year I started to rebuild this website to work better with the Indieweb. At the same I build a new website P83 with Indieweb support from the start. &#xA; This website is generated from static files with a system that I created the&#xA;first time when I started writing in the website. Not much has changed, except&#xA;that I some point a few years ago I rewrote the whole system in…

Writing a WebSub hub

This week I&rsquo;ve been writing a WebSub hub. It&rsquo;s server program that receives&#xA;subscription and publish requests and sends notications to the subscribers&#xA;when a website changes. The website itself sends a request when the website changes.&#xA;This way the subscribers know when to update their feeds. &#xA; Implementing the server is quite simple, especially with the help of a…

Collection and select

Sometimes you need to get a lot of information from the database and you need it fast.&#xA;The way to get this information normally would be to use the Magento collection for the model.&#xA;It would look like this: &#xA; $collection = Mage :: getModel ( 'customer/customer' ) -> getCollection () &#xA; -> addNameToSelect () &#xA; -> joinAttribute ( 'billing_city' , 'customer/city' ,…

XML-lister

XML lister is a small program that lists the elements, values and&#xA;attributes of XML files. &#xA; <?xml version="1.0"?>&#xA;<layout>&#xA; <default>&#xA; <reference name="root">&#xA; <reference name="content">&#xA; <block name="product.info">&#xA; <action method="test">&#xA; <param>test</param>&#xA; <param2>test2</param2>&#xA; </action>&#xA; </block>&#xA; </reference>&#xA; </reference>&#xA;…

Rewrite XML with xmlstarlet

XML Starlet is a program that makes transforming XML documents really simple. &#xA; The command that you need to transform an XML document is the following. &#xA; xmlstarlet tr [ <options> ] <xsl-file> { -p | -s <name> = <value> } [ <xml-file-or-uri> ... ] &#xA; The XSL file that transforms a document to itself is this. It copies all elements, attributes and texts.&#xA;We can extend this file to…

Removed Analytics

I just removed Analytics from my website. It&rsquo;s not important for me.&#xA;I don&rsquo;t have the time to look at it.

Sorting DNS records

I don&rsquo;t update my DNS records often, but when I do I like these records sorted. &#xA; A DNS record consists of the following fields: domain name, type and prio (for&#xA;some types). I use these fields to determine the order of the records. That is&#xA;also the order in which these fields should be ordered. &#xA; The first insight I had about sorting domains was that the domain names…

Rotate one to the left

Last week I wrote a small function in Perl that rotates and array to left. &#xA; The function takes the item from the front and appends it to the back. &#xA; # precondition: @list >= 1;&#xA;sub rotate_left_by_one {&#xA; my $ar = shift;&#xA; my $item = shift @$ar;&#xA; push @$ar, $item;&#xA; return;&#xA;}&#xA; &#xA; After calling this function as many times as the length of the array, it&#xA;leaves…

Low level code

Google released the PDF code of Chrome just a few days. I took a look at it.&#xA;This file ( core/src/fpdfdoc/doc_vt.cpp )&#xA;is an example of how the code looks. &#xA; Sometime later it dawned on me that this code is built out of only low level&#xA;pieces. There are almost no algorithms extracted to functions. &#xA; An example would binary search. There are five copies of binary search…

StrictWeakOrdering

I always forget what strict weak ordering means, but it&rsquo;s quite simple, actually. &#xA; My explanation is based on the Programming Conversation of last week and I hope&#xA;this will help me remember the next time I hear about this. &#xA; Let&rsquo;s start with ordering. A relation is an ordering if it is transitive. &#xA; ordering --> for all a, b, c: r(a, b) and r(b, c) => r(a, c)&#xA;…

Broken interface of Math.min

In an article about creating a column layout I found the following two lines of code: &#xA; var min = Array.min(blocks);&#xA;var index = $.inArray(min, blocks);&#xA; &#xA; This first finds the minimum value in blocks and then the index of that&#xA;value. This combination of lines is very strange. Array.min already knows the&#xA;index of the minimum element and throws it away. Then the programmer…

Stability in column layout

I was reading the notes on programming PDF and found a discussion about&#xA;writing min and max functions for multiple arguments. I didn&rsquo;t what to use this for.&#xA;Also there was a discussion about stability. Stability is when you leave&#xA;elements in the same position when they&rsquo;re the same. This seems to be about&#xA;sorting. &#xA; At the same I was implementing a Pinterest like…

Renewed interest in C&#43;&#43;

In the previous post I showed a&#xA;playlist of presentations by Alexander Stepanov, the creator of STL. In these&#xA;videos he talks about algorithms and data structures (written in C++).&#xA;This principled explanation of programming makes a lot of sense to me. And has&#xA;me take a renewed look at C++.

Programming conversations