From 52734c7644bd615fab8e0fdd883443c1b43a3103 Mon Sep 17 00:00:00 2001 From: Gijs van Dam Date: Wed, 26 Jul 2023 12:13:47 +0200 Subject: [PATCH] Remove Twitter link --- about/index.html | 2 +- contact/index.html | 2 +- feed/2/index.html | 2 +- feed/3/index.html | 2 +- feed/4/index.html | 2 +- feed/5/index.html | 2 +- feed/6/index.html | 2 +- feed/index.html | 2 +- index.html | 2 +- like/2022/02/17-33492/index.html | 2 +- like/2022/03/29-44443/index.html | 2 +- like/2022/03/29-45901/index.html | 2 +- like/2022/03/30-14429/index.html | 2 +- like/2022/03/30-18850/index.html | 2 +- like/2022/03/30-22753/index.html | 2 +- like/2022/03/30-48948/index.html | 2 +- like/2022/03/30-6154/index.html | 2 +- like/2022/04/08-9133/index.html | 2 +- like/2022/04/12-15596/index.html | 2 +- like/2022/04/15-31324/index.html | 2 +- like/2022/05/13-21401/index.html | 2 +- like/2022/05/13-24063/index.html | 2 +- like/2022/05/13-6738/index.html | 2 +- like/2022/05/13-6753/index.html | 2 +- like/2022/05/13-6825/index.html | 2 +- like/2022/05/13-6831/index.html | 2 +- like/2022/05/13-6887/index.html | 2 +- like/2022/05/14-14339/index.html | 2 +- like/2022/05/17-10058/index.html | 2 +- like/2022/05/18-30142/index.html | 2 +- like/2022/06/09-34557/index.html | 2 +- like/2022/06/16-13146/index.html | 2 +- like/2022/06/17-10319/index.html | 2 +- like/2022/06/22-5473/index.html | 2 +- like/2022/06/22-6467/index.html | 2 +- like/2022/06/27-24909/index.html | 2 +- like/2022/10/19-4968/index.html | 2 +- like/2022/11/09-31008/index.html | 2 +- like/2022/12/09-5106/index.html | 2 +- like/2023/02/14-60593/index.html | 2 +- likes/2/index.html | 2 +- likes/index.html | 2 +- note/2022/02/15-27171/index.html | 2 +- note/2022/02/15-29847/index.html | 2 +- note/2022/02/15-30403/index.html | 2 +- note/2022/02/15-32251/index.html | 2 +- note/2022/02/15-32499/index.html | 2 +- note/2022/02/15-33268/index.html | 2 +- note/2022/02/15-34237/index.html | 2 +- note/2022/02/15-35473/index.html | 2 +- note/2022/02/15-44835/index.html | 2 +- note/2022/02/15-47823/index.html | 2 +- note/2022/02/16-3748/index.html | 2 +- note/2022/02/16-3809/index.html | 2 +- note/2022/02/16-3840/index.html | 2 +- note/2022/02/16-4984/index.html | 2 +- note/2022/02/16-5040/index.html | 2 +- note/2022/02/16-5062/index.html | 2 +- note/2022/02/16-6459/index.html | 2 +- note/2022/02/16-7572/index.html | 2 +- note/2022/02/17-17647/index.html | 2 +- note/2022/02/25-5777/index.html | 2 +- note/2022/03/02-30920/index.html | 2 +- note/2022/03/02-5366/index.html | 2 +- note/2022/03/15-8786/index.html | 2 +- note/2022/03/24-25322/index.html | 2 +- note/2022/04/27-9088/index.html | 2 +- note/2022/06/21-7056/index.html | 2 +- note/2022/08/30-11361/index.html | 2 +- note/2022/10/21-26894/index.html | 2 +- note/2022/11/09-1939/index.html | 2 +- notes/2/index.html | 2 +- notes/index.html | 2 +- now/index.html | 2 +- open-source/index.html | 2 +- pages/tags/index.html | 2 +- photo/2022/02/16-3950/index.html | 2 +- photo/2022/02/16-4222/index.html | 2 +- photo/2022/02/17-18628/index.html | 2 +- photo/2022/02/17-29992/index.html | 2 +- photo/2022/02/17-30933/index.html | 2 +- photo/2022/02/17-33011/index.html | 2 +- photo/2022/02/18-57744/index.html | 2 +- photo/2022/02/22-49012/index.html | 2 +- photo/2022/02/28-27104/index.html | 2 +- photo/2022/03/29-24484/index.html | 2 +- photo/2022/03/31-13008/index.html | 2 +- photo/2022/04/01-6960/index.html | 2 +- photo/2022/04/08-11189/index.html | 2 +- photo/2022/05/17-51349/index.html | 2 +- photo/2022/06/15-10659/index.html | 2 +- photo/2022/09/19-11320/index.html | 2 +- photos/index.html | 2 +- post/building-bitcoin-core-on-windows-10/index.html | 2 +- post/debugging-lnd-while-running-a-local-cluster/index.html | 2 +- post/how-do-payments-in-lightning-network-work/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- post/running-c-lightning-in-simverse-with-plugins/index.html | 2 +- post/ssh-keybased-authentication-windows-to-linux/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- posts/2/index.html | 2 +- replies/2/index.html | 2 +- replies/index.html | 2 +- reply/2022/02/22-51488/index.html | 2 +- reply/2022/02/23-25550/index.html | 2 +- reply/2022/02/23-6487/index.html | 2 +- reply/2022/03/14-3524/index.html | 2 +- reply/2022/03/15-27609/index.html | 2 +- reply/2022/03/18-6287/index.html | 2 +- reply/2022/03/19-19572/index.html | 2 +- reply/2022/03/19-20011/index.html | 2 +- reply/2022/03/24-25808/index.html | 2 +- reply/2022/03/29-47144/index.html | 2 +- reply/2022/03/31-9522/index.html | 2 +- reply/2022/04/04-4837/index.html | 2 +- reply/2022/04/08-10065/index.html | 2 +- reply/2022/04/08-9393/index.html | 2 +- reply/2022/04/15-30405/index.html | 2 +- reply/2022/04/27-10399/index.html | 2 +- reply/2022/04/27-11023/index.html | 2 +- reply/2022/04/27-11235/index.html | 2 +- reply/2022/04/27-9426/index.html | 2 +- reply/2022/04/27-9703/index.html | 2 +- reply/2022/05/17-7736/index.html | 2 +- reply/2022/05/17-9592/index.html | 2 +- reply/2022/05/18-31162/index.html | 2 +- reply/2022/05/18-6225/index.html | 2 +- reply/2022/05/18-6490/index.html | 2 +- reply/2022/06/16-36570/index.html | 2 +- reply/2022/06/16-36787/index.html | 2 +- reply/2022/06/17-32419/index.html | 2 +- reply/2022/06/20-41110/index.html | 2 +- reply/2022/06/22-4825/index.html | 2 +- reply/2022/06/22-5125/index.html | 2 +- reply/2022/06/22-5638/index.html | 2 +- reply/2022/09/08-32881/index.html | 2 +- reply/2022/10/19-4868/index.html | 2 +- reply/2022/10/19-5621/index.html | 2 +- reply/2022/10/25-35503/index.html | 2 +- reply/2022/10/25-35544/index.html | 2 +- reply/2022/10/28-1945/index.html | 2 +- reply/2022/11/09-2109/index.html | 2 +- reply/2023/02/08-31285/index.html | 2 +- reply/2023/02/09-38481/index.html | 2 +- reply/2023/02/09-39298/index.html | 2 +- reply/2023/02/09-39685/index.html | 2 +- reply/2023/02/14-50133/index.html | 2 +- reply/2023/04/05-31643/index.html | 2 +- repost/2022/02/18-30270/index.html | 2 +- repost/2022/02/18-30288/index.html | 2 +- repost/2022/03/03-amazing/index.html | 2 +- repost/2022/03/07-49678/index.html | 2 +- repost/2022/04/01-2436/index.html | 2 +- repost/2022/05/13-24864/index.html | 2 +- repost/2022/05/13-45624/index.html | 2 +- repost/2022/05/27-19753/index.html | 2 +- repost/2022/06/09-24377/index.html | 2 +- repost/2022/06/13-46841/index.html | 2 +- repost/2022/06/16-3920/index.html | 2 +- reposts/index.html | 2 +- research/index.html | 2 +- resume/index.html | 2 +- rss.xml | 2 +- topics/bash/index.html | 2 +- topics/bitcoin/index.html | 2 +- topics/boilerplate-paper/index.html | 2 +- topics/c-lightning/index.html | 2 +- topics/crypto/index.html | 2 +- topics/cryptography/index.html | 2 +- topics/git/index.html | 2 +- topics/indieweb/index.html | 2 +- topics/janos/index.html | 2 +- topics/latex/index.html | 2 +- topics/lightning-network/index.html | 2 +- topics/lnd/index.html | 2 +- topics/lua/index.html | 2 +- topics/pandoc/index.html | 2 +- topics/powershell/index.html | 2 +- topics/revealjs/index.html | 2 +- topics/science/index.html | 2 +- topics/simverse/index.html | 2 +- topics/ssh/index.html | 2 +- topics/test1/index.html | 2 +- topics/test2/index.html | 2 +- topics/vscode/index.html | 2 +- topics/webassembly/index.html | 2 +- topics/windows-10/index.html | 2 +- ventures/index.html | 2 +- 191 files changed, 191 insertions(+), 191 deletions(-) diff --git a/about/index.html b/about/index.html index 15839bd3..9e7b18e3 100644 --- a/about/index.html +++ b/about/index.html @@ -1 +1 @@ -About me
Gijs van Dam

About me

Researcher, developer and business founder in no particular order.

I live in Amsterdam.

Background

