Especially having ChatGPT, Claude, or Gemini available nowadays. It’s a godsend when troubleshooting any Linux issues, and you can learn so much in the process.
I just upgraded my PC’s motherboard, CPU, memory, and video card and used Claude as a build buddy to help me lay out steps to follow. I also used it after installing CachyOS for the second time, but on this new hardware. It had me double checking to make sure I had all the proper drivers set up by running commands, but everything was already setup correctly by CachyOS. It even helped me figure out that I had a fan wire half plugged in, which was causing a fan not to throttle. I would alternate between Claude Sonnet 4.5 and ChatGPT 5.2. But it’s so much easier and quicker than the old days of sifting through the manuals and forums, if you could get online to a forum that is.
chatpgt has sent me wrong instructions on just as many occasions it has given the right instructions on how to fix things on linux. It's frustrating when it sends me a 'fix' on something that doesn't even need it (steps on installing a particular flavour of Proton to bypass Rockstar's launcher, when it was already done by default). And because I'm not terribly adept I only appreciate it's the wrong instructions after implementing it and it not working.
I installed CachyOS (KDE) about 2 years ago and I’m obsessed with it, it’s so satisfying to tinker with. I also game on it every day. Recently invested in a AMD GPU just because it has a better driver story in Linux. I can’t imagine going back to Windows.
Edit: Shout out to SteamOS for getting Linux to where it is for gaming, incredible.
Agreed, also on CachyOS and loving the momentum Linux has lately! Let's finally all be free of Microsoft's bullshit "maybe later" tactics etc.
Gaming on Strix Halo in Linux is an absolutely amazing experience, even though I have a 4090, just because of how silent and low power it is. Valve and the rest of the Linux infra guys really performed a miracle.
This and DATETIME. The workarounds for these are mostly fine if you’re just using SQLite as a key value store, but doing translations in SQL queries for these workarounds sounds atrocious.
90% of people aren't using "SQL" anyway. They are just doing basic CRUD operations on a data store with SQL syntax, usually abstracted through an ORM. The only reason they want a SQL database in the first place is for ACID.
If you find yourself caring about data types or actually writing a query, you should probably setup an actual database server.
Your "old" db.execute (which presumably accepts a regular old string) would not accept a t-string, because it's not a string. In the original example, it's a new db.execute.
Using a t-string in a db.execute which is not compatible with t-strings will result in an error.
Using a t-string in a db-execute which is, should be as safe as using external parameters. And using a non-t-string in that context should (eventually) be rejected.
Yes, but if a function accepts a template (which is a different type of object from a string!), either it is doing sanitization, or it explicitly implemented template support without doing sanitization—hard to do by accident!
The key point here is that a "t-string" isn't a string at all, it's a new kind of literal that's reusing string syntax to create Template objects. That's what makes this new feature fundamentally different from f-strings. Since it's a new type of object, libraries that accept strings will either have to handle it explicitly or raise a TypeError at runtime.
I'm not sure why you think it's harder to use them without sanitization - there is nothing inherent about checking the value in it, it's just a nice use.
You might have implemented the t-string to save the value or log it better or something and not even have thought to check or escape anything and definitely not everything (just how people forget to do that elsewhere).
I really think you're misunderstanding the feature. If a method has a signature like:
class DB:
def execute(query: Template):
...
It would be weird for the implementation to just concatenate everything in the template together into a string without doing any processing of the template parameters. If you wanted an unprocessed string, you would just have the parameter be a string.
I'm not. Again, you might be processing the variable for logging or saving or passing elsewhere as well or many other reasons unrelated to sanitization.
Taking a Template parameter into a database library's `execute` method is a big bright billboard level hint that the method is going to process the template parameters with the intent to make the query safe. The documentation will also describe the behavior.
You're right that the authors of such libraries could choose to do something different with the template parameter. But none of them will, for normal interface design reasons.
A library author could also write an implementation of a `plus` function on a numerical type that takes another numerical type, and return a string with the two numbers concatenated, rather than adding them together.
But nobody will do that, because libraries with extremely surprising behavior like that won't get used by anybody, and library authors don't want to write useless libraries. This is the same.
It's true that in theory `db.execute` could ignore semantics and concatenate together the template and variables to make a string without doing any sanitisation, but isn't the same true of the syntax it was claimed to replace?
Just because templates (or the previous syntax of passing in variables separately) could be used in a way that's equivalent safety-wise to an f-string by a poorly designed library does not mean that they add nothing over an f-string in general - they move the interpolation into db.execute where it can do its own sanitization and, realistically, sqlite3 and other libraries explicitly updated to take these will use it to do proper sanitization.
I love Gleam's syntax and types but one thing keeping me for jumping in is that it has some limitations regarding it's OTP integration. Which, to me, is one of the most exciting parts of Elixir or Erlang.
Both tools look useful (although I lean toward Amber's ECMAscript syntax). I liked this comment from batsh:
> Both Bash and Batch are messy to read and tricky to write due to historical reasons. You have to spend a lot of time learning either of them and write platform-dependent code for each operating system. I have wasted lots of time in my life struggling with bizarre syntaxes and unreasonable behaviors of them, and do not want to waste any more.
I just upgraded my PC’s motherboard, CPU, memory, and video card and used Claude as a build buddy to help me lay out steps to follow. I also used it after installing CachyOS for the second time, but on this new hardware. It had me double checking to make sure I had all the proper drivers set up by running commands, but everything was already setup correctly by CachyOS. It even helped me figure out that I had a fan wire half plugged in, which was causing a fan not to throttle. I would alternate between Claude Sonnet 4.5 and ChatGPT 5.2. But it’s so much easier and quicker than the old days of sifting through the manuals and forums, if you could get online to a forum that is.