Hacker Newsnew | past | comments | ask | show | jobs | submit | qwertox's commentslogin

> desperately need LLMs to maintain extremely effective context

Last time I used Gemini it did something very surprising: instead of providing readable code, it started to generate pseudo-minified code.

Like on CSS class would become one long line of CSS, and one JS function became one long line of JS, with most of the variable names minified, while some remained readable, but short. It did away with all unnecessary spaces.

I was asking myself what is happening here, and my only explanation was that maybe Google started training Gemini on minified code, on making Gemini understand and generate it, in order to maximize the value of every token.


> StarDict on Wayland doesn't have this problem, because Wayland prevents applications from being able to capture text from other applications by default.

StarDict on Wayland has a different issue, it causes a segfault.

Sat, 02 Aug 2025: Bug#1003710: stardict crash in gnome with message Segmentation fault

https://www.mail-archive.com/debian-bugs-dist@lists.debian.o...


Yeah, I don't really know much about Wayland but.... That does not sound correct to me... Wayland has a copy/paste protocol, and my 5-minute web search indicates that it works much like the X11 copy paste protocol, each application takes care of what will be sent when pasted. then some other application requests a paste, the display server connects the two they negotiate a format and the "copied" data squirts across. that is to say Wayland applications can totally capture text from other applications.

Now if the article meant to say Wayland applications are unable to capture arbitrary text via mechanisms other than then the copy paste protocol I would say fair enough, but it sounds like the problem application is using the normal X11 copy paste protocol. so I don't see how that statement is relevant.


Besides, capturing text from other applications is very much required for various utilities. It's as much of a security feature in Wayland as turning off your computer and never turning it back on is.

There is a separate, privileged, interface that this kind of utility can use.

Meanwhile, the other 99% of applications don't need unlimited permissions.


Those privileged interfaces cover known use cases but don't allow for novel tools - or even full functionality of existing tools in many cases.

You also underestimate how many programs make use of functionality that could be abused in some way. And unless you lock all those interfaces down it's all security theater. Who cares if the display protocol disallows copy paste snooping when there are a million different ways to get the the memory of other processes or the files that they store sensitive information in. And such a locked down ecosystem is antithetical to free and open computing.

I don't use my computer to be secure, I use it to get shit done and and to have fun. I'm not going to accept approaches to security that interfere with that any more than I will accept the same in real life. There aren't any bars over my windows because we have functioning police to deter criminals. I don't need lab tests done for all the food I buy because we have regulations that ensure food sold is generally safe to eat. I go outside without body armor and weapons even though someone could theoretically kill me. 100% security is always a tradeoff for quality of life.


I like it when novel tools ask me to do novel things. Malware is a novel tool.

But then StarDict would still be sending your selections out.

Personally I think the X11/Wayland distinction is moot, given this appears to be an explicit feature of StarDict, and it seems more likely it just hasn't been ported to Wayland yet.


When you copy a password from a text editor, or some text from a webpage, does Chrome or Firefox send this to their servers?

Not even /s makes sense here.


"If user don't like one of these plugin, he can disable it by himself." f.u.

> I cut a hole in the side of a small UPS so I could connect it to a larger (car) battery for longer uptime

Can you share more about this? I have a APC Back UPS PRO USV 1500VA (BR1500G-GR) and it would be nice to know if this is possible with that one as well.


That UPS eventually died, and I'm not sure if it was because it was hooked up to a larger battery than it was designed for, but it's still only 12 volts so I don't think the electronics would notice. What they may notice is extended run-time in the event of a power failure.

