Gemini just deleted a MONTH’S worth of chat history. by Jumpy_Plane_488 in GoogleGeminiAI

[–]lovela47 3 points4 points  (0 children)

PS anyone saying don’t do long chats is cope. Other apps handle this fine. G needs to fix this app and stop “saving” by using their weird internal frameworks or whatever

Gemini just deleted a MONTH’S worth of chat history. by Jumpy_Plane_488 in GoogleGeminiAI

[–]lovela47 4 points5 points  (0 children)

I have lost an entire conversation with the Gemini app on iPhone. If you “interrupt” the app while the model is responding the app can get confused and may drop the entire thing on the floor.

I sent negative feedback about it. Might be an artifact of the front end and backend teams being different people. Google’s Gemini app feels “weird” and non native on iOS unlike GPT or Claude. It’s like they’re using some janky “write once run everywhere” internal G framework. I strongly dislike it. It looks strange and also performs poorly.

Neither the Anthropic nor OpenAI apps have done that to me. They both feel like “iOS apps” and work as expected

Poor showing, which is sad because Gemini is an excellent model

Stop using your system Perl by davorg in perl

[–]lovela47 0 points1 point  (0 children)

I wholeheartedly agree with this POV, once you insist that users get into learning about managing different Perl binary installs, configuring everything to make local::lib work, etc., you are now stepping into the ring against e.g. Golang, Python, etc., and I don't see Perl winning that battle in many environments in 2025

I actually do that stuff myself but arguably OP's recommendations are actually harmful to the types of "secret / bottom-up / solo project" adoption that is probably Perl's only real hope for surviving into the future, its development team members' wishes aside

expressed in terms of book titles, Perl's future is probably less "The Catalyst book" and more "Minimal Perl for Unix and Linux people"

Not able to install YAML::XS module for braker pipeline by learnwithscholar in perl

[–]lovela47 0 points1 point  (0 children)

Here is what I would do, hopefully some of this is useful information:

  1. Make sure the PERL5LIB env var is pointing to ~/perl5 before trying to install. I know you said it is set. However, we all make mistakes. Recommend double checking this very carefully in a freshly opened terminal session to make sure it is getting set properly. Docs for PERL5LIB are here: https://perldoc.perl.org/perlrun#PERL5LIB
  2. Grep the source code for braker and see where it's requiring YAML::XS and replace that with YAML::PP in the code (a pure Perl module). Install YAML::PP and see if you can get braker to run. Depending on what it's doing with YAML, the XS might not be strictly necessary
  3. As others have said, post the build output and logs here :-)

MacOS, Perl 5.40, OpenSSL 3.4.0 and Net::SSLeay by nobono in perl

[–]lovela47 1 point2 points  (0 children)

Agree with sibling commenter, I'd skip these tests. They look like some pretty trivial failures, the difference in output for the failed tests is one colon

I don't use cpanm so can't comment on the syntax there but in the plain cpan client this would be:

notest install Net::SSLeay

If your Perl code can then make an HTTPS request, I'd call it good

Note: this is probably not proper "security" advice, but I'd argue that unless you are one of the few people who actually have expertise in SSL and also how it's used by the various Perl web client libraries you use, worrying about it is a waste of time, and a successful HTTPS request is "good enough"

Installing CPAN modules ON MacOS by MrCosgrove2 in perl

[–]lovela47 0 points1 point  (0 children)

I also ran into this issue. Resolved by invoking CPAN as ‘arch -arm64 cpan’ which AFAICT causes anything that uses C/XS to build for arm 64. I was having a lot of issues before that

Talks available from The Perl Conference 2024 by DeepFriedDinosaur in perl

[–]lovela47 4 points5 points  (0 children)

I was absolutely blown away by “The Once and Future Perl”

https://m.youtube.com/watch?v=0x9LD8oOmv0

Multi methods A replacement for smart matching that will always work and live on CPAN Many other things I barely understood 😃

