

And doesn’t understand LLMs, which don’t “learn” a damn thing after the training is completed. The only variation after that is random numbers and the input it receives.
And doesn’t understand LLMs, which don’t “learn” a damn thing after the training is completed. The only variation after that is random numbers and the input it receives.
Yeah, TypeScript has to integrate with JavaScript for practicality’s sake, which pierces a hole in its ability to do proper, rigorous type checking. It’s closer to machine-readable documentation that helpfully flags some errors than an actual type-checked language, which will make you get your types right instead of gently suggesting that there might be an issue the way TypeScript does.
More specifically, they’re borrowing the more mathematical meaning of variables, where if you say x equals 5, you can’t later say x is 6, and where a statement like “x = x + 1” is nonsense. Using “let” means you’re setting the value once and that’s what it’s going to remain as long as it exists, while “var” variables can be changed later. Functional languages, which are usually made by very math-y people, will often protest the way programmers use operators by saying that =
is strictly for equality and variable assignment is :=
instead of ==
and =
in most C-style languages.
Thinking through a problem yourself, or taking an idea and putting it into words, is like exercise for the brain. You may think you understand a thing from reading or hearing about it, but it’s only when you do it for yourself that you discover what you really know and what you don’t. It’s the difference between learning what a square root actually is and how to press the square root button on the calculator. It’s the difference between learning to drive and learning to turn on self-driving mode. Even if the outcome is the same, the learning experience is day and night.
Once you understand a concept well enough, then using an LLM to get some busy work done or just get a starting point that you can improve isn’t all that bad, much like using a calculator after learning pen-and-paper division, but trying to use one while learning is almost certain to hurt your understanding, even if the LLM doesn’t outright make a bunch of stuff up.
Do you think there’s any reason to believe that these tools are going to continue their breakneck progress? It seems like we’ve reached a point where throwing more GPUs and text at these things is not yielding more results, and they still don’t have the problem solving skills to work out tasks outside of their training set. It’s closer to a StackOverflow that magically has the answers to most questions you ask than a replacement for proper software engineering. I know you never know if a breakthrough is around the corner, but it feels like we’ve hit a plateau for the foreseeable future.
CNAMEs can only point to other domains. Redirects like that would be handled on the HTTP level, so you’d need a web server in the mix that sends requesters to the right place when they try to access the subdomain. It can redirect to anywhere, not just domains you control, so the Bluesky example would be handled the same way as the other one.
Love a language that doesn’t care if you’re using inputs to get outputs or using outputs to get inputs
Yeah, they’re probably talking about nulls. In Java, object references (simplified pointers, really) can be null
, pointing nowhere and throwing an exception if you try to access them, which is fine when you don’t have a value for that reference (for example, you asked for a thing that doesn’t exist, or you haven’t made the thing yet), but it means that every time you interact with an object, if it turns out to have been null, a null pointer exception is getting thrown and likely crashing your program. You can check first if you think a value might be null, but if you miss one, it explodes.
Kotlin has nulls too, but the type system helps track where they could be. If a variable can be null, it’ll have a type like String?
, and if not, the type is String
. With that distinction, a function can explicitly say “I need a non-null value here” and if your value could be null, the type system will make you check first before you can use it.
Kotlin also has some nice quality of life improvements over Java; it’s less verbose (not a hard task), doesn’t force everything to belong to a class, supports data classes which are automatically immutable and behave more like primitive values than objects, and other improvements.
I see this as an accessibility problem, computers have incredible power but taking advantage of it requires a very specific way of thinking and the drive to push through adversity (the computer constantly and correctly telling you “you’re doing it wrong”) that a lot of people can’t or don’t want to do. I don’t think they’re wrong or lazy to feel that way, and it’s a barrier to entry just like a set of stairs is to a wheelchair user.
The question is what to do about it, and there’s so much we as an industry should be doing before we even start to think about getting “normies” writing code or automating their phones. Using a computer sucks ass in so many ways for regular people, you buy something cheap and it’s slow as hell, it’s crapped up with adware and spyware out of the box, scammers are everywhere ready to cheat you out of your money… anyone here is likely immune to all that or knows how to navigate it but most people are just muddling by.
If we got past all that, I think it’d be a question of meeting users where they are. I have a car but I couldn’t replace the brakes, nor do I want to learn or try to learn, but that’s okay. My car is as accessible as I want it to be, and the parts that aren’t accessible, I go another route (bring it to a mechanic who can do the things I can’t). We can do this with computers too, make things easy for regular people but don’t try to make them all master programmers or tell them they aren’t “really” using it unless they’re coding. Bring the barrier down as low is it can go but don’t expect everyone to be trying to jump over it all the time, because they likely care about other things more.
I’m so confused that the same people can say “why does everyone get their undies in a bunch that we happily accept putting arbitrary data in columns regardless of type, that’s good, it’s flexible, but fine, we’ll put in a ‘strict’ keyword if you really want column types to mean something” and also “every other SQL says 1==‘1’ but this is madness, strings aren’t integers, what is everyone else thinking?!”
A VPN is just a way to say “wrap up my normal internet packets and ship them somewhere specific before they continue the normal way.” The normal way is you want to get a message to some other server, and as a part of setting up the network you’re on, your machine should already have a list of other devices it’s physically connected to (“physically” could be “via radio waves” so not just wired) and they should have already advertised “hey, I’ve got access to these places too” for your information. Your router is likely the only one in your home network advertising anything that is on the larger internet, so all your outgoing messages will have to go that way to get to their destination. For example, I’ve got a phone, a wifi access point, a router, and my ISP’s box; my phone knows the WiFi access point is two hops away from internet because the access point said so, that’s the best one it can see, so it sends it that way and hopes it makes it. Each machine in between does the same thing until hopefully it gets where it is supposed to.
With a VPN, the same messages are wrapped in a second message that is addressed to the other end of the VPN. When it gets to the VPN provider, it’s unwrapped, then the inside message is sent off to wherever it’s supposed to go. If a message comes back to the VPN provider addressed to you (ish, this is simplifying a bit), it’s wrapped up the same way and sent back to you.
Big companies often put resources “behind” the VPN, so you can’t send messages from the outside addresses to the office printer, they’ll get blocked, but you can request a connection to the VPN, and messages that come in through that path do get allowed. The VPN can be one central place where you make sure everything coming in is allowed, then on the other side the security can be a little less tight.
VPNs also encrypt the internal message as a part of wrapping them up, which means that if you’re torrenting via a VPN, all anyone else can see is a message addressed to your VPN provider and then an encrypted message inside. And anyone you were exchanging messages with only ever saw traffic to and from the VPN provider, they never saw where it was going after your VPN provider got it. Only you and the VPN provider know what was happening on both ends, and hopefully they don’t look too closely or keep records.
Hopefully now it’s clear that Mullvad and similar won’t help you access your own things from outside, they’re only good for routing your stuff through them and then out into the rest of the internet. However, this isn’t secret magic tech: you can run your own VPN that goes in the other direction, allowing you into your own home network and then able to connect to things as if you were physically there. Tailscale is probably the easiest thing for things like that nowadays, it’ll set up a whole system where your devices can find each other and set up a mesh of secure, direct connections no matter where they are physically located. By default, just the direct device-to-device connections are re-routed, but you can also make a device an “exit node” that can route all your traffic like a traditional VPN.
Of course, that will be the exact opposite of what you want for privacy while torrenting, as it’s all devices that you clearly own and not hiding their identities whatsoever. But it’s very cool for home networking and self-hosting stuff.
Archive Team often uses the Internet Archive to share the things they save and obviously they have a shared goal of saving a copy of everything ever made, but they aren’t the same people. The Archive Team is a vigilante white hat hacker group (well, maybe a little bit grey), and running a Warrior basically means you’re volunteering to be part of their botnet. When a website is going to be shut down, they’ll whip together a script and push it out to the botnet to try to grab as much of the dying site as they can, and when there’s more downtime they have some other projects, like trying to brute force all those awful link shorteners so that when they inevitably die, people can still figure out where it should’ve pointed to.
The .bin and .cue file are the parts of the actual game disc that you want. The .bin file contains almost all of the data and the .cue file contains some extra information about the structure of the CD. All the rest is Internet Archive stuff (and an image of the game cover of course).
To open it, you can convert it to a .iso disk image instead, which any Linux distribution can open as if it were a real CD. This blog post talks about how to do that. The last paragraph about mount
you can probably replace with double-clicking the .iso file in the GUI I would guess.
It’s not a fantasy because they’re bad ideas (they’re not) or we shouldn’t fight for them (we should), it’s a fantasy because you’re skipping over any of the actual work that needs to be done to make them happen: convincing more people to join you and demand more. Ask 100 people if the Senate and Supreme Court should be abolished and 99 of them are going to look at you like you have two heads. You can insist that you’re right and they’re all wrong all you want, but unless you work to get more people on your side, you’ll just be complaining into the void and setting impossible standards for politicians so that you can feel smug when they fail to meet them.
If a minority group is being oppressed or is otherwise motivated to create change and is voting in large numbers, but the majority is apathetic and not bothering to vote, then this system would prevent the minority from changing their representation as “punishment” for something they’re not doing.
It’s also a bit of a “the beatings will continue until morale improves” solution to the problem, if it even is actually a problem. Low turnout is bad, but not because it’s inherently bad not to vote. It’s a symptom of the fact that people don’t think it matters, or that it will change anything, and unfortunately they’re not exactly wrong much of the time. Instead of putting effort into punishing people for not being engaged enough, it’d be better to make systemic changes that empower people and make the government more representative of their interests.
Older Unix systems used to only do the first 8 bytes for passwords. Sometimes for my own amusement when logging into one of the Sun machines at school, I’d type in enough of my password to count and then just mash the keyboard.