HNHacker News
TopNewBestAskShowJobs

roel_v

12,049 karma · joined January 21, 2010

submissionscomments
roel_v··on Google dusts off the Google+ playbook to fight ChatGPT
What I do is I don't ask it to generate results, but to give me a program that does the processing, then have it give me a test suite where I can 'trivially' (usually) verify the program on synthetic data (which, of course, I also have ChatGPT create for me). It usually even includes good edge cases.

I've had a few times where I didn't like the library that it used to come to the results, I just told it 'use library xyz' and it would rewrite the whole thing using idioms native to that library. It's amazing. It's eliminated like 75% of the drudgery that I've come to hate so much about programming the last years.

roel_v··on There Were Half As Many Affordable Homes For Sale In 2022 As There Were In 2021
"rent seekers"

You've used this term several times in this thread, but it does not mean what you seem to think it means.

roel_v··on 'The Problem Index' – Which Countries Have the Worst Demographics
What? No, that's not what I'm talking about at all. What I'm talking about is sensible healthcare provisioning, under the honest observation that just because some medical intervention is technically possible, it's necessarily a good idea (from both quality of life as well as financial points of view).

So no, just because it's technically possible to replace an 80 year old's hip, doesn't mean we should. There is nothing wrong with some cutoff where we say 'as a society, the maximum we want to pay for a daly is x' (or qaly or any other measure you want to take). There is nothing wrong with being honest about resources being finite, and that not every potentially possible medical intervention needs to be paid for by society. And this is what is happening in 'Europe' (although it isn't admitted as bluntly as I put it here...), and what I was referring to.

roel_v··on 'The Problem Index' – Which Countries Have the Worst Demographics
"You’re missing the bit where you can’t not give the 80 year old a hip replacement."

Why not? It happens a lot in 'Europe'. (yes I know that 'Europe' isn't one single thing)

roel_v··on Professor writes history essays with ChatGPT and has students correct them
I've been using it that way for weeks, but it doesn't work as one would imagine it does. It's great for the higher level drudgery (typing in boilerplate of loops, imports/includes, data type definitions and so on), and for getting the basics of libraries you're unfamiliar with working. But it doesn't have any idea of what APIs actually do, so sometimes it'll make completely nonsensical calls that are (usually) grammatically correct, but just don't do what you want. So those you have to hunt down and correct manually. As a tool for someone who can't program, I don't see this as useful. Nor for someone just learning to program (although I can imagine how it would feel useful and productive). You actually have to know very well how things work to be able to spot the mistakes it makes. If you're a new programmer, you don't have the instinct yet for how APIs generally work to be able to sniff out what's going wrong in an AI generated program. I mean, of course with enough effort anyone can get it to work, what I mean is that I don't think it really enhances productivity in such cases.

Like, yesterday it switched two variables around in a loop, and that was somewhat obscured by the iterators in those loops being Series objects (numpy/pandas code) and needing some extra call on them (.any() or .bool() or something like that). It sounds obvious but it was fairly subtle, and it only came out after carefully reasoning through the whole function (20 or 30 lines or so). Still, it saved me a bunch of drudgery and reading of a 'getting started' guide - it was a net win.

roel_v··on Show HN: DSLCad – a programming language and interpreter for building 3D models
I just tried a few, but no difference. One problem is that I can't see how far I'm zoomed in or out, and opening another file doesn't seem to reset the camera. So maybe there is something outside of the view that I can't seem, although zooming in and out doesn't seem to help.

I can open an issue but there isn't anything more than 'doesn't work' I can add. If you can describe some way for me to get information that's useful to debug, I can write that up.

roel_v··on Show HN: DSLCad – a programming language and interpreter for building 3D models
Oof I'm back already, this is quite rough.

No editor included I see, that tripped me up for a second but it's IMO better than wasting your time on including one, once I got that it was fine.

I tried to enter the smallest program I could think of:

    cube(x=10, y=10, z=10);
but I couldn't get that to show anything. I can't resize the console it seems? So I'm not sure if there's an error on there. Either way, I'm not sure how I would go about finding out why I'm not seeing anything.

3d navigation seems wonky but maybe that's because there is no object yet? Sketchup has the same, it's no big deal, but I won't know until I can get something to render.

Some quick wins:

- draw axes in different colors and put a label on them - show scale markers on axes - add a minimal sample program, or some way to select a 'template' when doing 'new' that will provide a few samples - one minimal sample with a cube and a cylinder, one slightly more developed like the table in your screenshot, one that shows off each keyword/object. Maybe split across one for 2d, one for 3d. Or more as the library of functionality grows.

More work:

- Add a 3d navigation marker/tool like Blender has, that'll show where I'm looking at, and has 'zoom to all' function

All of these would have helped in terms of 'getting started'.

Apart from that - I'd first need to be able to at least render something to be able to say something useful :)

roel_v··on Show HN: DSLCad – a programming language and interpreter for building 3D models
This looks awesome. If the 'fillet' works, that'd be enough for me to switch from OpenSCAD. Although to be honest, having a utility library like BOSL would be necessary too, or at least some way to make threads.

I'm going to download but another thing I would need to switch away from OpenSCAD - the ability to use an external editor, where the 3d model reloads correctly every time I save the program. Maybe your already has it, I'm going to check it out :)

