I toyed with Lazarus a bit and I honestly think it's insane it's not more popular. Instant build times for GUI. You want to add a plugin? Press one button to recompile the entire IDE. You can recompile the IDE from GTK to Qt. With one button. I think I'd prefer it over Qt Creator, for example, for building GUIs on Linux.
The catch? I don't know Pascal, and there is no way to learn it. There are so many versions of Pascal that every tutorial you find will be about a different version. The GUI tutorials are for Borland Delphi, not Lazarus. There is no documentation or recipes for doing basic things, e.g. if you want to make a simple to do list CRUD that adds items to a list, you have no idea which widget is the correct list widget. Normally in this case you have a model-view list and a string list. Doing anything with lists that have columns is often a confusing nightmare, but and it becomes even more confusing with no documentation about it.
On the forums, the recommendation is to just press F1 in the source code editor to read the documentation for a function, but that doesn't help you when you have no idea what function you need to call, and you won't know it often. How do you append an item to an array, for example. How do you REMOVE an item. Is there a splice function? A remove function? Where are the dynamic arrays. Is there something like classes, and if not, how are you supposed to organize objects that you want to instantiate. How the lifetime of things work. Every time you ask "is this the correct way to do it using this tool?" you'll have no answers. How do you structure your project? It's completely different from how modern languages work and from how even C works.
> Why: There are many books and resources about Pascal out there, but too many of them talk about the old Pascal, without classes, units or generics. So I wrote this quick introduction to what I call modern Object Pascal.
We need more people to check out free pascal compiler and it's IDE Lazarus. The more you learn, the more you see they are excellent in many ways. https://www.lazarus-ide.org/
I am in exactly the same position. It looks interesting but it seems very much oriented towards people who already know pascal and/or are maintaining legacy systems.
It's not possible to remove anything without potentially breaking backwards compatibility. Removing ANYTHING in Javascript would be a tremendously bad idea.
If webpages from 30 years ago stopped working because 2025 developers favor aesthetics and disrespect legacy, I'd be pretty angry.
>In sloppy mode, a number beginning with a 0, such as 0644, is interpreted as an octal number (0644 === 420)
How does something like this even happens.
Anyway, if you "use" strict mode, but the browser doesn't support it, you're effectively not running in strict mode, so you can't actually assume the Javascript will execute differently.
I do like the way Rust has language editions which let you work around this, at least partially.
Mostly though I don't care if we break old stuff. It happened all the time when developing for the desktop. People just dealt with it. The ones most impacted are lazy enterprises and I have no sympathy for them.
The loss of being unable to access old information is unknowable and therefore infinite. People can't just "deal with it." Every year there is more technical baggage that someone new to the environment is just supposed to learn. At some point it becomes an impregnable barrier.
If you start telling people they have to install an obsolete web browser, and then an obsolete operating system, and then patch the drivers because all the hardware doesn't support it anymore, you have effectively gatekept information that was once available in the open web to the tech elite.
Yes, "tech" is redone from scratch every 6 months so 5 years ago is an eternity, but there are plenty of fields where 30 year old information is just as invaluable as something published today.
Nobody is maintaining webpages published in the 90's. Nobody is going to update them. They are just there, sitting on some university's server that barely gets any hits. The author probably died 12 years ago and nobody even remembers who is responsible for it or that it's running. And it's in everyone's best interest to keep it that way: online.
I think the cost is too high. If people want that information then they will find a way. If not then it probably wasn't that valuable.
The reality is that we have already given up in many areas, try and run a 16 bit Windows application on Windows 11, try and run a Node app you haven't updated for ten years, try and run early versions of OS/X and see how much internet dependent functionality has been lost, try and view an email with linked assets, try and run a web page with a Java or Flash applet.
The only people who can find a way are technical people. The average person can't do it.
And we can't tell how valuable it is because we don't know what we are losing.
If we burn down the Library of Alexandria, was there anything valuable in there? We don't know, because it's all burned. It's inaccessible. It's too much stuff to verify before doing it, and we can't tell after we do it, so I'd rather we don't burn down the whole thing since we don't know what's inside.
And every time it does happen, it's a massive loss.
You have no idea how much I grief the fact flash games are no longer a thing. If newgrounds still had flash today, the Internet would be a much better place.
It's possible that this is due to the underlying implementation.
In a unique column normally you'll have an index, so NULL becomes a special value in an index, but in SELECT DISTINCT you probably won't have an index, which means a full scan is performed, then every row has to be compared with every other row.
If it weren't for the routine ex-Googler postmortem blog post shared on HN I'd think Google doesn't even have human employees.
The greatest mystery of my life is what is a "Google Product Expert" on their community forums whom I assume:
1. isn't an employee speaking as the company.
2. is someone given the title by the company.
3. spends a lot of time answering questions despite not being paid for it.
4. can contact Google employees somehow.
The only perks for this that Google lists is that you can join a secret club of Google Product Experts. It feels like gig economy applied to customer support.
But if you have a problem and you need to show that you own appleid [email protected], can’t you go to an Apple Store and they will help you? I believe the frustration with Google is that there is not an actual human the regular person can talk to.
I got a solar panel that I can control with an app on a smartphone.
I still don't understand why because it's not fully installed.
I thought this was just a DC generator plugged into a DC-to-AC converter (an "inverter") and nature did its thing to autobalance the flow of electricity. I'm excited to find out what the app does and why these panels need a WiFi password.
"Useful contributions" is subjective. Not everyone is born a senior developer. Juniors, and even children who aren't even juniors yet ask questions on these channels.
Source: I bothered a lot of people on the Internet about C++ when I was child.
I contributed well-researched answers already when I was ostensibly a very junior dev, and even before that during my CS studies. Stuff you can lookup or simply try out is doable, of course questions where you need experience aren't a good fit.
When I was in high school I read the docs, and learned C++ from books and MSDN. Granted my access to the internet was rather limited back then, but it also never crossed my mind to bother people for things I could easily lookup myself.
Growing up in a RTFM, "search the forum first before asking" environment is seen as toxic today, but it really helps keeping certain behavior in check thats a drag on society as a whole.
One of the best mentors/bosses I ever had never answered coding questions directly, but always in the form of a question so I could look it up and learn for myself.
I try to do the same with my junior devs today, unless there's time constraints or they're under stress, I try to let them figure out the final answer themselves.
I find there's a time and a place for RTFM, and it's usually not at the start of the project when you know the least. When you're just starting, you just want to get something working. Being spoon-fed some answers to get past a few hurdles is rather nice. But then there comes a point where you have to stop and be like "Okay, what the heck is this actually doing? How does it work?".
I just hit that point with some TensorFlow stuff because I started hitting the limits of what ChatGPT could answer successfully, and I think that's fine. But maybe good that I couldn't get everything out of it or it may have delayed my learning further yet. Which I guess reinforces your point.
Information is only useful if it's accessible. If they are asking questions it's because the information they want is in practice not accessible to them.
I'm not disagreeing, just clarifying. I myself have asked lots of dumb/easy questions but prior to ChatGPT it was hard to get simple straight-forward answers.
I wonder how GPLv3 and CC BY SA licenses should be considered when training AIs like this? The model is software, and if it's sufficiently different from the source, it's a derivative work, isn't it?
The catch? I don't know Pascal, and there is no way to learn it. There are so many versions of Pascal that every tutorial you find will be about a different version. The GUI tutorials are for Borland Delphi, not Lazarus. There is no documentation or recipes for doing basic things, e.g. if you want to make a simple to do list CRUD that adds items to a list, you have no idea which widget is the correct list widget. Normally in this case you have a model-view list and a string list. Doing anything with lists that have columns is often a confusing nightmare, but and it becomes even more confusing with no documentation about it.
On the forums, the recommendation is to just press F1 in the source code editor to read the documentation for a function, but that doesn't help you when you have no idea what function you need to call, and you won't know it often. How do you append an item to an array, for example. How do you REMOVE an item. Is there a splice function? A remove function? Where are the dynamic arrays. Is there something like classes, and if not, how are you supposed to organize objects that you want to instantiate. How the lifetime of things work. Every time you ask "is this the correct way to do it using this tool?" you'll have no answers. How do you structure your project? It's completely different from how modern languages work and from how even C works.