It is a bit of a dog's breakfast. I have a master's degree in veterinary science. I have never worked (and wouldn't be allowed to work) as a veterinarian, since I never did a residency and that's a requirement for a license to practice veterinarian medicin. By now it has been so long since I finished my studies that I have a hard time telling apart cats and dogs.

I was always a computer nerd, and from 1995 onwards focussed on web development in my spare time. While finishing my studies, I started to work full-time for a web company in 1999. I enjoyed the peak of the dot-com bubble, and also the bursting. When my then-employer went bankrupt I thought it smart to start my own web development company, called Mindbus. This was in 2002. That company has been my sole source of income since then. At it's peak we had shy of 30 people working for Mindbus. Untill 2020 we had two offices, one in the city of Leiden, the Netherlands, and another in the city of Lisbon, Portugal. Currently Mindbus is a nimble company with one office (the one in Leiden) and a distributed team of people. We mainly work on an e-commerce platform that we developed for brick-and-mortar book stores. It's allowing Dutch book stores to be like the indomitable Gauls holding out against the invaders. But this time the invaders aren't the Romans, but Amazon and (only known in The Netherlands) Bol.

We moved to Malaysia in January 2017. My wife and I always had this dream of living in a foreign country for a few years. So when she could get a job as an assistant professor at a Malaysian university we didn't have to think twice about it. We moved with our kids, then 5 months and 4 years old.

In an unexpected way moving to Malaysia opened up the opportunity to make a career switch. I wasn't spending as much time on Mindbus anymore (and it thrived, so I am not sure what that says about my involvement) and the cost of living was such that I could afford to do a full-time PhD at the National University of Malaysia. So that's what I am doing now: A PhD in computer science. My research is on privacy in the context of second layer cryptocurrency solutions.

In December 2022 we moved back to The Netherlands.

In my spare time I work on two open source projects. One is a fork of the static site generator Metalsmith, called Jonas, that runs entirely in the browser. The site you are currently looking at is built with Jonas. The other is a tool to easily make papers, posters and presentations in LaTeX, using markdown and Pandoc. It is called Boilerplate Paper. Both projects are a long way from a 1.0 release, but in the spirit of eating your own dog food, I use them both extensively.

\ No newline at end of file +About me
Gijs van Dam

About me

Researcher, developer and business founder in no particular order.

I live in Amsterdam.

Background

It is a bit of a dog's breakfast. I have a master's degree in veterinary science. I have never worked (and wouldn't be allowed to work) as a veterinarian, since I never did a residency and that's a requirement for a license to practice veterinarian medicin. By now it has been so long since I finished my studies that I have a hard time telling apart cats and dogs.

I was always a computer nerd, and from 1995 onwards focussed on web development in my spare time. While finishing my studies, I started to work full-time for a web company in 1999. I enjoyed the peak of the dot-com bubble, and also the bursting. When my then-employer went bankrupt I thought it smart to start my own web development company, called Mindbus. This was in 2002. That company has been my sole source of income since then. At it's peak we had shy of 30 people working for Mindbus. Untill 2020 we had two offices, one in the city of Leiden, the Netherlands, and another in the city of Lisbon, Portugal. Currently Mindbus is a nimble company with one office (the one in Leiden) and a distributed team of people. We mainly work on an e-commerce platform that we developed for brick-and-mortar book stores. It's allowing Dutch book stores to be like the indomitable Gauls holding out against the invaders. But this time the invaders aren't the Romans, but Amazon and (only known in The Netherlands) Bol.

We moved to Malaysia in January 2017. My wife and I always had this dream of living in a foreign country for a few years. So when she could get a job as an assistant professor at a Malaysian university we didn't have to think twice about it. We moved with our kids, then 5 months and 4 years old.

In an unexpected way moving to Malaysia opened up the opportunity to make a career switch. I wasn't spending as much time on Mindbus anymore (and it thrived, so I am not sure what that says about my involvement) and the cost of living was such that I could afford to do a full-time PhD at the National University of Malaysia. So that's what I am doing now: A PhD in computer science. My research is on privacy in the context of second layer cryptocurrency solutions.

In December 2022 we moved back to The Netherlands.

In my spare time I work on two open source projects. One is a fork of the static site generator Metalsmith, called Jonas, that runs entirely in the browser. The site you are currently looking at is built with Jonas. The other is a tool to easily make papers, posters and presentations in LaTeX, using markdown and Pandoc. It is called Boilerplate Paper. Both projects are a long way from a 1.0 release, but in the spirit of eating your own dog food, I use them both extensively.

\ No newline at end of file diff --git a/contact/index.html b/contact/index.html index e09e828e..82c5a827 100644 --- a/contact/index.html +++ b/contact/index.html @@ -1,3 +1,3 @@ Contact
Gijs van Dam

Contact

By far the best method to contact me is sending a mail to 

If you want to follow me, you can check out my social media accounts in the footer below.

\ No newline at end of file +document.write(a+'@g'+b+c+'');

If you want to follow me, you can check out my social media accounts in the footer below.

\ No newline at end of file diff --git a/feed/2/index.html b/feed/2/index.html index b67d5d39..0761dbd8 100644 --- a/feed/2/index.html +++ b/feed/2/index.html @@ -1 +1 @@ -Gijs van Dam
Gijs van Dam
\ No newline at end of file +Gijs van Dam
Gijs van Dam
\ No newline at end of file diff --git a/feed/3/index.html b/feed/3/index.html index beea935b..1f36f0d4 100644 --- a/feed/3/index.html +++ b/feed/3/index.html @@ -1 +1 @@ -Gijs van Dam
Gijs van Dam
\ No newline at end of file +Gijs van Dam
Gijs van Dam
\ No newline at end of file diff --git a/feed/4/index.html b/feed/4/index.html index 7914e3cc..e0cf5793 100644 --- a/feed/4/index.html +++ b/feed/4/index.html @@ -1 +1 @@ -Gijs van Dam
Gijs van Dam
\ No newline at end of file +Gijs van Dam
Gijs van Dam
\ No newline at end of file diff --git a/feed/5/index.html b/feed/5/index.html index 84a8fa62..5bb7b1df 100644 --- a/feed/5/index.html +++ b/feed/5/index.html @@ -1 +1 @@ -Gijs van Dam
Gijs van Dam
\ No newline at end of file +Gijs van Dam
Gijs van Dam
\ No newline at end of file diff --git a/feed/6/index.html b/feed/6/index.html index b2d13f1e..385b893f 100644 --- a/feed/6/index.html +++ b/feed/6/index.html @@ -1,2 +1,2 @@ Gijs van Dam
Gijs van Dam
\ No newline at end of file +git clone https://github.com/lightningd/plugins.git --depth 1

We put the plugin in the _repos folder, because it is assumed that the plugin is there when the cluster is being build. (Also: throughout this article we assume your simverse folder is inside your home folder. If that is not the case, adjust it accordingly)

Since all nodes in Simverse run inside Docker containers, that plugin-file should be made available inside the Docker context folder. The _repos folder is not part of that context (each container gets its own context) so we have to copy the file from the _repos folder to the Docker context folder. Luckily Simverse works with the concept of recipes. A recipe describes how your cluster should look like. A recipe is a bash script that uses a library called cookbook that can be used to build your cluster step-by-step. Since it is "just" a bash script, you can do anything bash can do to tweak your cluster.

We will create a recipe that creates a cluster with three c-lightning nodes, running on a bitcoind back-end.

  • Gijs van Dam

    SSH keybased authentication Windows to Linux

    I do most of my development on a remote machine. The machine isn't that remote, it's a mini-pc running Ubuntu that is standing right here on my desk. It has no peripherals, so I have to do all my development remotely through my Windows 10 laptop.

    Remote development with Vscode is amazing. It just works. Once you are set up, there's no difference with working locally. To have that seamless experience you do have to set up keybased authentication for SSH. If you don't you will be constantly reminded of working remotely, because you have to type in the password of the remote machine.

  • Gijs van Dam

    Debugging LND while running a local cluster

    If you want to debug LND, or if you want to take a real deep dive into LND, you probably want to be able to set breakpoints in the source code to see what is actually happening. Not only that, you also want to have the node run in a local cluster of other nodes, so that you can perform some real Lightning actions like opening a channel and make payments. This post takes you through the setup I use based on Delve and Simverse.

  • Gijs van Dam

    Building Bitcoin Core On Windows 10

    I've been following Bitcoin and more importantly the Blockchain from the sidelines for a few years now, but I wanted to get my hands dirty. Obviously I could just download the Bitcoin Core executables from bitcoin.org, but I always feel it gives me more insight if I build something myself. Also it's was a nice test case for Bash on Windows.

  • Newer posts
  • \ No newline at end of file diff --git a/feed/index.html b/feed/index.html index 24144058..0d741316 100644 --- a/feed/index.html +++ b/feed/index.html @@ -1 +1 @@ -Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +Gijs van Dam
    Gijs van Dam
    \ No newline at end of file diff --git a/index.html b/index.html index 1b7e4b58..87c801af 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +Gijs van Dam
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/02/17-33492/index.html b/like/2022/02/17-33492/index.html index e907b6f7..bf65626b 100644 --- a/like/2022/02/17-33492/index.html +++ b/like/2022/02/17-33492/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/03/29-44443/index.html b/like/2022/03/29-44443/index.html index 7145be58..6de841a4 100644 --- a/like/2022/03/29-44443/index.html +++ b/like/2022/03/29-44443/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/03/29-45901/index.html b/like/2022/03/29-45901/index.html index 7291224f..356ae4d3 100644 --- a/like/2022/03/29-45901/index.html +++ b/like/2022/03/29-45901/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/03/30-14429/index.html b/like/2022/03/30-14429/index.html index d0995e4f..3989788c 100644 --- a/like/2022/03/30-14429/index.html +++ b/like/2022/03/30-14429/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/03/30-18850/index.html b/like/2022/03/30-18850/index.html index 81a5fe02..559d297e 100644 --- a/like/2022/03/30-18850/index.html +++ b/like/2022/03/30-18850/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/03/30-22753/index.html b/like/2022/03/30-22753/index.html index 72507336..a38a2fbb 100644 --- a/like/2022/03/30-22753/index.html +++ b/like/2022/03/30-22753/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/03/30-48948/index.html b/like/2022/03/30-48948/index.html index 50b5c53a..d9254a3f 100644 --- a/like/2022/03/30-48948/index.html +++ b/like/2022/03/30-48948/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/03/30-6154/index.html b/like/2022/03/30-6154/index.html index 56542285..1e054646 100644 --- a/like/2022/03/30-6154/index.html +++ b/like/2022/03/30-6154/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/04/08-9133/index.html b/like/2022/04/08-9133/index.html index ba83caf1..c1cadc9f 100644 --- a/like/2022/04/08-9133/index.html +++ b/like/2022/04/08-9133/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/04/12-15596/index.html b/like/2022/04/12-15596/index.html index 34b1362c..589d4a29 100644 --- a/like/2022/04/12-15596/index.html +++ b/like/2022/04/12-15596/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/04/15-31324/index.html b/like/2022/04/15-31324/index.html index 5d921182..ad1655ff 100644 --- a/like/2022/04/15-31324/index.html +++ b/like/2022/04/15-31324/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/05/13-21401/index.html b/like/2022/05/13-21401/index.html index 59e08d3d..5b160b7b 100644 --- a/like/2022/05/13-21401/index.html +++ b/like/2022/05/13-21401/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/05/13-24063/index.html b/like/2022/05/13-24063/index.html index 02937205..7bdc5a8f 100644 --- a/like/2022/05/13-24063/index.html +++ b/like/2022/05/13-24063/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/05/13-6738/index.html b/like/2022/05/13-6738/index.html index eb7f81ff..ffa4695e 100644 --- a/like/2022/05/13-6738/index.html +++ b/like/2022/05/13-6738/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/05/13-6753/index.html b/like/2022/05/13-6753/index.html index f13c794c..cd85c91a 100644 --- a/like/2022/05/13-6753/index.html +++ b/like/2022/05/13-6753/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/05/13-6825/index.html b/like/2022/05/13-6825/index.html index 9f1918ab..fda23ccf 100644 --- a/like/2022/05/13-6825/index.html +++ b/like/2022/05/13-6825/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/05/13-6831/index.html b/like/2022/05/13-6831/index.html index 3a0fc973..48bbb65f 100644 --- a/like/2022/05/13-6831/index.html +++ b/like/2022/05/13-6831/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/05/13-6887/index.html b/like/2022/05/13-6887/index.html index 76a336ea..376ede4b 100644 --- a/like/2022/05/13-6887/index.html +++ b/like/2022/05/13-6887/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/05/14-14339/index.html b/like/2022/05/14-14339/index.html index f4faf22d..2637d6ca 100644 --- a/like/2022/05/14-14339/index.html +++ b/like/2022/05/14-14339/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/05/17-10058/index.html b/like/2022/05/17-10058/index.html index bade9289..c6a87b19 100644 --- a/like/2022/05/17-10058/index.html +++ b/like/2022/05/17-10058/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/05/18-30142/index.html b/like/2022/05/18-30142/index.html index f429f5b5..b839c93b 100644 --- a/like/2022/05/18-30142/index.html +++ b/like/2022/05/18-30142/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/06/09-34557/index.html b/like/2022/06/09-34557/index.html index cf47da04..4e041e7c 100644 --- a/like/2022/06/09-34557/index.html +++ b/like/2022/06/09-34557/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/06/16-13146/index.html b/like/2022/06/16-13146/index.html index b4de2247..33ad27fb 100644 --- a/like/2022/06/16-13146/index.html +++ b/like/2022/06/16-13146/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/06/17-10319/index.html b/like/2022/06/17-10319/index.html index b8c724fb..9dc9eec7 100644 --- a/like/2022/06/17-10319/index.html +++ b/like/2022/06/17-10319/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/06/22-5473/index.html b/like/2022/06/22-5473/index.html index 926a24b8..9473403a 100644 --- a/like/2022/06/22-5473/index.html +++ b/like/2022/06/22-5473/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/06/22-6467/index.html b/like/2022/06/22-6467/index.html index 7d5d4b55..8a571af4 100644 --- a/like/2022/06/22-6467/index.html +++ b/like/2022/06/22-6467/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/06/27-24909/index.html b/like/2022/06/27-24909/index.html index 27dc3df1..627313c8 100644 --- a/like/2022/06/27-24909/index.html +++ b/like/2022/06/27-24909/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/10/19-4968/index.html b/like/2022/10/19-4968/index.html index 52053771..b45326a7 100644 --- a/like/2022/10/19-4968/index.html +++ b/like/2022/10/19-4968/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/11/09-31008/index.html b/like/2022/11/09-31008/index.html index a7c84f4b..f9c73a52 100644 --- a/like/2022/11/09-31008/index.html +++ b/like/2022/11/09-31008/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2022/12/09-5106/index.html b/like/2022/12/09-5106/index.html index 80085d62..0c8b102e 100644 --- a/like/2022/12/09-5106/index.html +++ b/like/2022/12/09-5106/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/like/2023/02/14-60593/index.html b/like/2023/02/14-60593/index.html index a08e3628..5d83bfaf 100644 --- a/like/2023/02/14-60593/index.html +++ b/like/2023/02/14-60593/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/likes/2/index.html b/likes/2/index.html index 248ee6aa..8127b826 100644 --- a/likes/2/index.html +++ b/likes/2/index.html @@ -1 +1 @@ -Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +Gijs van Dam
    Gijs van Dam
    \ No newline at end of file diff --git a/likes/index.html b/likes/index.html index df72c5ab..b4211da6 100644 --- a/likes/index.html +++ b/likes/index.html @@ -1 +1 @@ -Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +Gijs van Dam
    Gijs van Dam
    \ No newline at end of file diff --git a/note/2022/02/15-27171/index.html b/note/2022/02/15-27171/index.html index c580ef4c..812c61bc 100644 --- a/note/2022/02/15-27171/index.html +++ b/note/2022/02/15-27171/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Let's see if syndication no works.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Let's see if syndication no works.

    \ No newline at end of file diff --git a/note/2022/02/15-29847/index.html b/note/2022/02/15-29847/index.html index f303c950..5e8d4063 100644 --- a/note/2022/02/15-29847/index.html +++ b/note/2022/02/15-29847/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    TEST: Let's see if we can wait for this tweet to come online.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    TEST: Let's see if we can wait for this tweet to come online.

    \ No newline at end of file diff --git a/note/2022/02/15-30403/index.html b/note/2022/02/15-30403/index.html index caf83ea2..d72fe069 100644 --- a/note/2022/02/15-30403/index.html +++ b/note/2022/02/15-30403/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    TEST: Let's see if we can wait for this tweet to come online.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    TEST: Let's see if we can wait for this tweet to come online.

    \ No newline at end of file diff --git a/note/2022/02/15-32251/index.html b/note/2022/02/15-32251/index.html index 316e45d1..4287245b 100644 --- a/note/2022/02/15-32251/index.html +++ b/note/2022/02/15-32251/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Test: Does syndication now work?

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Test: Does syndication now work?

    \ No newline at end of file diff --git a/note/2022/02/15-32499/index.html b/note/2022/02/15-32499/index.html index 1af14a1b..1a4a5956 100644 --- a/note/2022/02/15-32499/index.html +++ b/note/2022/02/15-32499/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Test: Note wit a picture

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Test: Note wit a picture

    \ No newline at end of file diff --git a/note/2022/02/15-33268/index.html b/note/2022/02/15-33268/index.html index 84350bbc..4733f271 100644 --- a/note/2022/02/15-33268/index.html +++ b/note/2022/02/15-33268/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    TEST: Let's see if we can wait for this tweet to come online.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    TEST: Let's see if we can wait for this tweet to come online.

    \ No newline at end of file diff --git a/note/2022/02/15-34237/index.html b/note/2022/02/15-34237/index.html index eb414b16..6f669203 100644 --- a/note/2022/02/15-34237/index.html +++ b/note/2022/02/15-34237/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    TEST: Let's see if we can wait for this tweet to come online.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    TEST: Let's see if we can wait for this tweet to come online.

    \ No newline at end of file diff --git a/note/2022/02/15-35473/index.html b/note/2022/02/15-35473/index.html index fe174167..896739d3 100644 --- a/note/2022/02/15-35473/index.html +++ b/note/2022/02/15-35473/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Test: Note wit a picture

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Test: Note wit a picture

    \ No newline at end of file diff --git a/note/2022/02/15-44835/index.html b/note/2022/02/15-44835/index.html index 07d8bd8f..6e020184 100644 --- a/note/2022/02/15-44835/index.html +++ b/note/2022/02/15-44835/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Note with picture

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Note with picture

    \ No newline at end of file diff --git a/note/2022/02/15-47823/index.html b/note/2022/02/15-47823/index.html index 0d0a33f8..1ad4c39e 100644 --- a/note/2022/02/15-47823/index.html +++ b/note/2022/02/15-47823/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Test

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Test

    \ No newline at end of file diff --git a/note/2022/02/16-3748/index.html b/note/2022/02/16-3748/index.html index 7113c0af..d0f81eef 100644 --- a/note/2022/02/16-3748/index.html +++ b/note/2022/02/16-3748/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating a basic h-entry

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating a basic h-entry

    \ No newline at end of file diff --git a/note/2022/02/16-3809/index.html b/note/2022/02/16-3809/index.html index a3901152..0ef35b3a 100644 --- a/note/2022/02/16-3809/index.html +++ b/note/2022/02/16-3809/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating an h-entry with a JSON request

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating an h-entry with a JSON request

    \ No newline at end of file diff --git a/note/2022/02/16-3840/index.html b/note/2022/02/16-3840/index.html index 037d9777..e9dd8984 100644 --- a/note/2022/02/16-3840/index.html +++ b/note/2022/02/16-3840/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating an h-entry with categories. This post should have two categories, test1 and test2

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating an h-entry with categories. This post should have two categories, test1 and test2

    \ No newline at end of file diff --git a/note/2022/02/16-4984/index.html b/note/2022/02/16-4984/index.html index 8877c46a..55b37006 100644 --- a/note/2022/02/16-4984/index.html +++ b/note/2022/02/16-4984/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating an h-entry with one category. This post should have one category, test1

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating an h-entry with one category. This post should have one category, test1

    \ No newline at end of file diff --git a/note/2022/02/16-5040/index.html b/note/2022/02/16-5040/index.html index 5b30c360..d2ce23ee 100644 --- a/note/2022/02/16-5040/index.html +++ b/note/2022/02/16-5040/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Testing accepting access token in HTTP Authorization header

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Testing accepting access token in HTTP Authorization header

    \ No newline at end of file diff --git a/note/2022/02/16-5062/index.html b/note/2022/02/16-5062/index.html index 41c1a4b6..6f920d32 100644 --- a/note/2022/02/16-5062/index.html +++ b/note/2022/02/16-5062/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Testing accepting access token in post body

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Testing accepting access token in post body

    \ No newline at end of file diff --git a/note/2022/02/16-6459/index.html b/note/2022/02/16-6459/index.html index 0e301aea..1f98d8ca 100644 --- a/note/2022/02/16-6459/index.html +++ b/note/2022/02/16-6459/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating a basic h-entry

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating a basic h-entry

    \ No newline at end of file diff --git a/note/2022/02/16-7572/index.html b/note/2022/02/16-7572/index.html index c0ff5989..98fd1ed9 100644 --- a/note/2022/02/16-7572/index.html +++ b/note/2022/02/16-7572/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Testing accepting access token in HTTP Authorization header and POST body. This should not create a post

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Testing accepting access token in HTTP Authorization header and POST body. This should not create a post

    \ No newline at end of file diff --git a/note/2022/02/17-17647/index.html b/note/2022/02/17-17647/index.html index c363a82d..f51f354a 100644 --- a/note/2022/02/17-17647/index.html +++ b/note/2022/02/17-17647/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    I am working on some animations to explain basic Lightning Network concepts. Needless to say, I'm not quite there yet...

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    I am working on some animations to explain basic Lightning Network concepts. Needless to say, I'm not quite there yet...

    \ No newline at end of file diff --git a/note/2022/02/25-5777/index.html b/note/2022/02/25-5777/index.html index c3ecf4d1..27acca57 100644 --- a/note/2022/02/25-5777/index.html +++ b/note/2022/02/25-5777/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Checking out the coding style requirements for contributing to the (amazing) SVG.js from @wout. This made me giggle: > avoid semicolons, we're not writing PHP here.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Checking out the coding style requirements for contributing to the (amazing) SVG.js from @wout. This made me giggle: > avoid semicolons, we're not writing PHP here.

    \ No newline at end of file diff --git a/note/2022/03/02-30920/index.html b/note/2022/03/02-30920/index.html index ec3f0d57..36d8e1e2 100644 --- a/note/2022/03/02-30920/index.html +++ b/note/2022/03/02-30920/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    The latest vid from @bitluni's channel is a piece of art. You don't know it yet, but you want to know more about phased arrays. Go watch the vid. https://www.youtube.com/watch?v=z4uxC7ISd-c

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    The latest vid from @bitluni's channel is a piece of art. You don't know it yet, but you want to know more about phased arrays. Go watch the vid. https://www.youtube.com/watch?v=z4uxC7ISd-c

    \ No newline at end of file diff --git a/note/2022/03/02-5366/index.html b/note/2022/03/02-5366/index.html index 86d6e5d7..266f82fb 100644 --- a/note/2022/03/02-5366/index.html +++ b/note/2022/03/02-5366/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Thank you for the kind words. It was a pleasure!

    <cite class="h-cite u-quotation-of"> <a class="u-url" href="https://twitter.com/edazcona/status/1498721507761172485"> Discover more about the security of the Lightning Network! @gijswijs research is extremely valuable for continuously improving the Lightning Network

    Youtube: https://youtu.be/rVxUGs6S3PI BitcoinTV: https://bitcointv.com/w/of4fPNECsigKk929ejWTBW

    #Bitcoin #LightningNetwork @SatoshiRadioPod </a> </cite>

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Thank you for the kind words. It was a pleasure!

    <cite class="h-cite u-quotation-of"> <a class="u-url" href="https://twitter.com/edazcona/status/1498721507761172485"> Discover more about the security of the Lightning Network! @gijswijs research is extremely valuable for continuously improving the Lightning Network

    Youtube: https://youtu.be/rVxUGs6S3PI BitcoinTV: https://bitcointv.com/w/of4fPNECsigKk929ejWTBW

    #Bitcoin #LightningNetwork @SatoshiRadioPod </a> </cite>

    \ No newline at end of file diff --git a/note/2022/03/15-8786/index.html b/note/2022/03/15-8786/index.html index 9fd568dd..9914f9a9 100644 --- a/note/2022/03/15-8786/index.html +++ b/note/2022/03/15-8786/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    The @mendeley_com Reference Manager is a step backwards from Mendeley Desktop. Wrapping your web app in @electronjs and market it as "efficient, flexible and responsive" just isn't cutting it. Stuff missing at first glance:

    • watched folders
    • rename files
    • BibTeX syncing
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    The @mendeley_com Reference Manager is a step backwards from Mendeley Desktop. Wrapping your web app in @electronjs and market it as "efficient, flexible and responsive" just isn't cutting it. Stuff missing at first glance:

    • watched folders
    • rename files
    • BibTeX syncing
    \ No newline at end of file diff --git a/note/2022/03/24-25322/index.html b/note/2022/03/24-25322/index.html index 4fbf1558..076de39f 100644 --- a/note/2022/03/24-25322/index.html +++ b/note/2022/03/24-25322/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    @aaronpk I'm integrating webmentions in my website, using webmentions.io and I might have crashed your server. Although I don't think I ddos-ed it with more than a 1000 requests. Anyway, if it was me, I am so sorry.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    @aaronpk I'm integrating webmentions in my website, using webmentions.io and I might have crashed your server. Although I don't think I ddos-ed it with more than a 1000 requests. Anyway, if it was me, I am so sorry.

    \ No newline at end of file diff --git a/note/2022/04/27-9088/index.html b/note/2022/04/27-9088/index.html index 3978b5f5..be989ecf 100644 --- a/note/2022/04/27-9088/index.html +++ b/note/2022/04/27-9088/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    @jellebc Een kleine aanvulling op de podcast van dag 58 over waarom we (nog) geen cyber war zien in de Oekraïne. Stellen dat het Westen er goed genoeg op voorbereid was, is een te simplistische weergave van de werkelijkheid. Zoals altijd is het iets genuanceerder...

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    @jellebc Een kleine aanvulling op de podcast van dag 58 over waarom we (nog) geen cyber war zien in de Oekraïne. Stellen dat het Westen er goed genoeg op voorbereid was, is een te simplistische weergave van de werkelijkheid. Zoals altijd is het iets genuanceerder...

    \ No newline at end of file diff --git a/note/2022/06/21-7056/index.html b/note/2022/06/21-7056/index.html index d7b7469a..ea100e13 100644 --- a/note/2022/06/21-7056/index.html +++ b/note/2022/06/21-7056/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    @ercwl You have written about Hedera and DAGs in general. I'm trying to find good info (papers) DAG scaling, but no luck. The way I see it DAGs can't scale, because with say 10k permissioned nodes, the gossip on events would grow exp. You would need an ASIC for all those hashes.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    @ercwl You have written about Hedera and DAGs in general. I'm trying to find good info (papers) DAG scaling, but no luck. The way I see it DAGs can't scale, because with say 10k permissioned nodes, the gossip on events would grow exp. You would need an ASIC for all those hashes.

    \ No newline at end of file diff --git a/note/2022/08/30-11361/index.html b/note/2022/08/30-11361/index.html index f1d1ffe3..f4eaf159 100644 --- a/note/2022/08/30-11361/index.html +++ b/note/2022/08/30-11361/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    @MustardVideos I really enjoyed your vid on flying wings. Did you know that the idea is still pursued by @tudelft? check: https://www.tudelft.nl/lr/flying-v

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    @MustardVideos I really enjoyed your vid on flying wings. Did you know that the idea is still pursued by @tudelft? check: https://www.tudelft.nl/lr/flying-v

    \ No newline at end of file diff --git a/note/2022/10/21-26894/index.html b/note/2022/10/21-26894/index.html index 62c4c37f..d9949554 100644 --- a/note/2022/10/21-26894/index.html +++ b/note/2022/10/21-26894/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    I took up cubing at the tender age of 45. Two days later and I have a sub 2-minute PR and an ao5 of 2:13. @jpermofficial 's tutorials are a huge help. Interesting to see if I can get a sub 1-minute PR and how long that will take me.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    I took up cubing at the tender age of 45. Two days later and I have a sub 2-minute PR and an ao5 of 2:13. @jpermofficial 's tutorials are a huge help. Interesting to see if I can get a sub 1-minute PR and how long that will take me.

    \ No newline at end of file diff --git a/note/2022/11/09-1939/index.html b/note/2022/11/09-1939/index.html index 0dc05156..21e26659 100644 --- a/note/2022/11/09-1939/index.html +++ b/note/2022/11/09-1939/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    > Macroeconomists want their math hard enough to make them look smarter than sociologists, but not too hard that they can’t get clean-looking solutions.

    Don't we all. Don't we all.

    From @noahpinion's latest newsletter.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    > Macroeconomists want their math hard enough to make them look smarter than sociologists, but not too hard that they can’t get clean-looking solutions.

    Don't we all. Don't we all.

    From @noahpinion's latest newsletter.

    \ No newline at end of file diff --git a/notes/2/index.html b/notes/2/index.html index 364ad7b1..aeac33cb 100644 --- a/notes/2/index.html +++ b/notes/2/index.html @@ -1 +1 @@ -Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +Gijs van Dam
    Gijs van Dam
    \ No newline at end of file diff --git a/notes/index.html b/notes/index.html index b82cedd8..2ba435fd 100644 --- a/notes/index.html +++ b/notes/index.html @@ -1 +1 @@ -Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +Gijs van Dam
    Gijs van Dam
    \ No newline at end of file diff --git a/now/index.html b/now/index.html index 75e175a8..75793c79 100644 --- a/now/index.html +++ b/now/index.html @@ -1 +1 @@ -What am I doing now?
    Gijs van Dam

    What am I doing now?

    Right now I'm finishing my PhD. This still requires finishing and submitting my last article, and distill the last three years of research in a thesis. I just did my thesis announcement, which means that, weather permitting, I'll do my viva voce in the summer and will receive my degree in November.

    We just moved back to Amsterdam from Malaysia. It's good to be back in one of my favorite cities, near friends and family. Adjusting to the Netherlands is tough though. I have a hard time with the cold temperatures and sometimes a general sense of homesickness takes over. It just shows how much Malaysia felt like home and that it will take some time to really feel home again in The Netherlands.

    Getting more exercise is way easier now. Malaysia was too hot and too humid to do any sports. If you wanted to do anything you had to do it early, early in the morning before sunrise. And even if you did go out for a run, your heart rate would be way up in no time. I just couldn't get my HR in a decent zone for endurance training. Now, in the cold of the Netherlands, I can go out any time of the day and do some real endurance.

    I'm busy learning Rust. Apart from that, there is just too much going on in the crypto-scene that deserves my interest. But for now it has to go on the back burner, because I need to turn all my attention to finishing my thesis. I need to curb any tendency to procrastinate in the next few weeks.

    Updated: February 2023

    \ No newline at end of file +What am I doing now?
    Gijs van Dam

    What am I doing now?

    Right now I'm finishing my PhD. This still requires finishing and submitting my last article, and distill the last three years of research in a thesis. I just did my thesis announcement, which means that, weather permitting, I'll do my viva voce in the summer and will receive my degree in November.

    We just moved back to Amsterdam from Malaysia. It's good to be back in one of my favorite cities, near friends and family. Adjusting to the Netherlands is tough though. I have a hard time with the cold temperatures and sometimes a general sense of homesickness takes over. It just shows how much Malaysia felt like home and that it will take some time to really feel home again in The Netherlands.

    Getting more exercise is way easier now. Malaysia was too hot and too humid to do any sports. If you wanted to do anything you had to do it early, early in the morning before sunrise. And even if you did go out for a run, your heart rate would be way up in no time. I just couldn't get my HR in a decent zone for endurance training. Now, in the cold of the Netherlands, I can go out any time of the day and do some real endurance.

    I'm busy learning Rust. Apart from that, there is just too much going on in the crypto-scene that deserves my interest. But for now it has to go on the back burner, because I need to turn all my attention to finishing my thesis. I need to curb any tendency to procrastinate in the next few weeks.

    Updated: February 2023

    \ No newline at end of file diff --git a/open-source/index.html b/open-source/index.html index d7f415b9..3a207d57 100644 --- a/open-source/index.html +++ b/open-source/index.html @@ -1 +1 @@ -Open Source
    Gijs van Dam

    Open Source

    Janos

    Janos is a static site generator that runs entirely in the browser. It uses Metalsmith with a bit of Webpack magic sprinkled on top, to make it all work inside a browser. It is tightly integrated with GitHub to automatically host your site, using GitHub pages. But you don't have to know all those techniques; everybody can work with Janos without knowing all the ins and outs of those technologies.

    The site you are currently reading is built with Janos.

    You can start your own Janos site by going to the admin of this site or any other Janos website, and completing the wizard for creating your own website. The only thing you need is a GitHub account, which you can create for free.

    Every Janos site can be a starting point for creating a new Janos site. You can check out the Janos repo on Github and I sometimes write posts on Janos on this website.

    Boilerplate paper

    Boilerplate paper is a tool for creating scientific papers, posters and slideshows in Markdown and convert them to different formats like Pdf, Word, PowerPoint or Html. All the converting is done using Pandoc. Pandoc is open-source software created to convert documents from one format to another. Apart from Pandoc, there is more software required to be installed on your computer to make everything work. Getting all this software to work can be a bit overwhelming if you are new to this. That's why Boilerplate Paper comes with three Github Actions preconfigured. These Github Actions are automated workflows that convert your Markdown files into your final document using the Github servers. That way you can dip your toe in the water to see if writing papers like this works for you. If it does, you can install the prerequisite software on your local computer and experience the benefits of all the features Boilerplate Paper offers.

    You can check out the Boilerplate paper on Github and I sometimes write posts on Boilerplate paper on this website.

    \ No newline at end of file +Open Source
    Gijs van Dam

    Open Source

    Janos

    Janos is a static site generator that runs entirely in the browser. It uses Metalsmith with a bit of Webpack magic sprinkled on top, to make it all work inside a browser. It is tightly integrated with GitHub to automatically host your site, using GitHub pages. But you don't have to know all those techniques; everybody can work with Janos without knowing all the ins and outs of those technologies.

    The site you are currently reading is built with Janos.

    You can start your own Janos site by going to the admin of this site or any other Janos website, and completing the wizard for creating your own website. The only thing you need is a GitHub account, which you can create for free.

    Every Janos site can be a starting point for creating a new Janos site. You can check out the Janos repo on Github and I sometimes write posts on Janos on this website.

    Boilerplate paper

    Boilerplate paper is a tool for creating scientific papers, posters and slideshows in Markdown and convert them to different formats like Pdf, Word, PowerPoint or Html. All the converting is done using Pandoc. Pandoc is open-source software created to convert documents from one format to another. Apart from Pandoc, there is more software required to be installed on your computer to make everything work. Getting all this software to work can be a bit overwhelming if you are new to this. That's why Boilerplate Paper comes with three Github Actions preconfigured. These Github Actions are automated workflows that convert your Markdown files into your final document using the Github servers. That way you can dip your toe in the water to see if writing papers like this works for you. If it does, you can install the prerequisite software on your local computer and experience the benefits of all the features Boilerplate Paper offers.

    You can check out the Boilerplate paper on Github and I sometimes write posts on Boilerplate paper on this website.

    \ No newline at end of file diff --git a/pages/tags/index.html b/pages/tags/index.html index 2298f7b0..be0e8ad1 100644 --- a/pages/tags/index.html +++ b/pages/tags/index.html @@ -1 +1 @@ -Tags
    Gijs van Dam

    Tags

    \ No newline at end of file +Tags
    Gijs van Dam

    Tags

    \ No newline at end of file diff --git a/photo/2022/02/16-3950/index.html b/photo/2022/02/16-3950/index.html index a6e1c63d..e5c0aec8 100644 --- a/photo/2022/02/16-3950/index.html +++ b/photo/2022/02/16-3950/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating a photo referenced by URL

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating a photo referenced by URL

    \ No newline at end of file diff --git a/photo/2022/02/16-4222/index.html b/photo/2022/02/16-4222/index.html index 8155f7fd..3f984196 100644 --- a/photo/2022/02/16-4222/index.html +++ b/photo/2022/02/16-4222/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating a photo referenced by URL

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Micropub test of creating a photo referenced by URL

    \ No newline at end of file diff --git a/photo/2022/02/17-18628/index.html b/photo/2022/02/17-18628/index.html index 35a4f2bd..816abc33 100644 --- a/photo/2022/02/17-18628/index.html +++ b/photo/2022/02/17-18628/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    I am working on some animations to explain basic Lightning Network concepts. Needless to say, I'm not quite there yet...

    Those beans are out of line
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    I am working on some animations to explain basic Lightning Network concepts. Needless to say, I'm not quite there yet...

    Those beans are out of line
    \ No newline at end of file diff --git a/photo/2022/02/17-29992/index.html b/photo/2022/02/17-29992/index.html index 131c22ef..56bb09ef 100644 --- a/photo/2022/02/17-29992/index.html +++ b/photo/2022/02/17-29992/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    I am working on some animations to explain basic Lightning Network concepts. Needless to say, I'm not quite there yet...

    Those beans are out of line
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    I am working on some animations to explain basic Lightning Network concepts. Needless to say, I'm not quite there yet...

    Those beans are out of line
    \ No newline at end of file diff --git a/photo/2022/02/17-30933/index.html b/photo/2022/02/17-30933/index.html index 4f2cc80d..5863bcb5 100644 --- a/photo/2022/02/17-30933/index.html +++ b/photo/2022/02/17-30933/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    I am working on some animations to explain basic Lightning Network concepts. Needless to say, I'm not quite there yet...

    These beans are out of line!
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    I am working on some animations to explain basic Lightning Network concepts. Needless to say, I'm not quite there yet...

    These beans are out of line!
    \ No newline at end of file diff --git a/photo/2022/02/17-33011/index.html b/photo/2022/02/17-33011/index.html index e94b6fe8..793a4a36 100644 --- a/photo/2022/02/17-33011/index.html +++ b/photo/2022/02/17-33011/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    I am working on some animations to explain basic Lightning Network concepts. Needless to say, I'm not quite there yet..

    These beans are out of line!
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    I am working on some animations to explain basic Lightning Network concepts. Needless to say, I'm not quite there yet..

    These beans are out of line!
    \ No newline at end of file diff --git a/photo/2022/02/18-57744/index.html b/photo/2022/02/18-57744/index.html index d0f54ac2..0d64349f 100644 --- a/photo/2022/02/18-57744/index.html +++ b/photo/2022/02/18-57744/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Just had an amazing talk with the guys from the #connect_the_world podcast https://www.youtube.com/channel/UCLMp5bH-rY9aEVwfLQ3oq4Q The episode where I talk about my latest #lightningnetwork research will be online soon.

    All smiles at the Connect the World podcast
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Just had an amazing talk with the guys from the #connect_the_world podcast https://www.youtube.com/channel/UCLMp5bH-rY9aEVwfLQ3oq4Q The episode where I talk about my latest #lightningnetwork research will be online soon.

    All smiles at the Connect the World podcast
    \ No newline at end of file diff --git a/photo/2022/02/22-49012/index.html b/photo/2022/02/22-49012/index.html index 15ab20de..f4bd5d5d 100644 --- a/photo/2022/02/22-49012/index.html +++ b/photo/2022/02/22-49012/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Working through the docs of @statelyai, my eye fell on this pattern. Anybody know the official name? It's a JS callback pattern but you get a callback and you get an onReceive that allows for registering a listener to an event at the parent. Voila: 2-way parent-child comms

    Gijs van Dam

    I like it! I can think of a few use cases. There will be a day in the near future where I am going to use it, for sure.

    Callback listener pattern
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Working through the docs of @statelyai, my eye fell on this pattern. Anybody know the official name? It's a JS callback pattern but you get a callback and you get an onReceive that allows for registering a listener to an event at the parent. Voila: 2-way parent-child comms

    Gijs van Dam

    I like it! I can think of a few use cases. There will be a day in the near future where I am going to use it, for sure.

    Callback listener pattern
    \ No newline at end of file diff --git a/photo/2022/02/28-27104/index.html b/photo/2022/02/28-27104/index.html index a49ed451..73419299 100644 --- a/photo/2022/02/28-27104/index.html +++ b/photo/2022/02/28-27104/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    #javascript #nodejs @webpack

    Setting up webpack debugging in vscode requires human sacrifice
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    #javascript #nodejs @webpack

    Setting up webpack debugging in vscode requires human sacrifice
    \ No newline at end of file diff --git a/photo/2022/03/29-24484/index.html b/photo/2022/03/29-24484/index.html index 2d147fcd..753ff3e3 100644 --- a/photo/2022/03/29-24484/index.html +++ b/photo/2022/03/29-24484/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    phd students right now... #wikipediadown

    PhD wikipedia anxiety
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    phd students right now... #wikipediadown

    PhD wikipedia anxiety
    \ No newline at end of file diff --git a/photo/2022/03/31-13008/index.html b/photo/2022/03/31-13008/index.html index babdbc18..f30009d8 100644 --- a/photo/2022/03/31-13008/index.html +++ b/photo/2022/03/31-13008/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam
    \ No newline at end of file diff --git a/photo/2022/04/01-6960/index.html b/photo/2022/04/01-6960/index.html index 1a5ede17..0dd24f0a 100644 --- a/photo/2022/04/01-6960/index.html +++ b/photo/2022/04/01-6960/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Rules to live by. Check out https://tlu.tarilabs.com/cryptography/elliptic-curves and @tari_labs for some great content on elliptic curve cryptography.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Rules to live by. Check out https://tlu.tarilabs.com/cryptography/elliptic-curves and @tari_labs for some great content on elliptic curve cryptography.

    \ No newline at end of file diff --git a/photo/2022/04/08-11189/index.html b/photo/2022/04/08-11189/index.html index a6b0c06e..9152af97 100644 --- a/photo/2022/04/08-11189/index.html +++ b/photo/2022/04/08-11189/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    I'm really digging Micropublish.net built by @barryf. It's stuff like waiting for your note to come online which makes it outperform the "competition".

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    I'm really digging Micropublish.net built by @barryf. It's stuff like waiting for your note to come online which makes it outperform the "competition".

    \ No newline at end of file diff --git a/photo/2022/05/17-51349/index.html b/photo/2022/05/17-51349/index.html index 0b6f6132..d6acfb2c 100644 --- a/photo/2022/05/17-51349/index.html +++ b/photo/2022/05/17-51349/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    The other night I explained elliptic curve encryption to my wife and in-laws. It's amazing to see how much you learn by trying to explain something you think you understand. #teaching == #learning

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    The other night I explained elliptic curve encryption to my wife and in-laws. It's amazing to see how much you learn by trying to explain something you think you understand. #teaching == #learning

    \ No newline at end of file diff --git a/photo/2022/06/15-10659/index.html b/photo/2022/06/15-10659/index.html index 86ffb428..9b2455de 100644 --- a/photo/2022/06/15-10659/index.html +++ b/photo/2022/06/15-10659/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Look at this plant on my balcony.

    nature = #fractal = nature

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Look at this plant on my balcony.

    nature = #fractal = nature

    \ No newline at end of file diff --git a/photo/2022/09/19-11320/index.html b/photo/2022/09/19-11320/index.html index be926348..195a9dd8 100644 --- a/photo/2022/09/19-11320/index.html +++ b/photo/2022/09/19-11320/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    I've been playing around with the @StanfordOVAL Virtual Assistant called Genie...

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    I've been playing around with the @StanfordOVAL Virtual Assistant called Genie...

    \ No newline at end of file diff --git a/photos/index.html b/photos/index.html index e31041d6..00fac0ac 100644 --- a/photos/index.html +++ b/photos/index.html @@ -1 +1 @@ -Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +Gijs van Dam
    Gijs van Dam
    \ No newline at end of file diff --git a/post/building-bitcoin-core-on-windows-10/index.html b/post/building-bitcoin-core-on-windows-10/index.html index 6eae9dab..556bb7d1 100644 --- a/post/building-bitcoin-core-on-windows-10/index.html +++ b/post/building-bitcoin-core-on-windows-10/index.html @@ -11,4 +11,4 @@ cd .. sudo ./autogen.sh sudo CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/ -sudo make

    The first build took roughly 2 hours, so sit back and keep an eye on it from time to time.

    Apparently it is useful to copy the compiled executables to a directory on the windows drive in the same directory structure as they appear in the release .zip archive. This can be done in the following way (I already created a folder on the windows drive: c:\workspace\bitcoin although I'm not sure if that's needed):

    sudo make install DESTDIR=/mnt/c/workspace/bitcoin

    Again, sit back and wait for the process to finish.

    After the process has finished successfully, you will find the executables here: C:\workspace\bitcoin\bin Starting bitcoin-qt.exe will start Bitcoin Core, the GUI node for Bitcoin.

    \ No newline at end of file +sudo make

    The first build took roughly 2 hours, so sit back and keep an eye on it from time to time.

    Apparently it is useful to copy the compiled executables to a directory on the windows drive in the same directory structure as they appear in the release .zip archive. This can be done in the following way (I already created a folder on the windows drive: c:\workspace\bitcoin although I'm not sure if that's needed):

    sudo make install DESTDIR=/mnt/c/workspace/bitcoin

    Again, sit back and wait for the process to finish.

    After the process has finished successfully, you will find the executables here: C:\workspace\bitcoin\bin Starting bitcoin-qt.exe will start Bitcoin Core, the GUI node for Bitcoin.

    \ No newline at end of file diff --git a/post/debugging-lnd-while-running-a-local-cluster/index.html b/post/debugging-lnd-while-running-a-local-cluster/index.html index b275c36e..ec306696 100644 --- a/post/debugging-lnd-while-running-a-local-cluster/index.html +++ b/post/debugging-lnd-while-running-a-local-cluster/index.html @@ -22,4 +22,4 @@ "showLog": true } ] -}

    The args parameter should contain the location of your conf-file.

    Set breakpoints

    Now you are ready to set breakpoints, for instance in the Main function of the lnd package.

    Main function

    Main function

    If you start debugging, this breakpoint is immediately hit.

    Breakpoint hit

    Breakpoint hit

    Done!

    And there you have it, you can now start to debugging LND operating in a local cluster.

    \ No newline at end of file +}

    The args parameter should contain the location of your conf-file.

    Set breakpoints

    Now you are ready to set breakpoints, for instance in the Main function of the lnd package.

    Main function

    Main function

    If you start debugging, this breakpoint is immediately hit.

    Breakpoint hit

    Breakpoint hit

    Done!

    And there you have it, you can now start to debugging LND operating in a local cluster.

    \ No newline at end of file diff --git a/post/how-do-payments-in-lightning-network-work/index.html b/post/how-do-payments-in-lightning-network-work/index.html index aa68c0fe..87d5acee 100644 --- a/post/how-do-payments-in-lightning-network-work/index.html +++ b/post/how-do-payments-in-lightning-network-work/index.html @@ -1 +1 @@ -How do payments in Lightning Network work?
    Gijs van Dam

    How do payments in Lightning Network work?

    7 minute read

    Lightning Network is a peer-to-peer payment network that runs on top of the Bitcoin Blockchain. Because it runs on top of the Blockchain it is called a layer-two solution, which groups it together with other solutions that have this property of being built on top of a Blockchain. Layer One is the base layer, where the Blockchain lives. Because of the inherent properties of Layer One, it is impossible to process large amounts of transactions in that layer. The Bitcoin Blockchain can famously process a mere seven transactions per second on average. This constraint was the main impetus for the creation of Layer Two solutions. Lightning Network, being a Layer Two solution, allows for near instant transactions, that can easily scale to millions of transactions per second.

    Lightning Network uses Bitcoin transactions, just like "vanilla" Bitcoin transactions in Layer One. This means that the underlying trust assumptions of Bitcoin are not forfeited by Lightning Network. The consensus model of Bitcoin isn't impacted either, so in that sense Lightning Network offers plain ol' Bitcoin transactions, but with the goodness of instantaneity and near infinite scalability.

    So what's the trick that Lightning Network uses to make this possible? Well, participants of Lightning Network transact with each other by means of exchanging Bitcoin transactions that could be broadcasted to the Blockchain (like a normal Bitcoin transaction) but in practice rarely ever have to be broadcasted to the Blockchain. So the vast majority of the transactions in Lightning Network will never hit the Blockchain, and aren't bogged down by waiting times for transactions being broadcasted, or high transaction fees.

    Payment Channels

    Lightning Network employs a concept called Payment Channel to make this trick possible. A Payment Channel is a channel between two participants in the Lightning Network. A channel is opened by a funding transaction. This determines the total amount of money in the channel, aka the channel capacity. The two participants at either end of the channel can now transact with each other. You can think of the channel as an abacus or counting frame with only one row of beads that connects the two participants. Transactions are now done by sliding beads up and down the abacus to either side, representing the transaction amounts.

    Every time beads are pushed from one side to another, a new Bitcoin transaction is created that represents the new balance of the channel. Each transactions spends the funding transaction and divides the funding amount according to the balance of the payment channel. But those transactions are not broadcasted to the Blockchain if the channel is to remain open. So, a Payment Channel is at its core a set of consecutive Bitcoin transactions. The latest transaction added to the set represents the current state of the channel. So in the case of the animation above, the latest state of the channel would be represented by a Bitcoin transaction that would spend the funding of 5 beads into three beads for Bob and two beads for Alice.

    Both participants have their own copy of those Bitcoin transactions. They can broadcast the latest state of the channel to the Blockchain whenever they feel like it. They can do this either in consultation with each other (called a cooperative close) or unilaterally. This broadcast of the latest state is called the closing of the channel. After this the channel is defunct, and no more transactions can take place.

    In principle there is nothing that keeps a node from broadcasting an old state. In the example above Alice might be tempted to broadcast the first state of the channel, in which she would receive five beads (and Bob zero), instead of the latest state in which she would receive two beads and Bob three. To disincentivize broadcasting old states, Lightning Network has a very smart penalty system, that allows Bob to punish Alice when she broadcasts an old state. The punishment is simple and harsh, namely the perp loses all funds, which are then funneled to the maligned party. The ins and outs of that penalty system will be a topic for another blog post.

    Multi-hop Payments

    Lightning Network has a second feature that drastically reduces the amount of transactions that need to be broadcasted to the Blockchain: Multi-hop payments. In Lightning Network you don't need to open up a channel with every party that you want to transact with. You can transact with every node as long as there is a payment route from you to that node. So if we extend our network consisting of Alice and Bob, with a third node, Carol and a channel between her and Bob, Alice is able to transact with Carol without the need for opening up a direct channel with Carol. A channel not opened is a funding transaction not having to be broadcasted to the blockchain, so this is the second

    So long as Alice is able to find a route to Carol, and the balances along that route are sufficient for the amount of the payment (in this case the balance at Alice's side in the channel between her and Bob, and the balance at Bob's side in the channel between him and Carol) the payment can go through. But how can we trust Bob that he will forward our payment to Carol? Why wouldn't he be tempted to collect the payment from Alice to him and just keep the money? We set out stating that the underlying trust assumptions of Bitcoin are not affected by Lightning Network, so we can't just introduce trust in a system that is supposed to be trustless. We can't trust Bob on his blue eyes, or whatever color they might be. This is where HTLC's come in, the final piece of Bitcoin trickery that makes payments in Lightning Network possible.

    HTLC's

    HTLC's is what makes payments in Lightning Network trustless. HTLC stands for Hashed TimeLock Contracts. To understand how an HTLC works we maybe need to take a step back and look at how a basic Bitcoin transaction works. In the above examples we could think of the transactions as being Pay-to-PubKey-Hash (P2PKH). This is the most common form of payment on the Bitcoin network. It is a payment to a Bitcoin address that can only be spent by the person that controls the corresponding private key. But using P2PKH wouldn't allow us to make trustless multi-hop payments. To achieve this we need Pay-to-Script-Hash (P2SH), which is way to create custom redeem scripts. A custom redeem script makes it possible to unlock a payment on the basis of something more complex than just controlling the private key belonging to a Bitcoin address.

    The redeem script for an HTLC knows two execution paths. One path encodes the time lock and the other encodes the hash lock. The hash lock path pays out to the receiver. It ensures that the receiver can spend the output of the HTLC under the condition that he can provide the secret value (also called pre-image) used to create the hash. The time lock ensures that the sender of the payment can spend the output of the HTLC after a fixed amount of time. The payer, in our case Alice, chooses the timeout, say 48 hours, but she also needs to create the hash lock. Alice needs to be sure that Carol is the only one that can open the hash lock. To do so she asks Carol to provide her with a hash of a pre-image (the secret value) that only Carol knows. This is the hash that Alice will use for the hash lock. With all the ingredients in place, Alice can now set up a payment to Carol.

    Alice, having received the hash from Carol, finds a route to Carol. In our network there is only one route to Carol, namely via Bob. Alice now sets up an HTLC with Bob with a timeout of 48 hours for the time lock, and the hash provided by Carol for the hash lock. Bob receives the HTLC and the route of the payment. Reading the route, he knows that he needs to set up a payment with Carol. Now it is time for Bob to set up an HTLC with Carol. He uses the exact same hash for the hash lock, but a timeout that is a few hours shorter than the one Alice granted him. The shorter timeout leaves Bob with enough time to claim his money once he learns the pre-image. Upon receiving the HTLC from Bob, Carol sees from the route that she is the receiver of the payment and she recognizes the hash. Moreover, she knows the secret pre-image belonging to that hash. By unlocking the hash lock, she reveals the pre-image to Bob. Bob, in his turn, can now unlock the HTLC he received from Alice. If for whatever reason Carol fails to reveal the pre-image, the timeouts make sure all the beads would return to their original position, as if no payment ever happened.

    Line 2Line 2NAME
    \ No newline at end of file +How do payments in Lightning Network work?
    Gijs van Dam

    How do payments in Lightning Network work?

    7 minute read

    Lightning Network is a peer-to-peer payment network that runs on top of the Bitcoin Blockchain. Because it runs on top of the Blockchain it is called a layer-two solution, which groups it together with other solutions that have this property of being built on top of a Blockchain. Layer One is the base layer, where the Blockchain lives. Because of the inherent properties of Layer One, it is impossible to process large amounts of transactions in that layer. The Bitcoin Blockchain can famously process a mere seven transactions per second on average. This constraint was the main impetus for the creation of Layer Two solutions. Lightning Network, being a Layer Two solution, allows for near instant transactions, that can easily scale to millions of transactions per second.

    Lightning Network uses Bitcoin transactions, just like "vanilla" Bitcoin transactions in Layer One. This means that the underlying trust assumptions of Bitcoin are not forfeited by Lightning Network. The consensus model of Bitcoin isn't impacted either, so in that sense Lightning Network offers plain ol' Bitcoin transactions, but with the goodness of instantaneity and near infinite scalability.

    So what's the trick that Lightning Network uses to make this possible? Well, participants of Lightning Network transact with each other by means of exchanging Bitcoin transactions that could be broadcasted to the Blockchain (like a normal Bitcoin transaction) but in practice rarely ever have to be broadcasted to the Blockchain. So the vast majority of the transactions in Lightning Network will never hit the Blockchain, and aren't bogged down by waiting times for transactions being broadcasted, or high transaction fees.

    Payment Channels

    Lightning Network employs a concept called Payment Channel to make this trick possible. A Payment Channel is a channel between two participants in the Lightning Network. A channel is opened by a funding transaction. This determines the total amount of money in the channel, aka the channel capacity. The two participants at either end of the channel can now transact with each other. You can think of the channel as an abacus or counting frame with only one row of beads that connects the two participants. Transactions are now done by sliding beads up and down the abacus to either side, representing the transaction amounts.

    Every time beads are pushed from one side to another, a new Bitcoin transaction is created that represents the new balance of the channel. Each transactions spends the funding transaction and divides the funding amount according to the balance of the payment channel. But those transactions are not broadcasted to the Blockchain if the channel is to remain open. So, a Payment Channel is at its core a set of consecutive Bitcoin transactions. The latest transaction added to the set represents the current state of the channel. So in the case of the animation above, the latest state of the channel would be represented by a Bitcoin transaction that would spend the funding of 5 beads into three beads for Bob and two beads for Alice.

    Both participants have their own copy of those Bitcoin transactions. They can broadcast the latest state of the channel to the Blockchain whenever they feel like it. They can do this either in consultation with each other (called a cooperative close) or unilaterally. This broadcast of the latest state is called the closing of the channel. After this the channel is defunct, and no more transactions can take place.

    In principle there is nothing that keeps a node from broadcasting an old state. In the example above Alice might be tempted to broadcast the first state of the channel, in which she would receive five beads (and Bob zero), instead of the latest state in which she would receive two beads and Bob three. To disincentivize broadcasting old states, Lightning Network has a very smart penalty system, that allows Bob to punish Alice when she broadcasts an old state. The punishment is simple and harsh, namely the perp loses all funds, which are then funneled to the maligned party. The ins and outs of that penalty system will be a topic for another blog post.

    Multi-hop Payments

    Lightning Network has a second feature that drastically reduces the amount of transactions that need to be broadcasted to the Blockchain: Multi-hop payments. In Lightning Network you don't need to open up a channel with every party that you want to transact with. You can transact with every node as long as there is a payment route from you to that node. So if we extend our network consisting of Alice and Bob, with a third node, Carol and a channel between her and Bob, Alice is able to transact with Carol without the need for opening up a direct channel with Carol. A channel not opened is a funding transaction not having to be broadcasted to the blockchain, so this is the second

    So long as Alice is able to find a route to Carol, and the balances along that route are sufficient for the amount of the payment (in this case the balance at Alice's side in the channel between her and Bob, and the balance at Bob's side in the channel between him and Carol) the payment can go through. But how can we trust Bob that he will forward our payment to Carol? Why wouldn't he be tempted to collect the payment from Alice to him and just keep the money? We set out stating that the underlying trust assumptions of Bitcoin are not affected by Lightning Network, so we can't just introduce trust in a system that is supposed to be trustless. We can't trust Bob on his blue eyes, or whatever color they might be. This is where HTLC's come in, the final piece of Bitcoin trickery that makes payments in Lightning Network possible.

    HTLC's

    HTLC's is what makes payments in Lightning Network trustless. HTLC stands for Hashed TimeLock Contracts. To understand how an HTLC works we maybe need to take a step back and look at how a basic Bitcoin transaction works. In the above examples we could think of the transactions as being Pay-to-PubKey-Hash (P2PKH). This is the most common form of payment on the Bitcoin network. It is a payment to a Bitcoin address that can only be spent by the person that controls the corresponding private key. But using P2PKH wouldn't allow us to make trustless multi-hop payments. To achieve this we need Pay-to-Script-Hash (P2SH), which is way to create custom redeem scripts. A custom redeem script makes it possible to unlock a payment on the basis of something more complex than just controlling the private key belonging to a Bitcoin address.

    The redeem script for an HTLC knows two execution paths. One path encodes the time lock and the other encodes the hash lock. The hash lock path pays out to the receiver. It ensures that the receiver can spend the output of the HTLC under the condition that he can provide the secret value (also called pre-image) used to create the hash. The time lock ensures that the sender of the payment can spend the output of the HTLC after a fixed amount of time. The payer, in our case Alice, chooses the timeout, say 48 hours, but she also needs to create the hash lock. Alice needs to be sure that Carol is the only one that can open the hash lock. To do so she asks Carol to provide her with a hash of a pre-image (the secret value) that only Carol knows. This is the hash that Alice will use for the hash lock. With all the ingredients in place, Alice can now set up a payment to Carol.

    Alice, having received the hash from Carol, finds a route to Carol. In our network there is only one route to Carol, namely via Bob. Alice now sets up an HTLC with Bob with a timeout of 48 hours for the time lock, and the hash provided by Carol for the hash lock. Bob receives the HTLC and the route of the payment. Reading the route, he knows that he needs to set up a payment with Carol. Now it is time for Bob to set up an HTLC with Carol. He uses the exact same hash for the hash lock, but a timeout that is a few hours shorter than the one Alice granted him. The shorter timeout leaves Bob with enough time to claim his money once he learns the pre-image. Upon receiving the HTLC from Bob, Carol sees from the route that she is the receiver of the payment and she recognizes the hash. Moreover, she knows the secret pre-image belonging to that hash. By unlocking the hash lock, she reveals the pre-image to Bob. Bob, in his turn, can now unlock the HTLC he received from Alice. If for whatever reason Carol fails to reveal the pre-image, the timeouts make sure all the beads would return to their original position, as if no payment ever happened.

    Line 2Line 2NAME
    \ No newline at end of file diff --git a/post/image-conversion-resizing-and-compression-with-webassembly/index.html b/post/image-conversion-resizing-and-compression-with-webassembly/index.html index bdcc992c..fcb5f48a 100644 --- a/post/image-conversion-resizing-and-compression-with-webassembly/index.html +++ b/post/image-conversion-resizing-and-compression-with-webassembly/index.html @@ -49,4 +49,4 @@ height: auto; margin: 0 6rem; } -}

    Metalsmith plugin for the picture element

    The final ingredient in this mix is a metalsmith plugin that creates the HTML picture element, based on the image referenced in the Markdown. It detects the image, figures out what kind of resized files are available and then converts the Markdown to a picture element. So in the end the picture will look like this:

    Container ship Ever Given

    Container ship Ever Given stuck in the Suez Canal

    Releasing everything as separate modules

    Currently everything is integrated inside the Janos code base. But I plan on releasing both the headless Squoosh library and the Metalsmith plugin as separate npm modules. When that is done and dusted I will do write-up on how to use and configure said modules to suit your needs.

      3 likes   2 replies
    \ No newline at end of file +}

    Metalsmith plugin for the picture element

    The final ingredient in this mix is a metalsmith plugin that creates the HTML picture element, based on the image referenced in the Markdown. It detects the image, figures out what kind of resized files are available and then converts the Markdown to a picture element. So in the end the picture will look like this:

    Container ship Ever Given

    Container ship Ever Given stuck in the Suez Canal

    Releasing everything as separate modules

    Currently everything is integrated inside the Janos code base. But I plan on releasing both the headless Squoosh library and the Metalsmith plugin as separate npm modules. When that is done and dusted I will do write-up on how to use and configure said modules to suit your needs.

      3 likes   2 replies
    \ No newline at end of file diff --git a/post/measuring-your-writing-progress-with-a-git-word-count/index.html b/post/measuring-your-writing-progress-with-a-git-word-count/index.html index 0f90843b..851dad71 100644 --- a/post/measuring-your-writing-progress-with-a-git-word-count/index.html +++ b/post/measuring-your-writing-progress-with-a-git-word-count/index.html @@ -52,4 +52,4 @@ 20210212 0 20210211 925 20210210 0 -20210209 382

    I guess I was just busy with other things...

    Update 2023-03-10: Since writing this article I switched to Linux almost exclusively, so I have transpiled this command to bash: Update 2023-07-24: Added date to bash command output

    for i in {0..24}; do j=$(($i+1)); a=$(git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- '***.md' | grep '^+' | grep -v '^+++'| wc -w) ; b=$(git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- '***.md' | grep '^-' | grep -v '^---'| wc -w) ; d=$(date +%Y%m%d -d "$i days ago") ; echo $d $(($a - $b)); done
    \ No newline at end of file +20210209 382

    I guess I was just busy with other things...

    Update 2023-03-10: Since writing this article I switched to Linux almost exclusively, so I have transpiled this command to bash: Update 2023-07-24: Added date to bash command output

    for i in {0..24}; do j=$(($i+1)); a=$(git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- '***.md' | grep '^+' | grep -v '^+++'| wc -w) ; b=$(git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- '***.md' | grep '^-' | grep -v '^---'| wc -w) ; d=$(date +%Y%m%d -d "$i days ago") ; echo $d $(($a - $b)); done
    \ No newline at end of file diff --git a/post/pandoc-filter-for-highlighting-to-dos-in-latex-output/index.html b/post/pandoc-filter-for-highlighting-to-dos-in-latex-output/index.html index 9a6180a4..1815691d 100644 --- a/post/pandoc-filter-for-highlighting-to-dos-in-latex-output/index.html +++ b/post/pandoc-filter-for-highlighting-to-dos-in-latex-output/index.html @@ -6,4 +6,4 @@ end return el end -end

    The only prerequisite is that you put the soul package in the preamble of your LaTeX, because that is the package used for the highlighting. So somewhere in your preamble you should put this:

    \usepackage{soul}

    Now, if you output the paper, the todos are highlighted.

    Todo in LaTeX PDF output

    Todo in LaTeX PDF output

    \ No newline at end of file +end

    The only prerequisite is that you put the soul package in the preamble of your LaTeX, because that is the package used for the highlighting. So somewhere in your preamble you should put this:

    \usepackage{soul}

    Now, if you output the paper, the todos are highlighted.

    Todo in LaTeX PDF output

    Todo in LaTeX PDF output

    \ No newline at end of file diff --git a/post/running-c-lightning-in-simverse-with-plugins/index.html b/post/running-c-lightning-in-simverse-with-plugins/index.html index 3184241e..260734dd 100644 --- a/post/running-c-lightning-in-simverse-with-plugins/index.html +++ b/post/running-c-lightning-in-simverse-with-plugins/index.html @@ -36,4 +36,4 @@ ./dc build ./dc up

    We have created a cluster named jitrebalance. This is the name of the cluster that we referenced in our recipe through the variable $SIMNET_NAME. Our cluster is based on the recipe a1k3-plugin.sh that we just created. With enter you enter your newly created simnet.

    ./dc is a handy shorthand for docker-compose with some important variables set. With build we build our Docker containers based on the docker-compose.yml that has been generated for us. And then we are ready to run the containers with up.

    You should see something like this:

    running Simverse

    Running a Simverse cluster

    Now in a separate terminal session you can access your nodes and run the init script.

    cd ~/simverse
     ./sv enter jitrebalance
    -./init

    running init

    Running the initialization script

    And with that you are done! You have now a Simverse cluster with three c-lightning nodes running the same plugin.

    \ No newline at end of file +./init

    running init

    Running the initialization script

    And with that you are done! You have now a Simverse cluster with three c-lightning nodes running the same plugin.

    \ No newline at end of file diff --git a/post/ssh-keybased-authentication-windows-to-linux/index.html b/post/ssh-keybased-authentication-windows-to-linux/index.html index 997759c5..57977e4e 100644 --- a/post/ssh-keybased-authentication-windows-to-linux/index.html +++ b/post/ssh-keybased-authentication-windows-to-linux/index.html @@ -1,4 +1,4 @@ SSH keybased authentication Windows to Linux
    Gijs van Dam

    SSH keybased authentication Windows to Linux

    2 minute read

    I do most of my development on a remote machine. The machine isn't that remote, it's a mini-pc running Ubuntu that is standing right here on my desk. It has no peripherals, so I have to do all my development remotely through my Windows 10 laptop.

    Remote development with Vscode is amazing. It just works. Once you are set up, there's no difference with working locally. To have that seamless experience you do have to set up keybased authentication for SSH. If you don't you will be constantly reminded of working remotely, because you have to type in the password of the remote machine.

    Configuring keybased authentication is documented, but yesterday I had to go through it again, and it confused me...again. So this is my go at explaining it less confusing for the specific case of working on a local Windows machine and connecting to a remote Linux machine. So open up that PowerShell and let's start.

    Install the OpenSSH client if you haven't already. It is a optional feature of Windows 10. Search for 'Manage Optional Features' in the Windows Start Menu and click on it. Scan the list to see if OpenSSH client is already installed. If not, then do so by clicking on "Add a feature".

    If you haven't got a local SSH key pair, you should create one.

    ssh-keygen -t rsa -b 4096

    You can accept all defaults and keep the passphrase empty. It will result in a keypair generated in the $HOME\.ssh\ folder which we will use later.

    Create your local SSH key pair

    Create your local SSH key pair

    You are now ready to add your local key to the autorized keys on your remote machine. Run the following in PowerShell on your local machine.

    $USER_AT_HOST="your-user-name-on-host@hostname"
     $PUBKEYPATH="$HOME\.ssh\id_rsa.pub"
     
    -$pubKey=(Get-Content "$PUBKEYPATH" | Out-String); ssh "$USER_AT_HOST" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '${pubKey}' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

    And that's it. You can now SSH into your remote machine without needing a password.

    \ No newline at end of file +$pubKey=(Get-Content "$PUBKEYPATH" | Out-String); ssh "$USER_AT_HOST" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '${pubKey}' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

    And that's it. You can now SSH into your remote machine without needing a password.

    \ No newline at end of file diff --git a/post/super-easy-tip-for-slide-animation-with-pandoc-and-reveal.js/index.html b/post/super-easy-tip-for-slide-animation-with-pandoc-and-reveal.js/index.html index e5eb21fe..379c9f71 100644 --- a/post/super-easy-tip-for-slide-animation-with-pandoc-and-reveal.js/index.html +++ b/post/super-easy-tip-for-slide-animation-with-pandoc-and-reveal.js/index.html @@ -4,4 +4,4 @@ ## Slide 2 {data-auto-animate=} -Slide 2 content

    And that's it! Once you convert your Markdown into reveal.js the slides are now animated using auto-animate.

    Auto-animate transition in reveal.js

    Auto-animate transition in reveal.js

    \ No newline at end of file +Slide 2 content

    And that's it! Once you convert your Markdown into reveal.js the slides are now animated using auto-animate.

    Auto-animate transition in reveal.js

    Auto-animate transition in reveal.js

    \ No newline at end of file diff --git a/post/why-does-signature-half-aggregation-break-adaptor-signatures/index.html b/post/why-does-signature-half-aggregation-break-adaptor-signatures/index.html index e73952ec..53c1402b 100644 --- a/post/why-does-signature-half-aggregation-break-adaptor-signatures/index.html +++ b/post/why-does-signature-half-aggregation-break-adaptor-signatures/index.html @@ -3,4 +3,4 @@ scale: 1, // global scaling factor for all expressions minScale: 1, // smallest scaling factor to use } - };

    Why does signature half aggregation break adaptor signatures?

    6 minute read

    There is this cool trick you can do with Schnorr signatures. It is called Adaptor Signature (AS). An adaptor signature is an extra signature that, combined with the original signature, allow for revealing a value that was previously hidden. You can use this trick to solve trust problems as they appear in atomic swaps, coin swaps and Discreet Log Contracts (DLCs).

    Signature Aggregation (SA) is a way to aggregate multiple signatures into a single signature. The single aggregate signature is smaller (in bytes) than the original signatures combined. It reduces transaction weight, meaning we can have more transactions per block, which is always a good thing. It's like 7zip for transactions. Signature Half Aggregation is a variant of SA that only aggregates half of each signature. It offers less compression, but it has the benefit of not requiring any interaction with the signers, whereas full aggregation does require cooperation of all the signers.

    So two cool tricks, but the latter breaks the former when it is used for blockwide signature aggregation. This article explains the math behind it and why SA breaks AS

    Schnorr Signatures

    Let's start with a normal, vanilla signature, and then work our way up to adaptor signatures. To create a signature we need a public key and a private key. With Schnorr the private key is just an integer value somewhere between \(0\) and \(\sim2^{256}\). Let's call this private key x. The public key P belonging to x is then a special point on our elliptic curve added to itself x times. This point is called the base point or generator. We assign it the letter G. Adding a point n times to itself is the definition of multiplication, so we can capture our key-pair in this simple formula:

    \[P=xG\]

    You might be tempted to think that it might be easy to calculate the private key x if you know the public key P and the base point G, because \(x=\frac{P}{G}\). But while addition (and multiplication) over an elliptic curve is easy, division (undoing multiplication) is hard. In fact it is so hard, that it is completely infeasible to calculate the private key, given the public key. This is at the foundation of all elliptic curve cryptography.

    Now let's sign a message with this private key, and validate the signature with the public key. To sign a message we need a challenge and a nonce. A nonce is a random number that we use only one time for signing a single message. We use the letter \(r\) to indicate our nonce. We calculate the public key \(R\) that pairs with \(r\). The challenge is a hash-value that depends on the message we are signing. It all fits together like this:

    \[ \begin{align} R&=rG \\ e&=H(P||R||m) \end{align} \]

    The hashing function is indicated by \(H()\) and it is chosen in such a way that it returns a value that is of the same scale as our private keys. That is why SHA256 is a great choice for the hashing function. It's important to understand that a hash is just a number. We can us it as such and do some elliptic curve calculations with it to come up with our signature:

    \[s=r + ex\]

    The signature is published by the Signer as \((s, R)\).

    A Verifier can now verify whether the Signer knows the private key \(x\). It only needs to know \(s\) and \(R\) (the signature) and the public key \(P\) of the signer, which is public by definition. The base point \(G\) is a published property of the elliptic curve. The challenge can be constructed by the verifier as well, since it only uses public information. To verify you have to calculate whether:

    \[sG = R + Pe\]

    The verification should fail if that equality doesn't hold.

    It is easy to see why this is proof of the Signer knowing \(x\) and having used it to sign \(m\):

    \[ \begin{align} sG &= R + Pe \\ &= rG + xGe \\ &= (r + ex)G \end{align} \]

    Adaptor Signatures

    Now let's crank things up a bit and create an adaptor signature. An adaptor signature is a normal Schnorr signature with an added secret tweak. This tweak is the secret we want to hide and only reveal upon revealing the signature. The tweak is indicated by the letter \(t\). Again, we calculate the public key belonging to \(t\) with \(T=tG\). The challenge and the signature are now slightly different because of the tweak:

    \[ \begin{align} \\ e&=H(P||R+T||m) \\ s&=r+t+ex \end{align} \]

    The adaptor signature \(s'\) is the signature minus the secret tweak, so \(s'=s-t\). instead of releasing the signature as we did with the vanilla Schnorr signature, we now published the adaptor signature as \((s',R,T)\).

    The Verifier can still be sure that the Signer owns the secret key \(x\). Remember \(s'=s-t\), so:

    \[ \begin{align} s'&=s-t \\ &=r+t+ex-t \\ &=r+ex \end{align} \]

    Which means that verification didn't really change for the Verifier. The Verifier only needs to add \(R\) and \(T\) because of the challenge, but apart from that verification remains the same:

    \[s'G = R + Pe\]

    And the proof of the correctness is similar as well:

    \[ \begin{align} s'G &= R + Pe \\ &= rG + xGe \\ &= (r + ex)G \end{align} \]

    When the Verifier receives the untweaked signature \(s\) it can calculate the secret tweak: \(t=s-s'\). Likewise, when the Signer releases the secret tweak, the Verifier can calculate the untweaked signature \(s=s'+t\).

    This construction is the building block of things like private Coinswap, and Cross-chain Swaps.

    Signature Half Aggregation

    Now, let's try to understand Signature Half Aggregation. The basic concept of Signature Half Aggregation is to take the \(i\) signatures \((s_{i}, R_{i})\) that we want to aggregate, and then concatenate all the \(R\)-values and sum all the \(s\)-values. But as it turned out, that construction wasn't safe. But with a small adjustment we can make a construction that is safe. Instead of summing all the \(s\)-values, we sum up all the \(s\)-values after multiplying them with unpredictable values.

    Assume we have \(n\) Schnorr signatures we want to aggregate. For each signature, we create an unpredictable value \(z_{i}\). So, for \(i = 1 .. n\) we calculate the following value:

    \[z_{i}=H(P_{1}||R_{1}||m_{1}||...||P_{n}||R_{n}||m_{n}||i)\]

    Our aggregate signature now becomes:

    \[s_{agg}=\sum_{i=1}^{n}z_{i}s_{i}\]

    The signature is published as \((s_{agg}, R_{1}...R_{n})\). It doesn't have to be one (or all) of the Signers of the original signatures that has to do the aggregation. It can be any third party because this construction is non-interactive. It doesn't require the cooperation of the Signers after they have published their own signature.

    Verification now becomes slightly different, but it is still easy to prove its correctness:

    \[ \begin{align} s_{agg}G &= \sum_{i=1}^{n} z_{i}(R_{i}+P_{i}e_{i}) \\ &= \sum_{i=1}^{n} z_{i}(r_{i}G+x_{i}Ge_{i}) \\ &= \sum_{i=1}^{n} z_{i}(r_{i}+x_{i}e_{i})G \\ &= \sum_{i=1}^{n} z_{i}s_{i}G \end{align} \]

    Signature Half Aggregation Breaks Adaptor Signatures

    So why does Signature Half Agrregation when used for blockwide signature aggregation in Bitcoin break Adaptor Signatures? Well, we need that untweaked signature \(s'\) to calculate the secret tweak \(t=s-s'\). But the untweaked signature \(s'\) is lost inside the aggregate signature \(s_{agg}\). The only thing we have is the tweaked signature \(s\), with \(R\) and \(T\), since those were given to us, but the untweaked signature \(s'\) should have been revealed when published on-chain. Instead we are given the \(s_{agg}\) which allows us to verify that all inputs inside the block have been signed, but it doesn't allow us to know the exact value of \(s'\).

    And that's why Signature Half Aggregation breaks Adaptor Signatures.

      1 repost   3 likes
    twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter \ No newline at end of file + };

    Why does signature half aggregation break adaptor signatures?

    6 minute read

    There is this cool trick you can do with Schnorr signatures. It is called Adaptor Signature (AS). An adaptor signature is an extra signature that, combined with the original signature, allow for revealing a value that was previously hidden. You can use this trick to solve trust problems as they appear in atomic swaps, coin swaps and Discreet Log Contracts (DLCs).

    Signature Aggregation (SA) is a way to aggregate multiple signatures into a single signature. The single aggregate signature is smaller (in bytes) than the original signatures combined. It reduces transaction weight, meaning we can have more transactions per block, which is always a good thing. It's like 7zip for transactions. Signature Half Aggregation is a variant of SA that only aggregates half of each signature. It offers less compression, but it has the benefit of not requiring any interaction with the signers, whereas full aggregation does require cooperation of all the signers.

    So two cool tricks, but the latter breaks the former when it is used for blockwide signature aggregation. This article explains the math behind it and why SA breaks AS

    Schnorr Signatures

    Let's start with a normal, vanilla signature, and then work our way up to adaptor signatures. To create a signature we need a public key and a private key. With Schnorr the private key is just an integer value somewhere between \(0\) and \(\sim2^{256}\). Let's call this private key x. The public key P belonging to x is then a special point on our elliptic curve added to itself x times. This point is called the base point or generator. We assign it the letter G. Adding a point n times to itself is the definition of multiplication, so we can capture our key-pair in this simple formula:

    \[P=xG\]

    You might be tempted to think that it might be easy to calculate the private key x if you know the public key P and the base point G, because \(x=\frac{P}{G}\). But while addition (and multiplication) over an elliptic curve is easy, division (undoing multiplication) is hard. In fact it is so hard, that it is completely infeasible to calculate the private key, given the public key. This is at the foundation of all elliptic curve cryptography.

    Now let's sign a message with this private key, and validate the signature with the public key. To sign a message we need a challenge and a nonce. A nonce is a random number that we use only one time for signing a single message. We use the letter \(r\) to indicate our nonce. We calculate the public key \(R\) that pairs with \(r\). The challenge is a hash-value that depends on the message we are signing. It all fits together like this:

    \[ \begin{align} R&=rG \\ e&=H(P||R||m) \end{align} \]

    The hashing function is indicated by \(H()\) and it is chosen in such a way that it returns a value that is of the same scale as our private keys. That is why SHA256 is a great choice for the hashing function. It's important to understand that a hash is just a number. We can us it as such and do some elliptic curve calculations with it to come up with our signature:

    \[s=r + ex\]

    The signature is published by the Signer as \((s, R)\).

    A Verifier can now verify whether the Signer knows the private key \(x\). It only needs to know \(s\) and \(R\) (the signature) and the public key \(P\) of the signer, which is public by definition. The base point \(G\) is a published property of the elliptic curve. The challenge can be constructed by the verifier as well, since it only uses public information. To verify you have to calculate whether:

    \[sG = R + Pe\]

    The verification should fail if that equality doesn't hold.

    It is easy to see why this is proof of the Signer knowing \(x\) and having used it to sign \(m\):

    \[ \begin{align} sG &= R + Pe \\ &= rG + xGe \\ &= (r + ex)G \end{align} \]

    Adaptor Signatures

    Now let's crank things up a bit and create an adaptor signature. An adaptor signature is a normal Schnorr signature with an added secret tweak. This tweak is the secret we want to hide and only reveal upon revealing the signature. The tweak is indicated by the letter \(t\). Again, we calculate the public key belonging to \(t\) with \(T=tG\). The challenge and the signature are now slightly different because of the tweak:

    \[ \begin{align} \\ e&=H(P||R+T||m) \\ s&=r+t+ex \end{align} \]

    The adaptor signature \(s'\) is the signature minus the secret tweak, so \(s'=s-t\). instead of releasing the signature as we did with the vanilla Schnorr signature, we now published the adaptor signature as \((s',R,T)\).

    The Verifier can still be sure that the Signer owns the secret key \(x\). Remember \(s'=s-t\), so:

    \[ \begin{align} s'&=s-t \\ &=r+t+ex-t \\ &=r+ex \end{align} \]

    Which means that verification didn't really change for the Verifier. The Verifier only needs to add \(R\) and \(T\) because of the challenge, but apart from that verification remains the same:

    \[s'G = R + Pe\]

    And the proof of the correctness is similar as well:

    \[ \begin{align} s'G &= R + Pe \\ &= rG + xGe \\ &= (r + ex)G \end{align} \]

    When the Verifier receives the untweaked signature \(s\) it can calculate the secret tweak: \(t=s-s'\). Likewise, when the Signer releases the secret tweak, the Verifier can calculate the untweaked signature \(s=s'+t\).

    This construction is the building block of things like private Coinswap, and Cross-chain Swaps.

    Signature Half Aggregation

    Now, let's try to understand Signature Half Aggregation. The basic concept of Signature Half Aggregation is to take the \(i\) signatures \((s_{i}, R_{i})\) that we want to aggregate, and then concatenate all the \(R\)-values and sum all the \(s\)-values. But as it turned out, that construction wasn't safe. But with a small adjustment we can make a construction that is safe. Instead of summing all the \(s\)-values, we sum up all the \(s\)-values after multiplying them with unpredictable values.

    Assume we have \(n\) Schnorr signatures we want to aggregate. For each signature, we create an unpredictable value \(z_{i}\). So, for \(i = 1 .. n\) we calculate the following value:

    \[z_{i}=H(P_{1}||R_{1}||m_{1}||...||P_{n}||R_{n}||m_{n}||i)\]

    Our aggregate signature now becomes:

    \[s_{agg}=\sum_{i=1}^{n}z_{i}s_{i}\]

    The signature is published as \((s_{agg}, R_{1}...R_{n})\). It doesn't have to be one (or all) of the Signers of the original signatures that has to do the aggregation. It can be any third party because this construction is non-interactive. It doesn't require the cooperation of the Signers after they have published their own signature.

    Verification now becomes slightly different, but it is still easy to prove its correctness:

    \[ \begin{align} s_{agg}G &= \sum_{i=1}^{n} z_{i}(R_{i}+P_{i}e_{i}) \\ &= \sum_{i=1}^{n} z_{i}(r_{i}G+x_{i}Ge_{i}) \\ &= \sum_{i=1}^{n} z_{i}(r_{i}+x_{i}e_{i})G \\ &= \sum_{i=1}^{n} z_{i}s_{i}G \end{align} \]

    Signature Half Aggregation Breaks Adaptor Signatures

    So why does Signature Half Agrregation when used for blockwide signature aggregation in Bitcoin break Adaptor Signatures? Well, we need that untweaked signature \(s'\) to calculate the secret tweak \(t=s-s'\). But the untweaked signature \(s'\) is lost inside the aggregate signature \(s_{agg}\). The only thing we have is the tweaked signature \(s\), with \(R\) and \(T\), since those were given to us, but the untweaked signature \(s'\) should have been revealed when published on-chain. Instead we are given the \(s_{agg}\) which allows us to verify that all inputs inside the block have been signed, but it doesn't allow us to know the exact value of \(s'\).

    And that's why Signature Half Aggregation breaks Adaptor Signatures.

      1 repost   3 likes
    twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter twitter \ No newline at end of file diff --git a/posts/2/index.html b/posts/2/index.html index d5aaaf33..d8e8fe37 100644 --- a/posts/2/index.html +++ b/posts/2/index.html @@ -1,2 +1,2 @@ Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +git clone https://github.com/lightningd/plugins.git --depth 1

    We put the plugin in the _repos folder, because it is assumed that the plugin is there when the cluster is being build. (Also: throughout this article we assume your simverse folder is inside your home folder. If that is not the case, adjust it accordingly)

    Since all nodes in Simverse run inside Docker containers, that plugin-file should be made available inside the Docker context folder. The _repos folder is not part of that context (each container gets its own context) so we have to copy the file from the _repos folder to the Docker context folder. Luckily Simverse works with the concept of recipes. A recipe describes how your cluster should look like. A recipe is a bash script that uses a library called cookbook that can be used to build your cluster step-by-step. Since it is "just" a bash script, you can do anything bash can do to tweak your cluster.

    We will create a recipe that creates a cluster with three c-lightning nodes, running on a bitcoind back-end.

  • SSH keybased authentication Windows to Linux

    2 minute read

    I do most of my development on a remote machine. The machine isn't that remote, it's a mini-pc running Ubuntu that is standing right here on my desk. It has no peripherals, so I have to do all my development remotely through my Windows 10 laptop.

    Remote development with Vscode is amazing. It just works. Once you are set up, there's no difference with working locally. To have that seamless experience you do have to set up keybased authentication for SSH. If you don't you will be constantly reminded of working remotely, because you have to type in the password of the remote machine.

  • Debugging LND while running a local cluster

    4 minute read

    If you want to debug LND, or if you want to take a real deep dive into LND, you probably want to be able to set breakpoints in the source code to see what is actually happening. Not only that, you also want to have the node run in a local cluster of other nodes, so that you can perform some real Lightning actions like opening a channel and make payments. This post takes you through the setup I use based on Delve and Simverse.

  • Building Bitcoin Core On Windows 10

    2 minute read

    I've been following Bitcoin and more importantly the Blockchain from the sidelines for a few years now, but I wanted to get my hands dirty. Obviously I could just download the Bitcoin Core executables from bitcoin.org, but I always feel it gives me more insight if I build something myself. Also it's was a nice test case for Bash on Windows.

  • Newer posts
  • \ No newline at end of file diff --git a/replies/2/index.html b/replies/2/index.html index 4ed0727a..fdb9d440 100644 --- a/replies/2/index.html +++ b/replies/2/index.html @@ -1 +1 @@ -Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +Gijs van Dam
    Gijs van Dam
    \ No newline at end of file diff --git a/replies/index.html b/replies/index.html index f70f8e19..cf4c71bf 100644 --- a/replies/index.html +++ b/replies/index.html @@ -1 +1 @@ -Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +Gijs van Dam
    Gijs van Dam
    \ No newline at end of file diff --git a/reply/2022/02/22-51488/index.html b/reply/2022/02/22-51488/index.html index dd175797..cf01b892 100644 --- a/reply/2022/02/22-51488/index.html +++ b/reply/2022/02/22-51488/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://bitcoinhackers.org/web/@sjors@m.sprovoost.nl/107835152884502784

    > Not everyone involved in "crypto" has the same world view as the loudest most radical voices

    No, but every time I stick my head out of my academia bubble I do feel quite disenfranchised.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://bitcoinhackers.org/web/@sjors@m.sprovoost.nl/107835152884502784

    > Not everyone involved in "crypto" has the same world view as the loudest most radical voices

    No, but every time I stick my head out of my academia bubble I do feel quite disenfranchised.

    \ No newline at end of file diff --git a/reply/2022/02/23-25550/index.html b/reply/2022/02/23-25550/index.html index 1f99c92c..13e678fe 100644 --- a/reply/2022/02/23-25550/index.html +++ b/reply/2022/02/23-25550/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/statelyai/status/1496315939142447104

    I like it! I can think of a few use cases. There will be a day in the near future where I am going to use it, for sure.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/statelyai/status/1496315939142447104

    I like it! I can think of a few use cases. There will be a day in the near future where I am going to use it, for sure.

    \ No newline at end of file diff --git a/reply/2022/02/23-6487/index.html b/reply/2022/02/23-6487/index.html index 80fd60b4..2af7dd2b 100644 --- a/reply/2022/02/23-6487/index.html +++ b/reply/2022/02/23-6487/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/kappyzor/status/1496141348415721472

    When are we allowed to call something a pattern? :D I'm not sure if you could call it a delegate. It's a function, not a function signature that is passed along with onReceive. But delegation is a confusing term: https://www.saturnflyer.com/blog/the-gang-of-four-is-wrong-and-you-dont-understand-delegation

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/kappyzor/status/1496141348415721472

    When are we allowed to call something a pattern? :D I'm not sure if you could call it a delegate. It's a function, not a function signature that is passed along with onReceive. But delegation is a confusing term: https://www.saturnflyer.com/blog/the-gang-of-four-is-wrong-and-you-dont-understand-delegation

    \ No newline at end of file diff --git a/reply/2022/03/14-3524/index.html b/reply/2022/03/14-3524/index.html index df058e05..efc6045c 100644 --- a/reply/2022/03/14-3524/index.html +++ b/reply/2022/03/14-3524/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/doctorow/status/1503145991100268548

    I have such a weak spot for communist architecture of that era.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/doctorow/status/1503145991100268548

    I have such a weak spot for communist architecture of that era.

    \ No newline at end of file diff --git a/reply/2022/03/15-27609/index.html b/reply/2022/03/15-27609/index.html index d9adfe61..9db8b8d6 100644 --- a/reply/2022/03/15-27609/index.html +++ b/reply/2022/03/15-27609/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/reply/2022/03/18-6287/index.html b/reply/2022/03/18-6287/index.html index 82c4106a..d0ad0351 100644 --- a/reply/2022/03/18-6287/index.html +++ b/reply/2022/03/18-6287/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/loravilag/status/1504150169742462976

    Maybe now is the time to switch to @zotero? The things missing from @mendeley_com Reference Manager can be handled with Zotero plugins afaik.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/loravilag/status/1504150169742462976

    Maybe now is the time to switch to @zotero? The things missing from @mendeley_com Reference Manager can be handled with Zotero plugins afaik.

    \ No newline at end of file diff --git a/reply/2022/03/19-19572/index.html b/reply/2022/03/19-19572/index.html index bc099258..17c93c09 100644 --- a/reply/2022/03/19-19572/index.html +++ b/reply/2022/03/19-19572/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/loravilag/status/1504739266357780484

    6.0 just came out of beta! https://www.zotero.org/blog/zotero-6/ I jumped into the deep end, and switched. @zotero 6.0 has a PDF reader, which was the main thing holding me back. Renaming, bibtex sync, deduplication all works out of the gate or with plugins. Only thing missing: watch folder

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/loravilag/status/1504739266357780484

    6.0 just came out of beta! https://www.zotero.org/blog/zotero-6/ I jumped into the deep end, and switched. @zotero 6.0 has a PDF reader, which was the main thing holding me back. Renaming, bibtex sync, deduplication all works out of the gate or with plugins. Only thing missing: watch folder

    \ No newline at end of file diff --git a/reply/2022/03/19-20011/index.html b/reply/2022/03/19-20011/index.html index 61c23c74..fbac0a52 100644 --- a/reply/2022/03/19-20011/index.html +++ b/reply/2022/03/19-20011/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1505053325401763847

    But you can drag & drop PDFs into your collection which achieves almost the same thing. Some quirks still require getting used to, but I'm happy so far. @zotero couldn't have timed this release any better. Also importing from Mendeley was a breeze. Bye bye @mendeley_com.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1505053325401763847

    But you can drag & drop PDFs into your collection which achieves almost the same thing. Some quirks still require getting used to, but I'm happy so far. @zotero couldn't have timed this release any better. Also importing from Mendeley was a breeze. Bye bye @mendeley_com.

    \ No newline at end of file diff --git a/reply/2022/03/24-25808/index.html b/reply/2022/03/24-25808/index.html index 5837413b..61786c7a 100644 --- a/reply/2022/03/24-25808/index.html +++ b/reply/2022/03/24-25808/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/aaronpk/status/1506889706839035908

    timeouts, but they are gone now. Maybe something network related. Thanks for the quick reply tho!

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/aaronpk/status/1506889706839035908

    timeouts, but they are gone now. Maybe something network related. Thanks for the quick reply tho!

    \ No newline at end of file diff --git a/reply/2022/03/29-47144/index.html b/reply/2022/03/29-47144/index.html index 32a95b0a..1ba0dddf 100644 --- a/reply/2022/03/29-47144/index.html +++ b/reply/2022/03/29-47144/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://aaronparecki.com/2022/03/28/11/

    Say that you are from the US without saying that you are from the US.🤣

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://aaronparecki.com/2022/03/28/11/

    Say that you are from the US without saying that you are from the US.🤣

    \ No newline at end of file diff --git a/reply/2022/03/31-9522/index.html b/reply/2022/03/31-9522/index.html index e4e62717..0bc838d0 100644 --- a/reply/2022/03/31-9522/index.html +++ b/reply/2022/03/31-9522/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://aaronparecki.com/2022/03/31/4/travel

    Oof. Man, you certainly fell into a shitshow. Good luck!

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://aaronparecki.com/2022/03/31/4/travel

    Oof. Man, you certainly fell into a shitshow. Good luck!

    \ No newline at end of file diff --git a/reply/2022/04/04-4837/index.html b/reply/2022/04/04-4837/index.html index d99995df..0cec894f 100644 --- a/reply/2022/04/04-4837/index.html +++ b/reply/2022/04/04-4837/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/reply/2022/04/08-10065/index.html b/reply/2022/04/08-10065/index.html index d2f4c750..51aae58f 100644 --- a/reply/2022/04/08-10065/index.html +++ b/reply/2022/04/08-10065/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1512260395494428693

    With the obvious exception of our own tweets. 😆

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1512260395494428693

    With the obvious exception of our own tweets. 😆

    \ No newline at end of file diff --git a/reply/2022/04/08-9393/index.html b/reply/2022/04/08-9393/index.html index 33dff40b..058530c9 100644 --- a/reply/2022/04/08-9393/index.html +++ b/reply/2022/04/08-9393/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/laurenweinstein/status/1512251071321690113

    That's not true for Twitter. That's just a dumpster fire from the get go. No need to go below the fold.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/laurenweinstein/status/1512251071321690113

    That's not true for Twitter. That's just a dumpster fire from the get go. No need to go below the fold.

    \ No newline at end of file diff --git a/reply/2022/04/15-30405/index.html b/reply/2022/04/15-30405/index.html index 5a610479..7a313805 100644 --- a/reply/2022/04/15-30405/index.html +++ b/reply/2022/04/15-30405/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://bitcoinhackers.org/@michaelfolkson/108130976065216544

    Cool trick tho! Using the cascading nature of git config, to abuse certain configuration variables that cause Git to execute arbitrary commands.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://bitcoinhackers.org/@michaelfolkson/108130976065216544

    Cool trick tho! Using the cascading nature of git config, to abuse certain configuration variables that cause Git to execute arbitrary commands.

    \ No newline at end of file diff --git a/reply/2022/04/27-10399/index.html b/reply/2022/04/27-10399/index.html index a2d9badf..61105ec7 100644 --- a/reply/2022/04/27-10399/index.html +++ b/reply/2022/04/27-10399/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1519146676778418178

    1. Rusland is voor de Cyber oorlogsvoering deels afhankelijk van hackers collectieven (https://www.mandiant.com/resources/russia-invasion-ukraine-retaliation) Deze collectieven kunnen met relatieve immuniteit in en vanuit Rusland opereren, maar zijn in werkelijkheid transnationale entiteiten...
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1519146676778418178

    1. Rusland is voor de Cyber oorlogsvoering deels afhankelijk van hackers collectieven (https://www.mandiant.com/resources/russia-invasion-ukraine-retaliation) Deze collectieven kunnen met relatieve immuniteit in en vanuit Rusland opereren, maar zijn in werkelijkheid transnationale entiteiten...
    \ No newline at end of file diff --git a/reply/2022/04/27-11023/index.html b/reply/2022/04/27-11023/index.html index 5fa18fe3..a8210afb 100644 --- a/reply/2022/04/27-11023/index.html +++ b/reply/2022/04/27-11023/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1519149546768683010

    ...met een diverse groep van medewerkers waarvan het zelfs voor die groepen zelf onduidelijk is in hoeverre die Rusland steunen in hun oorlog. Het grote collectief dat zich expliciet voor de oorlog heeft uitgesproken (Conti) werd twee dagen later zelf gehackt.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1519149546768683010

    ...met een diverse groep van medewerkers waarvan het zelfs voor die groepen zelf onduidelijk is in hoeverre die Rusland steunen in hun oorlog. Het grote collectief dat zich expliciet voor de oorlog heeft uitgesproken (Conti) werd twee dagen later zelf gehackt.

    \ No newline at end of file diff --git a/reply/2022/04/27-11235/index.html b/reply/2022/04/27-11235/index.html index b98581df..c66b4ec5 100644 --- a/reply/2022/04/27-11235/index.html +++ b/reply/2022/04/27-11235/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/reply/2022/04/27-9426/index.html b/reply/2022/04/27-9426/index.html index dce9eb78..e0fa2378 100644 --- a/reply/2022/04/27-9426/index.html +++ b/reply/2022/04/27-9426/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1519143252351410177

    1. De Cyber War is er wel (https://www.reuters.com/world/europe/exclusive-us-spy-agency-probes-sabotage-satellite-internet-during-russian-2022-03-11/), maar de berichten daarover halen het nieuws niet omdat het ondersneeuwt onder de berichten over raketten op woonwijken en andere oorlogsmisdaden. (https://www.vice.com/en/article/88gbk5/why-we-havent-seen-debilitating-cyberwar-in-ukraine)
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1519143252351410177

    1. De Cyber War is er wel (https://www.reuters.com/world/europe/exclusive-us-spy-agency-probes-sabotage-satellite-internet-during-russian-2022-03-11/), maar de berichten daarover halen het nieuws niet omdat het ondersneeuwt onder de berichten over raketten op woonwijken en andere oorlogsmisdaden. (https://www.vice.com/en/article/88gbk5/why-we-havent-seen-debilitating-cyberwar-in-ukraine)
    \ No newline at end of file diff --git a/reply/2022/04/27-9703/index.html b/reply/2022/04/27-9703/index.html index 2af182a1..2aa1233c 100644 --- a/reply/2022/04/27-9703/index.html +++ b/reply/2022/04/27-9703/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1519144350126587906

    1. De noodzaak voor een Cyber War is minder als je al verwikkeld bent in een fysieke oorlog, zeker voor de offensieve partij. Waarom zou je infrastructuur met een onvoorspelbare cyber attack aanvallen, als je het gewoon kapot kan schieten? (https://spectrum.ieee.org/why-theres-no-real-cyberwar-in-the-ukraine-conflict en https://www.vice.com/en/article/88gbk5/why-we-havent-seen-debilitating-cyberwar-in-ukraine)
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1519144350126587906

    1. De noodzaak voor een Cyber War is minder als je al verwikkeld bent in een fysieke oorlog, zeker voor de offensieve partij. Waarom zou je infrastructuur met een onvoorspelbare cyber attack aanvallen, als je het gewoon kapot kan schieten? (https://spectrum.ieee.org/why-theres-no-real-cyberwar-in-the-ukraine-conflict en https://www.vice.com/en/article/88gbk5/why-we-havent-seen-debilitating-cyberwar-in-ukraine)
    \ No newline at end of file diff --git a/reply/2022/05/17-7736/index.html b/reply/2022/05/17-7736/index.html index 007f9028..db2428c1 100644 --- a/reply/2022/05/17-7736/index.html +++ b/reply/2022/05/17-7736/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/Halalcoholism/status/1526375581902057473

    @Halalcoholism X is WRONG because I made this single observation I didn't like.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/Halalcoholism/status/1526375581902057473

    @Halalcoholism X is WRONG because I made this single observation I didn't like.

    \ No newline at end of file diff --git a/reply/2022/05/17-9592/index.html b/reply/2022/05/17-9592/index.html index 30477050..7f76c325 100644 --- a/reply/2022/05/17-9592/index.html +++ b/reply/2022/05/17-9592/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/doctorow/status/1526243918735626241

    @doctorow Voting with your wallet: Now I am somehow responsible for working conditions and the env footprint of the companies I buy from. Don't like it? You should have enforced it better with your wallet!

    I prefer to put people in office to do that for me.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/doctorow/status/1526243918735626241

    @doctorow Voting with your wallet: Now I am somehow responsible for working conditions and the env footprint of the companies I buy from. Don't like it? You should have enforced it better with your wallet!

    I prefer to put people in office to do that for me.

    \ No newline at end of file diff --git a/reply/2022/05/18-31162/index.html b/reply/2022/05/18-31162/index.html index f9728108..4106ca0f 100644 --- a/reply/2022/05/18-31162/index.html +++ b/reply/2022/05/18-31162/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/KijangCrypto/status/1526550253146865666

    @KijangCrypto c-lightning is now called Core Lightning, so it's in the chart. It takes some time getting used to the new name, tho.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/KijangCrypto/status/1526550253146865666

    @KijangCrypto c-lightning is now called Core Lightning, so it's in the chart. It takes some time getting used to the new name, tho.

    \ No newline at end of file diff --git a/reply/2022/05/18-6225/index.html b/reply/2022/05/18-6225/index.html index 2ea9b59a..e85fb831 100644 --- a/reply/2022/05/18-6225/index.html +++ b/reply/2022/05/18-6225/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/dj_seeds/status/1526035546597773312

    @dj_seeds @renepickhardt joined the Bitcoin Sydney Socratic last December to explain his paper. You can find the video of the meeting here.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/dj_seeds/status/1526035546597773312

    @dj_seeds @renepickhardt joined the Bitcoin Sydney Socratic last December to explain his paper. You can find the video of the meeting here.

    \ No newline at end of file diff --git a/reply/2022/05/18-6490/index.html b/reply/2022/05/18-6490/index.html index 85870a69..4e241a44 100644 --- a/reply/2022/05/18-6490/index.html +++ b/reply/2022/05/18-6490/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/reply/2022/06/16-36570/index.html b/reply/2022/06/16-36570/index.html index 71d83b80..095538f0 100644 --- a/reply/2022/06/16-36570/index.html +++ b/reply/2022/06/16-36570/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/AshleyRindsberg/status/1537367823403696128

    @AshleyRindsberg Yes, so this AI is could go after jobs that don't actually solve problems or reflect on issues: marketing, (1st line) helpdesk, a large part of modern journalism, copy-writing... any task that involves deflecting and wasting someone else's time.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/AshleyRindsberg/status/1537367823403696128

    @AshleyRindsberg Yes, so this AI is could go after jobs that don't actually solve problems or reflect on issues: marketing, (1st line) helpdesk, a large part of modern journalism, copy-writing... any task that involves deflecting and wasting someone else's time.

    \ No newline at end of file diff --git a/reply/2022/06/16-36787/index.html b/reply/2022/06/16-36787/index.html index 5d4e5536..55ae93d0 100644 --- a/reply/2022/06/16-36787/index.html +++ b/reply/2022/06/16-36787/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1537377203683577856

    @gijswijs Come to think of it, I could be such an AI replying to your tweet.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1537377203683577856

    @gijswijs Come to think of it, I could be such an AI replying to your tweet.

    \ No newline at end of file diff --git a/reply/2022/06/17-32419/index.html b/reply/2022/06/17-32419/index.html index 9690e006..9e4fcdd4 100644 --- a/reply/2022/06/17-32419/index.html +++ b/reply/2022/06/17-32419/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/ThomasArdal/status/1537717442062995457

    @ThomasArdal You might want to look into @aspboilerplate. I used it to create an SEO platform with a Vue.js frontend. https://aspnetboilerplate.com/

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/ThomasArdal/status/1537717442062995457

    @ThomasArdal You might want to look into @aspboilerplate. I used it to create an SEO platform with a Vue.js frontend. https://aspnetboilerplate.com/

    \ No newline at end of file diff --git a/reply/2022/06/20-41110/index.html b/reply/2022/06/20-41110/index.html index db465c43..fac658d8 100644 --- a/reply/2022/06/20-41110/index.html +++ b/reply/2022/06/20-41110/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/wdejager/status/1538843392662175744

    @wdejager Metal Gear Solid spelen op de MSX2 die een vriendje van me had. De goede oude tijd!

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/wdejager/status/1538843392662175744

    @wdejager Metal Gear Solid spelen op de MSX2 die een vriendje van me had. De goede oude tijd!

    \ No newline at end of file diff --git a/reply/2022/06/22-4825/index.html b/reply/2022/06/22-4825/index.html index e31f2af6..752a7c2b 100644 --- a/reply/2022/06/22-4825/index.html +++ b/reply/2022/06/22-4825/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gladstein/status/1539407622226333697

    @gladstein The 2008 financial crisis was the reason for me to get involved in Bitcoin and crypto. But didn't we set the stage for the same quants of 2008 to package crypto like they packaged subprime mortgages? The ICO boom, the NFTs, Terra/Luna. Haven't we all been duped?

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gladstein/status/1539407622226333697

    @gladstein The 2008 financial crisis was the reason for me to get involved in Bitcoin and crypto. But didn't we set the stage for the same quants of 2008 to package crypto like they packaged subprime mortgages? The ICO boom, the NFTs, Terra/Luna. Haven't we all been duped?

    \ No newline at end of file diff --git a/reply/2022/06/22-5125/index.html b/reply/2022/06/22-5125/index.html index 0864d24e..51b01411 100644 --- a/reply/2022/06/22-5125/index.html +++ b/reply/2022/06/22-5125/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1539418343710593026

    @gijswijs That's a question I struggle with these days. But I think that the reasons for Bitcoin in 2008 are still valid. I am hopeful that something that is a net benefit to society will remain once the dust has settled.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/gijswijs/status/1539418343710593026

    @gijswijs That's a question I struggle with these days. But I think that the reasons for Bitcoin in 2008 are still valid. I am hopeful that something that is a net benefit to society will remain once the dust has settled.

    \ No newline at end of file diff --git a/reply/2022/06/22-5638/index.html b/reply/2022/06/22-5638/index.html index 29690d9d..460d7071 100644 --- a/reply/2022/06/22-5638/index.html +++ b/reply/2022/06/22-5638/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/BrianClark/status/1539420648312713216

    @BrianClark You mean the variety that says: Let me stay/eat here for free or I will wreck your reputation on the socials?

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/BrianClark/status/1539420648312713216

    @BrianClark You mean the variety that says: Let me stay/eat here for free or I will wreck your reputation on the socials?

    \ No newline at end of file diff --git a/reply/2022/09/08-32881/index.html b/reply/2022/09/08-32881/index.html index c0037c2d..58c36b9a 100644 --- a/reply/2022/09/08-32881/index.html +++ b/reply/2022/09/08-32881/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/willcl_ark/status/1566891473999626247

    Thanks for mentioning my research @bitgould! The above paper is wrong about LN being shortest path only, tho. All major clients support route randomization. Route randomization means the payment algorithm does not always use the lowest-fee or shortest route.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/willcl_ark/status/1566891473999626247

    Thanks for mentioning my research @bitgould! The above paper is wrong about LN being shortest path only, tho. All major clients support route randomization. Route randomization means the payment algorithm does not always use the lowest-fee or shortest route.

    \ No newline at end of file diff --git a/reply/2022/10/19-4868/index.html b/reply/2022/10/19-4868/index.html index 94fa3bf0..2317b675 100644 --- a/reply/2022/10/19-4868/index.html +++ b/reply/2022/10/19-4868/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/Noahpinion/status/1582532615298433024

    The confusion comes from Hello Kitty, which is Japanese. The similarities in style are striking. So much so, that the creator of Miffy brought Hello Kitty to court over a less known character called Cathy (and won).

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/Noahpinion/status/1582532615298433024

    The confusion comes from Hello Kitty, which is Japanese. The similarities in style are striking. So much so, that the creator of Miffy brought Hello Kitty to court over a less known character called Cathy (and won).

    \ No newline at end of file diff --git a/reply/2022/10/19-5621/index.html b/reply/2022/10/19-5621/index.html index d827ee8e..1ed5ca1d 100644 --- a/reply/2022/10/19-5621/index.html +++ b/reply/2022/10/19-5621/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/midwesthideout/status/1582543556614402048

    ill doers are ill deemers, it seems. There's a Dutch saying for this, which translates to: "How the innkeeper is, that’s how he trusts his guests."

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/midwesthideout/status/1582543556614402048

    ill doers are ill deemers, it seems. There's a Dutch saying for this, which translates to: "How the innkeeper is, that’s how he trusts his guests."

    \ No newline at end of file diff --git a/reply/2022/10/25-35503/index.html b/reply/2022/10/25-35503/index.html index ef7c0a7f..ae4ea35e 100644 --- a/reply/2022/10/25-35503/index.html +++ b/reply/2022/10/25-35503/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/dirkminnebo/status/1584519915230228480

    Ik echo het sentiment hier dat B2B minder gezeik geeft, maar ik denk dat de marges bij B2C potentieel wel veel interessanter kunnen zijn.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/dirkminnebo/status/1584519915230228480

    Ik echo het sentiment hier dat B2B minder gezeik geeft, maar ik denk dat de marges bij B2C potentieel wel veel interessanter kunnen zijn.

    \ No newline at end of file diff --git a/reply/2022/10/25-35544/index.html b/reply/2022/10/25-35544/index.html index f55de852..b79654b3 100644 --- a/reply/2022/10/25-35544/index.html +++ b/reply/2022/10/25-35544/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/Quintin24/status/1584532631093334017

    Waarom vind je B2C inhoudelijk interessanter?

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/Quintin24/status/1584532631093334017

    Waarom vind je B2C inhoudelijk interessanter?

    \ No newline at end of file diff --git a/reply/2022/10/28-1945/index.html b/reply/2022/10/28-1945/index.html index fc846707..d9c129e1 100644 --- a/reply/2022/10/28-1945/index.html +++ b/reply/2022/10/28-1945/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/michaelfolkson/status/1585555491140341762

    But isn't that what Eric and Udi are saying as well? You seem to be disagreeing with them, but I'm not sure.

    Anyway, there's a lot of noise. I found my corner in academia which I am enjoying, and it's all about the technical core, blissfully unaware of crypto influencers.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/michaelfolkson/status/1585555491140341762

    But isn't that what Eric and Udi are saying as well? You seem to be disagreeing with them, but I'm not sure.

    Anyway, there's a lot of noise. I found my corner in academia which I am enjoying, and it's all about the technical core, blissfully unaware of crypto influencers.

    \ No newline at end of file diff --git a/reply/2022/11/09-2109/index.html b/reply/2022/11/09-2109/index.html index fee83bf9..1051eca6 100644 --- a/reply/2022/11/09-2109/index.html +++ b/reply/2022/11/09-2109/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/reply/2023/02/08-31285/index.html b/reply/2023/02/08-31285/index.html index 86f9ba1d..ff1cb0b9 100644 --- a/reply/2023/02/08-31285/index.html +++ b/reply/2023/02/08-31285/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/Noahpinion/status/1623219362747547649

    Complaining about stock buybacks just isn't part of public discourse in the NL. Is that because European companies don't do buybacks, or because the public just doesn't care about them?

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/Noahpinion/status/1623219362747547649

    Complaining about stock buybacks just isn't part of public discourse in the NL. Is that because European companies don't do buybacks, or because the public just doesn't care about them?

    \ No newline at end of file diff --git a/reply/2023/02/09-38481/index.html b/reply/2023/02/09-38481/index.html index 487228b7..7bfcdeb4 100644 --- a/reply/2023/02/09-38481/index.html +++ b/reply/2023/02/09-38481/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/AsiaAnalyst47/status/1623368167870570497

    There is a meteorological case to be made.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/AsiaAnalyst47/status/1623368167870570497

    There is a meteorological case to be made.

    \ No newline at end of file diff --git a/reply/2023/02/09-39298/index.html b/reply/2023/02/09-39298/index.html index 5d95ba9b..f1b7f077 100644 --- a/reply/2023/02/09-39298/index.html +++ b/reply/2023/02/09-39298/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/AsiaAnalyst47/status/1623633884838760450

    Yes, desert climate in the north, (sub)tropical climate in sub-saharan Africa. But I am not suggesting it is a good case to make. Look at the deserts of Namibia for instance.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/AsiaAnalyst47/status/1623633884838760450

    Yes, desert climate in the north, (sub)tropical climate in sub-saharan Africa. But I am not suggesting it is a good case to make. Look at the deserts of Namibia for instance.

    \ No newline at end of file diff --git a/reply/2023/02/09-39685/index.html b/reply/2023/02/09-39685/index.html index f36890d7..cdad8cca 100644 --- a/reply/2023/02/09-39685/index.html +++ b/reply/2023/02/09-39685/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/Noahpinion/status/1623470289253457920

    People underestimate the amount by which software systems act as living organisms that require constant care and maintenance. Or as cars that suffer from wear and tear, if you don't like the former metaphor.

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/Noahpinion/status/1623470289253457920

    People underestimate the amount by which software systems act as living organisms that require constant care and maintenance. Or as cars that suffer from wear and tear, if you don't like the former metaphor.

    \ No newline at end of file diff --git a/reply/2023/02/14-50133/index.html b/reply/2023/02/14-50133/index.html index bb5be392..38dcdf36 100644 --- a/reply/2023/02/14-50133/index.html +++ b/reply/2023/02/14-50133/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/CarolineReeders/status/1625403563982700545

    Zie ik daar nou het verzameld werk van Paulo Coelho?

    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    In reply to: https://twitter.com/CarolineReeders/status/1625403563982700545

    Zie ik daar nou het verzameld werk van Paulo Coelho?

    \ No newline at end of file diff --git a/reply/2023/04/05-31643/index.html b/reply/2023/04/05-31643/index.html index 00f85645..9319f3c3 100644 --- a/reply/2023/04/05-31643/index.html +++ b/reply/2023/04/05-31643/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/repost/2022/02/18-30270/index.html b/repost/2022/02/18-30270/index.html index 370296f8..f58dee62 100644 --- a/repost/2022/02/18-30270/index.html +++ b/repost/2022/02/18-30270/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/repost/2022/02/18-30288/index.html b/repost/2022/02/18-30288/index.html index 86478882..16bf15f1 100644 --- a/repost/2022/02/18-30288/index.html +++ b/repost/2022/02/18-30288/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/repost/2022/03/03-amazing/index.html b/repost/2022/03/03-amazing/index.html index 82384a05..c311dd55 100644 --- a/repost/2022/03/03-amazing/index.html +++ b/repost/2022/03/03-amazing/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/repost/2022/03/07-49678/index.html b/repost/2022/03/07-49678/index.html index 41741210..ff9654f5 100644 --- a/repost/2022/03/07-49678/index.html +++ b/repost/2022/03/07-49678/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/repost/2022/04/01-2436/index.html b/repost/2022/04/01-2436/index.html index 4f7e7f9b..66458b84 100644 --- a/repost/2022/04/01-2436/index.html +++ b/repost/2022/04/01-2436/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/repost/2022/05/13-24864/index.html b/repost/2022/05/13-24864/index.html index d02e846a..40620258 100644 --- a/repost/2022/05/13-24864/index.html +++ b/repost/2022/05/13-24864/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    Always nice to see that your research is appreciated.

    https://twitter.com/SeverinAlexB/status/1522258472397676545
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    Always nice to see that your research is appreciated.

    https://twitter.com/SeverinAlexB/status/1522258472397676545
    \ No newline at end of file diff --git a/repost/2022/05/13-45624/index.html b/repost/2022/05/13-45624/index.html index 6e6865c4..ccb263db 100644 --- a/repost/2022/05/13-45624/index.html +++ b/repost/2022/05/13-45624/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    I am now working on rerouting payments by nodes in the middle of the route. I think that might potentially be a better (cheaper!) way to disincentivize routing. #lightningnetwork

    https://twitter.com/SeverinAlexB/status/1522268266818904065
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    I am now working on rerouting payments by nodes in the middle of the route. I think that might potentially be a better (cheaper!) way to disincentivize routing. #lightningnetwork

    https://twitter.com/SeverinAlexB/status/1522268266818904065
    \ No newline at end of file diff --git a/repost/2022/05/27-19753/index.html b/repost/2022/05/27-19753/index.html index 7ed02b1f..95a3b110 100644 --- a/repost/2022/05/27-19753/index.html +++ b/repost/2022/05/27-19753/index.html @@ -1 +1 @@ -
    Gijs van Dam
    Gijs van Dam

    > one study showed that older individuals who worked beyond the age of 62 were less likely to be depressed or experience sleep disturbances, but these results were not significant.

    So you did not show this. #statistics #psychology

    https://twitter.com/PsyPost/status/1529207497457733633
    \ No newline at end of file +
    Gijs van Dam
    Gijs van Dam

    > one study showed that older individuals who worked beyond the age of 62 were less likely to be depressed or experience sleep disturbances, but these results were not significant.

    So you did not show this. #statistics #psychology

    https://twitter.com/PsyPost/status/1529207497457733633
    \ No newline at end of file diff --git a/repost/2022/06/09-24377/index.html b/repost/2022/06/09-24377/index.html index 68130bf4..344dd041 100644 --- a/repost/2022/06/09-24377/index.html +++ b/repost/2022/06/09-24377/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/repost/2022/06/13-46841/index.html b/repost/2022/06/13-46841/index.html index 1d55f83f..d884176e 100644 --- a/repost/2022/06/13-46841/index.html +++ b/repost/2022/06/13-46841/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/repost/2022/06/16-3920/index.html b/repost/2022/06/16-3920/index.html index 5608bbfd..00e415e2 100644 --- a/repost/2022/06/16-3920/index.html +++ b/repost/2022/06/16-3920/index.html @@ -1 +1 @@ -
    Gijs van Dam
    \ No newline at end of file +
    Gijs van Dam
    \ No newline at end of file diff --git a/reposts/index.html b/reposts/index.html index cef3776e..3f238711 100644 --- a/reposts/index.html +++ b/reposts/index.html @@ -1 +1 @@ -Gijs van Dam
    Gijs van Dam
    \ No newline at end of file +Gijs van Dam
    Gijs van Dam
    \ No newline at end of file diff --git a/research/index.html b/research/index.html index 1376ce9d..9850f139 100644 --- a/research/index.html +++ b/research/index.html @@ -1 +1 @@ -Research
    Gijs van Dam

    Research

    Papers

    yearpaper
    2022van Dam, G. & Kadir, R. A. (2022). Hiding Payments in Lightning Network with Approximate Differentially Private Payment Channels, in Computers & Security, vol. 115, Apr. 2022, doi: 10.1016/j.cose.2022.102623
    2020van Dam G., Kadir R.A., Nohuddin P.N.E., Zaman H.B. (2020) Improvements of the Balance Discovery Attack on Lightning Network Payment Channels. In: Hölbl M., Rannenberg K., Welzer T. (eds) ICT Systems Security and Privacy Protection. SEC 2020. IFIP Advances in Information and Communication Technology, vol 580. Springer, Cham. doi: 10.1007/978-3-030-58201-2_21

    Preprints

    yearpaper
    2019van Dam, G., Kadir, R. A., Nohuddin, P. N. E., & Zaman, H. B. (2019). Improvements of the Balance Discovery Attack on Lightning Network Payment Channels. Cryptology ePrint Archive, Report 2019/1385. https://ia.cr/2019/1385 (peer reviewed version)

    Talks

    yeartalk
    2022Understanding Bitcoin Series: Payment Split & Switch plugin demo, Bitcoiner Malaysia, Kuala Lumpur
    2021Differential private payment channels in Lightning Network, Bitcoin Sydney Socratic Seminar (video)
    2021Privacy and Security Risks in the Lightning Network, National University of Singapore
    2020Improvements of the Balance Discovery Attack on Lightning Network Payment Channels, IFIP Information Security Conference & Privacy Conference
    2018Analyzing Behavioral Heuristics of Pseudo Anonymity, Blockchain Developers Malaysia Meetup

    Activities

    yearactivity
    2021Master of Ceremonies at the 1st International Postgraduate Seminar on Industrial Revolution 4.0 (IPSIR4.0)
    2019Liaison, 6th International Visual Informatics Conference (IVIC'19)
    2018Committee Member, 4th Visual Informatics International Seminar (VIIS2018)
    2017 - presentBlockchain Developers Malaysia Meetup

    White papers

    yearwhite paper
    2014Beentjes, R., van Dam, G., Vlap, A. van Vlijmen & J., te Wierik, B. Your company future-proof with ecommerce (dutch)

    Grants

    yearwhite paper
    2020Beneficiary of student grant for the Financial Cryptography and Data Security International Conference 2020, Kota Kinabalu, Sabah, Malaysia
    \ No newline at end of file +Research
    Gijs van Dam

    Research

    Papers

    yearpaper
    2022van Dam, G. & Kadir, R. A. (2022). Hiding Payments in Lightning Network with Approximate Differentially Private Payment Channels, in Computers & Security, vol. 115, Apr. 2022, doi: 10.1016/j.cose.2022.102623
    2020van Dam G., Kadir R.A., Nohuddin P.N.E., Zaman H.B. (2020) Improvements of the Balance Discovery Attack on Lightning Network Payment Channels. In: Hölbl M., Rannenberg K., Welzer T. (eds) ICT Systems Security and Privacy Protection. SEC 2020. IFIP Advances in Information and Communication Technology, vol 580. Springer, Cham. doi: 10.1007/978-3-030-58201-2_21

    Preprints

    yearpaper
    2019van Dam, G., Kadir, R. A., Nohuddin, P. N. E., & Zaman, H. B. (2019). Improvements of the Balance Discovery Attack on Lightning Network Payment Channels. Cryptology ePrint Archive, Report 2019/1385. https://ia.cr/2019/1385 (peer reviewed version)

    Talks

    yeartalk
    2022Understanding Bitcoin Series: Payment Split & Switch plugin demo, Bitcoiner Malaysia, Kuala Lumpur
    2021Differential private payment channels in Lightning Network, Bitcoin Sydney Socratic Seminar (video)
    2021Privacy and Security Risks in the Lightning Network, National University of Singapore
    2020Improvements of the Balance Discovery Attack on Lightning Network Payment Channels, IFIP Information Security Conference & Privacy Conference
    2018Analyzing Behavioral Heuristics of Pseudo Anonymity, Blockchain Developers Malaysia Meetup

    Activities

    yearactivity
    2021Master of Ceremonies at the 1st International Postgraduate Seminar on Industrial Revolution 4.0 (IPSIR4.0)
    2019Liaison, 6th International Visual Informatics Conference (IVIC'19)
    2018Committee Member, 4th Visual Informatics International Seminar (VIIS2018)
    2017 - presentBlockchain Developers Malaysia Meetup

    White papers

    yearwhite paper
    2014Beentjes, R., van Dam, G., Vlap, A. van Vlijmen & J., te Wierik, B. Your company future-proof with ecommerce (dutch)

    Grants

    yearwhite paper
    2020Beneficiary of student grant for the Financial Cryptography and Data Security International Conference 2020, Kota Kinabalu, Sabah, Malaysia
    \ No newline at end of file diff --git a/resume/index.html b/resume/index.html index 24a60e76..e7a81818 100644 --- a/resume/index.html +++ b/resume/index.html @@ -1 +1 @@ -Resume
    Gijs van Dam

    Resume

    Professional experience

    yearposition
    2017-presentFreelance IT consultant, Kuala Lumpur, Malaysia
    2002-presentFounder/Owner, Mindbus Webdevelopment, Leiden, The Netherlands/Lisbon, Portugal
    2000-2002Project Manager, Valoris, The Hague, The Netherlands/Antwerp, Belgium
    2000-2000Web Developer, Websilon, The Hague, The Netherlands
    1999-2000Web Developer, Matchcare, Utrecht, The Netherlands
    1997-2000Web Master, Faculty of Veterinary Science, Utrecht University, The Netherlands

    Education

    yeareducation
    2018-presentPhD Computer Science, National University of Malaysia, Institute of IR 4.0, Malaysia (ongoing)
    1995-2000MSc Veterinary Science, Utrecht University, The Netherlands

    Publications & Whitepapers

    yearpublication
    2022van Dam, G. & Kadir, R. A. (2022). Hiding Payments in Lightning Network with Approximate Differentially Private Payment Channels, in Computers & Security, 2022 (in press)
    2020van Dam, G., Kadir, R. A., Nohuddin, P. N. E., & Zaman, H. B. (2020). Improvements of the Balance Discovery Attack on Lightning Network Payment Channels (pp. 313-323). https://doi.org/10.1007/978-3-030-58201-2_21
    2014Whitepaper: Your company future-proof with ecommerce (dutch)

    Training & Certification

    yeartraining/certification
    2021Lightning Network Seminar Series, Chaincode Labs, New York (online)
    2021An Introduction To Probability In Computing, IIT Madras (online)
    2020iFintell workshop series: R language, Python, STATA & MATLAB, Big Data analytics, AI & ML
    2018Workshop Microsoft Azure, Jupyter Notebook and R
    2017EASP Workshop Multi-level Modelling, University of Nottingham Malaysia
    2012-2013Fast Forward Entrepreneurial Development, ScaleUp Company
    2010Google Analytics Individual Qualification
    2006Designing and Implementing Databases with Microsoft SQL Server 2000 Enterprise Edition
    2004PRINCE2 Foundation
    2002Designing and Implementing Data Warehouses with Microsoft SQL Server 7.0
    2001Valoris High Potential program, Developing managerial skills
    \ No newline at end of file +Resume
    Gijs van Dam

    Resume

    Professional experience

    yearposition
    2017-presentFreelance IT consultant, Kuala Lumpur, Malaysia
    2002-presentFounder/Owner, Mindbus Webdevelopment, Leiden, The Netherlands/Lisbon, Portugal
    2000-2002Project Manager, Valoris, The Hague, The Netherlands/Antwerp, Belgium
    2000-2000Web Developer, Websilon, The Hague, The Netherlands
    1999-2000Web Developer, Matchcare, Utrecht, The Netherlands
    1997-2000Web Master, Faculty of Veterinary Science, Utrecht University, The Netherlands

    Education

    yeareducation
    2018-presentPhD Computer Science, National University of Malaysia, Institute of IR 4.0, Malaysia (ongoing)
    1995-2000MSc Veterinary Science, Utrecht University, The Netherlands

    Publications & Whitepapers

    yearpublication
    2022van Dam, G. & Kadir, R. A. (2022). Hiding Payments in Lightning Network with Approximate Differentially Private Payment Channels, in Computers & Security, 2022 (in press)
    2020van Dam, G., Kadir, R. A., Nohuddin, P. N. E., & Zaman, H. B. (2020). Improvements of the Balance Discovery Attack on Lightning Network Payment Channels (pp. 313-323). https://doi.org/10.1007/978-3-030-58201-2_21
    2014Whitepaper: Your company future-proof with ecommerce (dutch)

    Training & Certification

    yeartraining/certification
    2021Lightning Network Seminar Series, Chaincode Labs, New York (online)
    2021An Introduction To Probability In Computing, IIT Madras (online)
    2020iFintell workshop series: R language, Python, STATA & MATLAB, Big Data analytics, AI & ML
    2018Workshop Microsoft Azure, Jupyter Notebook and R
    2017EASP Workshop Multi-level Modelling, University of Nottingham Malaysia
    2012-2013Fast Forward Entrepreneurial Development, ScaleUp Company
    2010Google Analytics Individual Qualification
    2006Designing and Implementing Databases with Microsoft SQL Server 2000 Enterprise Edition
    2004PRINCE2 Foundation
    2002Designing and Implementing Data Warehouses with Microsoft SQL Server 7.0
    2001Valoris High Potential program, Developing managerial skills
    \ No newline at end of file diff --git a/rss.xml b/rss.xml index 367ffda8..e51656ff 100644 --- a/rss.xml +++ b/rss.xml @@ -1,4 +1,4 @@ -<![CDATA[Gijs van Dam on privacy, programming and crypto research]]>https://www.gijsvandam.nlmetalsmith-feedMon, 24 Jul 2023 10:32:50 GMT<![CDATA[Why does signature half aggregation break adaptor signatures?]]>There is this cool trick you can do with Schnorr signatures. It is called Adaptor Signature (AS). An adaptor signature is an extra signature that, combined with the original signature, allow for revealing a value that was previously hidden. You can use this trick to solve trust problems as they appear in atomic swaps, coin swaps and Discreet Log Contracts (DLCs).

    +<![CDATA[Gijs van Dam on privacy, programming and crypto research]]>https://www.gijsvandam.nlmetalsmith-feedWed, 26 Jul 2023 10:13:01 GMT<![CDATA[Why does signature half aggregation break adaptor signatures?]]>There is this cool trick you can do with Schnorr signatures. It is called Adaptor Signature (AS). An adaptor signature is an extra signature that, combined with the original signature, allow for revealing a value that was previously hidden. You can use this trick to solve trust problems as they appear in atomic swaps, coin swaps and Discreet Log Contracts (DLCs).

    Signature Aggregation (SA) is a way to aggregate multiple signatures into a single signature. The single aggregate signature is smaller (in bytes) than the original signatures combined. It reduces transaction weight, meaning we can have more transactions per block, which is always a good thing. It's like 7zip for transactions. Signature Half Aggregation is a variant of SA that only aggregates half of each signature. It offers less compression, but it has the benefit of not requiring any interaction with the signers, whereas full aggregation does require cooperation of all the signers.

    So two cool tricks, but the latter breaks the former when it is used for blockwide signature aggregation. This article explains the math behind it and why SA breaks AS

    ]]>
    https://www.gijsvandam.nl/post/why-does-signature-half-aggregation-break-adaptor-signatureshttps://www.gijsvandam.nl/post/why-does-signature-half-aggregation-break-adaptor-signaturesMon, 04 Apr 2022 00:00:00 GMT
    <![CDATA[How do payments in Lightning Network work?]]>Lightning Network is a peer-to-peer payment network that runs on top of the Bitcoin Blockchain. Because it runs on top of the Blockchain it is called a layer-two solution, which groups it together with other solutions that have this property of being built on top of a Blockchain. Layer One is the base layer, where the Blockchain lives. Because of the inherent properties of Layer One, it is impossible to process large amounts of transactions in that layer. The Bitcoin Blockchain can famously process a mere seven transactions per second on average. This constraint was the main impetus for the creation of Layer Two solutions. Lightning Network, being a Layer Two solution, allows for near instant transactions, that can easily scale to millions of transactions per second.

    ]]>
    https://www.gijsvandam.nl/post/how-do-payments-in-lightning-network-workhttps://www.gijsvandam.nl/post/how-do-payments-in-lightning-network-workFri, 11 Mar 2022 00:00:00 GMT
    <![CDATA[Image conversion, resizing and compression with WebAssembly]]>Image conversion and resizing for the web can be quite fiddly. Take responsive websites for instance. You want to show a smaller version of your image on smaller devices: You don't need to download a 1080px wide image to show on a 360px wide device, especially since that device is likely constrained in the amount of bandwidth it has. Then again when your website is shown on an ultra HD screen with 3840x2160 resolution 1080 is maybe even too small.

    Apart from multiple sizes, you also want to offer multiple formats. Modern browsers support new(er) image formats like webp and avif offer better compression for comparable image quality. Using these formats you can decrease the total download size of your page, while improving the overall experience for the user. diff --git a/topics/bash/index.html b/topics/bash/index.html index d79469e3..f6063178 100644 --- a/topics/bash/index.html +++ b/topics/bash/index.html @@ -1 +1 @@ -Posts for bash

    Gijs van Dam
    • Measuring your writing progress with a git word count

      5 minute read

      Writing a scientific paper is hard. Doing your PhD is hard. Writing your thesis is hard. And to make me feel even more miserable I decided to measure my progress by counting the net change in words I achieve throughout each day. I am by no means a productivity guru and I don't know whether word count is a useful indicator for measuring the progress of a paper. That being said, it is a reality check to see how fast my work is progressing. So without further ado here's the Powershell command that outputs the wordcount for the last 25 days based on git commits. (For the bash command, see the bottom of this post)

      for($i = 0; $i -lt 25; $i++){$j = $i + 1; Write-Host (get-date (get-date).addDays(-$i) -UFormat "%Y%m%d") ((git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- "***.md"| Select-String -Pattern "^\+.*" | Measure-Object -word | select -ExpandProperty Words) - (git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"  -- "***.md"| Select-String -Pattern "^-.*" | Measure-Object -word | select -ExpandProperty Words)) }
    \ No newline at end of file +Posts for bash
    Gijs van Dam
    • Measuring your writing progress with a git word count

      5 minute read

      Writing a scientific paper is hard. Doing your PhD is hard. Writing your thesis is hard. And to make me feel even more miserable I decided to measure my progress by counting the net change in words I achieve throughout each day. I am by no means a productivity guru and I don't know whether word count is a useful indicator for measuring the progress of a paper. That being said, it is a reality check to see how fast my work is progressing. So without further ado here's the Powershell command that outputs the wordcount for the last 25 days based on git commits. (For the bash command, see the bottom of this post)

      for($i = 0; $i -lt 25; $i++){$j = $i + 1; Write-Host (get-date (get-date).addDays(-$i) -UFormat "%Y%m%d") ((git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- "***.md"| Select-String -Pattern "^\+.*" | Measure-Object -word | select -ExpandProperty Words) - (git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"  -- "***.md"| Select-String -Pattern "^-.*" | Measure-Object -word | select -ExpandProperty Words)) }
    \ No newline at end of file diff --git a/topics/bitcoin/index.html b/topics/bitcoin/index.html index 7998a961..7c92c985 100644 --- a/topics/bitcoin/index.html +++ b/topics/bitcoin/index.html @@ -1 +1 @@ -Posts for bitcoin
    Gijs van Dam
    • Why does signature half aggregation break adaptor signatures?

      6 minute read

      There is this cool trick you can do with Schnorr signatures. It is called Adaptor Signature (AS). An adaptor signature is an extra signature that, combined with the original signature, allow for revealing a value that was previously hidden. You can use this trick to solve trust problems as they appear in atomic swaps, coin swaps and Discreet Log Contracts (DLCs).

      Signature Aggregation (SA) is a way to aggregate multiple signatures into a single signature. The single aggregate signature is smaller (in bytes) than the original signatures combined. It reduces transaction weight, meaning we can have more transactions per block, which is always a good thing. It's like 7zip for transactions. Signature Half Aggregation is a variant of SA that only aggregates half of each signature. It offers less compression, but it has the benefit of not requiring any interaction with the signers, whereas full aggregation does require cooperation of all the signers.

      So two cool tricks, but the latter breaks the former when it is used for blockwide signature aggregation. This article explains the math behind it and why SA breaks AS

    • How do payments in Lightning Network work?

      7 minute read

      Lightning Network is a peer-to-peer payment network that runs on top of the Bitcoin Blockchain. Because it runs on top of the Blockchain it is called a layer-two solution, which groups it together with other solutions that have this property of being built on top of a Blockchain. Layer One is the base layer, where the Blockchain lives. Because of the inherent properties of Layer One, it is impossible to process large amounts of transactions in that layer. The Bitcoin Blockchain can famously process a mere seven transactions per second on average. This constraint was the main impetus for the creation of Layer Two solutions. Lightning Network, being a Layer Two solution, allows for near instant transactions, that can easily scale to millions of transactions per second.

    • Building Bitcoin Core On Windows 10

      2 minute read

      I've been following Bitcoin and more importantly the Blockchain from the sidelines for a few years now, but I wanted to get my hands dirty. Obviously I could just download the Bitcoin Core executables from bitcoin.org, but I always feel it gives me more insight if I build something myself. Also it's was a nice test case for Bash on Windows.

    \ No newline at end of file +Posts for bitcoin
    Gijs van Dam
    • Why does signature half aggregation break adaptor signatures?

      6 minute read

      There is this cool trick you can do with Schnorr signatures. It is called Adaptor Signature (AS). An adaptor signature is an extra signature that, combined with the original signature, allow for revealing a value that was previously hidden. You can use this trick to solve trust problems as they appear in atomic swaps, coin swaps and Discreet Log Contracts (DLCs).

      Signature Aggregation (SA) is a way to aggregate multiple signatures into a single signature. The single aggregate signature is smaller (in bytes) than the original signatures combined. It reduces transaction weight, meaning we can have more transactions per block, which is always a good thing. It's like 7zip for transactions. Signature Half Aggregation is a variant of SA that only aggregates half of each signature. It offers less compression, but it has the benefit of not requiring any interaction with the signers, whereas full aggregation does require cooperation of all the signers.

      So two cool tricks, but the latter breaks the former when it is used for blockwide signature aggregation. This article explains the math behind it and why SA breaks AS

    • How do payments in Lightning Network work?

      7 minute read

      Lightning Network is a peer-to-peer payment network that runs on top of the Bitcoin Blockchain. Because it runs on top of the Blockchain it is called a layer-two solution, which groups it together with other solutions that have this property of being built on top of a Blockchain. Layer One is the base layer, where the Blockchain lives. Because of the inherent properties of Layer One, it is impossible to process large amounts of transactions in that layer. The Bitcoin Blockchain can famously process a mere seven transactions per second on average. This constraint was the main impetus for the creation of Layer Two solutions. Lightning Network, being a Layer Two solution, allows for near instant transactions, that can easily scale to millions of transactions per second.

    • Building Bitcoin Core On Windows 10

      2 minute read

      I've been following Bitcoin and more importantly the Blockchain from the sidelines for a few years now, but I wanted to get my hands dirty. Obviously I could just download the Bitcoin Core executables from bitcoin.org, but I always feel it gives me more insight if I build something myself. Also it's was a nice test case for Bash on Windows.

    \ No newline at end of file diff --git a/topics/boilerplate-paper/index.html b/topics/boilerplate-paper/index.html index 6915a9fc..41cabc22 100644 --- a/topics/boilerplate-paper/index.html +++ b/topics/boilerplate-paper/index.html @@ -1 +1 @@ -Posts for boilerplate paper
    Gijs van Dam
    • Measuring your writing progress with a git word count

      5 minute read

      Writing a scientific paper is hard. Doing your PhD is hard. Writing your thesis is hard. And to make me feel even more miserable I decided to measure my progress by counting the net change in words I achieve throughout each day. I am by no means a productivity guru and I don't know whether word count is a useful indicator for measuring the progress of a paper. That being said, it is a reality check to see how fast my work is progressing. So without further ado here's the Powershell command that outputs the wordcount for the last 25 days based on git commits. (For the bash command, see the bottom of this post)

      for($i = 0; $i -lt 25; $i++){$j = $i + 1; Write-Host (get-date (get-date).addDays(-$i) -UFormat "%Y%m%d") ((git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- "***.md"| Select-String -Pattern "^\+.*" | Measure-Object -word | select -ExpandProperty Words) - (git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"  -- "***.md"| Select-String -Pattern "^-.*" | Measure-Object -word | select -ExpandProperty Words)) }
    • Pandoc-filter for highlighting to-dos in LaTeX output

      2 minute read

      While writing my papers I try not to get bogged down too much. So if a paragraph doens't flow right I just type TODO: rewrite on the line below it, and continue writing. When I think of something that I shouldn't forget, like an extra analysis to run I just write it down as a todo in the running text of my paper. I also write thoughts on my paper as a todo. Ideas on structure, whether I should maybe rearrange paragraphs or approach a subject differently, it all ends up as a todo in the running text.

      When running the VSCode task for converting my paper to PDF (using Pandoc) it puts all the todos into the running text. That's fine by me, it helps as an extra reminder that stuff still needs to happen. But I wanted the todos to be visually different from the running text, so that it stands apart and doesn't confuse people who are reading my draft. That is where my Pandoc filter comes into play.

    • Super easy tip for slide animation with Pandoc and reveal.js

      2 minute read

      I found this super easy alternative way to animate your slides with reveal.js that works out of the box with Markdown and Pandoc. Here is how to do it.

      Last week I had to give a progress presentation about the current state of my PhD, and I can whip those up in no time. I use Boilerplate Paper not only for writing my papers, but also for presentations like this.

      I write the presentation in Markdown and then convert it to reveal.js. But sometimes you want something else than the default sliding transition that reveal.js provides.

    \ No newline at end of file +Posts for boilerplate paper
    Gijs van Dam
    • Measuring your writing progress with a git word count

      5 minute read

      Writing a scientific paper is hard. Doing your PhD is hard. Writing your thesis is hard. And to make me feel even more miserable I decided to measure my progress by counting the net change in words I achieve throughout each day. I am by no means a productivity guru and I don't know whether word count is a useful indicator for measuring the progress of a paper. That being said, it is a reality check to see how fast my work is progressing. So without further ado here's the Powershell command that outputs the wordcount for the last 25 days based on git commits. (For the bash command, see the bottom of this post)

      for($i = 0; $i -lt 25; $i++){$j = $i + 1; Write-Host (get-date (get-date).addDays(-$i) -UFormat "%Y%m%d") ((git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- "***.md"| Select-String -Pattern "^\+.*" | Measure-Object -word | select -ExpandProperty Words) - (git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"  -- "***.md"| Select-String -Pattern "^-.*" | Measure-Object -word | select -ExpandProperty Words)) }
    • Pandoc-filter for highlighting to-dos in LaTeX output

      2 minute read

      While writing my papers I try not to get bogged down too much. So if a paragraph doens't flow right I just type TODO: rewrite on the line below it, and continue writing. When I think of something that I shouldn't forget, like an extra analysis to run I just write it down as a todo in the running text of my paper. I also write thoughts on my paper as a todo. Ideas on structure, whether I should maybe rearrange paragraphs or approach a subject differently, it all ends up as a todo in the running text.

      When running the VSCode task for converting my paper to PDF (using Pandoc) it puts all the todos into the running text. That's fine by me, it helps as an extra reminder that stuff still needs to happen. But I wanted the todos to be visually different from the running text, so that it stands apart and doesn't confuse people who are reading my draft. That is where my Pandoc filter comes into play.

    • Super easy tip for slide animation with Pandoc and reveal.js

      2 minute read

      I found this super easy alternative way to animate your slides with reveal.js that works out of the box with Markdown and Pandoc. Here is how to do it.

      Last week I had to give a progress presentation about the current state of my PhD, and I can whip those up in no time. I use Boilerplate Paper not only for writing my papers, but also for presentations like this.

      I write the presentation in Markdown and then convert it to reveal.js. But sometimes you want something else than the default sliding transition that reveal.js provides.

    \ No newline at end of file diff --git a/topics/c-lightning/index.html b/topics/c-lightning/index.html index 0c6320ec..b0c1b94f 100644 --- a/topics/c-lightning/index.html +++ b/topics/c-lightning/index.html @@ -1,2 +1,2 @@ Posts for c-lightning
    Gijs van Dam
    • Running c-lightning in Simverse with plugins

      4 minute read

      The goal is to run c-lightning with plugins in a local testing cluster. For my cluster I use Simverse. Simverse allows for additional command line arguments to be passed to lightningd, so it should be possible to run lightningd with the plugin argument.

      Let's first clone our plugin. We will be using one of the plugins that are available through Lightningd on Github.

      cd ~\simverse\_repos
      -git clone https://github.com/lightningd/plugins.git --depth 1

      We put the plugin in the _repos folder, because it is assumed that the plugin is there when the cluster is being build. (Also: throughout this article we assume your simverse folder is inside your home folder. If that is not the case, adjust it accordingly)

      Since all nodes in Simverse run inside Docker containers, that plugin-file should be made available inside the Docker context folder. The _repos folder is not part of that context (each container gets its own context) so we have to copy the file from the _repos folder to the Docker context folder. Luckily Simverse works with the concept of recipes. A recipe describes how your cluster should look like. A recipe is a bash script that uses a library called cookbook that can be used to build your cluster step-by-step. Since it is "just" a bash script, you can do anything bash can do to tweak your cluster.

      We will create a recipe that creates a cluster with three c-lightning nodes, running on a bitcoind back-end.

    \ No newline at end of file +git clone https://github.com/lightningd/plugins.git --depth 1

    We put the plugin in the _repos folder, because it is assumed that the plugin is there when the cluster is being build. (Also: throughout this article we assume your simverse folder is inside your home folder. If that is not the case, adjust it accordingly)

    Since all nodes in Simverse run inside Docker containers, that plugin-file should be made available inside the Docker context folder. The _repos folder is not part of that context (each container gets its own context) so we have to copy the file from the _repos folder to the Docker context folder. Luckily Simverse works with the concept of recipes. A recipe describes how your cluster should look like. A recipe is a bash script that uses a library called cookbook that can be used to build your cluster step-by-step. Since it is "just" a bash script, you can do anything bash can do to tweak your cluster.

    We will create a recipe that creates a cluster with three c-lightning nodes, running on a bitcoind back-end.

    \ No newline at end of file diff --git a/topics/crypto/index.html b/topics/crypto/index.html index 7410c151..79120ef7 100644 --- a/topics/crypto/index.html +++ b/topics/crypto/index.html @@ -1 +1 @@ -Posts for crypto
    Gijs van Dam
    \ No newline at end of file +Posts for crypto
    Gijs van Dam
    \ No newline at end of file diff --git a/topics/cryptography/index.html b/topics/cryptography/index.html index 1a1b37c1..9d4e8c13 100644 --- a/topics/cryptography/index.html +++ b/topics/cryptography/index.html @@ -1 +1 @@ -Posts for cryptography
    Gijs van Dam
    • Why does signature half aggregation break adaptor signatures?

      6 minute read

      There is this cool trick you can do with Schnorr signatures. It is called Adaptor Signature (AS). An adaptor signature is an extra signature that, combined with the original signature, allow for revealing a value that was previously hidden. You can use this trick to solve trust problems as they appear in atomic swaps, coin swaps and Discreet Log Contracts (DLCs).

      Signature Aggregation (SA) is a way to aggregate multiple signatures into a single signature. The single aggregate signature is smaller (in bytes) than the original signatures combined. It reduces transaction weight, meaning we can have more transactions per block, which is always a good thing. It's like 7zip for transactions. Signature Half Aggregation is a variant of SA that only aggregates half of each signature. It offers less compression, but it has the benefit of not requiring any interaction with the signers, whereas full aggregation does require cooperation of all the signers.

      So two cool tricks, but the latter breaks the former when it is used for blockwide signature aggregation. This article explains the math behind it and why SA breaks AS

    • How do payments in Lightning Network work?

      7 minute read

      Lightning Network is a peer-to-peer payment network that runs on top of the Bitcoin Blockchain. Because it runs on top of the Blockchain it is called a layer-two solution, which groups it together with other solutions that have this property of being built on top of a Blockchain. Layer One is the base layer, where the Blockchain lives. Because of the inherent properties of Layer One, it is impossible to process large amounts of transactions in that layer. The Bitcoin Blockchain can famously process a mere seven transactions per second on average. This constraint was the main impetus for the creation of Layer Two solutions. Lightning Network, being a Layer Two solution, allows for near instant transactions, that can easily scale to millions of transactions per second.

    \ No newline at end of file +Posts for cryptography
    Gijs van Dam
    • Why does signature half aggregation break adaptor signatures?

      6 minute read

      There is this cool trick you can do with Schnorr signatures. It is called Adaptor Signature (AS). An adaptor signature is an extra signature that, combined with the original signature, allow for revealing a value that was previously hidden. You can use this trick to solve trust problems as they appear in atomic swaps, coin swaps and Discreet Log Contracts (DLCs).

      Signature Aggregation (SA) is a way to aggregate multiple signatures into a single signature. The single aggregate signature is smaller (in bytes) than the original signatures combined. It reduces transaction weight, meaning we can have more transactions per block, which is always a good thing. It's like 7zip for transactions. Signature Half Aggregation is a variant of SA that only aggregates half of each signature. It offers less compression, but it has the benefit of not requiring any interaction with the signers, whereas full aggregation does require cooperation of all the signers.

      So two cool tricks, but the latter breaks the former when it is used for blockwide signature aggregation. This article explains the math behind it and why SA breaks AS

    • How do payments in Lightning Network work?

      7 minute read

      Lightning Network is a peer-to-peer payment network that runs on top of the Bitcoin Blockchain. Because it runs on top of the Blockchain it is called a layer-two solution, which groups it together with other solutions that have this property of being built on top of a Blockchain. Layer One is the base layer, where the Blockchain lives. Because of the inherent properties of Layer One, it is impossible to process large amounts of transactions in that layer. The Bitcoin Blockchain can famously process a mere seven transactions per second on average. This constraint was the main impetus for the creation of Layer Two solutions. Lightning Network, being a Layer Two solution, allows for near instant transactions, that can easily scale to millions of transactions per second.

    \ No newline at end of file diff --git a/topics/git/index.html b/topics/git/index.html index dec1af0d..5c2700aa 100644 --- a/topics/git/index.html +++ b/topics/git/index.html @@ -1 +1 @@ -Posts for git
    Gijs van Dam
    • Measuring your writing progress with a git word count

      5 minute read

      Writing a scientific paper is hard. Doing your PhD is hard. Writing your thesis is hard. And to make me feel even more miserable I decided to measure my progress by counting the net change in words I achieve throughout each day. I am by no means a productivity guru and I don't know whether word count is a useful indicator for measuring the progress of a paper. That being said, it is a reality check to see how fast my work is progressing. So without further ado here's the Powershell command that outputs the wordcount for the last 25 days based on git commits. (For the bash command, see the bottom of this post)

      for($i = 0; $i -lt 25; $i++){$j = $i + 1; Write-Host (get-date (get-date).addDays(-$i) -UFormat "%Y%m%d") ((git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- "***.md"| Select-String -Pattern "^\+.*" | Measure-Object -word | select -ExpandProperty Words) - (git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"  -- "***.md"| Select-String -Pattern "^-.*" | Measure-Object -word | select -ExpandProperty Words)) }
    \ No newline at end of file +Posts for git
    Gijs van Dam
    • Measuring your writing progress with a git word count

      5 minute read

      Writing a scientific paper is hard. Doing your PhD is hard. Writing your thesis is hard. And to make me feel even more miserable I decided to measure my progress by counting the net change in words I achieve throughout each day. I am by no means a productivity guru and I don't know whether word count is a useful indicator for measuring the progress of a paper. That being said, it is a reality check to see how fast my work is progressing. So without further ado here's the Powershell command that outputs the wordcount for the last 25 days based on git commits. (For the bash command, see the bottom of this post)

      for($i = 0; $i -lt 25; $i++){$j = $i + 1; Write-Host (get-date (get-date).addDays(-$i) -UFormat "%Y%m%d") ((git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- "***.md"| Select-String -Pattern "^\+.*" | Measure-Object -word | select -ExpandProperty Words) - (git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"  -- "***.md"| Select-String -Pattern "^-.*" | Measure-Object -word | select -ExpandProperty Words)) }
    \ No newline at end of file diff --git a/topics/indieweb/index.html b/topics/indieweb/index.html index bec85d30..5a922ab6 100644 --- a/topics/indieweb/index.html +++ b/topics/indieweb/index.html @@ -1 +1 @@ -Posts for indieweb
    Gijs van Dam
    \ No newline at end of file +Posts for indieweb
    Gijs van Dam
    \ No newline at end of file diff --git a/topics/janos/index.html b/topics/janos/index.html index 0f645d27..4edc9193 100644 --- a/topics/janos/index.html +++ b/topics/janos/index.html @@ -1 +1 @@ -Posts for janos
    Gijs van Dam
    • Image conversion, resizing and compression with WebAssembly

      5 minute read

      Image conversion and resizing for the web can be quite fiddly. Take responsive websites for instance. You want to show a smaller version of your image on smaller devices: You don't need to download a 1080px wide image to show on a 360px wide device, especially since that device is likely constrained in the amount of bandwidth it has. Then again when your website is shown on an ultra HD screen with 3840x2160 resolution 1080 is maybe even too small.

      Apart from multiple sizes, you also want to offer multiple formats. Modern browsers support new(er) image formats like webp and avif offer better compression for comparable image quality. Using these formats you can decrease the total download size of your page, while improving the overall experience for the user. But you just can't assume (yet) that all browsers support those newer formats, so you have to provide older formats as a fallback option. All in all the amount of different files you have to offer for just a single image on a web page starts to become quite large and the whole thing becomes, like I said, fiddly.

    \ No newline at end of file +Posts for janos
    Gijs van Dam
    • Image conversion, resizing and compression with WebAssembly

      5 minute read

      Image conversion and resizing for the web can be quite fiddly. Take responsive websites for instance. You want to show a smaller version of your image on smaller devices: You don't need to download a 1080px wide image to show on a 360px wide device, especially since that device is likely constrained in the amount of bandwidth it has. Then again when your website is shown on an ultra HD screen with 3840x2160 resolution 1080 is maybe even too small.

      Apart from multiple sizes, you also want to offer multiple formats. Modern browsers support new(er) image formats like webp and avif offer better compression for comparable image quality. Using these formats you can decrease the total download size of your page, while improving the overall experience for the user. But you just can't assume (yet) that all browsers support those newer formats, so you have to provide older formats as a fallback option. All in all the amount of different files you have to offer for just a single image on a web page starts to become quite large and the whole thing becomes, like I said, fiddly.

    \ No newline at end of file diff --git a/topics/latex/index.html b/topics/latex/index.html index 5cafce05..4539fc24 100644 --- a/topics/latex/index.html +++ b/topics/latex/index.html @@ -1 +1 @@ -Posts for LaTeX
    Gijs van Dam
    • Pandoc-filter for highlighting to-dos in LaTeX output

      2 minute read

      While writing my papers I try not to get bogged down too much. So if a paragraph doens't flow right I just type TODO: rewrite on the line below it, and continue writing. When I think of something that I shouldn't forget, like an extra analysis to run I just write it down as a todo in the running text of my paper. I also write thoughts on my paper as a todo. Ideas on structure, whether I should maybe rearrange paragraphs or approach a subject differently, it all ends up as a todo in the running text.

      When running the VSCode task for converting my paper to PDF (using Pandoc) it puts all the todos into the running text. That's fine by me, it helps as an extra reminder that stuff still needs to happen. But I wanted the todos to be visually different from the running text, so that it stands apart and doesn't confuse people who are reading my draft. That is where my Pandoc filter comes into play.

    \ No newline at end of file +Posts for LaTeX
    Gijs van Dam
    • Pandoc-filter for highlighting to-dos in LaTeX output

      2 minute read

      While writing my papers I try not to get bogged down too much. So if a paragraph doens't flow right I just type TODO: rewrite on the line below it, and continue writing. When I think of something that I shouldn't forget, like an extra analysis to run I just write it down as a todo in the running text of my paper. I also write thoughts on my paper as a todo. Ideas on structure, whether I should maybe rearrange paragraphs or approach a subject differently, it all ends up as a todo in the running text.

      When running the VSCode task for converting my paper to PDF (using Pandoc) it puts all the todos into the running text. That's fine by me, it helps as an extra reminder that stuff still needs to happen. But I wanted the todos to be visually different from the running text, so that it stands apart and doesn't confuse people who are reading my draft. That is where my Pandoc filter comes into play.

    \ No newline at end of file diff --git a/topics/lightning-network/index.html b/topics/lightning-network/index.html index 9a7a820a..270c1b47 100644 --- a/topics/lightning-network/index.html +++ b/topics/lightning-network/index.html @@ -1 +1 @@ -Posts for lightning network
    Gijs van Dam
    • Why does signature half aggregation break adaptor signatures?

      6 minute read

      There is this cool trick you can do with Schnorr signatures. It is called Adaptor Signature (AS). An adaptor signature is an extra signature that, combined with the original signature, allow for revealing a value that was previously hidden. You can use this trick to solve trust problems as they appear in atomic swaps, coin swaps and Discreet Log Contracts (DLCs).

      Signature Aggregation (SA) is a way to aggregate multiple signatures into a single signature. The single aggregate signature is smaller (in bytes) than the original signatures combined. It reduces transaction weight, meaning we can have more transactions per block, which is always a good thing. It's like 7zip for transactions. Signature Half Aggregation is a variant of SA that only aggregates half of each signature. It offers less compression, but it has the benefit of not requiring any interaction with the signers, whereas full aggregation does require cooperation of all the signers.

      So two cool tricks, but the latter breaks the former when it is used for blockwide signature aggregation. This article explains the math behind it and why SA breaks AS

    • How do payments in Lightning Network work?

      7 minute read

      Lightning Network is a peer-to-peer payment network that runs on top of the Bitcoin Blockchain. Because it runs on top of the Blockchain it is called a layer-two solution, which groups it together with other solutions that have this property of being built on top of a Blockchain. Layer One is the base layer, where the Blockchain lives. Because of the inherent properties of Layer One, it is impossible to process large amounts of transactions in that layer. The Bitcoin Blockchain can famously process a mere seven transactions per second on average. This constraint was the main impetus for the creation of Layer Two solutions. Lightning Network, being a Layer Two solution, allows for near instant transactions, that can easily scale to millions of transactions per second.

    \ No newline at end of file +Posts for lightning network
    Gijs van Dam
    • Why does signature half aggregation break adaptor signatures?

      6 minute read

      There is this cool trick you can do with Schnorr signatures. It is called Adaptor Signature (AS). An adaptor signature is an extra signature that, combined with the original signature, allow for revealing a value that was previously hidden. You can use this trick to solve trust problems as they appear in atomic swaps, coin swaps and Discreet Log Contracts (DLCs).

      Signature Aggregation (SA) is a way to aggregate multiple signatures into a single signature. The single aggregate signature is smaller (in bytes) than the original signatures combined. It reduces transaction weight, meaning we can have more transactions per block, which is always a good thing. It's like 7zip for transactions. Signature Half Aggregation is a variant of SA that only aggregates half of each signature. It offers less compression, but it has the benefit of not requiring any interaction with the signers, whereas full aggregation does require cooperation of all the signers.

      So two cool tricks, but the latter breaks the former when it is used for blockwide signature aggregation. This article explains the math behind it and why SA breaks AS

    • How do payments in Lightning Network work?

      7 minute read

      Lightning Network is a peer-to-peer payment network that runs on top of the Bitcoin Blockchain. Because it runs on top of the Blockchain it is called a layer-two solution, which groups it together with other solutions that have this property of being built on top of a Blockchain. Layer One is the base layer, where the Blockchain lives. Because of the inherent properties of Layer One, it is impossible to process large amounts of transactions in that layer. The Bitcoin Blockchain can famously process a mere seven transactions per second on average. This constraint was the main impetus for the creation of Layer Two solutions. Lightning Network, being a Layer Two solution, allows for near instant transactions, that can easily scale to millions of transactions per second.

    \ No newline at end of file diff --git a/topics/lnd/index.html b/topics/lnd/index.html index 95cef303..802d6b6c 100644 --- a/topics/lnd/index.html +++ b/topics/lnd/index.html @@ -1 +1 @@ -Posts for lnd
    Gijs van Dam
    • Debugging LND while running a local cluster

      4 minute read

      If you want to debug LND, or if you want to take a real deep dive into LND, you probably want to be able to set breakpoints in the source code to see what is actually happening. Not only that, you also want to have the node run in a local cluster of other nodes, so that you can perform some real Lightning actions like opening a channel and make payments. This post takes you through the setup I use based on Delve and Simverse.

    \ No newline at end of file +Posts for lnd
    Gijs van Dam
    • Debugging LND while running a local cluster

      4 minute read

      If you want to debug LND, or if you want to take a real deep dive into LND, you probably want to be able to set breakpoints in the source code to see what is actually happening. Not only that, you also want to have the node run in a local cluster of other nodes, so that you can perform some real Lightning actions like opening a channel and make payments. This post takes you through the setup I use based on Delve and Simverse.

    \ No newline at end of file diff --git a/topics/lua/index.html b/topics/lua/index.html index ddbc5eec..9277c5b8 100644 --- a/topics/lua/index.html +++ b/topics/lua/index.html @@ -1 +1 @@ -Posts for lua
    Gijs van Dam
    • Pandoc-filter for highlighting to-dos in LaTeX output

      2 minute read

      While writing my papers I try not to get bogged down too much. So if a paragraph doens't flow right I just type TODO: rewrite on the line below it, and continue writing. When I think of something that I shouldn't forget, like an extra analysis to run I just write it down as a todo in the running text of my paper. I also write thoughts on my paper as a todo. Ideas on structure, whether I should maybe rearrange paragraphs or approach a subject differently, it all ends up as a todo in the running text.

      When running the VSCode task for converting my paper to PDF (using Pandoc) it puts all the todos into the running text. That's fine by me, it helps as an extra reminder that stuff still needs to happen. But I wanted the todos to be visually different from the running text, so that it stands apart and doesn't confuse people who are reading my draft. That is where my Pandoc filter comes into play.

    \ No newline at end of file +Posts for lua
    Gijs van Dam
    • Pandoc-filter for highlighting to-dos in LaTeX output

      2 minute read

      While writing my papers I try not to get bogged down too much. So if a paragraph doens't flow right I just type TODO: rewrite on the line below it, and continue writing. When I think of something that I shouldn't forget, like an extra analysis to run I just write it down as a todo in the running text of my paper. I also write thoughts on my paper as a todo. Ideas on structure, whether I should maybe rearrange paragraphs or approach a subject differently, it all ends up as a todo in the running text.

      When running the VSCode task for converting my paper to PDF (using Pandoc) it puts all the todos into the running text. That's fine by me, it helps as an extra reminder that stuff still needs to happen. But I wanted the todos to be visually different from the running text, so that it stands apart and doesn't confuse people who are reading my draft. That is where my Pandoc filter comes into play.

    \ No newline at end of file diff --git a/topics/pandoc/index.html b/topics/pandoc/index.html index b5bf0277..08f9fecf 100644 --- a/topics/pandoc/index.html +++ b/topics/pandoc/index.html @@ -1 +1 @@ -Posts for pandoc
    Gijs van Dam
    • Pandoc-filter for highlighting to-dos in LaTeX output

      2 minute read

      While writing my papers I try not to get bogged down too much. So if a paragraph doens't flow right I just type TODO: rewrite on the line below it, and continue writing. When I think of something that I shouldn't forget, like an extra analysis to run I just write it down as a todo in the running text of my paper. I also write thoughts on my paper as a todo. Ideas on structure, whether I should maybe rearrange paragraphs or approach a subject differently, it all ends up as a todo in the running text.

      When running the VSCode task for converting my paper to PDF (using Pandoc) it puts all the todos into the running text. That's fine by me, it helps as an extra reminder that stuff still needs to happen. But I wanted the todos to be visually different from the running text, so that it stands apart and doesn't confuse people who are reading my draft. That is where my Pandoc filter comes into play.

    • Super easy tip for slide animation with Pandoc and reveal.js

      2 minute read

      I found this super easy alternative way to animate your slides with reveal.js that works out of the box with Markdown and Pandoc. Here is how to do it.

      Last week I had to give a progress presentation about the current state of my PhD, and I can whip those up in no time. I use Boilerplate Paper not only for writing my papers, but also for presentations like this.

      I write the presentation in Markdown and then convert it to reveal.js. But sometimes you want something else than the default sliding transition that reveal.js provides.

    \ No newline at end of file +Posts for pandoc
    Gijs van Dam
    • Pandoc-filter for highlighting to-dos in LaTeX output

      2 minute read

      While writing my papers I try not to get bogged down too much. So if a paragraph doens't flow right I just type TODO: rewrite on the line below it, and continue writing. When I think of something that I shouldn't forget, like an extra analysis to run I just write it down as a todo in the running text of my paper. I also write thoughts on my paper as a todo. Ideas on structure, whether I should maybe rearrange paragraphs or approach a subject differently, it all ends up as a todo in the running text.

      When running the VSCode task for converting my paper to PDF (using Pandoc) it puts all the todos into the running text. That's fine by me, it helps as an extra reminder that stuff still needs to happen. But I wanted the todos to be visually different from the running text, so that it stands apart and doesn't confuse people who are reading my draft. That is where my Pandoc filter comes into play.

    • Super easy tip for slide animation with Pandoc and reveal.js

      2 minute read

      I found this super easy alternative way to animate your slides with reveal.js that works out of the box with Markdown and Pandoc. Here is how to do it.

      Last week I had to give a progress presentation about the current state of my PhD, and I can whip those up in no time. I use Boilerplate Paper not only for writing my papers, but also for presentations like this.

      I write the presentation in Markdown and then convert it to reveal.js. But sometimes you want something else than the default sliding transition that reveal.js provides.

    \ No newline at end of file diff --git a/topics/powershell/index.html b/topics/powershell/index.html index 612c21c7..cde14f9c 100644 --- a/topics/powershell/index.html +++ b/topics/powershell/index.html @@ -1 +1 @@ -Posts for powershell
    Gijs van Dam
    • Measuring your writing progress with a git word count

      5 minute read

      Writing a scientific paper is hard. Doing your PhD is hard. Writing your thesis is hard. And to make me feel even more miserable I decided to measure my progress by counting the net change in words I achieve throughout each day. I am by no means a productivity guru and I don't know whether word count is a useful indicator for measuring the progress of a paper. That being said, it is a reality check to see how fast my work is progressing. So without further ado here's the Powershell command that outputs the wordcount for the last 25 days based on git commits. (For the bash command, see the bottom of this post)

      for($i = 0; $i -lt 25; $i++){$j = $i + 1; Write-Host (get-date (get-date).addDays(-$i) -UFormat "%Y%m%d") ((git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- "***.md"| Select-String -Pattern "^\+.*" | Measure-Object -word | select -ExpandProperty Words) - (git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"  -- "***.md"| Select-String -Pattern "^-.*" | Measure-Object -word | select -ExpandProperty Words)) }
    \ No newline at end of file +Posts for powershell
    Gijs van Dam
    • Measuring your writing progress with a git word count

      5 minute read

      Writing a scientific paper is hard. Doing your PhD is hard. Writing your thesis is hard. And to make me feel even more miserable I decided to measure my progress by counting the net change in words I achieve throughout each day. I am by no means a productivity guru and I don't know whether word count is a useful indicator for measuring the progress of a paper. That being said, it is a reality check to see how fast my work is progressing. So without further ado here's the Powershell command that outputs the wordcount for the last 25 days based on git commits. (For the bash command, see the bottom of this post)

      for($i = 0; $i -lt 25; $i++){$j = $i + 1; Write-Host (get-date (get-date).addDays(-$i) -UFormat "%Y%m%d") ((git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"   -- "***.md"| Select-String -Pattern "^\+.*" | Measure-Object -word | select -ExpandProperty Words) - (git diff --word-diff=porcelain "@{$j days ago}" "@{$i days ago}"  -- "***.md"| Select-String -Pattern "^-.*" | Measure-Object -word | select -ExpandProperty Words)) }
    \ No newline at end of file diff --git a/topics/revealjs/index.html b/topics/revealjs/index.html index 5dc21200..4e2567cb 100644 --- a/topics/revealjs/index.html +++ b/topics/revealjs/index.html @@ -1 +1 @@ -Posts for revealjs
    Gijs van Dam
    \ No newline at end of file +Posts for revealjs
    Gijs van Dam
    \ No newline at end of file diff --git a/topics/science/index.html b/topics/science/index.html index 4c816b44..34ef128c 100644 --- a/topics/science/index.html +++ b/topics/science/index.html @@ -1 +1 @@ -Posts for science
    Gijs van Dam
    \ No newline at end of file +Posts for science
    Gijs van Dam
    \ No newline at end of file diff --git a/topics/simverse/index.html b/topics/simverse/index.html index 4dd23135..594677f9 100644 --- a/topics/simverse/index.html +++ b/topics/simverse/index.html @@ -1,2 +1,2 @@ Posts for simverse
    Gijs van Dam
    • Running c-lightning in Simverse with plugins

      4 minute read

      The goal is to run c-lightning with plugins in a local testing cluster. For my cluster I use Simverse. Simverse allows for additional command line arguments to be passed to lightningd, so it should be possible to run lightningd with the plugin argument.

      Let's first clone our plugin. We will be using one of the plugins that are available through Lightningd on Github.

      cd ~\simverse\_repos
      -git clone https://github.com/lightningd/plugins.git --depth 1

      We put the plugin in the _repos folder, because it is assumed that the plugin is there when the cluster is being build. (Also: throughout this article we assume your simverse folder is inside your home folder. If that is not the case, adjust it accordingly)

      Since all nodes in Simverse run inside Docker containers, that plugin-file should be made available inside the Docker context folder. The _repos folder is not part of that context (each container gets its own context) so we have to copy the file from the _repos folder to the Docker context folder. Luckily Simverse works with the concept of recipes. A recipe describes how your cluster should look like. A recipe is a bash script that uses a library called cookbook that can be used to build your cluster step-by-step. Since it is "just" a bash script, you can do anything bash can do to tweak your cluster.

      We will create a recipe that creates a cluster with three c-lightning nodes, running on a bitcoind back-end.

    • Debugging LND while running a local cluster

      4 minute read

      If you want to debug LND, or if you want to take a real deep dive into LND, you probably want to be able to set breakpoints in the source code to see what is actually happening. Not only that, you also want to have the node run in a local cluster of other nodes, so that you can perform some real Lightning actions like opening a channel and make payments. This post takes you through the setup I use based on Delve and Simverse.

    \ No newline at end of file +git clone https://github.com/lightningd/plugins.git --depth 1

    We put the plugin in the _repos folder, because it is assumed that the plugin is there when the cluster is being build. (Also: throughout this article we assume your simverse folder is inside your home folder. If that is not the case, adjust it accordingly)

    Since all nodes in Simverse run inside Docker containers, that plugin-file should be made available inside the Docker context folder. The _repos folder is not part of that context (each container gets its own context) so we have to copy the file from the _repos folder to the Docker context folder. Luckily Simverse works with the concept of recipes. A recipe describes how your cluster should look like. A recipe is a bash script that uses a library called cookbook that can be used to build your cluster step-by-step. Since it is "just" a bash script, you can do anything bash can do to tweak your cluster.

    We will create a recipe that creates a cluster with three c-lightning nodes, running on a bitcoind back-end.

  • Debugging LND while running a local cluster

    4 minute read

    If you want to debug LND, or if you want to take a real deep dive into LND, you probably want to be able to set breakpoints in the source code to see what is actually happening. Not only that, you also want to have the node run in a local cluster of other nodes, so that you can perform some real Lightning actions like opening a channel and make payments. This post takes you through the setup I use based on Delve and Simverse.

  • \ No newline at end of file diff --git a/topics/ssh/index.html b/topics/ssh/index.html index b22cbdae..a7ebcec0 100644 --- a/topics/ssh/index.html +++ b/topics/ssh/index.html @@ -1 +1 @@ -Posts for ssh
    Gijs van Dam
    • SSH keybased authentication Windows to Linux

      2 minute read

      I do most of my development on a remote machine. The machine isn't that remote, it's a mini-pc running Ubuntu that is standing right here on my desk. It has no peripherals, so I have to do all my development remotely through my Windows 10 laptop.

      Remote development with Vscode is amazing. It just works. Once you are set up, there's no difference with working locally. To have that seamless experience you do have to set up keybased authentication for SSH. If you don't you will be constantly reminded of working remotely, because you have to type in the password of the remote machine.

    \ No newline at end of file +Posts for ssh
    Gijs van Dam
    • SSH keybased authentication Windows to Linux

      2 minute read

      I do most of my development on a remote machine. The machine isn't that remote, it's a mini-pc running Ubuntu that is standing right here on my desk. It has no peripherals, so I have to do all my development remotely through my Windows 10 laptop.

      Remote development with Vscode is amazing. It just works. Once you are set up, there's no difference with working locally. To have that seamless experience you do have to set up keybased authentication for SSH. If you don't you will be constantly reminded of working remotely, because you have to type in the password of the remote machine.

    \ No newline at end of file diff --git a/topics/test1/index.html b/topics/test1/index.html index 4f96154a..3e017173 100644 --- a/topics/test1/index.html +++ b/topics/test1/index.html @@ -1 +1 @@ -Posts for test1
    Gijs van Dam
    \ No newline at end of file +Posts for test1
    Gijs van Dam
    \ No newline at end of file diff --git a/topics/test2/index.html b/topics/test2/index.html index b490824f..195f3196 100644 --- a/topics/test2/index.html +++ b/topics/test2/index.html @@ -1 +1 @@ -Posts for test2
    Gijs van Dam
    \ No newline at end of file +Posts for test2
    Gijs van Dam
    \ No newline at end of file diff --git a/topics/vscode/index.html b/topics/vscode/index.html index 65d56196..a80b1028 100644 --- a/topics/vscode/index.html +++ b/topics/vscode/index.html @@ -1 +1 @@ -Posts for vscode
    Gijs van Dam
    • SSH keybased authentication Windows to Linux

      2 minute read

      I do most of my development on a remote machine. The machine isn't that remote, it's a mini-pc running Ubuntu that is standing right here on my desk. It has no peripherals, so I have to do all my development remotely through my Windows 10 laptop.

      Remote development with Vscode is amazing. It just works. Once you are set up, there's no difference with working locally. To have that seamless experience you do have to set up keybased authentication for SSH. If you don't you will be constantly reminded of working remotely, because you have to type in the password of the remote machine.

    • Debugging LND while running a local cluster

      4 minute read

      If you want to debug LND, or if you want to take a real deep dive into LND, you probably want to be able to set breakpoints in the source code to see what is actually happening. Not only that, you also want to have the node run in a local cluster of other nodes, so that you can perform some real Lightning actions like opening a channel and make payments. This post takes you through the setup I use based on Delve and Simverse.

    \ No newline at end of file +Posts for vscode
    Gijs van Dam
    • SSH keybased authentication Windows to Linux

      2 minute read

      I do most of my development on a remote machine. The machine isn't that remote, it's a mini-pc running Ubuntu that is standing right here on my desk. It has no peripherals, so I have to do all my development remotely through my Windows 10 laptop.

      Remote development with Vscode is amazing. It just works. Once you are set up, there's no difference with working locally. To have that seamless experience you do have to set up keybased authentication for SSH. If you don't you will be constantly reminded of working remotely, because you have to type in the password of the remote machine.

    • Debugging LND while running a local cluster

      4 minute read

      If you want to debug LND, or if you want to take a real deep dive into LND, you probably want to be able to set breakpoints in the source code to see what is actually happening. Not only that, you also want to have the node run in a local cluster of other nodes, so that you can perform some real Lightning actions like opening a channel and make payments. This post takes you through the setup I use based on Delve and Simverse.

    \ No newline at end of file diff --git a/topics/webassembly/index.html b/topics/webassembly/index.html index dde591d1..be472a0a 100644 --- a/topics/webassembly/index.html +++ b/topics/webassembly/index.html @@ -1 +1 @@ -Posts for webassembly
    Gijs van Dam
    • Image conversion, resizing and compression with WebAssembly

      5 minute read

      Image conversion and resizing for the web can be quite fiddly. Take responsive websites for instance. You want to show a smaller version of your image on smaller devices: You don't need to download a 1080px wide image to show on a 360px wide device, especially since that device is likely constrained in the amount of bandwidth it has. Then again when your website is shown on an ultra HD screen with 3840x2160 resolution 1080 is maybe even too small.

      Apart from multiple sizes, you also want to offer multiple formats. Modern browsers support new(er) image formats like webp and avif offer better compression for comparable image quality. Using these formats you can decrease the total download size of your page, while improving the overall experience for the user. But you just can't assume (yet) that all browsers support those newer formats, so you have to provide older formats as a fallback option. All in all the amount of different files you have to offer for just a single image on a web page starts to become quite large and the whole thing becomes, like I said, fiddly.

    \ No newline at end of file +Posts for webassembly
    Gijs van Dam
    • Image conversion, resizing and compression with WebAssembly

      5 minute read

      Image conversion and resizing for the web can be quite fiddly. Take responsive websites for instance. You want to show a smaller version of your image on smaller devices: You don't need to download a 1080px wide image to show on a 360px wide device, especially since that device is likely constrained in the amount of bandwidth it has. Then again when your website is shown on an ultra HD screen with 3840x2160 resolution 1080 is maybe even too small.

      Apart from multiple sizes, you also want to offer multiple formats. Modern browsers support new(er) image formats like webp and avif offer better compression for comparable image quality. Using these formats you can decrease the total download size of your page, while improving the overall experience for the user. But you just can't assume (yet) that all browsers support those newer formats, so you have to provide older formats as a fallback option. All in all the amount of different files you have to offer for just a single image on a web page starts to become quite large and the whole thing becomes, like I said, fiddly.

    \ No newline at end of file diff --git a/topics/windows-10/index.html b/topics/windows-10/index.html index 76ca787a..616b327f 100644 --- a/topics/windows-10/index.html +++ b/topics/windows-10/index.html @@ -1 +1 @@ -Posts for windows 10
    Gijs van Dam
    • Building Bitcoin Core On Windows 10

      2 minute read

      I've been following Bitcoin and more importantly the Blockchain from the sidelines for a few years now, but I wanted to get my hands dirty. Obviously I could just download the Bitcoin Core executables from bitcoin.org, but I always feel it gives me more insight if I build something myself. Also it's was a nice test case for Bash on Windows.

    \ No newline at end of file +Posts for windows 10
    Gijs van Dam
    • Building Bitcoin Core On Windows 10

      2 minute read

      I've been following Bitcoin and more importantly the Blockchain from the sidelines for a few years now, but I wanted to get my hands dirty. Obviously I could just download the Bitcoin Core executables from bitcoin.org, but I always feel it gives me more insight if I build something myself. Also it's was a nice test case for Bash on Windows.

    \ No newline at end of file diff --git a/ventures/index.html b/ventures/index.html index 4c92b810..6ea3851d 100644 --- a/ventures/index.html +++ b/ventures/index.html @@ -1 +1 @@ -Ventures
    Gijs van Dam

    Ventures

    Mindbus

    Mindbus is a web agency founded in 2002. A general web agency throughout its first years, Mindbus pivotted to a specific niche 2014 when it started its e-commerce platform for brick & mortar book stores. Now in 2021 Mindbus almost exclusively serves bookstores in The Netherlands and Flanders. Almost 20% of the Dutch bookstores use the platform, and more than 8% of the Dutch online consumer book market runs over this platform.

    Doefiets

    Doefiets (Dutch for do cycle) was a community for cyclists founded in 2012. It featured articles on training and training schedules and had specific training schedules geared towards famous European cyclo's like La Marmotte. The website included a webshop that offered cycling gear. The community failed to garner enough traction and was shuttered in 2018 after exploratory talks with the Royal Dutch Cyclist Union (KNWU) about collaborating amounted to nothing tangible.

    uWebshop

    uWebshop was a spin-off of Mindbus in 2011/2012 and offered a package for the .Net CMS Umbraco. With this package you could easily set up your own webshop within the Umbraco CMS. The company failed to become profitable and was shut down in 2015.

    \ No newline at end of file +Ventures
    Gijs van Dam

    Ventures

    Mindbus

    Mindbus is a web agency founded in 2002. A general web agency throughout its first years, Mindbus pivotted to a specific niche 2014 when it started its e-commerce platform for brick & mortar book stores. Now in 2021 Mindbus almost exclusively serves bookstores in The Netherlands and Flanders. Almost 20% of the Dutch bookstores use the platform, and more than 8% of the Dutch online consumer book market runs over this platform.

    Doefiets

    Doefiets (Dutch for do cycle) was a community for cyclists founded in 2012. It featured articles on training and training schedules and had specific training schedules geared towards famous European cyclo's like La Marmotte. The website included a webshop that offered cycling gear. The community failed to garner enough traction and was shuttered in 2018 after exploratory talks with the Royal Dutch Cyclist Union (KNWU) about collaborating amounted to nothing tangible.

    uWebshop

    uWebshop was a spin-off of Mindbus in 2011/2012 and offered a package for the .Net CMS Umbraco. With this package you could easily set up your own webshop within the Umbraco CMS. The company failed to become profitable and was shut down in 2015.

    \ No newline at end of file