roel_v··on Can sanitizers find the two bugs I wrote in C++?
Interestingly, here's what I get when I feed it your exact question:

    In C++, what happens when you call pop_back() on an empty vector?

    When you call pop_back() on an empty vector in C++, an std::out_of_range exception is thrown. The pop_back() function removes the last element of a vector and it is undefined behavior to call it on an empty vector. Attempting to do so will result in the exception being thrown.
So it basically claims both that an exception is thrown, and that it's undefined behavior. At least in this case, one would know something is up.
roel_v··on Can sanitizers find the two bugs I wrote in C++?
Here's my exact chat log:

    what happens when you do pop_back() on an empty vector in C++?

    In C++, when you call the pop_back() function on an empty vector, it will result in an std::out_of_range exception being thrown. The exception indicates that an element cannot be removed from an empty vector, as there is nothing to remove. To prevent the exception, it is recommended to check the size of the vector before calling pop_back(), to ensure that the vector is not empty.

    can you quote the relevant C++ standard on that?

    Sure! Here is the relevant excerpt from the C++ Standard (C++20, ISO/IEC 14882:2020):

    quote the relevant passage from the standard

    Here is the relevant excerpt from the C++ Standard (C++20, ISO/IEC 14882:2020):

    23.6.11 Vector data members [vector.data]

    -1- The member function pop_back() shall have no effect if the vector is empty.

    23.6.6 Vector capacity [vector.capacity]

    -1- void pop_back();
        Requires: empty() == false.
        Effects: If size() > 0, caller shall call erase(end() - 1).
        Throws: Nothing unless erase() throws an exception.

    21.5.5.5 vector<T>::pop_back() [vector.pop_back]

    -1- Removes the last element in the vector.
        Complexity: Constant time.
        Throws: Nothing unless erase() throws an exception.
roel_v··on Can sanitizers find the two bugs I wrote in C++?
Maybe. To be fair, I had the same opinion yesterday. This morning I decided to take a real look at how I could use chatgpt to augment my programming, and once I started with it with an open mind, I now think it's going to take away much of the drudgery I have come to loathe so much about programming. I used to like delving into libraries and frameworks and learning all their details - I thought that was what 'learning about programming' was. Now, 20 years later, I hate those aspects with a passion - having to look up the idiosyncrasies of a function call again, because there are dozens of ways of using it but all slightly different, or piecing together another dull specific use case. This morning I had chatgpt generate 4 fully fledged functions for me, each doing a highly specific task that would have taken maybe 20 or 30 minutes each to piece together the specific API's, and one of them using a Python package I had never used before, didn't know of and would have had to read the getting started tutorial before I could have used it on my own. Then all I had to do was write the glue to call those functions in the right order and with the right arguments and boom that was it. Plus the code was more elaborate and coherent than it would have been had I have to do it manually.

One example is not a guarantee, but the experience made my day, and probably my week. Which is why the pop_back() thing made me worry :)

