Skip to content
Tony Aldon
Search
Tony Aldon
About đŸ‘‹
Working With AI Newsletter
Working With AI Newsletter
Same car. One wins, while the other loses.
Don't fall for that
Don't worry about that, we don't care anymore
Do you really need more ideas?
AI doesn't care
There's nothing special about AI
Don't take it personally
Why AI chats are so attractive?
Don't compete with computers
You'll be left behind
You can always pay more to wait less
Are you late to AI?
Models sometimes get worse
Models will only get better
Think for yourself before you ask
Learning requires inefficiency
Simple, short and correct
Tech improvements are quickly taken for granted
Cut through the noise
AI killed traditional learning
Sounding right while being wrong
Just one more prompt
Confidence vs. faith
AI can't read for you
My simple rule for punchy AI edits
Know what you want
How iterating with AI made my writing feel right
Did you ask AI?
AI Automation
AI Automation
How to improve the Python import time of your Typer CLI
How I generated Python test data with LLMs
OpenAI API and structured logging in Python
Logging requests when the OpenAI API errors in Python
Mocking the OpenAI API with respx in Python
128k whitespace tokens, by accident: debugging the Responses API
I made a CLI to enrich French-English phrasebooks with AI translations, audio, and images
Improve your docs by giving your AI assistant the project's issues
Codex: the relentless teammate reviewing every OpenAI PR
How I use LLMs and Firecrawl to dig into company culture
My 3 takeaways from Zapier's 2026 AI strategy company hangout
How I crafted TL;DRs with LLMs and modernized my blog (part 5)
How I crafted TL;DRs with LLMs and modernized my blog (part 4)
How I crafted TL;DRs with LLMs and modernized my blog (part 3)
How I crafted TL;DRs with LLMs and modernized my blog (part 2)
How I crafted TL;DRs with LLMs and modernized my blog (part 1)
How I explored Google Sheets to Gmail automation through Zapier before building it in Python (part 2)
How I explored Google Sheets to Gmail automation through Zapier before building it in Python (part 1)
How I realized AI automation is all about what you automate
How I uncovered Zapier's best AI automation articles from 2025 with LLMs (part 3)
How I uncovered Zapier's best AI automation articles from 2025 with LLMs (part 2)
How I uncovered Zapier's best AI automation articles from 2025 with LLMs (part 1)
How I learned the OpenAI Agents SDK by breaking down a Stripe workflow from the OpenAI cookbook (part 4)
How I learned the OpenAI Agents SDK by breaking down a Stripe workflow from the OpenAI cookbook (part 3)
How I learned the OpenAI Agents SDK by breaking down a Stripe workflow from the OpenAI cookbook (part 2)
How I learned the OpenAI Agents SDK by breaking down a Stripe workflow from the OpenAI cookbook (part 1)
How I implemented real-time file summaries using Python and OpenAI API
Build a ChatGPT Client in Emacs Lisp
Build a ChatGPT Client in Emacs Lisp
Introduction
1. First Request to OpenAI Using the Chat Completion API
2. Chat Completion Streaming API
3. Developer and System Messages
4. Assistant Messages
5. The Basics of make-process
6. First Request To OpenAI From Emacs Lisp
7. Refactoring chatgpt-send and introducing chatgpt-api-key
8. Making the Prompt Dynamic in Requests
9. Formatting Requests and Responses in Markdown
10. Saving Requests to Disk
11. The Prompt Buffer
12. Making the response buffer pop up upon receipt
13. Handling API Errors
14. Timestamp Files
15. Overview of the Ring Package
16. Implementing Prompt History Feature
17. The Waiting Widget
18. Managing the API Key
Open Source
Youtube
Talks
Bitcoin CLN tutorials and live streams
Bitcoin CLN tutorials and live streams
LIVE #24 - Core Lightning implementation of BOLT #11 invoices - part 8
LIVE #23 - Core Lightning implementation of BOLT #11 invoices - part 7
LIVE #22 - Core Lightning implementation of BOLT #11 invoices - part 6
LIVE #21 - Core Lightning implementation of BOLT #11 invoices - part 5
LIVE #20 - Core Lightning implementation of BOLT #11 invoices - part 4
LIVE #19 - Core Lightning implementation of BOLT #11 invoices - part 3
LIVE #18 Core Lightning implementation of BOLT #11 invoices - part 2
LIVE #17 - Core Lightning implementation of BOLT #11 invoices - part 1
LIVE #16 - Remote control of Core Lightning Nodes in 2023
LIVE #15 - Get started with cln-grpc plugin
LIVE #14 - Learn how to test libraries/apps that interact with CLN nodes
LIVE #13 - Getting started with CLNRest plugin
LNROOM #22 - Get started with Lightning Network Splicing on Core Lightning v23.08
LIVE #12 - Core Lightning release v23.08 live exploration
LNROOM #21 - Create invoices with a Node.JS cli using lnmessage and commando
LIVE #11 - Overview of lnmessage implementation
LNROOM #20 - Simple CLN bookkeeper web app powered by lnsocket & Golang - part 2
LIVE #10 - Simple CLN bookkeeper web app powered by lnsocket & Golang - part 1
LIVE #9 - Introduction to commando and commando-rune
LNROOM #19 - Write a Core Lightning plugin in Rust
LNROOM #18 - Write a Core Lightning plugin in Go
LNROOM #17 - Write a Core Lightning plugin in Javascript
LIVE #8 - Core Lightning plugins in 2023
LIVE #7 - How does Core Lightning communicate with the Bitcoin network?
LIVE #6 - Core lightning rpc_command hook, pay command and BOLT11 invoice
LIVE #5 - How Core Lightning plugins can communicate with each other?
LNROOM #16 - Subscribe to connect notifications with pyln-client
LNROOM #15 - Subscribe to lightningd notification topics with a Python plugin
LIVE #4 - Learn how to subscribe to lightningd event notifications with CLN plugins
LNROOM #14 - Understand CLN Plugin mechanism with a Bash example
LNROOM #13 - Overview of pyln-client implementation - LightningRpc - Part 3
LNROOM #12 - Overview of pyln-client implementation - @plugin.method() - Part 2
LIVE #3 - How to write tests for CLN plugins
LNROOM #11 - Overview of pyln-client implementation - Plugin.run() - Part 1
LNROOM #10 - Start writing Core Lightning plugins with pyln-client TODAY!
LIVE #2 - Register a JSON-RPC method to Core Lightning using pyln-client Python package
LIVE #1 - Understand CLN Plugin mechanism with a Python example
LNROOM #9 - Another penalty transaction on regtest with Core Lightning
LNROOM #8 - A penalty transaction managed by Core Lightning
LNROOM #7 - List payments of a CLN lightning node greater than 20000sat
LNROOM #6 - Close payment channels of lightning nodes running on regtest with CLN
LNROOM #5 - Open a channel between two nodes running on regtest using CLN
LNROOM #4 - Fund the wallet of a CLN Lightning node running on regtest
LNROOM #3 - Connect Lightning nodes on regtest with CLN
LNROOM #2 - Start a lightning node on regtest with CLN
LNROOM #1 - Create and pay an invoice with CLN
Bitcoin LN Newsletter
Bitcoin LN Newsletter
LN #21 - PeerSwap, Breez SDK and Mutiny Wallet FAQ
LN #20 - Bech32, Chaincode Labs, Christian Decker and Severin BĂ¼hler
LN #19 - BOLT#11, Rusty Russell, Clams and CLN v23.11
LN #18 - BOLT#11, clangd and renepay
LN #17 - 1 year of lnroom.live
LN #16 - LN limitations, Timeout Trees, Greenlight and River report
LN #15 - LSP, VLS and Bitcoin Education
LN #14 - Testing applications & 4 major LN implementations
LN #13 - Vincenzo Palazzo, LSPs & renepay plugin
LN #12 - CLN v23.08, sovereign stack and BOLT #12
LN #11 - commando, lnsocket and CLN 23.08 rc1
LN #10 - LN summit in NY, splicing and Mutiny
LN #9 - Remote control and L402
LN #8 - LDK Node, Greenlight and Breez SDK
LN #7 - bcli and Securing a $100M Lightning node
LN #6 - nostr-control and scaling-lightning
LN #5 - CLN Hooks and BOLT11
LN #4 - pyln-client implementation and Torq node management software
LN #3 - Write tests for CLN plugins and Unix domain sockets
LN #2 - pyln-client and Python decorators
LN #1 - First live coding session
Emacs Lisp Tips
Emacs Lisp Tips
How to match 47 characters in a string with Emacs Lisp?
How to put the value of an Org property in the kill-ring?
Do you know how to generate html strings with Emacs Lisp?
How to add html attributes with the Emacs package Jack?
How to check for a regexp match after point with Emacs Lisp?
How to insert foo at the end of buffer without changing point with Emacs Lisp?
How to check for the states of buffer-local variables in Emacs Lisp?
How to turn a function into a command in Emacs Lisp?
How to insert strings in a given buffer in Emacs Lisp?
How to list files in a given directory in Emacs Lisp?
How to replace regexp in buffers in Emacs Lisp?
How to search for regexp in buffers in Emacs Lisp?
What influence does case-fold-search have on searches in Emacs Lisp?
How to manipulate the match data in Emacs Lisp?
How to replace regexp in buffers in Emacs Lisp?
How to get the content in buffers in Emacs Lisp?
How to manipulate vectors in Emacs Lisp?
How to swap elements in vectors in Emacs Lisp?
How to run a unix utility on file at point in dired in Emacs Lisp?
How to copy the current line below in Emacs Lisp?
How to start a shell in a window below in Emacs Lisp?
How to move the point around in buffers in Emacs Lisp?
How to stop displaying calls to message in Emacs Lisp?
How to save and restore the selected window in Emacs Lisp?
How to loop over the window list of the selected frame in Emacs Lisp?
How to select a word in a list with minibuffer completion in Emacs Lisp?
How to write buffer region into a file in Emacs Lisp?
How to display the documentation of the symbol at point Emacs Lisp?
Do you know about the Emacs Lisp function split-line?
How to make Emacs unusable using the hook post-self-insert-hook?
How to define a command that works on the selected region in Emacs Lisp?
How to check that we have reached the end of buffer in Emacs Lisp?
How to run some Emacs Lisp code in batch mode?
How to run some Emacs Lisp code in batch mode
How to write tests in Emacs Lisp?
How to throw and test errors in Emacs Lisp?
What does Org parsed tree look like in Emacs Lisp?
Do you know how to list org-mode source blocks with Emacs Lisp?
Do you know how to unbind variables and functions in Emacs Lisp?
How to create a temporary file in Emacs Lisp?
How to evaluate an expression in Emacs Lisp? (for beginners)
Do you know inferior-emacs-lisp-mode for playing with Emacs Lisp?
Do you kwow how to generate ISO 8601 dates in Emacs Lisp?
What commands do you use to evaluate Emacs Lisp expressions?
How to manipulate property lists in Emacs Lisp?
How to change values in Emacs Lisp property lists?
How to copy the content of a directory in Emacs Lisp?
Do you know about default-directory variable in Emacs Lisp?
How to convert a filename into an absolute filename in Emacs Lisp?
How to modify the content of a file in Emacs Lisp?
How to replace regexp matches in a string in Emacs Lisp?
How to get the substring of a string in Emacs Lisp?
How to trim strings in Emacs Lisp?
Do you know how to capitalize a string in Emacs Lisp?
How to leverage describe-key command to write Emacs Lisp code?
Do you know about save-match-data macro in Emacs Lisp?
Emacs Lisp Deep Dives
Emacs Lisp Deep Dives
org-mode links in 2022: implementation, packages, articles and videos
org-store-link... powerful and flexible
org-mode links everywhere, not only in org-mode buffers
Link to a git commit from Org mode using Magit
FULL example of org-mode links: internal links and search options
Programming with Elisp is magic
If you have never used wgrep with rg.el to rename a function in several files, try it | that will blow your mind
Ripgrep is fantastic | Emacs is fantastic | BOOM you get the fantastic rg.el
Don't explain, show me examples! A tour of the catch/throw pattern in the Emacs source code
Did you know that Org links in property drawers are not links?
Search options in file links | link abbreviations | COME WITH ME on this JOURNEY into the heart of the command org-open-at-point
Org Speed Keys! BOOM! Great org-mode's feature! And a good OPPORTUNITY to talk about self-insert-command
Did you know that org-mode's source code contains more than 5000 examples?
I bet you use hl-line-mode... Do you know how it works? Overlays, post-command-hook and only 5 functions!!!
Have you ever wondered how org-mode toggles the visibility of headings?
You want to write a custom org backend? Let's write onlybold backend together to get you started
Some examples on closures and lexical-binding
Linux Tricks
404 - Not found
Back to top