A pattern for building personal knowledge bases using LLMs.
This is an idea file, it is designed to be copy pasted to your own LLM Agent (e.g. OpenAI Codex, Claude Code, OpenCode / Pi, or etc.). Its goal is to communicate the high level idea, but your agent will build out the specifics in collaboration with you.
Most people's experience with LLMs and documents looks like RAG: you upload a collection of files, the LLM retrieves relevant chunks at query time, and generates an answer. This works, but the LLM is rediscovering knowledge from scratch on every question. There's no accumulation. Ask a subtle question that requires synthesizing five documents, and the LLM has to find and piece together the relevant fragments every time. Nothing is built up. NotebookLM, ChatGPT file uploads, and most RAG systems work this way.
| // When I was starting to learn Zig, strings were such a pain in the ass, so I | |
| // made this little guide for you to understand better what each type of string | |
| // does and why some of them seems to be "wrong". | |
| // | |
| // I will assume that you already know how pointers, const, var, comptime and | |
| // the stack works. You don't need to be an expert, but I will not waste time | |
| // detailing these concepts. | |
| // | |
| // Sorry for the English mistakes, I'm far from being a fluent English speaker, | |
| // but what counts is the information. |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title>Kitchen Sink Example</title> | |
| </head> | |
| <body lang="en"> | |
| <p>This paragraph WILL NOT be styled by CSS or changed by javascript.</p> | |
| <p id="secondpara">This paragraph will be styled by CSS using its <b>id</b>attribute using CSS selector.</p> | |
| <p class="thirdpara">This paragraph will be styled by CSS using its <b>class</b>attribute using CSS selector.</p> | |
| <p id="willchange">This paragraph will be changed by javascript</p> |
| const JsonString = struct { | |
| value: []const u8, | |
| }; | |
| const JsonNumber = struct { | |
| value: f64, | |
| }; | |
| const JsonObject = struct { | |
| const Property = struct { | |
| name: []const u8, | |
| value: JsonValue, |
Thought I should post my guide on how to do this, as I've struggled with this for quite some time now. I wanted something to bypass the NAT/router as I did not have the option of port-forwarding. I will also be moving quite some in the upcoming year, so dynamic IP was almost a given. And obviously I wanted it to be cheap. This does it all.
This is free, no port-forwarding required and no static IP required. Wildcard domain and SSL certificate supported. It works with Cloudflare tunnels, Cloudflare DNS, Nginx Proxy Manager and obviously TrueNAS SCALE.
I am not a professional, if you see a flaw in this design, please let me know!
- Domain name at Cloudflare
| /* An example app that uses expo-auth-session to connect to Azure AD (or hopefully most providers) | |
| Features: | |
| - secure cache with refresh on load | |
| - securely stored refresh token using expo-secure-store | |
| - uses zustand for global access to the token / logout | |
| Based on [this gist](https://gist.github.com/thedewpoint/181281f8cbec10378ecd4bb65c0ae131) | |
| */ |
| // Simplest possible custom card | |
| // Does nothing. Doesn't look like anything | |
| class MyCustomCard extends HTMLElement { | |
| setConfig(config) { | |
| // The config object contains the configuration specified by the user in ui-lovelace.yaml | |
| // for your card. | |
| // It will minimally contain: | |
| // config.type = "custom:my-custom-card" |
| winget install --id=Google.Chrome -e ; winget install --id=Mozilla.Firefox -e ; winget install --id=Discord.Discord -e ; winget install --id=WhatsApp.WhatsApp -e ; winget install --id=OpenJS.Nodejs -e ; winget install --id=Microsoft.WindowsTerminal -e ; winget install --id=Amazon.AWSCLI -e ; winget install --id=CPUID.CPU-Z -e ; winget install --id=Cryptomator.Cryptomator -e ; winget install --id=hiyohiyo.CrystalDiskInfo -e ; winget install --id=Git.Git -e ; winget install --id=plex.plexmediaplayer -e ; winget install --id=Microsoft.PowerToys -e ; winget install --id=SlackTechnologies.Slack -e ; winget install --id=Microsoft.Skype -e ; winget install --id=Valve.Steam -e ; winget install --id=Spotify.Spotify -e ; winget install --id=Microsoft.Teams -e ; winget install --id=Ubisoft.Uplay -e ; winget install --id=Microsoft.VisualStudioCode -e ; winget install --id=RARLab.WinRAR -e ; winget install --id=WiresharkFoundation.Wireshark -e |