Seeing a photo of a filled-out System/360 assembler coding form is like looking at an ancient stone tablet. Imagine the reams of these forms you'd have to go through and iterate on to arrive at a functional piece of software.
The amount of time needed just for one trip around the feedback loop for the smallest imaginable tweak puts any amount of modern "trying to get the build/CI to pass" nuisance to shame.
The site causes cancer but the conclusion of TFA is sensible: just get a Kobo and be done with it. I had a Kindle for years but there's no reason to stick to Amazon for e-readers anymore.
Agree, though for me it's only been a year, so all I can feel toward your "for a decade" is jealousy. It really is a much more enjoyable experience. If only I'd switched sooner!
Kobo was a Canadian company (before being bought out by Rakuten, though I think they still have a big office in Toronto) and I'm Canadian. So I think we were early adopters of their e-readers for that reason. All our bookstores and electronics retailers (RIP Futureshop) carried them.
I really want to like the Kobo. I really do. But I've had such bad luck with their devices. For example, sometimes the pages randomly start turning, really fast, so I completely lose my place. It also never reliably syncs between devices. And the integration with Overdrive is unreliable, only working some of the time. I also read it in the bath sometimes, which supposedly is one of the features available due to the water resistance, but the steam causes random clicks on the device, which makes it not really functional.
For me, I've mostly switched to reading on my phone. Dark mode, plus OLED, works very well for my needs.
If you have trouble with the default software on a Kobo ereader, you can install other applications aside it, then switch to them after boot. In my experience, the installation process is innocuous and straightforward.
I use Koreader: after experimenting with various configuration parameters for a few days, the UI is now stable and tailored to my taste. Once in a while, I switch to another app: Plato is better at handling huge PDF files.
Another bonus point is that I can mount my ereader as a USB mass-storage and rsync the git repository of my ebooks onto it.
I bought a Kobo Libra about a year ago and it's rock solid although I'm not using any sync features. I turned on the airplane mode on day one. Just works.
I've had three different Kobos (two with touchscreen) and never ran into this issue.
But the Overdrive issues are infuriating, especially when you miss out on a hold from the library and have to get in the queue again. On popular books it can take months. :(
However I'm inclined to ignore anyone who pushes their argument as "I'm doing X and you should too". Tell the good and bad things but don't tell me what to do
> You did not write a single line of SQL. You did not set up an attribution model. You asked a question, in English, and got a table.
But nobody bothered to check if it was correct. It might seem correct, but I've been burned by queries exactly like these many, many times. What can often happen is that you end up with multiplied rows, and the answer isn't "let's just add a DISTINCT somewhere".
The answer is to look at the base table and the joins. You're joining customers to two (implied) one-to-many tables, charges and email_events. If there are multiple charges rows per customer, or an email can match multiple email_events rows, it can lead to a Cartesian multiplication of the rows since any combination of matches from the base table to the joined tables will be included.
If that's the case, the transactions and revenue values are likely to be inflated, and therefore the pretty pictures you passed along to your boss are wrong.
Same way you do today; you trust whoever wrote the query.
I do not sell a wrapper on top of some LLM; you can absolutely write your SQL directly. There is an engine, there are iceberg tables. You can just live your best life doing your own SQL by hand.
Now if you couldnt do it before and you have a sensible understanding, you can likely do a bit more with the CLI tooling. And if you know a lot more, you can still do that. The queries are not hidden, or abstracted, If you need them they will be saved - transparently in SQL.
So I dont know what is the answer to the question "how do people do things they don't know how to do" ?
> So I dont know what is the answer to the question "how do people do things they don't know how to do" ?
The statue quo had been to learn SQL or ask a human you trust to check their own work, which hopefully you can reuse.
Now it's ask AIs that are intentionally a bit random, and less likely to (or incapable of) check(ing) their work. Perhaps without seeing the SQL at all, requiring to trust it for every interaction. And in a culture that moves so fast that there is no checking by any(one|thing).
No they don't. To be able to "check one's work", implies that they can be held accountable, that they can tell apart right from wrong, when in reality they're merely text predictors.
If you think an LLMs can check their work, then you are doing a terrible job at writing software. Plain and simple.
They even go as far as "cheating", so tests fail, writing incorrect tests, or straight out leaking code (lol) like the latest Claude Code blunder. Is this the tool the original comment "is using wrong, plain and simple"? Or do you have access to some other model that works in a wildly different way than generating text predictions?
in this case to make a local copy of the db, fill it with a set of records with an expected output of the query, then check to see of the query produces what you want.
you could then have it make queries that check the various assumptions that went into that artificial set of data. if it can find the assumptions broken, add records like that to the test set.
same old agentic programming techniques as ever. use your engineering skill to set up feedback loops. stuff that was painful to do as an engineer for checking your work is now straightforward
Feedback loops require a deterministic metric for success. You are doing the equivalent of using a slot machine to decide whether something is right or wrong.
In fact auto-complete in VS code with copilot works surprisingly well. Let’s say there are patterns in how classes in a framework are constructed, and I already added changes to the schema, it will often emit the correct implementation code when going there. That is really speeding me up even if I know the code base very well.
The harder part is understanding the nature of the data you're working with. There's always some catch ("oh that field `foo` was never backfilled, so for queries before 2020 you have to recompute it by joining with legacyBar instead")
> SQL is not hard enough to require an LLM to think about for you
As someone who's seen queries that are hundreds of lines long, involve a bunch of CTEs, nested SELECTs as well, upwards of a dozen joined tables with OTLT and EAV patterns all over the place (especially the kind of polymorphic links where you get "type" not "table_name" so you also need to look at the app code to understand it), I'd say that SQL can be too hard for people to reason about well.
Bonus points for having to manually keep like 5 Oracle package contents in your working memory cause that's where the other devs on the 10 year old project stored some of the logic, while the remainder is sort-of-dynamic codegen in the app.
Same as with most app code, it shouldn't be like that, but you sometimes get stuff that is really badly developed and the cognitive load (both to inherent and accidental complexity) will increase until people will just miss things and not have the full picture.
~20 years ago for me... I remember finding it when I first started working as a sysadmin. That and the story of the first "bug" report. That was a fun time.
Picasso was an artistic prodigy from an early age, and was talented at painting in the styles of the day like realism etc.
The reason why he is influential and not forgotten is that he took painting in an entirely new direction and was able to convey emotion and philosophical ideas (like in Guernica, for example) in a completely different way than what was typical at the time. In a lot of his work he strips things down and distorts them on purpose to show multiple perspectives, which isn't something that realism usually tries to do.
0: https://www.nasdaq.com/market-activity/stocks/afrm
reply