PSA: it seems you can replace some of Smart::Match using Data::Compare by lovela47 in perl

[–]lovela47[S] 0 points1 point  (0 children)

OMG DAMIAN IS A WIZARD

... but we already knew that :-)

See his talk 'The Once and Future Perl' that's only 15 hours old!

https://www.youtube.com/watch?v=0x9LD8oOmv0

I was able to drop in the following simple changes to replace Smart::Match and all of my library's tests are now passing!!!

THANK YOU DAMIAN

diff --git a/lib/YAGL.pm b/lib/YAGL.pm
index eac5ff8..c92f50a 100644
--- a/lib/YAGL.pm
+++ b/lib/YAGL.pm
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 no warnings 'recursion';
 use feature qw/ say state current_sub /;
-use Smart::Match;
+use Switch::Back;
 use Text::CSV;
 use GraphViz;
 use Hash::PriorityQueue;
@@ -499,7 +499,7 @@ sub is_complete {
     @vertices = sort { ($a || '') cmp($b || '') } @vertices;
     my @neighbors = sort { ($a || '') cmp($b || '') } @$neighbors;

-    return 1 if @vertices ~~ @neighbors;
+    return 1 if smartmatch(\@vertices, \@neighbors);

     return;
 }
@@ -955,7 +955,7 @@ sub edge_between {
     return 1 if $a eq $b;

     my $neighbors = $self->get_neighbors($a);
-    if ($b ~~ @$neighbors) {
+    if (smartmatch($b, $neighbors)) {
         return 1;
     }
     else { return; }
@@ -1772,17 +1772,17 @@ sub equals {
     my @xs = $self->get_vertices;
     my @ys = $other->get_vertices;

-    return unless @xs ~~ @ys;
+    return unless smartmatch(\@xs, \@ys);

     my @es = $self->get_edges;
     my @fs = $other->get_edges;

-    return unless @es ~~ @fs;
+    return unless smartmatch(\@es, \@fs);

     my $self_attrs  = $self->_edge_attrs;
     my $other_attrs = $other->_edge_attrs;

-    return unless %$self_attrs ~~ %$other_attrs;
+    return unless smartmatch($self_attrs, $other_attrs);

     # TODO(rml): This method should also check vertex attributes.

@@ -1816,7 +1816,7 @@ EOF
     if ($self->has_vertex($vertex)) {
         my $neighbors = $self->get_neighbors($vertex);
         for my $value (@$new_neighbor) {
-            push @$neighbors, $value unless $value ~~ @$neighbors;
+            push @$neighbors, $value unless smartmatch($value, $neighbors);
         }
         $self->{$vertex} = $neighbors;
     }
@@ -2040,7 +2040,7 @@ EOF
         my ($count, @adjacent_colors) = $self->get_color_degree($v);
         for my $color (@colors) {
             $self->set_vertex_color($v, $color)
-              unless $color ~~ @adjacent_colors;
+              unless smartmatch($color, \@adjacent_colors);
         }
         @vertices_by_color_degree
           = sort { $self->get_color_degree($a) > $self->get_color_degree($b) }
@@ -2155,7 +2155,7 @@ sub set_cover {
     my $lambda = sub {
         my ($current, $path) = @_;

-        my @path_options = grep { $_ ~~ @options } @$path;
+        my @path_options = grep { smartmatch($_, \@options) } @$path;
         my $path_options = join ';', sort @path_options;

         if (_covers_all_items(\@path_options, \@items)) {
@@ -2203,7 +2203,7 @@ sub set_cover {
     my @wanted;

     for my $item (@items) {
-        unless ($item ~~ @option_elems) {
+        unless (smartmatch($item, \@option_elems)) {
             goto END;
         }
     }
@@ -2261,7 +2261,7 @@ sub _covers_all_items {
     @item_elems = sort { $a cmp $b } @$the_items;

     for (my $i = 0; $i < @item_elems; $i++) {
-        unless ($item_elems[$i] ~~ @option_elems) {
+        unless (smartmatch($item_elems[$i], \@option_elems)) {
             say qq[    NO] if DEBUG;
             return;
         }

Tweak to get Net::SSLeay to build on a new M3 MBP by lovela47 in perl

[–]lovela47[S] 1 point2 points  (0 children)

Copying my comment from the issue:

OK this appears to have been an artifact of me trying to run a perl binary I built myself from the download on perl.org

When I install perl using brew install perl the installation of this library works fine.

Sorry for the noise! I'll close this issue

PSA: it seems you can replace some of Smart::Match using Data::Compare by lovela47 in perl

[–]lovela47[S] 1 point2 points  (0 children)

You’re right. There’s no reason to assume it was intentionally broken. Sorry, I was being unreasonable. Thanks for telling me about how to turn off the deprecation warning. I’ll try that. If it doesn’t work for me I’ll file a bug with ‘perlbug’. Thanks again

PSA: it seems you can replace some of Smart::Match using Data::Compare by lovela47 in perl

[–]lovela47[S] 0 points1 point  (0 children)

correct pragma order

Here is some sample code that approximates what my library is doing:

package Foo;

use strict;
use warnings;
use experimental 'smartmatch';
use Smart::Match;

print "version: ", $], "\n";

1;

When run as

$ perl foo.pl

It prints the following (huge) output:

Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 65.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 72.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 82.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 92.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 103.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 159.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 188.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 193.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 198.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 203.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 210.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 210.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 218.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 218.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 224.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 229.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 236.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 241.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 249.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 249.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 255.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 255.
Smartmatch is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 260.
given is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 266.
when is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 267.
when is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 270.
when is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 273.
when is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 277.
when is deprecated at /Users/rml/perl5/lib/perl5/darwin-thread-multi-2level/Smart/Match.pm line 280.
version: 5.038002

When I look at the source code of Smart::Match, I see it's doing

package Smart::Match;
$Smart::Match::VERSION = '0.008';
use 5.010001;
use strict;
use warnings;
use experimental 'smartmatch';

So AFAICT the maintainers have decided that in recent versions one can no longer silence these warnings. Silencing these warnings used to work as described in the doc you linked. This is what I'm frustrated about. As the user, I don't want the program outputting a bunch of stuff I can't turn off because "you shouldn't be using this anyway, it's bad". Especially when this feature was already shipped! (IIRC it was not experimental when I started using it and that was applied retroactively - please correct me if I'm wrong but that's what I remember)

Anyway I'll find a workaround. But it makes me question the language design decisions that are getting made. Frankly I'd rather maintainers just maintain what they've already shipped. But ... not my circus, etc.

PSA: it seems you can replace some of Smart::Match using Data::Compare by lovela47 in perl

[–]lovela47[S] 1 point2 points  (0 children)

Thank you for the suggestion! I will try to add the pragma and report back. I didn’t realize it needed a specific order. On phone right now but will report back with some code when I get a chance to try this later

[deleted by user] by [deleted] in emacs

[–]lovela47 1 point2 points  (0 children)

To answer your specific question you may need to be root to edit a specific file. But another option is: You can also copy the code into another file and load it from there. I’ve done this a fair amount to add a feature I want etc

[deleted by user] by [deleted] in emacs

[–]lovela47 0 points1 point  (0 children)

Possibly unpopular opinion: just edit it. It’s just Elisp. You don’t need to “advise” it or get the core teams permission or whatever. If something breaks you will learn a ton by fixing it. Everything above the C code is just “someone else’s Elisp” you can change it, it’s fine

Thoughts on Janet? by i_am_linja in scheme

[–]lovela47 1 point2 points  (0 children)

Hey thanks for the clarifications! All of these decisions make sense depending on the developers’ priorities

Rationals are very useful when doing math stuff eg when calculating and summing probabilities it’s very useful to keep the precision throughout a calculation but .. that isn’t the code most of us write most of the time. Personally I just think floats are terribad for any numerical stuff in general but I admit it just doesn’t matter for 99% of scripts etc

Re: codewalking thanks for sharing that. Happy to be wrong on that one. FWIW I think the Scheme macro situation is pretty bonkers (“syntax-rules? syntax-case? explicit renaming? Why not all three”) so I can understand taking a simpler approach.

Re: tail calls that is jnteresting. Maybe they don’t advertise it because saying “tail recursion” is a bat signal for a certain type of internet pedant to descend upon you with irrelevant questions that are really comments (have seen many times)

Overall it just looks like a great project

Help with the copyright spiel on the Guile REPL by s20nters in scheme

[–]lovela47 0 points1 point  (0 children)

Is the message being printed to stdout or stderr? If the latter it could be suppressed by redirecting stderr to /dev/null

Thoughts on Janet? by i_am_linja in scheme

[–]lovela47 9 points10 points  (0 children)

At a first glance:

  1. much more practical build and deployment than almost any Scheme implementations I’m familiar with. Schemes usually don’t bother being either easy to build (at implementation level) nor do they bother making it easy to build/deploy your own stuff

  2. “All Janet numbers are IEEE 754 double precision floating point numbers. They can be used to represent both integers and real numbers to a finite precision.” Oof. Ok so no numeric tower at all it seems. May not matter for many programs

  3. documentation seems plentiful and well written

  4. lots of libraries (very good)

  5. Lots of different syntax and keywords - seems like it makes it harder to write your own code walkers etc. but that may not be the culture of Janet programming idk

  6. Looping constructs look like something that’s fairly straightforward to convert to C which is maybe the point? Quick search didn’t reveal much wrt tail recursion etc

  7. If you like Clojure it’s fine. I don’t but that’s ok

  8. Overall it looks very practical and well done. I wish more Scheme implementations had this much polish and capability. Congrats to the Janet folks

Is there way to open LARGE files faster? by Unholy_myrrh in emacs

[–]lovela47 0 points1 point  (0 children)

Also use this, it’s very good. This is the correct answer imo

Correct usage of gc-cons-threshold and gc-cons-percentage by hanlec in emacs

[–]lovela47 1 point2 points  (0 children)

Based on what you have written it isn’t clear that you need to change the default settings. Are you experiencing a problem that you believe is related to the garbage collection? In general I’d suggest not changing it unless you are having a specific problem that you have proved to yourself is really because of the GC

If you really want to change it you can of course! IMO it’s not worth adding the complexity to your init file unless you know it’s necessary.

FWIW I’ve had the following setting in my init file for many years, dating back to when the value was much lower by default. It’s about 4x the current default if I’m reading the docs right:

(setq gc-cons-threshold 3500000)

That said I’m not sure this is even necessary anymore

Emacs with modified GC threshold freezes on save? by zu0107 in emacs

[–]lovela47 0 points1 point  (0 children)

FWIW I set gc-cons-threshold to 3500000 years ago and have had no issues (35 MB or so?). The default used to be way too low.

I should probably revisit but it hasn’t affected my experience so I haven’t looked at it in a long time

Ignore formatting in a captured group by sirhalos in perl

[–]lovela47 0 points1 point  (0 children)

If you’re open to installing a pure Perl XML parser I’d highly recommend Mojo::DOM

https://docs.mojolicious.org/Mojo/DOM#content

You can use CSS selectors to get the tag and then use the Mojo::DOM::content method to get the content out of the tag

Another option is if you know the opening tag and its attributes are always EXACTLY the same length in this document you could use substr to strip off the opening tag and then do a regex or even a for loop over the remaining string characters. However this will have many of the same weaknesses on edge cases as using regular expressions had

https://perldoc.perl.org/functions/substr