roel_v··on Can sanitizers find the two bugs I wrote in C++?
Meta: when you ask chatgpt what happens when you do pop_back() on an empty vector, it confidently claims std::out_of_range will be thrown. It will even 'cite' the standard with a plausible explanation of what will happen (essentially, it says that a prereq is that empty() == false, and that it depends on what erase() throws). https://cplusplus.com/reference/vector/vector/pop_back/ and other sources I can find say undefined behavior. I don't have a copy of the standard at hand, can anyone quote the relevant section? Is this something that in practice is implemented in different (exception-throwing) ways?
roel_v··on The Dutch benefits scandal: a cautionary tale for algorithmic enforcement
It largely didn't, despite the huge media outcry here that tries to make it seem as if children were taken away because their parents committed fraud. It's simply that there is large covariance between people being poor (and/or having other markers that make them susceptible to being swept up in this sometimes overzealous enforcement of the law) and being unfit parents in other ways (being unable to provide a roof over children's heads, unsafe/violent living conditions etc.) This angle is taboo though to the point where recording data that could show this relationship is forbidden by child protection authorities.

There probably are/were cases where the clawing back of previously paid out benefits pushed parents into territory where the circumstances for having their children taken away could develop. However there is little reason to suspect that out of all those who were involved in this and had their children taken away, had those children taken away because of that involvement - i.e. the '1100' number mentioned above.

roel_v··on Stripe increases fees for EU and UK-based businesses in April
Yeah this. SEPA (e.g. what is known in the Netherlands as Ideal) is easier than entering cc numbers. Unlock phone, open app, scan qr code, enter pin on phone, click OK. Much nicer and faster than entering 16 + 3 numbers, and don't even get me started on 3DSecure or whatever it's called bullshit.
roel_v··on Is tipping getting out of control? Many consumers say yes
Right, it's still a deposit, and not a surcharge. The whole point is that you don't throw it away. That's exactly what makes a 'surcharge' into a 'deposit'.
roel_v··on Is tipping getting out of control? Many consumers say yes
You get the money back, so it's a deposit, not a surcharge.
roel_v··on Hello, PNG
Yeah I found that part a bit opaque as well. What about alignment? Does it just use 4 byte integers but one bit is unused? Isn't that a much more clear way of putting it?
roel_v··on No Start Menu for You
Yeah I should probably look into it more. Can Comodo's firewall be used standalone, i.e. without its antivirus? What I needed from Glasswire was click-to-allow on each network access, I couldn't find that in any product I tried a few years ago before I decided on Glasswire.
roel_v··on No Start Menu for You
"Case in point, Microsoft Office has no good reason to be aware of the existence of the internet."

shrug I think the same, but it's a fact that new versions of Word heavily integrate with Sharepoint and Teams. I don't use that functionality (at least not a lot), but for some businesses it's the primary use case, and it's how Word can manage to stay relevant even when competing with Google Docs. The concept of 'files' is going away slowly anyway, like it or not. (I don't, but again, nobody ever asked me). There's more - like, when you install a new spell checking language pack, something accesses the internet. It's most likely the installer/automatic updater 'service' that does this, but then you're again in the 'what's this process for anyway' territory.

My point - I think your view on how software 'should' behave is the same as mine, but the reality is that our view is outdated. It's just not how software works in 2023.

It's actually timely for me, as I just started using Glasswire with a clean ruleset. As I'm typing this, freakin' explorer.exe asked for network access to an outside IP address. It's hard to disallow explorer.exe network access as I won't be able to access SMB shares without it, but I have no idea why it would go outside my network.

I did just block Word from accessing the network at all. I guess I'll find out over the next few days in what ways it will break.

(that's another thing - most software nowadays doesn't even handle not having network access gracefully any more, if at all. Sometimes you just get blank parts of a window (presumably when embedded HTML views silently fail) and there is no way to 'reload' those parts of the UI. Or windows that don't open at all, so it just looks like a button doesn't do anything. And so on. It's disgraceful and like I said upthread, many of today's engineers just think it's normal, or are told to implement it that way against their own convictions. I mean I understand why things are they are, I just don't agree with the lack of effort in fighting back against the drivers of that outcome.)

roel_v··on No Start Menu for You
Not much. A lot of this sort of functionality is offloaded onto opaquely named services. So now you have decide if some access should or should not be allowed; but with very little information as to what process will in the end use that access. I used Glasswire for a long time, and when you install it on a new machine you get a lot of allow/block notifications; but then if you go back and look at the 'rule set' that was build up that way some months later, it's really hard to see what was blocked for what reason and if you actually should be blocking it.

One example is embedded IE/Edge views. It seems that those are a process of its own (sometimes), likely out-of-process COM instances. But if you want to allow one program to access the network that way but not another one, well there is (to my knowledge, and I haven't really looked into this) no way to do that. Same for the 'background download' service, the search service mentioned in the OP (although that's only used internally by Windows afaik, but by several sub-components), etc.

Not to mention, there isn't a whole lot of software left that doesn't need at least some networking for its 'primary' functionality. Whether that's by design I don't know. I blame engineers and marketing/product people equally for not showing enough restraint (i.e. the trope of 'just because they could... asked if they should...' etc). But nobody cares about my opinion on this, and the majority of users don't realize or care - and even if they do, they're as powerless as I am, individually.

roel_v··on The Pretty Good House
You cannot state such things without specifying where you are. In some places (and/or industries or market segments, even), architects are 'just the design person', sometimes even not really doing technical design but just function and aesthetics. In others they are engineers who do (besides design) very hands-on oversight of all sorts of contractors.
roel_v··on HBO Max’s Great Looney Tunes Purge
In a similar vein, is there someplace where my kids can watch He-Man, The Gummi Bears and GI Joe today?
roel_v··on I hacked Gumroad’s API and broke a bunch of tools
I think you're vastly overestimating the sophistication of the average (and even above-average) plugin (eco)system. Most are just DLL's that call some predefined functions.

Besides - network access is one of the most basic functionalities of any scripting in 2023 (it was in 2013, too). How would one disallow a simple call like in the OP? I mean, they use curl to make it (even) easier to craft an HTTP call, but doing the same from straight system calls is trivial, too.

roel_v··on I hacked Gumroad’s API and broke a bunch of tools
"Everybody" (i.e., everybody who thinks about this for 20 seconds) knows about this. Licensing is a matter of throwing up enough roadblocks to prevent the majority of users from easily bypassing your checks. There is no way to stop a determined attacker. That effort is likely better spend on developing new features.

I wrote several 'licensing systems' over the years. It's a honey trap for developers - it's so easy to overthink it and spend months on 'hardening' your licensing, to the point where you have to check the generated assembly to see if your compiler doesn't do something clever where now all of a sudden 'cracking' your software turns into replacing a single JNZ instruction with a JMP. If you really 'need' protection against this, you use a 3rd party product which essentially converts your program into something that runs on their proprietary virtual machine.

But if you do online license checking - how do you even 'fix' this? It's trivial to MITM all requests. So now you have to obfuscate your API calls, put in extra layers of crypto, hide your private keys for that will enough in your machine code, ... All of which will be cracked by someone halfway experienced in a matter of days. I think it's most likely the companies the GP reported this to just decided it's best to not bother until they have actual proof that this is a wide enough spread problem for them to make it worth putting in significant dev resources (because it does require significant resources).

roel_v··on An M1 for Curl
"I couldn't accept it"

Why not?

roel_v··on Ask HN: How do you upskill your teams technical writing?
"Writing is like coding. You get better by doing it. There are no shortcuts. Write. A. Lot."

I disagree. You don't get better at something by just doing it a lot. You get better by doing something, evaluating how well you did (on a short feedback loop), then repeat a lot. Just doing and hoping that somehow you'll automatically evolve in the right direction won't get you anywhere. Coding implicitly has such a feedback loop. At the most basic level, your compiler will tell you about syntax. At a slightly higher level, you can see if your code does what you think it does. At a higher level still, in a matter of weeks or months you'll find out about your design decisions and architecture skills.

When writing, you don't get any such feedback. If you're very lucky and you write on quite straightforward topics like API docs, you can ask your readers 'did you get from this what you needed'. For anything more abstract, your readers most likely are not even qualified to assess how good your writing is. Overall, I strongly disagree with your notion that you should just start writing a lot and hoping for the best.

roel_v··on The persistent and pervasive impact of bullying in childhood and adolescence
Lord of the Flies was fiction though, not only that, it was bullshit. when it happened in reality, the exact opposite of the book happened: https://medium.com/illumination-curated/real-life-lord-of-th... .
roel_v··on ASML looking to finally get ahead of Moore’s Law
It doesn't pretend to be a capital gains tax at all. It's a tax on income from assets, which is in practice more or less a 'wealth tax' which is also why it's called the Dutch word for 'wealth tax' in the first place.
roel_v··on Z-library founders arrested in Argentina
"Does anyone know if Z-library provided torrent dumps? "

They didn't, but pilimi.org does (have to access via Tor to get the torrents). That said, there have been 0 seeders since the original ZLib bust. https://twitter.com/AnnaArchivist/status/1592654308516179970 (pilimi author) says there should be an http mirror now, and I'm probably stupid but I can't find it anywhere. Seems to me it's the end of Z-Library. The end of an era, really.

roel_v··on Global shipping container shortage is now a container surplus
You mean everybody should just be an island with low and very dispersed population, with relatively high development levels at the start and high degrees of self sufficiency wrt basic needs? Why, why didn't they all just do that then!
← PreviousPage 4 of 34Next →