It was a crude mod. Take the cover off and remove the existing little security alarm battery, use tin snips to cut a hole in the side of the metal UPS cover (this was challenging, it was relatively thick metal, I'd recommend using an angle grinder in an appropriately safe environment far away from the internals of the UPS), and feed the battery cables out through the hole. I probably got some additional cables with appropriately sized terminations to effectively extend the short existing ones (since they were only designed to be used within the device). And then connect it up to a car battery.

Cover any exposed metal on the connectors with that shrink rubber tubing or electrical tape. Be very careful with exposed metal around it anywhere, especially touching the RED POSITIVE pole of the battery. Get a battery box - I got one for the big-ass AGM battery.

Test it out on a laptop that's had it's battery removed or disconnected that, just in case, you don't care too much about losing.

Get a battery charger that can revive a flat battery, and do a full refresh/renew charge on the car battery once a year or after it's had to push through a power outage that may have used more than a few percent of its capacity.

Personally, I think it's safer a less hassle to go for a LiFePo4 (LFP) Power Station style device that has UPS capabilities. LFP batteries have 3,000-ish cycle lifetimes, which could be nearly ten years with daily use.


> use tin snips to cut a hole in the side of the metal UPS cover (this was challenging, it was relatively thick metal, I'd recommend using an angle grinder in an appropriately safe environment far away from the internals of the UPS)

Why not just drill a hole? Drill bits large enough to drill a hole for 120A cables exist.

> Get a battery charger that can revive a flat battery, and do a full refresh/renew charge on the car battery once a year or after it's had to push through a power outage that may have used more than a few percent of its capacity.

If you're going this route I'd recommend a marine battery. Car batteries don't handle deep cycles well, and, TBH, UPS chargers aren't designed for failed car batteries (nor marine batteries) and can possibly cause an explosion in the lead-acid battery has a few dead cells.


No, don't do it. I understand his thought process because they are both 12v batteries with more capacity, but car batteries are made for high burst of energy which a car engine ignition requires, whereas UPS batteries are made for slow drains. Also, these UPS are made for charging battery cells in a certain way, if you start to stack a bank of batteries of the same model in parallel hoping for more capacity, even then its a problem for the UPS's charger, they won't charge evenly and eventually becoming a problem.

Marine deep cycle batteries might work better, but at some point I'm pretty sure lithium would be price competitive.

I like to keep my hardware competence sufficiently low so that I’m never cursed with the false confidence to even consider “drilling a hole in a UPS,” nevermind wiring it to a car battery in my closet…

You seem like the kind of guy who doesn't enjoy a nice sulfuric acid spill on the floor, haha

I will mess with all kinds of hardware, especially mini PCs and routers.. I once had a few hundred iPhones in my closet… but I draw the line at anything that uses batteries or electricity in a non-standard way. If the wire can’t carry data, I’m not touching it.

Maybe it’s because when I was a kid, I fancied myself an experimenter, and I had a wire ripped off a lamp, and touched the two ends together…


It isn't quite that bad. the batteries are close enough that it will work.

the real worry is these are already a fire hazzard and so something goes wrong insurance will blame the mod even if not at fault


It's a bit trickier than you think. And can be dangerous.

The discharging circuitry is fine, but the _charger_ might overheat because a larger battery can draw more current while charging for longer periods. I discovered that when I tried to attach a "lead-acid compatible" LFP battery to an UPS.

These days, it's just easier to buy a dedicated rack-mountable LFP battery originally meant for solar installations, an inverter/charger controller, and a rectifier. The rectifier output will serve as a "solar panel" input for the battery. You get a double-conversion UPS with days-long holdover time for a fraction of a lead-acid UPS.


This really doesn't seem like something one would want to mess around with if they don't know what they're doing (fire hazards and all...)

My commercial UPS already scares me at the fire potential. No way I would take on the risk of some DIY on something that could burn down the place or electrocute me.

There's not much to it, you just take the small 12V sealed lead-acid cell out from the bottom of the UPS, extend the two leads, and connect a larger capacity lead-acid battery of the same voltage.

If you don't recognize the terms "sealed", "lead-acid", "battery", "capacity", or "voltage" then you shouldn't do this.

About the only advantage of it is that it's cheap (free if you find a UPS in the trash with an already dead battery), but those cheap UPSs make really crap quality power, and for some of them the only reason they don't overheat is because their stock battery is so small. It's a bit like how you can cook a whole turkey in the microwave, but you probably don't want to.


Both the submission and your link took me way too long to see what's the issue here.

What were they even thinking? Don't they care about this? Is their AI generating all their charts now and they don't even bother to review it?


My unjustified and unscientific opinion is that AI makes you stupid.

That's based solely on my own personal vibes after regularly using LLMs for a while. I became less willing to and capable of thinking critically and carefully.


It also scares me how good they are in appealing and social engineering. They have made me feel good about poor judgment and bad decision at least twice (which I noticed later on, still in time). New, strict system prompt and they give the opposite opinion and recommend against their previous suggestion. They are so good at arguing that they can justify almost anything and make you believe that this is what you should do unless you are among the 1% experts in the topic.

> They are so good at arguing that they can justify almost anything

This honestly just sounds like distilled intelligence. Because a huge pitfall for very intelligent people is that they're really good at convincing themselves of really bad ideas.

That but commoditized en masse to all of humanity will undoubtedly produce tragic results. What an exciting future...


> They are so good at arguing that they can justify almost anything

To sharpen the point a bit, I don't think it's genius "arguing" or logical jujitsu, but some simpler factors:

1. The experience has reached a threshold where we start to anthropomorphize the other end as a person interacting with us.

2. If there were a person, they'd be totally invested in serving you, with nearly unlimited amounts of personal time, attention, and focus given to your questions and requests.

3. The (illusory) entity is intrinsically shameless and appears ever-confident.

Taken together, we start judging the fictional character like a human, and what kind of human would burn hours of their life tirelessly responding and consoling me for no personal gain, never tiring, breaking-character, or expressing any cognitive dissonance? *gasp* They're my friend now and I should trust them. Keeping my guard up is so tiring anyway, so I'm sure anything wrong is either an honest mistake or some kind of misunderstanding on my part, right?

TLDR: It's not not mentat-intelligence or even eloquence, but rather stuff that overlaps with culty indoctrination tricks and con[fidence]-man tactics.


AI being used to completely off load thinking is a total misuse of the technology.

But at the same time that this technology can seemingly be misused and cause really psychological harm is kind of a new thing it feels like. Right? Like there are reports of AI Psychosis, don't know how real it is, but if it's real I don't know any other tool that's really produced that kind of side effect.


We can talk a lot about how a tool should be used and how best to use it correctly - and those discussions can be valuable. But we also need to step back and consider how the tool is actually being used, and the real effects we observe.

At a certain point you might need to ask what the toolmakers can do differently, rather than only blaming the users.


No. AI is a tool to make ourselves look stupid. Suggesting that it makes people stupid suggest that they are even looking at the output.

Since everyone assumes GPT hallucinated these charts, the truth must be that they're 100% pure, organic, unadulterated human fuckups.

Doesn’t matter. Either way is bad

Either way is bad. Intentionally human made and approved is worse than machine generated and not reviewed. Malicious versus sloppy.

Machine generated is worse.

How many charts will the person create, how many the machine?


> Both the submission and your link took me way too long to see what's the issue here.

Mission accomplished for them then.


It makes Apple's charts look rigorous and transparent

I mean, if your whole business is producing an endless stream of incorrect output and calling it good enough, why would you care about accuracy here? The whole ethos of the LLM evangelist, essentially, is "bad stuff is good, actually".

I copy-pasted the front page into ChatGPT and told it to "Explain some usecases", and it's pretty useful.

   A city planning department tracks changes to zoning boundaries over time.
   Staff can:
      See who changed what, when, and why.
      Roll back or compare versions.
      Create branches for "proposed" zoning plans without touching main data.
   Citizens can access a cloned version of planning data.
   Changes or suggestions (e.g., new bike paths) can be proposed via pull requests.
   Keeps public and internal data separate but linkable.
or

  Farm fields are polygons; each year’s crop type is stored as tabular data.
  Each season gets committed with metadata and satellite imagery.
and many others

Just thinking that this is the company that had UIs like Google Reader and still have UIs like Gmail, yet Gemini has the most retarded UX ever.

This is revolutionary. I mean, we already could see this coming, but now it's here. With limitations, but this is the beginning.

In game engines it's the engineers, the software developers who make sure triangles are at the perfect location, mapping to the correct pixels, but this here, this is now like a drawing made by a computer, frame by frame, with no triangles computed.


I don't see how this is hard to reason about, assuming this is the resulting code when using variables:

  $tags        = ...array_column($arr, 'tags');
  $merged_tags = array_merge($tags);
  $unique_tags = array_unique($merged_tags);
  $tag_values  = array_values($unique_tags);
It also makes it easier to inspect the values after each step.

Correctly naming things is one of the harder challenges in computer programming. Putting effort into naming intermediates that you're going to throw out is a waste. Plus, the more variables you introduce, the more likely you'll accidentally re-use a variable name somewhere down the line.

With PHP allowing variable initialization in one branch but not the other, and continuing execution by default when an undeclared variable is passed, declaring more variables can lead to an annoying class of bugs that would require significant (breaking) changes to the core language to completely eliminate.


Introducing a new variable every single line adda a bunch of cognitive load compared to the pipe operator.

It's much easier skim with the pipe operator and it's more robust too (for example reordering is a pain with variables, it's easy to introduce errors).


I don't think inspecting this is easier than adding |> IO.inspect() to a pipe chain

Or putting `|> dbg()` at the end and let it print the value at every step of the chain

modifying code just to attach a breakpoint is kinda silly in this day and age.

The main problem with this approach, as someone who programs in PHP daily, is it pollutes the scope. That makes debugging much, much harder - you lose track of variables, and the current state of the program is complicated. IMO, if a value is a throwaway, like an intermediate, we shouldn't be able to use it. So method chaining or nesting function calls prevents them. Then, when we break after these functions, we can't see fake values. It also prevents someone in the future mutating the throwaway values. Someone could easily insert logic or a call that mutates something in the middle of this and breaks the chain.

One way this is prevented in PHP is just using functions. But then you have functions just for the sake of scope, which isn't really what they're for. That introduces other annoyances.


Such variable threading tends to be harder to skim through in production code, the intermediates become noise that's harder to filter out than a repeated symbol like |>.

Preferably you should also be sure that the functions are compatible with the data type going in and only rarely have to break it to dump data mid-chain. If you expect that kind of erroring it's likely a builder-chain with -> is a better alternative and do logging in the methods.


It's easier to write, copy paste, compose and comment

Your version includes 4 variables. Pipes don't create those intermediate variables, so they are more memory efficient.

Readability is mostly matter of habit. One reads easily what he/she is used to read.


It's true that pipes are more readable, and for many cases they will be the better option, but the example of nested functions just doesn't hold.

That's like saying someone would use this:

   $result = $arr |> fn($x) => array_column($x, 'tags') |> fn($x) => array_merge(...$x) |> array_unique(...) |> array_values(...)
which is harder to reason about than the nested functions.

   array_values( array_unique( array_merge( ...array_column($arr, 'tags') ) ) );
or

   array_values(
     array_unique(
       array_merge(
         ...array_column($arr, 'tags')
       )
     )
   );

It is more readable and better option — you have to parse it from the innermost function to the outermost just to understand what it's doing. With the pipe, it's more straightforward: you read it step by step — do this, then that, then the next — just like how you'd naturally read instructions.

Why didn't you format the pipes, too?

  $result = $arr
    |> fn($x) => array_column($x, 'tags')
    |> fn($x) => array_merge(...$x)
    |> array_unique(...)
    |> array_values(...)
vs

   array_values(
     array_unique(
       array_merge(
         ...array_column($arr, 'tags')
       )
     )
   );
With pipes you have linear sequence of data transformations. With nested function calls you have to start with innermost function and proceed all the way top the outermost layer.

Because they were already formatted that way to begin with.

The pipe syntax is much more readable than nested function calls when you need additional arguments for intermediate functions. With nested functions it becomes hard to see which functions those arguments belong to even if you try to help it with formatting.

> so they are more memory efficient

They can be. It depends on the language, interpreter, compiler, and whether you do anything with those intermediate variables and the optimiser can get rid of them.


I thought we are talking about PHP8.5:)

Ah, I thought we were talking more generally about PL constructs that let you avoid intermediate variables, apologies :)

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: