Please stop putting blurry borders to either side of vertical video to make it horizontal. It’s no better than black borders when viewing horizontally, and now viewing the vertically is horrible too.
One technique I've found, when using AI assistance in code reviews is "Write a test that proves this is a real concern", especially when I'm sus that the bot's claim might be false.
This has two main outcomes, both of them beneficial:
I've been evaluating working with humans lately. People say humans are great, and they are, but in the workplace, you should know:
1. They cheat on interviews! We caught one looking up the answer on the web, when they were supposed to do their work in the provided environment.
2. They break rules. They'll even coordinate with each other in private message boards to share ways to get around company policy.
3. You cannot trust them with the company credit card. They buy things without approval.
4. If you put them in front of a customer, the customers can trick them into saying things they shouldn't!
5. They optimize for what they're being evaluated on, not the company's goal. Total Goodharting.
I would think hard before using humans in the workplace right now. At the very least, you should have a human deployment safety policy.
One of the ways websites keep your data safe is by leveraging the properties of semiprimes- numbers created by multiplying together two prime numbers. The multiplication is easy, but undoing this calculation is much harder. Login forms are able to use this quirk of mathematics to prevent anyone else from reading your password while it's in transit, since an attacker only sees the multiplied version and doesn't know the original pair of primes.
This is known as "two-factor authentication".
If you’re reading about the Delta flight WiFi incident and wondering what a pineapple is, it’s a fruit. They used Mythos to get a fruit to hack the WiFi. That’s how scary AI is.
@fairyfountain Whenever you lose power you need to dig up the instructions on how to turn it off again, at least on mine. Annoying because that happens occasionally but not often enough to remember how.
I have been thinking about the famous chart showing how experts keep projecting linear growth in solar installations, year after year, and always get it wrong when growth is still exponential.
I think the same thing is happening with the discourse on product strategy around AI.
One of the silliest arguments made in favor of hard reboots of long-running sci-fi franchises is "but you can't expect new viewers to watch hundreds of old episodes!"
This is 100% upside down. You make a great new show that gives new viewers just enough background info to enjoy and understand what's going on.. and then many of them will WANT to binge watch those hundreds of old episodes. And they'll be amazed and appreciate the new show even more.
It's a win-win.
Incredible how hard this is for entertainment executives to understand.
These protestors believe — quite justifiably — that Kristof’s column was full of deliberately incendiary falsehoods and that the New York Times shouldn’t have run it. Indeed, despite Rhodes’ use of the word “reporting” the dog rape canard was not reported by the NYT at all. Rhodes knows all this. He knows that’s why they’re protesting. He just has to say this obviously bad faith crap to further impugn Israel and Israel supporters. In fact, it seems like Rhodes doesn’t care whether Kristof’s account is accurate, because it served his purposes just fine.
It can be unsettling when you notice that a technical assumption you've been making for 40 years has quietly expired. This happened to me a few minutes ago.
I maintain a game called "greed". It's an old-style game from the days of character-cell terminals. Not quite a classic deserving of museum status like Colossal Cave Adventure or nethack, but worth keeping alive because it's still solidly playable.
And people still are playing it, because yesterday I got a minor bug report about it. Nothing user-visible, just a silly C build problem. I fixed it. Then, because I'm generally trying to get my old C projects out of C into more modern and safer languages, I tried asking my robot friend to port it to Rust. Which it promptly did.
But then I noticed something that irritated me. The Rust code had a bunch of unsafe blocks in it, which went directly against my reasons for moving it to Rust. On further examination, I discovered that it was calling the C curses library to do its screen painting.
This is where I have to explain about curses. It's an ancient C library for writing TUIs. It looks in your environment for a variable named TERM, uses its value to dredge a bunch of magic strings out of a system-wide database called "terminfo" that tells it how to manipulate your terminal, and then uses those magic strings for screen painting.
On modern systems, TERM is always some variant of a color ANSI terminal. In times past, when people attached a wild variety of character cell terminals to Unix systems rather than just sitting at the console, it could have been lots of other things. Those days are gone, but the habit of always going through terminfo so you can support a couple of hundred terminal types has persisted.
I prod robot friend to find me a pure Rust equivalent of curses so I don't have to do unsafe and call C code. It says, yes, there is such a thing and it's called crossterm. I tell it: change this code to use crossterm.
Robot friend grinds for a bit, and then tells me it can't do that because I don't have cargo (the Rust package manager) installed. This is because I never write Rust by hand. When I ship programs written in Rust, it's because I ported them from some other language and don't expect to ever touch them again without having a robot to do the code-grinding for me.
This is when things get slightly strange. It tells me that instead of porting to crossterm, it has written into the greed Rust source its own little screen-painting backend the implements a subset of curses calls and (this is the important part) assumes it's talking to a color ANSI terminal.
Robot friend is not an old Unix hand. It doesn't know the unwritten law of the deep magic that you always go through terminfo because...because you might have to support hundreds of terminal types that no longer exist in this century?
I blink. I look at the Rust code for the back end. It is small and elegant. No more unsafe. No more dragging around a bunch of C library code. This is ... the right thing?
I push it to the public repository.
What sealed the deal is that code, even code in a language as rebarbative as Rust, is wet clay now. If, against all odds I get a bug report that says somebody wants to play greed on something that isn't an ANSI terminal emulator, reinstating full curses support will take a one-sentence prompt to my robot friend and mere minutes.
I hadn't had to directly confront before the fact that the entire set of assumptions that made TERM and terminfo a thing are as obsolete as dial-up acoustic modems. Still, the moment when I tossed away one of the ancient laws of Unix coding felt a bit like the universe lurching sideways.
Indeed do many things come to pass...
@justalexoki We do have a drying rack, but it’s in the laundry room and only occasionally used for specific delicate items, never loaded up like that picture